Postmortem
Erik on Jun 27th 2005
AITD is my entry for ld48 #6. It isn’t everything that I wanted it to be, but I’m happy with it. Once again the competition turned out to be very rewarding. This article is my long look back at what I created.
Concept
The idea for AITD was to make a robotron style overhead shooter with mouselook. To make it interesting, and to fit the theme, a lack of light would be a major factor in the gameplay. I did manage to create all of the gameplay elements that I wanted. But I’m not satisfied with the movement of the aliens and the way they react to the light. While the game fits the theme, the gameplay isn’t really about the light and the darkness. I wanted the careful use of the flashlight to be key to survival, but I didn’t develop the gameplay to this point.
Tools
Software
- Python
- PyGame
- PyOpenGL
- Pixen
- TextPad
Python worked out well for me, with the exception of a major bug in my input handler that delayed my progress for a couple of hours Sunday morning. Doing pixel art in Pixen was a lot of fun, and I love the alien sprites that I created.
Hardware
- 1.2Ghz Duron, GeForce 4mx
- 500mhz G3 iMac
The iMac was great for doing graphics, but it runs the game at a terrible framerate.
Technology
When the theme was announced, and I decided on what I wanted to do, I started to work on my lighting technology. Early on I decided to move away from my linux workstation and it’s voodoo3. Instead I used a Win2k system with a GeForce4 mx. Not having to deal with the slow speed and limited texture sizes of the Voodoo3 made working on Windows worthwhile.
I created my lighting effect by rendering my background and unlit objects, and then calling glCopyTexSubImage2d to create a background texture. Lights were then drawn on a black screen by rending a quad textured with the the background. The lights faded nicely using transparency, and coloured lights of arbitrary shape and position were available, though unused in the final game.
The game’s framerate is quite good, as long as your videocard drivers accelerate glCopyTexSubImage2d calls. On systems that do this slowly, the framerate will be terrible, no matter how fast the cpu is.
What went right
Python and PyOpenGL – I have some experience working with these tools, and was able to get things done quickly with them.
Ditching the VooDoo3 – I’m so glad I did this. 256×256 texture size limits suck.
Graphics – I’m not an artist at all, but I’m quite proud of some of the visuals in the game.
What went wrong
Lack of Focus – Even though I spent almost the whole weekend on the project, there were significant stretches where I just wasn’t as productive as I should have been.
Collision Detection – Implementing circle vs. non-orthogonal quad collision detection turned out to be way more difficult than I thought it would be. I wanted to be able to test if an alien was in the beam of the flashlight. Just implementing the approximation that I used took all of my Saturday evening, and totally drained me. This was a key gameplay requirement, and the game suffers from it not quite being correct. On the upside, my geometry skills have been improved by the experience.
Missing elements – I was adding features until the last moments of the competition, and I still missed so many. Any game written in 48 hours is going to have things missing. Unfortunately my game lacks so much that I am going to write a whole section about it.
What’s Missing
Menu’s and instructions – This is the biggest drawback, and it probably cost me the most in the ratings. I had planned to have gameplay instructions written on the floor of the first room, with spotlights illuminating things. I also wanted to have a “the end” message on the floor of the final room. I suspect that many of the people judging my entry didn’t explore the first room long enough to find the switch to move on to the second room to start the game. In game instructions are the one feature that would do the most to make this into something I would call a finished product.
Sound – As so many of the reviewers pointed out, sound would have made the game so much cooler. I wanted to do creepy alien noises very badly.
Damage Feedback – When the player is getting hurt by an alien, the health bar falls, but this isn’t enough feedback. It needs to be more obvious to the player that they are being attacked, because you often can’t see that you are being eaten.
So Much More… – The above three things would have made my entry into real game. But there was so much more I wanted to do. The framework that I built actually has a lot of potential for easily adding features, so it might still happen.
Bugs
I know of three bugs in the competition version of the game. Oops.
Crash after the final room – If the player goes through the door in the final room, python raises an exception when it tries to access the non-exsistent data for the next level. There wasn’t supposed to be an exit from the final room.
Player damage tied to framerate – I didn’t put any limitations on the rate the aliens attack at. For every frame that an alien is touching you, you get hurt. If you have a fast computer, you die very quickly.
Firing rate tied to framerate – The faster your computer, the faster you can shoot your gun. In fact, if you have a scroll wheel on your mouse, you can get rapidfire. Quickly scrolling up and down can clean out a room in a hurry, but the buildup of mouse events can cause the player movement to start to lag.
Stats
48 hours, by the numbers.
Ratings:
| Fun | 2.2 |
| Innovation | 2.5 |
| Production | 2.5 |
Hours worked:
26
Lines of Code:
1915
Graphics files:
11
Levels:
6
Know Bugs:
3
Feedback
Some responses to select feedback.
- i dont like the light effect :(
Uhmmm… ok. Why not? I am actually quite happy with it.
- Not bad, but it’s very repetitive.
- Nice game but not too entertaining since most of the rooms are the same.
Yep, some more diversity between the levels would be nice.
- Won’t run have python 2.3 installed and pygame 1.6 – maybe try py2exing it
You need PyOpenGL to run the source. I did py2exe it. Sigh.
- Kinda like berserk/smashtv but in the dark!
- Reminds of “Pitch Black”. Could use creepy sounds :)
Yay! You nailed the influence for the concept.
- Pretty decent… really crying out for sound effects, and some visible notice when aliens are eating you. I like that you can fire with both buttons to double your fire power.
I had no idea that any mouse button event would shoot the gun. I didn’t know about the double your firepower “feature” until you pointed it out. Cool!
- Nice use of theme, but it wasn’t yet fun enough… sounds could be nice to have in this kind of game.
- Cool concept! It would be excellent to have sound effects though.
Everyone wants sounds. It’s too bad I ran out of time. It would have been loads of fun to do.
- It was awesome! Personally, I loved the lack of sound. It really added to the immersive effect of being all alone in the dark. Really creaped me out. Good call on that.
Thanks Jay.
- It’s quite easy to die at the beginning of a new level.
- A fun little game. Two things Id comment though.. 1) start the monsters a little space away from teh player on the next level (I was always getting attacked instantly) 2) have some level cheat :) so players dont have to do the low levels again
- I really like the light affect, but this game is just a bit too rough, I almost always instantly die on level 2, once made it to level 3. You really need to be able to continue on the last level due to the “die in 1 second if you’re unlucky” nature of the gameplay. Spawning monsters farther from the player at start, less monsters, more obvious start/death clues (took me a bit to figure out I was even dying) would really help.
- Nice. Reminds me of those dark rooms in the originoal zelda. A bit of breathing room is required in level 2+ the badies are right on top of you with out time to swing touch. Good work.
Thanks for the feedback. The game is easier if you have a slower cpu. Sorry about the bug.
- Wasn’t sure how to play.
It’s too bad you didn’t try harder to figure it out. But with so many entries to judge, and my complete lack of instructions, I understand.
- Nice concept. Very narrow beam on the light though.
- Simple enough gameplay. I think it’d have been better if the mouse just moved the aiming direction, rather than set a target (so when you move, it doesn’t affect the aiming).
I disagree. I like the way the flashlight works now.
- Well done.
- Crashes after level 1 repeats and you exit the room. Fluffy aliens.
Thanks for the feedback.
Future Work
My todo list if I ever put more work into this game:
- Fix the Bugs.
- Add intro and gameover screens.
- Add sounds.
- Add more feedback for when the player takes damage.
- Better alien AI and light avodiance.
- Impliment momentum based player movement instead of direct movement.
- More level and gameplay diversity.
I’m sure there are 100 other cool things I could add, but it’s all a matter if taking the time to do it. Is working on this game worth taking time away from other projects?
Conclusion
Once again, I am very glad I entered the competition. I learned a lot, and I’m proud of my game. I was a little disappointed to see my average ratings match my previous ld48 entry, Eaters Of Coins. AITD is a much more complex game and I was hoping to do better with it. It seems that the lack of menus and polish really hurt me. But ultimately it doesn’t matter. I had fun competing, and getting to see what everyone else produced was fantastic.
No responses yet