Not logged in, Join Here! or Log In Below:  
 
News Articles Search    
 

 Home / Game Design & Programming / Picking a language nowadays Account Manager
 
Aveuh

November 08, 2012, 05:51 PM

Hey everyone !
I'm very glad to see flipcode back. I've been a "silent-user" back in the days and learnt a lot from the forums and columns.

So here we are trying to repopulate the forums and I wish to start with something that could look like a flame question, but really is not.

A friend and I have been working for the past two years (with lots of interruption and "real life" work) on a small X4 space-opera game. After restarting the code three or four times for poor design we chose to sit down and write all the specs of a small prototype before trying to code anything.

So here I am, with my specs and my planning really wondering what language I ought to use. I know that a few years ago, C++ would have been a straight answer. But I've been questionning this a lot lately. Sure C++ has a strong advantage in terms of speed but "new" languages such as Python have a lot of integrated tools and libs allowing rapid and really pleasant development.

I have also been considering XNA/C# as a solution, but I read somewhere (and couldn't find the info anymore ... of course) that XNA would not be supported for a very long time. On the other hand, XNA provides a really neat framework and rapid toolkits methods for the boring part of the code, such as window management, assets loading, etc.

If I had to sort out by preference order the languages I would consider, it would be something like : Python >> C# >> C++. However, we all know that video games have some exigences. If every language is able to display 3 triangles in a scene, building a full video game is pretty costly, and I'm afraid Python would not be up to the task.

So here are my questions :

- Would any of you consider Python as a viable option to code a turned-base video game (considering some graphics effects/shaders, etc. Turned-based would not mean "still").
- Would C# be a viable option in the long-term - understand few more years ?
- Are there any other viable solution out there ?


Thank you for your time and suggestions :)

 
Aveuh

November 08, 2012, 06:26 PM

I just realized my post lacks a few precisions. So here they are :

1- The game we intend to build will not be an online game. We want a good old "installable" application, and for the first prototypes a completely solo game.
2- Everything will be in 2D. Once again, for the time being. But switching from 2D to 3D would need another huge phase of conception, which is not the point yet :)
3- We have no preferences between DirectX and OpenGL. I personally prefer DirectX for an esthetic point of view, but I also like the cross platform compatibility of OpenGL. For the moment nevermind if the games only runs on windows or not.

 
Bad Sector

November 09, 2012, 05:21 AM

Since you like Python you can write the game in Python and use C for the low level stuff (graphics, sound, etc) by using Python as a scripting language for a "host" program that provides the necessary low level functionality and the rest of the game layered on top of it.

 
_1dt3k_

November 11, 2012, 10:50 AM

C# is a good, solid language but it really limits you to Microsoft products (Windows, XBox, etc). C and C++ are both very good languages for just about anything that you wish to create, although clearly C++ is the industry standard these days. Python I have never really used however from what I understand it's a good language that many recommend. My issue with is comes with users executing the game. I'm not sure how that would work. With C, C++ and C# it's all quite straight forward; Compile, release and the user simply double clicks the executable. But as I say I'm not sure at all when it comes to Python, although I hear good things about the language.

Also the thing about C# is that it gets constantly updated with just about each release of the .NET framework. Equally, XNA seems to be quite near death at this point, although there are rumours of a replacement/update for it in the near future. So if you were to go down the C# avenue you may wish to look at other libraries such as SlimDX, SharpDX or OpenTK for graphics, input and sound as these libraries tend to get updated quite often, with the exception of SlimDX which hasn't had a release since the beginning of the year.

As for other viable options, you may wish to consider Java. The Java game development community seems to be booming right now and with things such as LWJGL and libGDX there are great resources for game development with the language. There are some drawbacks because like C# it requires a runtime to be installed by the user, and due to the runtime the compiled bytecode would run slightly slower then compiled C/C++ machine code would. As a whole however I personally quite like Java.

 
qux

November 12, 2012, 03:28 PM

Choose what works for you and the project. If you've got doubts about Python, hunt around for some Python games (sourceforge might be a good start, possibly) and try them out. Talk to the authors about any pitfalls they've encountered. You wont really know until you've tried it.

Personally I think C# is a viable option, though I can't comment on XNA. As _1dt3k_ mentioned your not limited to XNA, though XNA does takes care of a lot of boiler plate code you may otherwise have to write yourself.

Have you considered Dark Basic? It might be worth a look at.

 
nosila

November 26, 2012, 02:38 PM

@_1dt3k_ that's not in all true, you have all sorts of examples of C# usage in non Microsoft related environments, for instance, Mono, Unity 3D, etc...

@Aveuh On this note, have you considered using Unity 3D? I can say it is the best game development toolset i've ever used, you need to adapt your project architecture to the tool methodology, but after you got the hang of it, it's just amazing ! I'm working on a Unity 2D project myself and have been using Orthello ( http://www.wyrmtale.com/orthello ), it's free and it helps a lot.

But, if you want to go pedal to the metal, C++ & DX11 is the way to go !

 
qux

November 27, 2012, 01:49 AM

Yeah, I had a play around with Unity the other day and it's not bad. There are lots of tutorials and what-not around too.

 
RedAgito

November 27, 2012, 03:15 PM

As far as I am concerned you can either
1. use an existing engine/toolkit (LÍVE is a 2D game engine I think)
2. if you want to build the game from ground up use C, C++, Java or C# (whatever you prefer, for a 2D game, the speed difference is unimportant)
3. or take the middle way and go with something like the XNA game studio

Imho: if this is your first project, just try getting it ready and don't concern yourself with stuff like cross plattform compatiblity. Try making a playable game and after it is done you are propably busy with your next project.

Oh, and theres also:
4. use a completely new language (Google's GO language, anyone?) and code the game with it XD

 
stefan

December 01, 2012, 08:06 PM

Of course you can code your backend in Python. You can make burgers without bacon. Or actually you can make burgers without dead animals at all.

 
Aveuh

January 03, 2013, 11:05 AM

Thank you for all your answers.

@qux : The problem is that at the moment, no Python game really convinced me. And the whole Python 2/3 compatibility issue is a real mess ... So I guess I'm gonna drop the option for the moment.

@nosila : I've considered Unity ... But seemed to me as using Unreal Engine to code Tetris. An enormous engine that I wouldn't be able to fully exploit to build a rather small game.

@RedAgito : I have not been considering smaller toolkits ... And I guess I should. I have a bad habit of wanting to code everything from scratch, even when it's not necessary (*Must*control*code*) so maybe using LÍVE (and learning LUA by the way) or other 2D game engines would be a good idea

It wouldn't be my first game, but I haven't been coding for games for a few years, and my previous projects were really smaller so ... I guess I don't have a comparison point :)


Again, thank you for your time and answers.

 
Live-Dimension

January 12, 2013, 06:03 AM

C# is a really nice language and I'd seriously have a look at it if I was you. I found that C# really made it a joy to program again, rather then being bogged down with C++ and all its... nice things.

First of all, the compile times are blazingly fast compared to C++. Secondly, Visual studio handles C# far better then C++, and is a great IDE for it. C# can also be very easily used as a scripting language, so therefore you only need to use one language for everything you're doing.

C# has really cleaned up most of the oddities from C++, java, and such like that. There is also wide support for it, from OpenTK, SlimDX, FMod Ex, Bass.net just to name a few. Then you have the extensive support of the .Net Framework. It also is completely possible to run mono and have it running on osx/linux with very few code changes if you do it properly first up. There are plenty of indie games out there that use C# for this route (SpaceChem comes to mind).

C# is also very fast and easy to code in compared to something cumbersome like C++. It takes you far longer to write the same code in C++ then C#, and I find it generally has less "issues".

Also, the whole speed issue between native/managed code when it comes to the speed of .net is really pointless. Managed for all intensive purposes runs as fast as native code. There are cases where managed code runs faster then native simply because managed code can actually target automatically for each processor. Simply put, if your game is running slow, it's not C# at fault, it's your code, or something you're doing.

The only real issues I've come across with C# is a horrible implementation of disposables. http://stackoverflow.com/a/2163702 has helped a lot in that area.

OpenTK also seems to still be somewhat WIP, though slimDX is fully featured.

 
This thread contains 11 messages.
 

If you'd like to post a comment on this discussion thread, please log in or create an account.

 
 
Hosting by Solid Eight Studios, maker of PhotoTangler Collage Maker.