Jump to content



Photo

Game Development Language Choices

game development c# java c++ python

  • Please log in to reply
54 replies to this topic

#1 Brian Lewis

Brian Lewis

    Neowinian

  • Joined: 06-October 12

Posted 06 October 2012 - 09:29

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. :)


#2 remixedcat

remixedcat

    meow!

  • Tech Issues Solved: 1
  • Joined: 28-December 10
  • Location: Vmware ESXi and Hyper-V happy clouds
  • OS: Windows Server 2012 R2
  • Phone: I use telepathy and cat meows to communicate

Posted 06 October 2012 - 09:30

Not Java

#3 pes2013

pes2013

    Neowinian

  • Joined: 24-September 12

Posted 06 October 2012 - 09:35

Not Java

+∞

Either C++ (best but hardest; You have to know C if you are going to make a game) or C#

Python is too weak to make a decent game.

#4 OP Brian Lewis

Brian Lewis

    Neowinian

  • Joined: 06-October 12

Posted 06 October 2012 - 09:36

I had pretty much no intention of using Java from the get-go, but I always get such polarizing opinions on it that I thought I should leave it there as an option, just in case someone can sway me.

#5 articuno1au

articuno1au

    Neowinian Senior

  • Tech Issues Solved: 2
  • Joined: 20-March 11
  • Location: Brisbane, Australia

Posted 06 October 2012 - 09:43

C++ is the best if you can manage it, but you can do a lot of stuff with C#.

#6 OP Brian Lewis

Brian Lewis

    Neowinian

  • Joined: 06-October 12

Posted 06 October 2012 - 10:05

Are there any recommendations for C++/C# books? I've been looking into the Head First series of books.

#7 Digit12345

Digit12345

    Neowinian

  • Joined: 01-September 12

Posted 06 October 2012 - 10:15

Another vote for C++. There are a lot of great libraries out there for game development. If you have the time to learn it, it will definitely be worth it in the long run.

#8 n_K

n_K

    Neowinian Senior

  • Tech Issues Solved: 3
  • Joined: 19-March 06
  • Location: here.
  • OS: FreeDOS
  • Phone: Nokia 3315

Posted 06 October 2012 - 10:24

Assembly! Nah I'm kidding, C++. I still need to get round to learning it.

#9 OP Brian Lewis

Brian Lewis

    Neowinian

  • Joined: 06-October 12

Posted 06 October 2012 - 10:41

Sure! I'll learn assembly and make some c64 games. :)

#10 n_K

n_K

    Neowinian Senior

  • Tech Issues Solved: 3
  • Joined: 19-March 06
  • Location: here.
  • OS: FreeDOS
  • Phone: Nokia 3315

Posted 06 October 2012 - 11:02

Assembly isn't just for C64, somethings in C++ run very slow and recoding small parts in ASM is worthwhile.
Or you could go full geek like say the people that made who probably coded that in pure assembly :)

#11 Aethec

Aethec

    Neowinian Senior

  • Joined: 02-May 10

Posted 06 October 2012 - 12:24

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

#12 OP Brian Lewis

Brian Lewis

    Neowinian

  • Joined: 06-October 12

Posted 06 October 2012 - 13:32

I bought c++ primer plus for my ipad via kindle. Hopefully it's as good and thorough as the reviews state. Thanks fellows!


#13 Andre S.

Andre S.

    Asik

  • Tech Issues Solved: 11
  • Joined: 26-October 05

Posted 06 October 2012 - 21:21

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.

#14 Veiva

Veiva

    Neowinian

  • Joined: 25-November 03

Posted 06 October 2012 - 21:38

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:

Posted Image

#15 Andre S.

Andre S.

    Asik

  • Tech Issues Solved: 11
  • Joined: 26-October 05

Posted 06 October 2012 - 22:23

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.