• 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
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.

C#: XNA has a working open-source and multi-platform implementation, MonoGame. It has already been used in several commercial titles. This makes XNA an excellent choice not only for the awesome language, tooling, documentation and API, but also to develop your game for all existing mobile and desktop platforms. At a much higher level, you also have Unity, which is widely used in the game industry and is also as multi-platform as engines go. If you want to learn C#, the best book I know of is a free one: The Yellow Book. Recently updated for C# 5 as well!

Java: the VM is anything but slow: the best implementations (Hotspot) can optimize code beyond what the best optimizing C++ compilers can do. However, the Java language is kinda boring and I don't know of any good game APIs for it. If you want to target the Java platform I suggest using the Scala language; it's quickly gaining ground as a better language for developing Java-based applications.

C++: depends what you want to do. If you want to program games, bad choice. The multitude of pitfalls, slow compilation and poor error reporting will just get in your way; performance-wise, there's no way you'll beat what the .NET or Java VMs offer you unless you really know what you're doing and in specific circumstances. Most likely, your game will simply be less portable, less performant and a lot less feature-rich because you'll spend most of your time fighting the tools and language rules. Yes, C++ is widely used by the big game studios: that's because they have the specific need of extracting maximum performance out of closed and unorthodox platforms. You don't, so you don't need C++.

Python: great for learning and experimentation, PyGame is an excellent game development library. This one IS slow however, but if 2D NES-style games are your objective you shouldn't run into performance problems anytime soon.

  • 0

Hands down I'd recommend C#. You may be worried that there's only XNA, but that's not the case. There's a few libraries out there, such as OpenTK and MonoGame, that alleviate the problem of cross-platform compatibility. Personally, I wrote my own game library/framework based on the C-based library Allegro 5.

The speed is nothing to scoff at, either. Obviously it's not as fast as C++ in some cases, but C# makes development so much faster because of the lack of the quirks present in C++. So regardless of if you're developing a small 2D platformer or a complete 3D engine, I do think that C# is the wiser choice in this day and age. The features and richness are just unmatched by C++, in my opinion.

On a side note, I'm actively developing a video game in C#. It has some pretty nifty features that would be absolutely annoying or impossible to implement nicely in C++. Hence my choice. Most of the time spent is not in C#-land but in the GPU (although it may not look like it, it's pretty GPU demanding because of the features I use to sustain graphics quality), if you want to know from personal experience. This is why I believe that C# is suited for games development, especially if you're not designing something on the scale of Unreal 4.

It looked like this a few days ago:

rOFky.png

  • 0

XNA is no longer maintained, though there are open source alternatives.

Has there been any announcement to that effect? Microsoft hasn't announced any new version of XNA, but they still support the platform. My optimist theory is they will announce something around the same time as Xbox Next. Worst case scenario, they never update it again and we all switch to MonoGame, which anyway is more-crossplatform, Xbox excepted.
  • 0

If you plan on writing a game in C#, you may as well start with C#. There is little point picking up the intricacies of a language that you aren't going to use.

For instance, you are going to learn a lot about deciphering compiler error messages and things like template metaprogramming with C++. Neither of which you will need for C# development.

On the otherhand you could be learning about things that are much more important to C# such as reflection, the generics system (which is very different to templates) and other ideas.

  • 0

I think this really depends on the platforms you want to target, then decide on the language.

Yes, C++ is definitely the best one to learn if you want to write AAA games, or attempt to get a game on XBLA. However, take a look at some of the big names in indie games right now. They got their start in, and still make games in, AS3. I know there's a lot of hate out there for Flash but AS3 is an amazing language and kicks the crap out of anything else that is web based.

Just my two cents from inside the industry.

  • Like 1
  • 0

I personally am writing a C#/XNA Game in my free time, it's nothing crazy yet, still doing the basic interface. I've been re-writing standard form controls and the whole idea of screens/forms to make my job easier. I am using purely the base includes (outside of say IO, .Net.Sockets) so doing everything inside the XNA Framework. But I've got it to the point where I can do things like:

Button btnLogin = new Button(1);

btnLogin.Text = "Login";

btnLogin.Click += new Control.ClickEventArgs(btnLogin_Click);

AddControl(btnLogin);

I don't have it as fancy as the stock windows forms, but I also don't want to use them. It's a fun challenge but it makes doing things way quicker in some ways.

  • 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++.

Performance wise, Java and C# are going to be close, and unless your pushing the hardware to its limits (which you shouldn't be with a non-3D game), then you will have no trouble with either of these languages. C# probably has the advantage here when dealing with game libraries and engines, although I don't think Java is a bad choice either.

Python is easiest to learn, and with things like pyGame, you can start making games very quickly.

Look at the languages, look at the tools available and make a choice based on that.

  • 0

I wouldn't recommend XNA, not since they got stuck in 2004 with DX9c-only support. :rolleyes:

I will however say that C# with SlimDX or SharpDX are very good places to start.

XNA and SharpDX have totally different goals. The purpose of XNA is to provide a complete game development framework including asset management, networking, deployment, etc., for students and hobbyists, and abstract away the hardware differences between platforms as much as possible. The purpose of SharpDX is only to provide a fast managed wrapper around DirectX: it's every bit as complex and powerful as the original API, and yet it doesn't cover half the scope of what XNA does.

So, they different tools serving different purposes. That XNA uses Direct3D 9 under the cover is not much of an issue to its target users. Plus that will all change as the open-source MonoGame implementation will use SharpDX to support Windows 8.

  • 0

XNA and SharpDX have totally different goals. The purpose of XNA is to provide a complete game development framework including asset management, networking, deployment, etc., for students and hobbyists, and abstract away the hardware differences between platforms as much as possible. The purpose of SharpDX is only to provide a fast managed wrapper around DirectX: it's every bit as complex and powerful as the original API, and yet it doesn't cover half the scope of what XNA does.

So, they different tools serving different purposes. That XNA uses Direct3D 9 under the cover is not much of an issue to its target users. Plus that will all change as the open-source MonoGame implementation will use SharpDX to support Windows 8.

What networking does XNA offer beside Game for Windows Live, which was a short-lived cancer and thankfully, has almost completely passed away?

Yes, XNA simplifies things a little. I used it for my degree project and it was nice. But other than the content pipelines, it really has little purpose. If you want to focus on content creation, use a made engine such as Unity or UDK. If you wish to learn engine development, invest the [little] extra time and learn a more encompassing framework. In the long run, the so called advantages of XNA are minor and unimportant.

I used XNA because when I was developing my project, I wanted to use C# and there were only XNA and Managed DX, and the latter was a mess.

This topic is now closed to further replies.
  • Posts

    • Nice, hope they *finally* fixed the issue with the NTFS driver where the system would completely brick during large file copies using the built in driver. It's been broken for years requiring me to use the older, slower, NTFS-3G FUSE driver.
    • Windows 11 KB5094126 BSODing, freezing, forcing BitLocker lockout, breaks OneDrive, and more by Sayan Sen Microsoft released Windows 11 KB5094126 and KB5093998 last week as the latest Patch Tuesday updates. Following that the company also published the accompanying dynamic updates under KB5094149, KB5095971, and KB5094156. While Microsoft has so far not acknowledged any major problems with the release, some users online are running into problems. These range from OneDrive and Dropbox access issues, BitLocker recovery lockouts, to blue screens and BSODs. The most common one seems to be happening with HP systems wherein affected users say they hit 0xc0430001 BSOD (blue screen of death) error code after the KB5094126 update. We wonder if this could be related to the recent bug we covered on HP devices wherein the ongoing Secure Boot certificate updates are leading to similar issues. While we are not certain, users affected by this issue likely need to ensure that the boot.stl file is included on the installation media (such as a USB installer or ISO), if the above-mentioned dynamic updates are deployed. If this file is missing, computers may fail to boot from the installation media and could display the error 0xc0430001. This STL file is used by Secure Boot to verify that the boot files are trusted, so it must match the same Windows version and system architecture. To ensure the file is included, Microsoft recommends using the Update WinPE script, which automatically updates the image and handles the required files. Alternatively, you can manually copy the boot.stl file from the Windows\Boot\EFI folder on a Windows device and place it in the matching folder on your installation media before deploying the updated image. Aside from blue screening some users also note their systems have been freezing following the update. This could be happening to Lenovo PCs specifically. In the case of the OneDrive and Dropbox access issues, a user figured out that there could be a conflict with UAC. He explained: "Okay, so I did some digging, and in our environment KB5094126 breaks OneDrive and Dropbox in Explorer. I went through all our GPOs and found out that the combination of disabling UAC and having my user being a local admin breaks OneDrive in Explorer. ... If I enable UAC again, then it works, even with KB5094126 still installed." Hopefully, Microsoft will look into these issues. Source: Microsoft forum (link1, link2, link3, link4), Reddit (link1, link2, link3, link4)
    • It is when it's a desktop in my house though for a PC that's lightly used and not really important when it is. If it was a laptop, it would be a different story. The real solution is varied and begins starting at post #22 in that thread.
    • Win11Debloat 2026.06.14 by Razvan Serea Win11Debloat is a lightweight, easy to use PowerShell script that allows you to quickly declutter and customize your Windows experience. It can remove pre-installed bloatware apps, disable telemetry, remove intrusive interface elements and much more. The script also includes many features that system administrators and power users will enjoy. Such as a powerful command-line interface, support for Windows Audit mode and the option to make changes to other Windows users. All changes made by Win11Debloat can be easily reversed, and most removed apps can be restored via the Microsoft Store. A full guide on how to undo the changes is available here. Win11Debloat features: Below is an overview of the key features and functionality offered by Win11Debloat. Please refer to the wiki for more information about the default settings preset. Remove a wide variety of preinstalled apps. Click here for more info. Disable telemetry, diagnostic data, activity history, app-launch tracking & targeted ads. Disable tips, tricks, suggestions & ads across Windows. Disable Windows location services & app location access. Disable Find My Device location tracking. Disable 'Windows Spotlight' and tips & tricks on the lock screen. Disable 'Windows Spotlight' desktop background option. Disable ads, suggestions and the MSN news feed in Microsoft Edge. Hide Microsoft 365 ads on the Settings 'Home' page, or hide the 'Home' page entirely. Disable & remove Microsoft Copilot. Disable Windows Recall. Disable Click to Do, AI text & image analysis tool. Prevent AI service (WSAIFabricSvc) from starting automatically. Disable AI Features in Edge. Disable AI Features in Paint. Disable AI Features in Notepad. Disable the Drag Tray for sharing & moving files. Restore the old Windows 10 style context menu. Turn off Enhance Pointer Precision, also known as mouse acceleration. Disable the Sticky Keys keyboard shortcut. Disable Storage Sense automatic disk cleanup. Disable fast start-up to ensure a full shutdown. ...and more. Once you’ve downloaded the Win11Debloat file (Get.ps1), just follow these quick steps: Locate the Get.ps1 script file. Right-click the file and select Run with PowerShell from the context menu. If prompted by User Account Control (UAC), select Yes to grant the script the necessary administrative permissions. Win11Debloat 2026.06.14 changes: This is a minor release that hopefully addresses the false positives in Windows Defender and Bitdefender that prevented users from downloading and/or running Win11Debloat. Refactor Get-RegFileOperations.ps1 to address false positives by @Raphire in #626 Add logging around WinGet app retrieval and increase timeout to 20s by @Raphire Download: Win11Debloat 2026.06.14 | Open Source View: Win11Debloat Home Page | Screenshots 1| 2 Get alerted to all of our Software updates on Twitter at @NeowinSoftware
  • Recent Achievements

    • Week One Done
      Jeroen Wilms earned a badge
      Week One Done
    • Week One Done
      rolfus earned a badge
      Week One Done
    • One Month Later
      Leroy Jethro Gibbs earned a badge
      One Month Later
    • Conversation Starter
      flexorcist earned a badge
      Conversation Starter
    • One Month Later
      AndreaB earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      508
    2. 2
      +Edouard
      198
    3. 3
      PsYcHoKiLLa
      138
    4. 4
      ATLien_0
      90
    5. 5
      Steven P.
      81
  • Tell a friend

    Love Neowin? Tell a friend!