Spacen
You are International Antiterror Special Ops soldier Lt. Charles, sent to investigate reported Space Nazi activity near the moon. You find a station of theirs on the dark side of the moon, when they manage to damage your ship and you are forced to land. Your new mission is to get as many of those bastards as you can.
Note: Please read the README. You may want to use the resolution switches, especially if the default window doesn't fit your screen well.
Awards
Scores
Ratings (show detail)
Overall: 3.2
Fun: 3.2
Production: 3.3
Innovation: 3.2
Respondents: 18
Files
File | Uploader | Date |
---|---|---|
spacen-1.1.zip
— final
Release 1.1 |
otus | 2013/09/07 20:20 |
spacen-1.0-nomusic.zip
Final Release (without music) |
otus | 2013/09/07 17:43 |
spacen-1.0.zip
— final
Final Release |
otus | 2013/09/07 17:42 |
spacen-0.9.1-nomusic.zip
Release Candidate 2 (without music) |
otus | 2013/09/07 11:45 |
spacen-0.9.1.zip
— final
Release Candidate 2 |
otus | 2013/09/07 11:45 |
day-7.jpg
Screenshot of some action |
otus | 2013/09/07 11:11 |
spacen-0.6-nomusic.zip
Beta (without music) |
otus | 2013/09/06 10:35 |
spacen-0.6.zip
— final
Beta |
otus | 2013/09/06 10:34 |
Diary Entries
spacen - Day 1
(These diary entries have been written after the fact based on notes and git
log.)
First day started a bit late, because I hung out with friends the night before.
I began coding at a quarter to two in the afternoon, after seeing the 'moon'
theme and deciding on my entry.
The idea was to have a "side-scroller" on the moon's surface, where you shoot up
space nazis. (You can thank my brother for helping me come up with the idea.)
I concentrated on having a small enough scope that I'd be sure to get at least
*something* finished.
By three a clock I had pygame running (I'd read a tutorial the day before, but
this was my first time with it) and a green ellipse was running around a grey
moon. After another hour I'd found some graphics and added bullets. The next two
hours had me add bullet mechanics and spawning jetpack nazis.
The graphics were quickly hashed together from Open Game Art graphics with gimp.
I really wasn't sure about even the basic mechanics of the game at this point.
Called it a day after some four and a half hours of work.
spacen - Day 2
(These diary entries have been written after the fact based on notes and git
log.)
Second day I started after a morning lecture, at about ten.
I noticed that the game was already running a bit under 60 FPS, so I used
cProfile to find that blitting was slow. Apparently you are supposed to convert
Surfaces to display format. Ok, after that it was running fine. I should have
used an actual delta-t algorithm for uniform running speed, but decided it could
wait.
The next couple of hours saw me add an ammo count, firing up and collision
tests. For the latter I decided to go with a simple homebrew dist-to-line
instead of learning the pygame sprite commands.
Next I wasted two hours of perfectly good coding time trying to get to a lecture
that didn't exist. Still not sure if I messed up and was at the wrong time in
all those places I tried or if the lecturer messed up.
After that interlude I decided to finally use the animations I had for the hero.
Again, rather than learning pygame sprite APIs, I went homebrew. Probably a bad
idea, but we'll see...
spacen - Day 3
Day three I had some time in the morning, so I decided to look at sounds and
music (because mechanics had progressed so far... not). I found some samples
from Open Game Art, but wanted to remix them some, so I needed an audio editor.
Audacity is in the Ubuntu archives and Google told me it's easy to use so I went
with that. I also used oggenc to make them distributable.
In the afternoon I plugged the sounds and music into the game and started to
work on making the nazis' bombs explode. That required another animation and
a sound as well.
Graphics: check. Music: check. Sounds: check. Huh, looks like I'm on schedule.
Graphics: check. Music: check. Sounds: check. Huh, looks like I'm on schedule.
spacen - Day 4
Day four I started after noon with a bunch of general tweaks. I added another
sound (pain sound when hit), refined collision testing and animations. I then
listed what I still wanted to add and rethought how the mechanics should work.
listed what I still wanted to add and rethought how the mechanics should work.
Next I decided to add powerups. Reloading was already in, so I added a bullet
stack where the guy would pick them up. I stole a health pack image and drew a
grenade, but ran out of steam before implementing them. So this was definitely
the least productive day so far.
Three days to go so I'll need a schedule.
Thursday = finish powerups, try some ideas.
Friday = intro/menu, outro/hi-scores.
Saturday = polish, distribute.
Thursday = finish powerups, try some ideas.
Friday = intro/menu, outro/hi-scores.
Saturday = polish, distribute.
spacen - Day 5
Had some time in the morning, so I coded in the health powerup. In the afternoon
I continued with bug fixes and grenades (the first special weapon that's been
planned).
[A few hours later:] Damn sports. Sprained my thumb. Will have to resort to
[A few hours later:] Damn sports. Sprained my thumb. Will have to resort to
hand-and-a-half coding for the rest of the day. Hopefully it'll be fine by
tomorrow.
Coded a prototype of mouse controlled shooting. Not sure which I'll use yet.
Coded a prototype of mouse controlled shooting. Not sure which I'll use yet.
Mouse control is easier, which is both good and bad.
A bit behind on schedule. Will have to cut down on planned powerups, probably.
A bit behind on schedule. Will have to cut down on planned powerups, probably.
Some other features may need to go as well. Nevertheless, two days to go and I
should have relatively much time on both. Something that can be called a game
seems almost assured. *Knock on wood*
spacen - Day 6
Second to last day. Still much to do. I started with finishing grenade mechanics
including being able to take down multiple targets with one. A stupid little
animation for dying nasties was next. (They simply spin into oblivion.)
Explosion sounds are an interesting issue. Apparently you can hear stuff on the
Explosion sounds are an interesting issue. Apparently you can hear stuff on the
surface of the moon (listen to some Apollo recordings where they hammer if you
don't believe me), because the sound waves travel through the ground. Obviously
you cannot hear an explosion in space – unless you are in it!
So what I did was have an explosion sound play unless you are jumping and it
So what I did was have an explosion sound play unless you are jumping and it
didn't hit you. That will probably seem weird to players, but what can I say:
this game is all about realism. :)
Next I decided to make mouse control the default. It simply works better. Less
Next I decided to make mouse control the default. It simply works better. Less
code, too.
Having caught up with my yesterday's schedule (more or less) I started on the
Having caught up with my yesterday's schedule (more or less) I started on the
day's work with an intro screen. A nice little back story, explanations of the
various objects, plus controls. That should do, although I may add some polish
if I only have the time.
Now seemed like a good time to update the game entry on PyWeek and upload a beta
Now seemed like a good time to update the game entry on PyWeek and upload a beta
version (just in case). After that I added an extended magazine powerup. It
doesn't stack, so I'm not sure if it should appear multiple times or not.
Then the Game Over screen. I gave the player some statistics about their game
Then the Game Over screen. I gave the player some statistics about their game
and a final verdict on their success. I'm not really interested in "hi-scores"
to be honest, but I'll have time to reconsider tomorrow.
spacen - Day 7
Final day. Luckily I have the whole day free for this if I really need it.
First I refined the end screen a bit, refactored a lot of stupid code that I
First I refined the end screen a bit, refactored a lot of stupid code that I
thought might be buggy and fixed a couple of collision bugs. Next I found some
sounds for jumping and grenade throwing.
The game looked OK at this point, but I wanted more, so I decided to add another
The game looked OK at this point, but I wanted more, so I decided to add another
special weapon: chainsaw. Because jumping around on moon with a chainsaw sounds
reasonable. Took me around one and a half hours total, most of which were spent
on the sounds.
At this point I spend time testing the game and pushed a release candidate on
At this point I spend time testing the game and pushed a release candidate on
PyWeek.org. Of course, I messed up and accidentally left the debug options in,
so I quickly made an RC2.
Now I'm at twelve hours to go and wondering what I should do. I think I'll take
Now I'm at twelve hours to go and wondering what I should do. I think I'll take
a break of a few hours, then see if I can add another powerup or two.
[6 hours later]: I decided to up resolution to 1024x768 (from 800x600) and add
options for widescreen (1280x720) and fullscreen. The latter works by rendering
at normal (or widescreen) resolution and then scaling the result to native
desktop resolution. This avoids changing monitor resolution and in case there's
a bug (impossible!) the desktop resolution will always be correct.
Higher resolution required quite a few code changes (since I'd hardcoded most
Higher resolution required quite a few code changes (since I'd hardcoded most
of it), as well as a larger version of the background image.
Finally, I spent quite a bit of time searching and destroying small bugs. At six
Finally, I spent quite a bit of time searching and destroying small bugs. At six
hours to go I'm ready to call it final. At least until I find another bug.
[Three hours to go]: So I realized I hadn't implemented starting a new game
from within the game, despite having that planned. While implementing it I also
decided to add a special enemy type (which I left out of the intro screen on
purpose), so 1.1 it is.
No bug fixes, which makes me worry that I'm adding new bugs when I should be
getting rid of any final ones...
spacen - Post-Mortem Diary
First of all, PyWeek was fun and I hope to do it again sometime. Although I was
a bit exhausted on Sunday, I already feel like coding again.
On to the actual game. I'm quite happy with how well it turned up, considering
On to the actual game. I'm quite happy with how well it turned up, considering
it is the first game I actually "finished", ever. I did have to cut some planned
powerups (flamethrower, jet pack, armor) and enemy types (flamethrower, semi-
invisible), though, which makes it somewhat less interesting than I planned.
Deciding to do it alone meant I could jump to Audacity or GIMP when coding
became boring. However, it did mean I have little original artwork: almost
everything is adapted from OpenGameArt.
I think the weakest part, especially comparing to what other games I've already
I think the weakest part, especially comparing to what other games I've already
tried, are the controls. It seems quite weird that your only contribution to
moving are the jumps. May also lead to frustration if there was nothing you
could have done better in a certain situation.
In the end that was a design choice I made because giving the player free
In the end that was a design choice I made because giving the player free
control would have required actual enemy AI – now they simply move about semi-
randomly, raining down bombs if you get too close.
At first I also thought I'd need to come up with a win condition, but in
At first I also thought I'd need to come up with a win condition, but in
retrospect the game doesn't seem to be worse for having none.
--
--
Ps. Based on my diaries and git log, I spent about 35 hours of time in front of
the computer on this.