Hello there!
I am looking to start programming simple 2d games, but face the daunting number of languages to choose from. Also, I would like to program under linux rather than Windows. I figure that for 2d games I shouldn't need access to DX11 or anythng like that. If I did want to mess about with 3D games then I guess OpenGL under linux would be fine.
Anyway, I have not done any programming in about 6 years, but when I did it was all unix based. At university I used both C and Java.
I did think that perhaps I would try C#, as the company I work for use this language, but since this is intrinsically associated with the Windows platform I'm not so sure.
What better way to approach this dilema than to come to Gamedev.net and ask around?
I am seriously excited about making a shoot em up or some kind of platform game. I grew up with computers, and must have racked up a ludicrous amount of time playing games on my old C16, then Spectrum, then Atari ST, then Amiga - but I am most fascinated by the 8-bit games, hence the 2d games programming idea.
I did study 2d graphics programming at uni, and loved it. We made a little game in C.
Mid-life crisis? Me?
Anywayz.... thanks in advance! 8D
Noob. Need help with choice of OS & language
In regards to most of your technical questions re languages and libraries read this. It is however a bit Windows-centric ( as is the world in general ), but it doesn't actually make things all that different. You wont be able to use Visual Studio or XNA, although you can use Mono+MonoGame and accomplish pretty much the same thing. Almost every other language and library recommendation in that guide would apply to Linux as well.
I personally would recommend C# + XNA as probably the perfect setup for getting back up to speed with programming while making a 2D game. That said, mono/monogame are going to make that process slightly more complicated. All the recommendations for C++, Java and Python should work exactly the same on Linux however.
I personally would recommend C# + XNA as probably the perfect setup for getting back up to speed with programming while making a 2D game. That said, mono/monogame are going to make that process slightly more complicated. All the recommendations for C++, Java and Python should work exactly the same on Linux however.
I guess the stock recommendations for linux would be C & SDL, C++ & SFML, or use either of those combinations with OpenGL (even for 2d stuff...), they both also work on windows so porting is relatively straight forward. Java should be fine for a shoot em up too. I often use it to do little prototypes since I can show it to friends etc. without worrying about compiling for other platforms.
Thanks for the quick responses guys. After doing some more research I've started thinking about Java more and more. I guess I like the idea of being able to use OpenGL, plus maybe in the future being ready for a jump to Android.
I think at this point for me C++ is probably a non-starter. It's either C, C#, or Java - with OpenGL. I'm not aux-fait with which development kits to use, but do like the sound of using OpenGL for 2D games and having the 3D route open.
C and Java I've coded in before, so less time spent figuring out the fundamentals.
MonoGame - I'll have to look into this.
Serapth - thanks for the link. Just had a scan and it looks fascinating. I'll check this out ASAP.
Thanks again guys!
I think at this point for me C++ is probably a non-starter. It's either C, C#, or Java - with OpenGL. I'm not aux-fait with which development kits to use, but do like the sound of using OpenGL for 2D games and having the 3D route open.
C and Java I've coded in before, so less time spent figuring out the fundamentals.
MonoGame - I'll have to look into this.
Serapth - thanks for the link. Just had a scan and it looks fascinating. I'll check this out ASAP.
Thanks again guys!
If you're productive in Linux, use Linux. Python is likely your best beginner friendly option there.
If you're comfortable in windows, use windows. Most of your potential users will be there, and it's the common development environment.
If you're comfortable in windows, use windows. Most of your potential users will be there, and it's the common development environment.
Whatever you choose, I would highly recommend looking into using a 2d physics library (chipmunk-physics, Box2d, etc.). These libraries handle all the physical interactions your objects might have. That includes movement, collision detection (get notified when 2 objects have collided), collision handling (ie, bouncing ball, pushing objects, etc.). Basically, you can give an object a velocity, or a force, a collision mask (what you want the object to collide with), a collision callback, and tell the physics engine to "go" and it handles everything else.
I used to program everything myself, but, when I learn how to use the libraries, it was like a light went off. Now, any 2d game, I would use a physics library.
Take a look at my old blog (linked in my sig below), it details a 2d game I made using a 2d physics engine. Specifically, http://2dgamemaking.blogspot.com/2011/10/adding-2d-physics-engine.html
introduces the physics engine, and
http://2dgamemaking.blogspot.com/2011/10/bullets-added.html
which show adding bullets (where we give the bullets a velocity and angle, and add it to the s2d space), and http://2dgamemaking.blogspot.com/2011/10/added-bulletwall-collision.html
which shows a simple collision detection callback
Good Luck
I used to program everything myself, but, when I learn how to use the libraries, it was like a light went off. Now, any 2d game, I would use a physics library.
Take a look at my old blog (linked in my sig below), it details a 2d game I made using a 2d physics engine. Specifically, http://2dgamemaking.blogspot.com/2011/10/adding-2d-physics-engine.html
introduces the physics engine, and
http://2dgamemaking.blogspot.com/2011/10/bullets-added.html
which show adding bullets (where we give the bullets a velocity and angle, and add it to the s2d space), and http://2dgamemaking.blogspot.com/2011/10/added-bulletwall-collision.html
which shows a simple collision detection callback
Good Luck
Thanks guys. I'm still a bit torn by this whole thing.
So I know that the mono project is quite mature, and that games programming in C# under linux should not be a problem.
On the other hand I'm more familiar with Java, and I am more aligned with open source mobile gaming.
So I know that the mono project is quite mature, and that games programming in C# under linux should not be a problem.
On the other hand I'm more familiar with Java, and I am more aligned with open source mobile gaming.
Thanks guys. I'm still a bit torn by this whole thing.
So I know that the mono project is quite mature, and that games programming in C# under linux should not be a problem.
On the other hand I'm more familiar with Java, and I am more aligned with open source mobile gaming.
Well, your last paragraph is going to be a right pain in your ass. Without using a cross compilation library like PlayN, you simply aren't going to get far in mobile gaming in Java, which is kinda ironic, as a few years ago J2ME was *the* mobile language.
Simply put, you aren't going to be able to target iOS or Windows Phone using Java. ( Although you can target Android and Blackberry ).
This is one of those very very very rare occasions where I actually recommend C++, if you want to create open source, multiplatform mobile games, C++ ticks the most boxes for the least cost. Well, that or HTML5. If you go the C++ route, you can target everything but WinPhone 7, often with the same code base. Although thanks to Unity, C# is also quite far reaching.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement