Screenshot of some action

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

Give this entry an award

Scores

Ratings (show detail)

Overall: 3.2
Fun: 3.2
Production: 3.3
Innovation: 3.2

5% respondents marked the game as not working.
Respondents: 18

Files

File Uploader Date
spacen-1.1.zipfinal
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.zipfinal
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.zipfinal
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.zipfinal
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.

Add a comment

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...

1 comment

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.

1 comment

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.

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.

Add a comment

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 
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.
Mouse control is easier, which is both good and bad.

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*

Add a comment

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
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
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
code, too.

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
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
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.

1 comment

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

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
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
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
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
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
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...

Add a comment

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
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
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 
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 
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.

Add a comment