Game Programming

jfnirvana292

[H]ard|Gawd
Joined
Apr 9, 2002
Messages
1,490
I am sure there are 100 topics out there but I would like to get into game programming. I am currently a Java developer that writes business applications.

Not sure what platform I will start with, probably PC. I heard of XNA...anyone have experience with it? Just looking for some info for a beginner, thanks!
 
Since you know Java already I would start with Java3D or Android w/ OpenGL ES. Plenty of reference materials/tutorials for both.
 
Game programming encompasses are great many subjects. What kind of stuff do you want to accomplish?
 
If you want to learn games/3D programming I highly suggest starting with a game library rather than an engine like jmonkeyengine, which IMO is too abstracted to really teach you anything. If on the other hand you just want to make a simple game as quickly as possible, then there's nothing wrong with using an engine.

On a side note Minecraft uses LWJGL (http://lwjgl.org/), that might be a good start.
 
I've been using XNA and C# for my side project and it's been a fun experience. It allows me to focus on the programming without having to get to in depth into handling the graphics, but still leaves enough room for growth where there's always something new for me to learn.

I don't like how I don't have many options for platforms, but then again, I've tried various libraries for java and just never got into it as much. A nice aspect about XNA is that C# is quite similar to java, so it shouldn't be difficult to pick up.

The hardest part for me right now, is all the other stuff involved in making a game, and not the programming. I can bang out features quickly, but creating all the assets is time consuming and difficult, especially as I am not an artist.

15screenshot.jpg


The hardest part of learning the basics was just diving in and getting past the initial learning curve. But, then again, I think that applies to most anything.
 
As it's been said, this is a vast subject.

I wouldn't be too particular about the language as every engine and framework out there uses something different.

I recommend working on customizations/mods for existing engines like Source or UDK. You can use the assets provided by the game, and then write your own scripts for custom functionality.
 
Unity is a very powerful, and mature game engine with commercially usable, royalty free base licenses available for pc and mac, and paid ones for android, ios, and pro features. Look into it at unity3d.com. I am using it for my first individual commercial project which will be on android, pc, and later ios and mac.

Unity is a very portable engine between platforms with low workload to do things needed to be changed per platform. It is already powerful but coming down the pique are new particle systems, further lightprobe improvements, and dx11 rendering paths. It used to be fairly singlethreaded but has a good capability of using multicore for most systems now. It has beast lightmap systems and umbra occlusion culling built in and available.

It also has an extremely robust community and answers site, is well documented, and accepts c#, boo, and unityscript. It imports most 3d formats and sounds directly, and has some solid 2d frameworks available on the asset store by 3rd parties.

Regardless of what you choose, most products are best built with middleware if being done by a small team or individual. Many largescale projects use non-scratch engines nowadays, in fact the bulk of them do. Other ones to check are udk and cryengine3, but the unity editor and extensability won me over hands down.

As a learner, you will see much quicker results for your minor projects, and when you are more learned down the road you may very well want Unity for your engine regardless as an indie, and if getting a job the same skills are needed anyway. Don't misunderstand me though... game creation is an enormous task and takes a long time to become decent to good in the needed areas witb how much goes into it. A middleware is only a tool. It is up to you to make the game.... just like Word is a document creation program some write bestsellers with.
 
Last edited:
start simple....like really simple. take something that is out there and just try to recreate it. Something like Oregon trail or something.

Thats were I started, it helped me learn a great many things about building a game. Even taking something like Oregon Trail and taking out some aspects of it like the shooting and some of the animations, it still had so many parts involved.
 
start simple....like really simple. take something that is out there and just try to recreate it. Something like Oregon trail or something.

Thats were I started, it helped me learn a great many things about building a game. Even taking something like Oregon Trail and taking out some aspects of it like the shooting and some of the animations, it still had so many parts involved.

+1. I would start with something even simpler like asteroids or even pong.
 
Game programming is just like any other programming, except you are mainly dealing with 2d/3d graphic api's.

If you are going 2d figure out how to draw a dot in java and from there move on to placing sprites, animating sprites, and then the whole making some sort of game out of that. (mario?)

If you go 3d you might as well use direct3d or opengl and if you dont remember too much about matrices, vectors, and dot products you will soon find out. (But most people that do something with 3d dont ever finish anything you could call a game, myself included, but then again I'm more interested in the programming and getting certain rendering techniques down than the actual production of something useful)
 
Game programming is just like any other programming, except you are mainly dealing with 2d/3d graphic api's.

This is true to an extent. It is just like any other programming if all you are doing is the programming aspect of it. But, in reality, unless you are working with a team of people, you are going to have to handle all aspects of game creation, which can be daunting. It encompasses a whole lot more than I originally thought when I started working on my project.

The rest of the advice is sound, and a good place to start. Just don't expect to only deal with the programming aspects if you are handling the project alone and want to end up with an actual game, even a simple one, as the end result. There is so much more to it than programming.
 
This is true to an extent. It is just like any other programming if all you are doing is the programming aspect of it. But, in reality, unless you are working with a team of people, you are going to have to handle all aspects of game creation, which can be daunting. It encompasses a whole lot more than I originally thought when I started working on my project.

The rest of the advice is sound, and a good place to start. Just don't expect to only deal with the programming aspects if you are handling the project alone and want to end up with an actual game, even a simple one, as the end result. There is so much more to it than programming.

Can you please expand on this? What are some of the areas besides programming? Graphic design??
 
Game programming is just like any other programming, except you are mainly dealing with 2d/3d graphic api's.
I would not say that. The techniques you'll apply to game programming (specifically game engine programming, which I'm assuming is what you're referring to) are not always very similar to those you'll apply to other types of applications. You'll do things in a game engine you'd never do in a typical desktop program, phone app or web app, and many of the things you'll do in a typical desktop, phone or web app simply will not fly when constructing a game engine for performance reasons.
 
I would not say that. The techniques you'll apply to game programming (specifically game engine programming, which I'm assuming is what you're referring to) are not always very similar to those you'll apply to other types of applications. You'll do things in a game engine you'd never do in a typical desktop program, phone app or web app, and many of the things you'll do in a typical desktop, phone or web app simply will not fly when constructing a game engine for performance reasons.

This is correct.

Can you please expand on this? What are some of the areas besides programming? Graphic design??

A whole hell of a lot. Other than programming & code optimization, you're looking at 3d modeling, texture painting, animation, rigging, sound production for effects & music, designing a unified art style, level design, creating a solid asset pipeline for a good workflow, asset optimization (sound/models/textures/etc.) marketing, market research (what to price at, what to make, what to name it, what to use for an art style, etc. etc.), documenting things for yourself and/or team with Game Design Documents so as to keep the project on course, GUI design & implementation, API research & quirks, bug testing & performance testing on multiple platforms & multiple models of each, implementing analytics on gameplay/user interface flow to help aid in usability testing, gathering feedback from testers in a meaningful way that can be used to actually improve your product, and a lot, lot more.

If you want anything like an online high-score board or paid in-game (for mobile)/expansion (for pc) level downloads you need to implement an e-commerce solution or deal with something like Steam and its associated API's, then networking API's for mobile. Multiplayer peer-to-peer, or online multiplayer... even more things!

Oh, and if you want to have any kind of community around your game, you have to design & maintain a good website, start generating buzz at mid-production, analytics for the website, handle social media interactions, etc. as well.
 
Last edited:
Not for every application. Certain things still "need" DRM layers, which the HTML5 JavaScript APIs can't provide. For everything else, though, yes, the HTML5 JavaScript APIs, Canvas and WebGL provide comparable or better functionality than Flash. The current issue is a lack of tools, which is slowly being remedied.
 
Back
Top