Monday, January 13, 2014

Mini Ludum Dare 48: Final Day (Three) Dev Log

Screenshot of the game. Yay programmer art!

Today (technically yesterday) was the only day our team (me and Sebastian) were really productive. We got the bulk of the game today. This log will be on my perspective of today. For Sebastian's perspective on today (and the past few days) see his developer log here. Since this article is written a day later, you can download the finished game here.

I started today with a new game state management system, both of the players, and a buggy player shooting projectile system.

The first thing that I did was remove the need to press right to start moving at the beginning of the game. The reason I did this, is because, since that is the only direction you can move on the X plane, the input to move right was moot. Once you started going right you couldn't stop, so I decided to just remove the input outright.

Now that this was done, I went to fixing my bullet implementation. unfortunately, I didn't have the programming know-how to salvage what I had done, so I decided to just axe the current implementation and restart it. This was necessary at that point, although in hindsight, the fact that I had to restart it cost me valuable time that I could have used implementing every feature I had planned for the Ludum Dare version. Anyway, it still had bugs, namely the bullet position starting somewhere out of view, and not on the players cannon, and that it went the wrong direction, and in an arc as opposed to straight. I was able to fix all of these though. The direction was the easiest, I just flipped an errant sight that I accidently wrote as less than instead of greater than. I fixed the arc, by editing more vector positions, and the position code, by creating a new position variable, and using that instead of my very niche player position code, which didn't work very well.
The bullets were now working.... until the player goes to the upper or lower bounds of the screen. After you touch the bounds, the bullets would stop spawning in a visible location. The 48 hours was starting to wane, so I got Sebastian on a fork of the code to work on scoring and the options menu, while I used trace statements to figure out what was going wrong. I rapidly figured out the gunPosition.Y was unbounded. That was one of the many times the problem was so simple that it made me feel dumb throughout this project. I quickly fixed the gunPosition bounding. Then I completely un-object orientedly copied and pasted the whole bullet class, and all of my bullet code, but for the other player. Yeah, I should probably make the code better, but it was a time limit, and when you have a limited amount of time, you go for what works, not what is better.
Update() code in the Bullet2 Class

By this time Sebastian had finished his work on the score, as well as finished the menu theme, and the rest of the art assets. I merged his score code back into the main code base. The score actually, the way we did it was really interesting. I don't think it is the correct way to implement, but it was the quickest way, that didn't cause horrible lag to the game. You can read about it on his blog here. If you were to run the game for 2.2 years, and somehow survive, the game will crash because it will run into an out of memory exception based on the limit on 32 bit systems. I kind of want to have it running in a server somewhere, with collision turned off, just to see it, but I digress.

To add the menu music, I once again hacked in a system where when you press the Enter Key in the main menu screen to go to the Game Screen, I switched the music from the menu looping, to the game one looping. This could be the right way to do it, but it seems weird.

I then added Xbox 360 controller support, which was really easy to add. Nothing needs to be written about it.

Lastly, I added the enemies, This wasn't as bad as I initially feared it would be. I got them to spawn randomly, and move randomly very easily. I even added the facades, which were enemies that didn't actually exist. They would shoot you, and run through you, but it wouldn't damage you. Except that I didn't get the shooting done in time.

Ok, really lastly, I got the game ready to publish. I fixed any bugs that were low hanging fruit, considering I had a severe paucity of time. Then I created a .exe version and a installer version of the game, packaged them, uploaded them to Dropbox, and uploaded them. apparently Dropbox was down for a few days, so I am glad it went back online in time for the upload.

We streamed most, if not all, of the development of the game on  my twitch channel: It is from my perspective. The videos of the stream are up on the Kerinova YouTube channel now.

No comments:

Post a Comment