Game Development tools

 

I recently had a game idea, and decided I wanted to look at what tools are out there.  I found one, called Dark GDK, which looks pretty good.  It allows development in Visual C++, has a huge amount of free stuff, and not much cost to license.  I realize this post probably belongs on slashdot, but I wanted to bounce it off of this community first.

What other tools are out there that you feel are superior, and why?  Is there any good feature comparisons that make it very clear?

 

Thanks!!

 

 

42,141 views 13 replies
Reply #1 Top

Horses for courses really; C++ can be nice and fast, however it requires some indepth knowledge of memory management for complex projects.  C# handles a lot of that stuff for you, however you need to manage your content around the Garbage Collector.  Take a look at some of Microsoft's Visual Studio stuff; it's entirely free, and you own everything you make with it.

What kind of game are you looking at making?  Can you describe the kind of complexity you're looking at, as well as your general experience?

Reply #2 Top

Quoting ZehDon, reply 1
Horses for courses really; C++ can be nice and fast, however it requires some indepth knowledge of memory management for complex projects.  C# handles a lot of that stuff for you, however you need to manage your content around the Garbage Collector.  Take a look at some of Microsoft's Visual Studio stuff; it's entirely free, and you own everything you make with it.
End of ZehDon's quote

He said Visual C++, which has the option to use the same garbage collection as C#. I will note that you can run into situation where even with garbage collection you can have memory leaks and because everything is handled automatically it can be hard to trace (this is because the grabage collector is not smart enough to identify circular referneces, and they can result in memory never being freed.)

Reply #3 Top

My background is with firmware development - over 20 years, mostly in C, but also enough C++ to be at home with it, and also some C# (I think I've seen some memory leakage issues also as Gwenio describes).  The game is simple enough that it could be done all in 2D like a board game - but will probably want to use 3D from the very start just to make it easy to throw in more complex graphics for fun.

What I really wanted to know was why something like Civ IV was based on Python (and unbearably laggy on huge maps which makes me think it was a bad choice).  [Or maybe I misunderstood, and Python was not the basic game development language.]  It could just be that Dark GDK is new enough that it wasn't considered earlier.

I'm also aware of XNA - which is for XBOX development.  But for some reason, this doesn't excite me at all.

I think for now I'll be happy just using this - prototype something, enjoy learning the environment (feels like a candy store) and not worry too much about "is this well enough recognized?" - i.e. "will it look good on my resume?".  For a prototyping tool it looks like it's completely adequate.

 

 

Reply #4 Top

In terms of resume, C++ is a massive plus as it is, to my knowledge, the industry 'standard' for lack of a better term.  With whatever you make, as long as it's well crafted and recieved and you convey that within the context of your resume, I think you'll be fine.  I've talked with people in various communities (http://www.gamedev.net is a great place to take a look if you haven't already) who are entirely self-taught and have put little more than "Learnt C++ in my spare time" on their resume, however their portfolio was impressive enough that they were hired.

In terms of Civ IV using Python, much like Elemental, it was part of the design choice to make the game easier to modify.  There are more reasons I'm sure, however the primary benefit of using Python and XML is that data is stored in easy to mod files as opposed to being hard-coded, and thus difficult to modify.

I personally don't know much about Dark GDK, sorry, however I'm sure that they'll have a community available for you to see if it supports the kind of functionality you'll need.

Good luck!

Reply #5 Top

If you want to go C++, you could use the Dark GDK, although you can check a little more, there are tons of frameworks/engines out there for C++ (but not many ideas from me, I'm not a C++ guy :( ).

Your other alternative would be going C#. There you have two alternatives:

- SlimDX: this is a managed wrapper of DirectX for C#. This is the option if you want to fight with all the low-level details of writing a graphic engine, or you want DX10 or DX11 cool things.

- XNA: XNA is not only for the Xbox360, but also for the PC and for Windows Phone 7. XNA is higher level than DX and it's aimed to allow you to hide the low level details from you. For example, there's an object called SpriteBatch for 2D drawing that is really using quads for rendering sprites under the hood for you. As they are really quads, with their vertices and so on, you could for example apply a shader to modify how your sprites are rendered.

I would honestly recommend that if you are going to make a 2D game alone, you go Visual Studio 2010 + C# 4.0 + XNA 4.0: it's very productive, it has a ton of support (http://forums.create.msdn.com/forums/) and samples (http://create.msdn.com/). Even outside MSDN forums you can have great help in game development sites like Gamedev.

About Civ V, the game is not written in Python, it's core is C++. But most games are written nowadays that way: a core in C++ and then designers use other things (UnrealScript, LUA, Python,...). But this is mostly because all higher-level/script languages are more productive than C++ for design work.

And about the memory leaks, in .NET it's usually related to not unhooking events, but there are tons of profilers to find those.

Reply #6 Top

Very cool!  I will certainly spend another day or so looking at XNA.

 

I guess multi-platform portability is a core issue, and one I would have to dig pretty hard to learn about.  For example, I'm assuming to go from XNA to Android is a major re-write, and not just due to adjusting the UI to a touch-screen.

 

I'm pretty stuck on the idea of starting in 3D - even if it means extra work to begin with.

[Also (just FYI) Dark GDK is available for .NET - so using it with C# isn't an issue, it just isn't available in the free version.]

 

Reply #7 Top

I suggest using free stuff whenever possible. There is lots of LGPL stuff for you to use, just look for stuff that has a strong support community (Active forums).

I am currently writing a game in C++, its completely 2D, we are using CEGUI to manage all of our images and interface. We use RakNet for multiplayer (free until you start making lots of money, even afterwards pretty cheap IMO). We were using OpenAl for sound but it was buggy so we switched to Audiere and it works great!!!

 

My game was started by a bunch of complete novices and I had to rewrite a bunch of their code, but all in all it is very easy to make a game today, especially 2D. Good luck and feel free to contact me about anything!

Reply #9 Top

Quoting huminado, reply 6
Very cool!  I will certainly spend another day or so looking at XNA.

I guess multi-platform portability is a core issue, and one I would have to dig pretty hard to learn about.  For example, I'm assuming to go from XNA to Android is a major re-write, and not just due to adjusting the UI to a touch-screen.

I'm pretty stuck on the idea of starting in 3D - even if it means extra work to begin with.

[Also (just FYI) Dark GDK is available for .NET - so using it with C# isn't an issue, it just isn't available in the free version.]

End of huminado's quote

Multiplatform will mean that you may have to rewrite your game (work, although writing the game the first time is the real work :p), or using a tool/libraries that supports all the platforms you want (for example you could use Unity).

But, if it's your first game, I honestly would just concentrate on making the game, do not think too hard on other problems (like multiplatform) that will make your life pretty hard (and writing a game by yourself is already plenty hard).

Reply #10 Top

Quoting UmbralAngel, reply 7
I suggest using free stuff whenever possible. There is lots of LGPL stuff for you to use, just look for stuff that has a strong support community (Active forums).
End of UmbralAngel's quote

Just one minor thing, XNA and Visual Studio Express are totally free too (in cost) even if their sources are not with a public license (although you can just look at it when debugging with Reflector if you feel like it).

Reply #11 Top

So now I have XNA, Dark GDK and Unity development environments all on my system.  Yes all free.  [Off topic: It looks like licensing fees for Unity Pro start at $1500 and go up for additional adders (around the same) depending on which platforms you want to port to.  And there are additional fees for posting to marketplaces like XBOX, which are less than $100/year IIRC.]

 

I totally agree that concentrating on making the game is most important, but it can also be discouraging if you go too far and then discover that porting is a royal pain, so that's why I wanted to spend a little time up front selecting an environment.

Also very much appreciate all the insights in this thread.  Way more detail than I would have found trying to just google it on my own, because there's so much to explore, and many ideas I might overlook at first glance (such as porting capabilities).

Reply #12 Top

Even if you try a Tetris, a game where you don't need to think nearly at all about the mechanics, you will find that coding the game to a "complete" state (with scores, saves, credits,...) takes a looot of time (and then add polish, hehe, that's a time sink :p). Porting the game later to another platform is much much faster.

Reply #13 Top

The 20/80 Rule is something that really hits home in Game Development.
20% of your code does 80% of the work.
20% of your time is coding, 80% of your time is figuring out why it didn't work.

Once you've got a complete game - which is, frankly, harder than it always appears at first - then you go back and look at what needs optimising, re-coding and polishing.  While developing with multi-platforms in mind is always a good idea, for your first few projects - and I know you have many years experience, so take this with a grain of salt - it's always a better idea to focus on a single platform first, and then worry about porting later.
I developed a (very basic) game for XNA, which is designed to work on both PC and Xbox 360.  Trying to co-develop for the iPhone platform would have been disasterous because I was inexperienced with all of the platforms.  Once I finished the project for the PC/360, I was able to then work on getting the game working on the iPhone OS, which gave me experience in all platforms.

Instead of spending 80% of my time worrying about the 20% of code that would be difficult to port, I built the game and then ported it over with little hassle because I knew my code and how to make it work best inside-out.

Just my 2 cents.