• 0

Game Development Language Choices


Question

Hey everyone. I'm a web developer with experience in PHP, MySQL, Ruby, JavaScript to name a few and have reached a point in time where I have plenty of free time to branch out into things I *really* want to do - specifically game development. I have a fantastic artist wife that can handle any artistic side of the project, so that leaves me to handle the development side of things. Now, I'm not going crazy saying that I want to be a one man team making AAA games... however, I do want to put some basic indie titles together (think Cave Story, Fez, Braid) eventually with a few friends (I know a few programmers that would probably jump on the opportunity - though their skills are spread out over a wide spectrum of languages/fields).

So yeah, I'm thinking 2d, maybe some isometric 2.5d stuff. Side scrolling, top down, NES style games to start.

What language should I look into learning? I've heard conflicting opinions on each option.

C# - Most will tell me to jump straight into C# and work with XNA, but that leaves mutli-platform out of the question. I'm not too concerned about multi-platform, but I think it's a good option to leave open.

Java - So, that would lead me towards Java. I'm not a fan of Java, as a user. VM always seemed bulky and slow, with tons of vulnerabilities.

C++ - C++ might be a little bit too much of an undertaking, but I can see the benefit of learning proper memory management out of the gate. However, it might add too much time to development where, say, C# has XNA that handles a lot of the work out of the box.

Python - I see Python as an alternative, but I'm not sure I want to venture too far off the beaten path. Python is a very elegant language that I could pick up rather quickly, but the games I have seen developed in Python leave me wondering how capable it -really- is.

Would love to see some opinions here. Hopefully I didn't come off as too optimistic. :)

Link to comment
https://www.neowin.net/forum/topic/1110503-game-development-language-choices/
Share on other sites

Recommended Posts

  • 0

From a beginner's perspective, XNA is way easier: you can jump straight into your game-specific, there's no creating a window, acquiring a device, setting up buffers, writing an update/draw loop, loading assets; you new up a SpriteBatch and tell it where to render your sprites and that's it. Also, unlike SharpDX, XNA is platform-agnostic: it has already been succesfully ported to OpenGL mobile devices and soon it'll run under DX11 in Windows 8; SharpDX ties you to a specific API and you'll have to perform any porting manually.

  • 0

Learn C++ first, but you also need to know C#. C# is not only great for coding tools, but engines that support it offer a great way to compile once and deploy to multiple platforms.

Yep! That's my plan.

This is just such a polarizing issue, I figured it would be interesting to see the varying opinions. I really like the C++ -> C# route now. :)

  • 0

2D? I'd start Python + pygame or Flash or a game building front end. There would be much less for you to learn while getting started.

Personally I would look at what games you enjoy were written in, as a short list of 2D platformers:

VVVVVV: Flash

Super Meat Boy: Flash (then rewritten in C++)

Spelunky: Game Maker

Cave Story: looks like C++

Castle Crashers: Flash and C++

Terraria: C# using XNA

Angry Birds: C++

  • 0

I agree with you Dr_Asik. Honestly, I found that giving advice to start with C++ is a bad idea. A lot of people do not want to deal with not only the stuff you just mentioned, but they also do not want to worry about memory management themselves as a first step in programming.

My advice? I would go for Java or C#/XNA. I would not worry about multi-platform at this stage (though there is Mono and MonoGame for C#/XNA). You will not be building Crysis 3 as your first game so either one of those languages will be more than enough power to fit your needs.

I am personally going to stick with C#/XNA for a while. Why? XP and 7 will still be top dogs for a while, and it still works in Windows 8 in desktop mode. I am a 2D game programmer so XNA is more than powerful enough for me.

If you want to make a career out of this, the probability that it will be C++ is very high. But programming is programming. Start with an easier language to get you in the mindset of programming and how to implement algorithms and game related functions. Then you will just have to deal with the complexities of C++ later when you move to it.

  • 0

From a beginner's perspective, XNA is way easier: you can jump straight into your game-specific, there's no creating a window, acquiring a device, setting up buffers, writing an update/draw loop, loading assets; you new up a SpriteBatch and tell it where to render your sprites and that's it. Also, unlike SharpDX, XNA is platform-agnostic: it has already been succesfully ported to OpenGL mobile devices and soon it'll run under DX11 in Windows 8; SharpDX ties you to a specific API and you'll have to perform any porting manually.

Are you talking about 2D? Because I don't see how tha would work with 3D. You'd have to rewrite your shaders; other differences also prevent even higher code from being shared. Even content cooking wouldn't work unless Mono developers ported everything to OpenGL and created 3D model and audio loading facilities into their implementation, which I doubt.

  • 0

Are you talking about 2D? Because I don't see how tha would work with 3D. You'd have to rewrite your shaders; other differences also prevent even higher code from being shared. Even content cooking wouldn't work unless Mono developers ported everything to OpenGL and created 3D model and audio loading facilities into their implementation, which I doubt.

This isn't finalized but right now they convert HLSL to GLSL and they rely on XNA's content pipeline to build the content. I'm not too savvy about how they do it and what the ultimate plans are.
  • 0

2D? I'd start Python + pygame or Flash or a game building front end. There would be much less for you to learn while getting started.

Worst advice ever, all programmers need to start off with C/C++ because if you know C you can learn anything from there on out.

  • 0

[/color]

Worst advice ever, all programmers need to start off with C/C++ because if you know C you can learn anything from there on out.

No not all programmers need to start with C/C++. They should start with a language that is easier than that. My path was with Visual Basic -> Java -> C++ -> C# -> Python. The worst advice I have ever given people is to start with C/C++.

  • 0

2D? I'd start Python + pygame or Flash or a game building front end. There would be much less for you to learn while getting started.

+1 for Python / pygame. It's easy to pick up, fun, and quite powerful. It also runs on just about every platform.

  • 0

Worst advice ever, all programmers need to start off with C/C++ because if you know C you can learn anything from there on out.

Well, the learning curve for C++ is pretty steep, and it's not a particularly good language anyway. C is much easier to learn, so I agree that it can be helpful.

As far as Python is concerned, it's good for getting something up and running quickly, especially with an interpreter you can run live code in for testing purposes. I'd actually recommend learning both C and Python. C forces a programmer to learn real programming, instead of relying on sprawling, opaque libraries to do the work for them. It's also simple to learn due to the small std library and small number of keywords / syntactic constructions. Python allows one to operate on more modern OO and language concepts.

  • 0

A quick question - is XNA dead?

No, it is still used for XBLA, XBoX and Windows game development. MS Hasn't released a new XNA Framework in a while, but it may just not need any critical updates.

  • 0

Don't limit yourself with XNA. Check out Unity. It's free, lets you program using C# or Javascript(not java), can compile to run on most systems, to include Android, iOS, Xbox, Windows, Mac, etc. There are tons of guides online for it. The list of games made with it is pretty impressive. Zombieville USA, which I played on iOS and was a well put together side scroller, was made with only two people.

- Zombileville USA game play.

- Zombieville USA 2

http://unity3d.com/g...unity/game-list

  • 0

A quick question - is XNA dead?

I never understand why people panic (I am not saying you are, I just had to deal with a lot of developers who were in a panic because they were in the middle of development of a large project) and think a framework can be dead. I had to respond to a lot of emails and worried developers about this. And they always say a blog post said XNA was dead or an article somewhere. Here is the response I usually give:

Do not be worried about using XNA. One of the biggest indie games ever was made in Java (Minecraft), which probably has less support than XNA (especially for 3D stuff). If XNA is more than enough for your needs, you do not need to be worried about using it.

Also, with XNA right now, you can make the game for Windows XP, Vista, 7, and yes 8 in Desktop mode. You also get Xbox 360 and WP. I do not use it on the phone, but I heard it is supported on WP8. Once you build it for one of those to create the XNB files (for your assets), you can use MonoGame for cross platform. I honestly think it is way too soon to jump ship and only focus on one Operating System (Metro apps) and the phone. On the flip side, now might be the best time to develop for the new apps on Windows 8. But you can develop for XNA for a desktop program, then use MonoGame to make a metro version of it.

We have not heard anything one way or another. Metro/Modern uses Direct X 11, XNA is Direct X 9 (they only took state object designs from DX 10/11 according to Shawn Hargreaves). Likewise, Xbox 360 is only DirectX 9, which is what XNA is primarily used for. We do not know if they are making a new XNA for DirectX 11 to go along with a new Xbox (which will require some time) or if they will abandon it. Why dedicate resources to make an XNA version with a new DirectX when we still have the Xbox 360? Plus supporting both types would be a nightmare. They are probably waiting until the next Xbox to perform such an upgrade to XNA. This is entirely possible. It is just as possible that they will not. But a framework can only be dead if Microsoft stops providing download links for it. I assume they will let the download live for years. You can still download XNA 1.0. Since MS seems to be focusing a lot on C++, they might make the next XNA (if there is one) C++, which will require even more time to develop. I would love that!

How is it considered dead but you can still write Windows 8 desktop programs with it? Even if 4.0 is the last XNA version, it is still a decent gaming framework that will work on the latest almost-released Operating System in the desktop environment. It could PROBABLY work on Windows 9 too, but we will see when we get there what MS decides to do. You have a lot of target audiences that way.

Unity is good too, I personally prefer XNA over unity because I do not get much time to develop, but if I did I would use Unity.

Even though a lot of hate is toward Java now, I still think it is a good learning language. If you install Java, just disable support for it in your browser (NOT Javascript, but Java).

I would avoid Visual Basic. The syntax still annoys me to this day...

Finally, I would go with C/C++ (if you want to) after you learn the basics and use an easier language to begin with.

  • 0

Leaves multi-platform out of the question? Dude, XNA is the only way to make indie games for a game console, (in this case the Xbox 360,) without hacking the console, & it works with a lot of other platforms too! (Windows, Windows Phone, & the Zune. Of course, the Zune is for older versions of XNA & Windows Phone is for newer versions, but, still...)

  • 0

Leaves multi-platform out of the question? Dude, XNA is the only way to make indie games for a game console, (in this case the Xbox 360,) without hacking the console, & it works with a lot of other platforms too! (Windows, Windows Phone, & the Zune. Of course, the Zune is for older versions of XNA & Windows Phone is for newer versions, but, still...)

Should say... leaves anything not Microsoft out of the equation (though there is MonoGame)

  • 0

The number of people blindly recommending C++ is frighting. If you're not going to be making AAA titles, and you don't require massive performance, then there is almost no reason what so ever to learn and use C++.

If you are SERIOUSLY considering making a game, C++ is the way to go. The power is almost limitless....

Performance wise, Java and C# are going to be close

I HOPE that this is a joke. Performance wise, C# (in fact nearly any .NET language) kicks Java's ass. Excuse me; almost ANYTHING kick's Java's ass in performance.

I know this because I devlop in Java; It is the most disgusting slowest memory hogging piece of **** ever created. Multiplatform? Yes. Of course. Is it worth it? Hell ****ing no. The thing that most ****es me off is that there has been 17 years to improve it and STILL the performance is horrible. And Im not even going to start on the security portion.

No not all programmers need to start with C/C++.

I completely disagree. C is almost mandatory to at LEAST have coded in ONCE. Even as a school project. Even as agenda that stores a person and certain attributes such as name, numer, etc. It shows so many low level concepts on programming that nowadays with IDEs using mostly OOP (C#, Java, even C++) that you lose core fundamentals.

They should start with a language that is easier than that.

I again disagree with your opinion. Its easier to start from a hard language © then work your way to a easy language (VB.NET)

My path was with Visual Basic -> Java -> C++ -> C# -> Python. The worst advice I have ever given people is to start with C/C++.

Wow you started with two of the most easiest and horrible languages. The only thing C++ has in common is that it is OOP.

Bottom line: If you want to make a serious game, C++ without a doubt. Serious as in you want it to get noticed and hell, even sell a few copies. That being said, like many had said, there is a learning curve

If you want to start with game development and make a simple cheesy game, C#. Development will be quicker and the learning curve is basically null

  • 0

Bottom line: If you want to make a serious game, C++ without a doubt. Serious as in you want it to get noticed and hell, even sell a few copies. That being said, like many had said, there is a learning curve

If you want to start with game development and make a simple cheesy game, C#. Development will be quicker and the learning curve is basically null

I whole heartedly disagree with this statement, particularly the part about selling a few copies. There are numerous, successful game developers who have sold games written in something other than C++. And, further to the point, there are those that have gotten their start in languages beyond C++.

I stand firmly with my belief that starting with something like AS3, which is still OO, and doesn't have the added complication of managing memory is the place to start.

  • 0
If you want to start with game development and make a simple cheesy game, C#. Development will be quicker and the learning curve is basically null

I disagree wholeheartedly. The game I'm developing in C# is nothing close to cheesy. It runs on multiple operating systems, such as Linux and Windows, is not slow* (I can run it on a netbook with an Atom processor and ION graphics at 30 FPS), and it was written in a fraction of the time it would take to write in C++. Your post reminds me of how far technology has come; we aren't reliant on writing assembly software rendering routines anymore. Computers are more powerful and hence I can spend less time pulling my hair out over C++ "features" and more time programming a solid game.

Just to point out, my game features resolution independent vector graphics. The framework I built is component based, and thanks to the power of the .NET framework, I am able to generate entire levels using reflection. I admit, given more time and resources, I very well could develop it in C++...but that's it! I don't have the time or resources! And most hobbyist game developers don't either.

*: By slow, I mean C# is not the limiting resource. It's the graphics card.

  • 0

I'm not a game developer but... why not a mix of C/C++ and python? C for the stuff that needs to be done quickly, and python for the stuff that can be tweaked/used to mod?

For a PC game that might make sense, but not for a game that has to run on a mobile platform or console.
  • 0

pes2013, you are missing the point of being new to programming and game programming too.

Lets take mathematics for example. Would you recommend I learn Calculus first before learning algebra? That might be a bad question since you need algebra to do calculus. How about learning how to create a formula before I use it? Here is an example: I used the mathematics formula for the area of a triangle long before I took calculus. One of the things we did in calculus is to PROVE the formula. So in Calculus I learned how to MAKE the formula that I have been using for years with the integral.

It is the same way with programming. If you are a beginner, you do not need to worry about the nasty stuff. You are a beginner, you do not need to worry about memory management, dealing with pointers. Even more so can be said with game programming. Lets take XNA for example. There is A LOT of core Direct X stuff you would need to implement and call yourself to get everything set up. Again, you do not need to worry about this as a beginner. You can just use a framework like XNA or use something like the Java Game Library (what Minecraft uses) or Unity or something to help you.

I again disagree with your opinion. Its easier to start from a hard language ? then work your way to a easy language (VB.NET)

No it is not. A lot of people get extremely frustrated when languages require more from you. This is their first few programs they ever developed. Why do they NEED to start with a harder language? Why is it easier for a new programmer to learn from a harder language than something that is much easier? An easy language gets you thinking like a programmer and not have to worry about the advanced topics like memory management and setting everything up yourself. When you are thinking like a programmer, the advanced languages would be much easier.

Wow you started with two of the most easiest and horrible languages. The only thing C++ has in common is that it is OOP.

Uhhhh yeah.....You start out learning math with 1+1. Your point that I STARTED programming with an EASY language is what exactly?

I will agree that Visual Basic is horrible, I just cannot stand it. BUT when I was young, it got me in the programming mind. Even if it did teach me some bad habits, which I quickly switched out of when I moved to Java, it still made my mind think like a programmer.

seethru: AS3 is another good choice.

Veiva: I assume you are using XNA since you said C#? If you said it in an earlier post, I apologize. I agree and I think C# will be more than enough for the beginners first five or so games they make. Not to mention if you like sticking with 2D, it has more than enough power for you. Why would I need C++ if XNA is MORE than enough for my game's needs? One of XNA 3.0's starter kits is a 3D racing game that runs at 60 fps. I say C#/XNA has more than enough power for a beginner's first several games.

This topic is now closed to further replies.
  • Posts

    • Waymo recalls self-driving software after cars enter closed freeway work zones by Paul Hill Waymo, the self-driving car maker owned by Alphabet – the parent company of Google –, has recalled some of its fifth-generation Automated Driving Systems (ADS). It did so after some of its cars drove through closed construction zones. According to the National Highway Traffic Safety Administration (NHTSA), the affected vehicles were capable of driving through a closed freeway construction zone and continuing to drive at speed. The listing on the NHTSA website says that Waymo is currently developing a solution to fix this issue, but in the meantime, freeway driving is being restricted. Waymo will update its ADS software so that vehicles can detect when they can avoid entering construction zones. According to the Safety Recall Report, on April 20, 2026, Waymo’s Field Safety Committee began meetings reviewing an event from April 11, 2026, and five events from April 19, 2026, where Waymo’s autonomous vehicles didn’t recognize and drove past ramp closure signs into the pre-planned freeway construction zones. This took place in Phoenix, Arizona. Separately, on May 18, 2026, seven Waymo vehicles entered freeway lanes with active construction in the San Francisco Bay Area by driving between cones that were placed to show the lane was closed. On the back of both of these events, Waymo restricted freeway driving until it could address the issue. In June, Waymo’s Safety Board reviewed the issue and additional information related to ADS performances around construction zones; then, as a result, it decided to conduct a recall. This development is not good for Waymo as it adds to a growing list of technical hiccups its cars have experienced. Ultimately, it will lead to more scrutiny from lawmakers around the world who will be more cautious about letting autonomous vehicles on their roads without tighter regulation. For readers in areas where Waymo operates, does this news make you more wary about stepping into one of these vehicles?
    • I'm still on Windows 10 22H2 because I didn't want to deal with all the issues in Windows 11, so I waited almost a week before installing the latest Patch Tuesday update (KB5094127), I went ahead and did it, and it was a huge mistake—ever since then, my File Explorer has seen a performance drop of about 30% when transferring large files... Once again, Microsoft has outdone itself! This update cannot be uninstalled, either through the Control Panel (via Settings) or by accessing Advanced Startup Options. The only possible alternative would be to use system restore points, but I’d have to reinstall all app and driver updates (and there’s no guarantee it would work). Or there’s the “nuclear option” of a in-place repair without losing files or apps, but even then, all my customizations would be lost! Microsoft just can’t help but mess everything up! Way to go, Microsoft! But I still don’t want your c****y Windows 11!
    • Microsoft: Windows 11 could finally solve a major issue across AMD, Nvidia, and Intel GPUs by Sayan Sen While Microsoft has been trying to improve it, Windows 11 is definitely not flawless, as even today some issues are taking a year to publicly acknowledge. However, one area of trouble that may finally see much better results soon is graphics driver crashes. Work on graphics driver timeouts, also called Timeout and Detection Recovery (TDR), is not new as the latest WDDM 3.2 also has specific improvements regarding it. Windows Display Driver Model (WDDM) version 3.2 is supported on Windows 11 24H2 and 25H2. However, with the upcoming version 26H2, TDR crash diagnosis could go to the next level as Microsoft is introducing a new DirectX 12 API feature called "DirectX Dump Files". Similar to how system memory dump files work when a system crashes or freezes or encounters any such major issue, DirectX Dump Files (DDF) will essentially record a snapshot of the GPU execution right at the moment a graphics-related crash or hang or freeze occurs, so that developers can better understand and diagnoze these TDR and timeout detection errors. The dump will be available as a .dxdmp file for analysis and it will be a comprehensive dump file generated with detailed insights about the hardware, drivers, Windows, as well as the affected application. This should be another welcome change in this department. Earlier at GDC 2026, when the technology was first debuted, Microsoft had shared more details regarding it. The company had explained how DDF is designed to gather data from every layer of the graphics stack into a single file, eliminating the need for developers to manually correlate logs from multiple tools. As mentioned above, the dump can contain a lot of useful details like GPU hardware state information such as register values, shader program counters, page fault virtual addresses, shader memory data, and command buffers. Alongside that, it also captures DirectX runtime and kernel information, including D3D objects, pipeline state objects, device error data, adapter details, and CPU call stacks. Microsoft says the feature has been built around two primary use cases: retail device removals and local device removals. The former allows developers to collect crash information from end users' systems in the field, while the latter helps QA teams and developers investigate issues on test machines. Developers will also be able to include up to 2 MB of custom application data through new D3D12 APIs, providing additional context for troubleshooting. In addition, Microsoft is introducing three dump collection modes ranging from zero-overhead capture, which has no runtime performance impact on supported hardware, to higher-detail modes that collect more vendor-specific debugging data. On compatible Tier 2 hardware, zero-overhead dumps will be enabled by default, meaning developers may begin receiving useful crash diagnostics without making any code changes. The table below explains the three tiers: Tier Description NO_OVERHEAD Enables crash capture with no runtime cost and is suitable for broad deployment MEDIUM_OVERHEAD Provides a balance, capturing additional diagnostic data with moderate impact HIGH_OVERHEAD Collects the most detailed GPU and driver state available, enabling deeper investigation at the cost of higher runtime overhead In terms of availability, the company expects broader release to be around the fall of 2026, which should be right around the time when Windows 11 version 26H2 lands. Right now, DirectX Dump Files are available as a preview and currently, only AMD has the compatible AgilitySDK Developer Preview driver version 26.10.07.02. You can find the official announcement post here on Microsoft's website.
    • And with SO much better perf than the laggy mess that is Files.
  • Recent Achievements

    • One Month Later
      Sharbel earned a badge
      One Month Later
    • First Post
      BizSAR earned a badge
      First Post
    • Week One Done
      Jordan Smith earned a badge
      Week One Done
    • Reacting Well
      BizSAR earned a badge
      Reacting Well
    • First Post
      AndreaB earned a badge
      First Post
  • Popular Contributors

    1. 1
      +primortal
      598
    2. 2
      +Edouard
      190
    3. 3
      PsYcHoKiLLa
      80
    4. 4
      Michael Scrip
      76
    5. 5
      Steven P.
      69
  • Tell a friend

    Love Neowin? Tell a friend!