Modern game development/programming for a not-quite beginner?

Started by
8 comments, last by Shpongle 9 years, 2 months ago

Hi all. Lately I've been getting interested in re-learning how to program and possibly do game development (as a hobby). However, I do have prior experience programming, but nothing too recent.

My background: I started programming on an Apple IIe with BASIC, and eventually made my way up to DirectX on Windows 95. This was all strictly as a hobby during my youth. I also took programming in college and worked for a few years doing web design and web programming. But then I made a career change and got away from IT about 10 years ago.

When I look at the game development landscape today, a lot seems to have changed. I feel like a beginner all over again. I've been trying to figure out a jumping on point, but the more I research, the more options I find.

My goals are twofold:

1) Re-learn programming, not just for games but also business process automation and data analysis. This would include working with databases.

2) Revisit some of the games/designs I made in my youth and maybe make a modern version of them.

I've looked at various languages; it seems C/C++ and Java are still used and I used to use them. But there's also C# and Python, which I don't know. And there's also the various game engines and frameworks out there. I'm purely interested in 2D or even text games for now, either via the web or Windows desktop. I don't think I want to jump into 3D or smartphone games (yet).

Any advice?

Advertisement

Maybe take a look at these courses:

https://www.coursera.org/course/interactivepython1

https://www.coursera.org/course/interactivepython2

They pretty much dive right in and you'll make simple clones of popular games like Asteroids. I think this would be a good way to both refresh yourself on the fundamentals of programming, get some experience making games again, and learn a popular new language in the process. I got about half of the first course a couple years ago to refresh myself on Python and I thought it was run very well.

C++ has evolved quite a bit, but as long as you still know how to do memory management and understand the basics of object oriented programming, it shouldn't be too difficult to pick up again. C# would more or less tie you to Windows. There's unofficial support to run the language on other systems, but I'm not sure about the effectiveness of writing C# applications for non-Windows systems.

If you're making a simple 2D clone to get some practice, using SDL or SMFL is a solid and reasonable choice. If you're planning to do anything really complex though, I would suggest using an existing game engine library instead of rolling your own.

Hero of Allacrost - A free, open-source 2D RPG in development.
Latest release June, 2015 - GameDev annoucement

modern game engines are a very good fast lane for creating anything more complex in less time, as they release you from a lot of the low level plumbing tasks.

But seeing that you are looking at 2D Games and want to give your programming skills a refresher mainly, game engines might not be your best bet.

How about MonoGame? It is kind of the spiritual successor to XNA, which was the big thing from microsoft during the XBOX 360 days... if you don't want to start too low level and are ready to jump into C#, maybe give it a try

If you are interested to check out modern game engines (still lots of programming involved), maybe give Unity or Unreal Engine 4 a spin. Unity has a free version, and Unreal Engine 4 can be downloaded with full source for as little as 20$, so both do not cost you an arm and a leg, while giving you a modern cutting edge engine to play with, lots of tutorials and large communities behind them.

I would stay away from snake (python) the duck typing of the language and the interpreter teach a few bad behaviours that you are better of not picking up. Seeing you already have programming experience I would go with C# or C/C++ the major difference between the two is that you do not have to do everything yourself in C#. Everything you know about C/C++ pretty much directly translates to C#, with maybe the only real exception that a struct in C# is a value type like an int.

If you worked with C++98 not that much has changed in the language, it just become a bit more standardized STL now pretty much behaves the same on the 3 major implementations (MSVC, GCC, Clang). C++11 added some handy features like nullptr instead of 0, functions to create smart pointers and such, you pick this up fast enough and there are a million resources out there online. http://www.cplusplus.com is a good one and it will show you the differences between 98 and 11 on most of its references.

If you are purely looking into writing a game I would advice you to use a game framework so you dont have to deal with all the boiler plate code and can just start writing your game. Anything from a full game engine like UE4 to helper frameworks like SFML, SDL, SlimDX, monogame will do for this stuff and will speed up your work. The major difference between the engines and the frameworks is that you will still have to deal with connecting up the frameworks yourself, were in the engines you can just start creating content and gameplay code.

If you are more interested in doing all of this yourself just grab the latest windows SDK which will contain the DirectX sdk and start writing that boilerplate code yourself.

Worked on titles: CMR:DiRT2, DiRT 3, DiRT: Showdown, GRID 2, theHunter, theHunter: Primal, Mad Max, Watch Dogs: Legion

Thanks for the replies guys. C# and SDL, Monogame, etc, seems like a good way to at least get started. From what I've seen of C# it seems pretty Java-ish, so at least the learning curve shouldn't be too steep. There's a course on Courera that looks like it might be a good start? https://www.coursera.org/course/gameprogramming

Couple questions:

Any recommendations for IDEs/compilers? I've already downloaded both Eclipse (for C/C++) and Visual Studio Express. Note sure if there are better options out there?

Also, does anyone have any advice on 32 bit versus 64 bit development? Is it worth starting out doing both? Or should I just stick with 32-bit to start and worry about 64 bit later?

I bought the paperback version of gameprogrammingpatterns.com and I have to say it's been not a bad place to start. I'm writing a space exploration game right now to get into the swing of graphics, physics, and ai programming from a background of web development, and I've run into a couple of places where the book has reinforced some of the ideas I've already had and given me a bit of code to work with to get things rolling (simple stuff, like implementing a game loop, a pattern for "ticks" to ai and physics, etc.

As a web guy, I'm writing my game using HTML5 / JavaScript.

I did have one recommendation. If you are going to go with Visual Studio, use Visual Studio 2013 Community edition. It is the same as Pro but has a licensing limitation on the size of your organization.

If you missed a great moment in history don't worry, it'll repeat itself.


Also, does anyone have any advice on 32 bit versus 64 bit development? Is it worth starting out doing both? Or should I just stick with 32-bit to start and worry about 64 bit later?
If you go the C# route, it probably wont matter.

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator

If you are doing C/C++ I would start with writing 64 bit code, this is not inherently different from 32 bit code with the exception that you don't expect data types to have specific sizes. If you start to think that data types have specific sizes like a pointer being 4 bytes you are in for some surprises in 64 bits where this length doubles. Not doing this means your code is easier to port between 32 bit and 64 bit, as in mostly recompile and fix minor issues.

If you go with a managed language this generally doesn't matter, specially with Java or C# as they compile into byte code, and its up to the VM to deal with 32/64 bit issues mostly.

IDE wise on Windows and C#, C/C++ stick with Visual Studio, the 2013 CE version is Pro version so you get everything most professional devs have. On OSx I would go with Xcode, *nix you have eclipse or netbeans (there are probably others too), I prefer the latter one but thats a GUI thing mostly. I know of several coders that actually never use an IDE and just use Sublime, Vim, Emacs or your own preferred text editor and command line tools for the compiler and debugger which is an other option to go.

Worked on titles: CMR:DiRT2, DiRT 3, DiRT: Showdown, GRID 2, theHunter, theHunter: Primal, Mad Max, Watch Dogs: Legion

Thanks again for the replies. Good to know I don't really need to worry about the 32/64 bit thing yet.

I'll probably migrate to C++ soon enough, but still getting my feet wet with C#.

This topic is closed to new replies.

Advertisement