Open Side Menu Go to the Top
Register
Game programming to learn current standards Game programming to learn current standards

04-28-2013 , 05:42 PM
Hi guys,

A bit of goal/background fluff:

I'm a long time hobbyist programmer/computer scientist (I have a BS in comp sci, but I do more math/science stuff for work now) and have a very large background with languages especially C++ and Java. I have an idea for a game that I'd like to work on by myself, just as an "I wanna do some programming in my spare time even if I never finish"-type of activity. It's been a while since I've done C++ though, all my programming experience in the last ~3-4 years has been MATLAB (barely even "programming"). So a big goal for this project would be to learn and become familiar with current standards and libraries (maybe this boost thing I've read about? I know STL but I think boost was becoming popular after I stopped mostly).

I can probably simplify my question with the following specific queries:

1. I'm also considering C#, but I'm leaning towards C++ since there's a much stronger chance I'll use it in the future with a heavy math/science emphasis. Good line of thinking, or is C# more popular than I give it credit for?

2. Standard practices - smart pointers? I never used these, should I? Standard libraries - STL? Boost?

3. Game programming packages - the only ones I even know about are DX, OGL, and SDL (wrapping for OGL I think? can pretty much consider it as a 3rd though regardless?). DX always gave me nightmares ~8 years ago when I dicked around with it and OGL seems too complex - this game will def be 2d. SDL seems like a good call. Any better suggestions?

Thanks in advance.
Game programming to learn current standards Quote
04-28-2013 , 08:54 PM
You should probably familiarize yourself with the changes to C++ that have occurred since you last used it. C++0x/C++11 incorporates a lot of 'modern' language features that make development faster/safer.

Also, since Microsoft is doing their best to kill Windows' desktop marketshare, I'd probably stay away from investing any time into C#. It's a perfectly nice language, but it doesn't do anything Java can't do more portably.
Game programming to learn current standards Quote
04-28-2013 , 09:54 PM
For desktop games C++ is still the standard. Since it is 2D game have you considered mobile platform? Or a dynamic language like python (lots of libraries and rapid development time).

If you want to learn the bleeding edge technology/approaches you must use C++ and get used to DirectX.
Game programming to learn current standards Quote
04-28-2013 , 10:16 PM
Thanks for the great responses guys!

Quote:
Originally Posted by meekrab
You should probably familiarize yourself with the changes to C++ that have occurred since you last used it. C++0x/C++11 incorporates a lot of 'modern' language features that make development faster/safer.

Also, since Microsoft is doing their best to kill Windows' desktop marketshare, I'd probably stay away from investing any time into C#. It's a perfectly nice language, but it doesn't do anything Java can't do more portably.
Sweet. Sounds great regarding Java > C# (I personally agree). And I'll definitely read up on changes in 0x/11 whether I go this route or not.

Quote:
Originally Posted by muttiah
For desktop games C++ is still the standard. Since it is 2D game have you considered mobile platform? Or a dynamic language like python (lots of libraries and rapid development time).

If you want to learn the bleeding edge technology/approaches you must use C++ and get used to DirectX.
Ooooo Python is a very attractive option that I hadn't considered... Not interested in mobile platform at all since this is basically a 100% personal re-education project. If by some wild stretch of probability the game comes out awesome, maybe I'll spread the fun, but I don't have much interest otherwise.

Basically there's 2 major goals of this project (while simply satisfying my desire to "program" in some of my free time): 1) learn/re-familiarize myself with technology that will likely be relevant in my future career, or just good to know in general really and 2) satisfy my creative desires (I've always thought I could write awesome stories and incorporate pretty unique concepts in games, just to toot my own horn a bit ). But neither of these really involve getting into the cutting edge of the actual GAME part of the game programming. FWIW what I have in mind is basically a type of 2d turn-based strategy / tactical rpg. So the fact that this should be pretty low on computational requirements, past desires to learn the language, and the 2 points you yourself mentioned are making Python stand out to me quite a bit right now. And I think Python could be very useful and relevant in a different set of ways (the obvious scripting / rapid development benefits, I'm never gonna be developing really intense commercial software).

So call this my tentative decision, but if there's relevant suggestions/discussion about this project still I'm all ears!

Thanks again for the quality posts.
Game programming to learn current standards Quote
04-28-2013 , 10:26 PM
I have Python 2.7 on my computer, is it wise to grab the latest 3 instead or stick with 2?
Game programming to learn current standards Quote
04-29-2013 , 07:08 AM
Quote:
Originally Posted by saw7988
I have Python 2.7 on my computer, is it wise to grab the latest 3 instead or stick with 2?
Python 3 brings a lot of changes. For a new project I'd def go with 3. You can install them side by side and should not cause issues with any existing tools you run.

Seems like Python/scripting language is exactly what you need. Also you can embed C functions into python for performance critical parts. And most modern games use a scripting engine like Python or Lua to do the main logic and game flow. C++ is for the performance critical graphics/floating point calculations.
Game programming to learn current standards Quote
04-29-2013 , 07:53 AM
Quote:
Originally Posted by meekrab
You should probably familiarize yourself with the changes to C++ that have occurred since you last used it. C++0x/C++11 incorporates a lot of 'modern' language features that make development faster/safer.

Also, since Microsoft is doing their best to kill Windows' desktop marketshare, I'd probably stay away from investing any time into C#. It's a perfectly nice language, but it doesn't do anything Java can't do more portably.
Here is my view, Windows apps including Metro C# is the unquestionable choice. Outside of that not so much but could be convinced otherwise.

I'd assign a higher priority to Java than C++ and I primarily develop code in C++. Again could be convinced otherwise.

On Python I have some experience but not an expert. I think that it is fair to say though that there are some supporters of 2.7 over 3.0 and there are supporters if 3.0 over 2.7.
Game programming to learn current standards Quote
04-29-2013 , 08:29 AM
Very good guys thanks! Python 3 it is.

Also, thinking about it, the stuff that I'd need to catch up on with C++ (the more heavily OO features) would probably be less important (if used at all) in my math/science field. Right now in my head I'm thinking the most likely place where C++ "could" be used in my future is with working with something like OpenCV.
Game programming to learn current standards Quote
04-29-2013 , 08:32 AM
fwiw Python has an SDL-based game library (pygame)

The Python 3 vs. Python 2 debate is basically: Python 3 is better, unless you need to use code that only exists in Python 2, which is currently a lot of code.
Game programming to learn current standards Quote
04-29-2013 , 02:24 PM
Yeah I think pygame is your best bet, might also want to check out pygame reloaded.

pygame isn't fully ported to Python 3 yet AFAIK (but most stuff you need is, I'd go with Python 3)

Edit:
Quote:
Does Pygame work with Python 3?

Mostly yes. Only the scrap, _movie, surfarray for Numeric, and threads modules have not been ported. The Pygame alternative, pgreloaded (Pygame Reloaded), also supports Python 3.
There's also pyglet.
Game programming to learn current standards Quote
04-29-2013 , 05:42 PM
Depends on the type of games you're looking to make obviously. If you want to stick with C++, you might look in to the new Torque 2D engine project, it seems like a pretty feature rich and well structured engine library, or the 3D version if you know DirectX/OGL. Ogre is another 3D engine library, I think Torchlight was made with it, and looks to do a good job abstracting and simplifying the nitty gritty of the 3D API (also supports DX/OGL).

I'm curious about the UDK and Unity engines. I haven't kept pace with the changes to any of these lately. Unity especially appears to have made huge improvements and seems to be getting a lot of love even from big developers lately. Can anyone comment on the flexibility and useability of either?
Game programming to learn current standards Quote

      
m