Friday, February 1, 2013

One Game A Month - Asteroid Alan

Hey Readers,

So I mentioned at the end of my last post that I was going to give this One Game a Month thing a go as a sort of New Years resolution to complete more projects.

So here I sit at the end of the month with my first finished project, Asteroid Alan. I present you with a bit of a post mortem on the first project in this series.
 
Premise
 
It's a mash-up of Dig Dug and Asteroids. The idea is to maneouver your ship in behind the asteroids and latch on to mine gems and minerals from the mines. Once you latch on you tap the space bar and the asteroid blows up, leaving a bunch of gems floating to collect and splitting the asteroid into smaller pieces. You can also fire the latch at the asteroids from in front but it splits the asteroid immediately, doesn't leave any gems, and you don't get as many points so it's in your benefit to manouever behind the asteroid but still leaves you with options if there's an asteroid barreling down on you.
 
Plan of Attack
 
I knew immediately that this idea wasn't going to succeed without some kind of planning. I broke up my schedule into 4 weeks of 5 days since I only work on my projects while I'm on transit. I allocated 2 weeks for coding features, 1 week for art and sound, and 1 week for polish and bug fixing.
 
What Went Right
 
A whole lot went right. Having a schedule for all the pieces that needed to go into the game I knew exactly whether or not I was on track to finish. This helped me on a day by day basis by letting me know if I had the time to spend fleshing out a feature that extra little bit. I'm also really happy with how much this furthered my engine. I've now got the start of a great particle system as well as a basic approach to laying out post process effects. It's also a great feeling to actually finish a project from start to finish.  

What Went Wrong
 
Not a ton of things went wrong, I'm quite happy with the end result. However there were a few things I wish I had of gotten to. The first and most obvious being the lack of sound in the game. I managed to integrate sound playback into the engine but I didn't leave enough time to scour the internet for sound effects to put into the game. I think on the next go I'll do more research into sound, maybe try out some of those sound generation programs they have for generating 8-bit sounding effects.
Another thing that could have gone better is actually sticking closer to the schedule. While the schedule was great for helping me to keep track of where I was, after the second week I kind of started jumping around the schedule I had layed out. As a result my front end kind of fell to the wayside because rather than working on frontend when it was scheduled I just blocked in the flow and moved on to other tasks. This wasn't necessarily a bad thing though, I can't say for certain that I would have gotten everything going as well as it is if I had of dedicated more time to fleshing out the frontend.
One last thing that didn't necessarily go wrong but I hadn't accounted for were bugs in my engine. It's funny how many times you hear, "Make games, not engines." it's actually quite true. I had built this complex engine with a bunch of tech demos but when it came time to turn the chunks of code into a real game I ran into quite a few use cases that I just hadn't accounted for.

What Needs To Change
 
One thing that I really need to change is how I have my engine layed out. It's currently all in a single visual studio project along with all the source code for all my projects. I have a launcher menu that lets me select what game/tool I want to launch into. As I've been developing this has been great because it allows me to quickly jump between different projects, making sure I don't break anything along the way. This was annoying though when I was trying to get this game ready to release because I had to comment out a ton of the launcher stuff and a few other items that were slowing down the launch. It's also a real pain when I make a low level change because all of the source is in this one project and on my little netbook I can waste a whole commute just compiling.
Moving forward I think I'd like to separate out the engine into it's own library and move all my projects into their own project files. This should help with compile times since I'll only be building the code that I'm working on at that time. 

The Game
 
So I present to you, Asteroid Alan. I think the only requirements are DirectX 9 and a graphics card capable of shader model 3.0.
W for thrusters
A,D to maneouver left and right
Spacebar to fire latch





Tuesday, January 8, 2013

Earth Cubed

It's been a long time since my last post!

Life has been so busy the last couple of months I just haven't been able to find the time to post. I took a break from the bar game over the month of December. As you readers have probably noticed my attention span for a project usually lasts about a month before I need a change of pace. I decided to spend some more time on my voxel earth project.

Kind of took a step back and decided to get a voxel globe rendering first rather than getting all the height maps loading properly. It should be fairly easy to drop in the height maps though. I've got a nice chunked lod working so each tile subdivides as the camera gets closer and closer to the surface down to about 100 meters. There's a lot of depth issues I need to resolve at that resolution but I'll revisit that down the road.
 
I spent some time on the rendering as well. The atmosphere rendering in particular. I used Sean O'Neils implementation of atmospheric scattering as a starting point and made a few modifications to get more of it running in the pixel shader rather than the vertex shader which gave a smoother result.  The big thing that's still missing is to render in HDR and apply some kind of tonemapping. I'd get much better results that way. For now I'm just applying some tonemapping to the end pixel result so that I get a nicer visual range of values.

Now that I've got the rendering working there's going to be quite a bit of work on my post processing tool that splits up the DEM's into bite sized chunks to map onto the surface. The work is fairly straight forward but it will take some time to switch everything around. Probably more time than I really want to invest at the moment. Not to worry though, I always come back to projects.

Moving forward for the new year I'll be taking a break from these big projects and giving the one game a month competition a try. More to come about that in my next post.