Welcome to the Developer's Area of GrayCore Software!
Making a game is really really hard work. You need to force yourself to have a good developmental process and follow it to the letter, and that requires a lot of patience and a lot of dedication. There are many books about process development, but when it comes down to it you need to write down (in as much detail as possible) what you're going to do, and how you're going to do it, with some estimates on how long each part is going to take. I've found that if you multiply your estimates by 10, it will give you a more realistic picture on when you're actually going to finish it. Believe me, there are things that you think are super simple to do, but turn out to take an excruciatingly huge amount of time.
Writing code is one thing. Testing it is another. People will use your application in ways you've never even thought possible, and things will break. If I were to break up my time into percentages, this is what it would look like: 15% Design (mapping out the quests, drawing on paper the world map, designing all the functions to make combat entertaining, etc.), 30% Coding, 30% Testing, 25% Graphics/Music (I can't draw to save my life, so a lot of time is spent finding people to do the graphics, sound effects, music, etc.).
Development
All I can say is get a good notebook, because you're going to be doing a lot of writing and a lot of sketching. I keep all my bugs in a simple Excel file, but all of my design I manually write down in a notebook — quests, little sketches of towns, a scratch pad of doodles from when I'm trying to figure out some high school geometry. Here's a few pages from it:
Sample Source Code
Here is some sample source code that I've written. What I typically try to do is separate all the game data from my code. I store all my data in XML files, and I read those XML files during startup. For instance, I have a class called Weapon which describes all the attributes of a weapon (Weapon Name, Damage, Weight, Value, Number of Hands, etc.), and in the XML file I have the actual attributes that describe a particular weapon (e.g. WeaponName="Dagger", Damage=1d4+3, Weight=75). This makes things way easier to maintain — if I want to tweak a value, I just modify the XML file and the code stays the same.
Testing
I do a lot of the testing myself, but toward the end of a project I find "Beta Testers" to try it out and report bugs. Beta Testers can be anyone — sometimes random people from the internet contact me, other times my friends volunteer. When me or my friends are testing the game, I use NCoverExplorer to figure out what code is being touched and how often — a good way of finding dead code. Some sample reports:
Mar 24th 2009: 77%
Feb 05th 2008: 75%
Jan 18th 2008: 73%
Jan 15th 2008: 62%
Source Code for the Space Invaders Proof of Concept
Over a weekend, my friend, Justin Mobijohn, and I made a game loop written in Java. The source code is available for any curious Java game developers, and it includes a HowToCompile.txt explaining how to build it as an executable jar or a simple .class file.
Download binaries and source (including how to compile)
SpaceInvaders.java
GameObject.java
ImageManager.java
SpaceShip.java
Enemy.java
Missile.java






