Lunar Patrol Final Version Shot

Lunar Patrol

The Story

Martin and Roger on their daily patrol around space station "Lunar 1". Never knowing what could happen today. Sometimes meteroids, sometimes space pirates, sometimes both. Due to limited resources on ammunition, oxygen and fuel, they have always to take care how far they can go when in struggle. In the worst case they have to decide between the lesser of two evils: A colliding maneuver with an enemy to drag at least this last enemy still into death or staying alive in space avoiding any collision until all resources on board are exhausted. 


Features

  • 800x600 resolution  - should be suffiicient even on older monitor ;-)
  • retro-style graphics with several colors
  • amazing sound effects and ambient music
  • smoothest text scrolling effects
  • parallax starfield background
  • event triggered power-ups and additional enemy appearance
  • supports keyboard only, no additional controller needed :)
  • 5-keys-only control
  • Score and HiScore keeping
  • graphical ammunition stock display 
  • hand-made from scratch in Germany :-)


Video Preview

https://youtu.be/tIGAq4oS4cU


Development

soon on GitHub


License

MIT



Have fun, and thank you for judging :-)



Awards


Rock and Roll in the Stars
Presented by assertivist

Give this entry an award

Scores

Ratings (show detail)

Overall: 2.6
Fun: 2.5
Production: 3.1
Innovation: 2.3

3% of respondents wished to disqualify the entry.
Respondents: 12

Files

File Uploader Date
LunarPatrol.PNG
Lunar Patrol Final Version Shot
prake 2017/02/26 01:03
LunarPatrol_V0.2.zipfinal
LunarPatrol Source and Binary
prake 2017/02/26 00:26
LunarPatrol.zipfinal
LunarPatrol_Final_bin
prake 2017/02/25 23:10
lunarpatrol_bin.zipfinal
LunarPatrol_Binary
prake 2017/02/25 22:13
LunarPatrol_pyweek23.zip
LunarPatrol_Source
prake 2017/02/25 21:24
LP1.PNG
LP1
prake 2017/02/24 01:18
Lunar_Patrol_Design.png
Game Design
prake 2017/02/21 09:12

Diary Entries

Got the Flu

Today is Sunday and the challenge started 1:00 am (CET). This time the theme is “The lesser of two evils”. I think this theme can be embedded in many games and genres. Already before the challenge I thought on doing a spaceshooter. As it would be my first game I don’t want to make it too complicated. So, I decided now to implement some kind of retro space shooter using some 16-Bit like sprites.

Unfortunately I got the flu and I had a headache the whole day. There was no power anymore to get into some action, nearly the whole day. But at least I had a nice idea how to implement the theme into the game story.

I will opt now for a classical spaceshooter. The player has only one live. The player has to defend a the lunar space station against different kinds of enemies. Sometimes meteroids, sometimes space pirates, sometimes both. On the player’s spaceship, is only limited ammo, fuel  and limited oxygen, food, and other stuff which is needed to keep alive in space. The player has to be careful about his limited resources when on a patrol above the lunar space station. If ammo is out he cannot shoot anymore on the different enemies. If he has still enough fuel he can land on the station to get the ammo reloaded and fuel refueled. If he cannot manage this within a space fight and is out of ammo and fuel he can only choose the lesser of two evils - the evils are crashing into an enemy and detroy this additional one or flight as long as possible in space getting attacked by enemies or hit by meteroids until hit or oxygen is out.

I am always have a vertical spaceshooter in mind with some background showing a space station and a scrolling starfield. Title could be “Space Patrol on Luna One”.

The lesser of two evils is also known as no-win situation in game-theory. Or it can be also described as loose-loose situation. It doesn’t matter for what you decide you have to eat some frog.

https://en.wikipedia.org/wiki/Lesser_of_two_evils_principle
https://en.wikipedia.org/wiki/No-win_situation

Add a comment

Lazy Monday

Not much work done today :-(. Just made the folder structure and got the feet wet with making a distributable binary. Also, I updated my knowledge about a proper design of my “Game Engine”. Looked into Sean Riley’s “Game Programming with Python” to get some impressions.

In addition I updated the game's name and the description according to my generated ideas from yesterday.

At least I seem to recover from the flu a little bit faster as expected. Hope I can focus on some work tomorrow whole day.

https://stephensugden.com/crash_into_python/CodeOrganization.html

Add a comment

a look into game design :-)

Add a comment

Time seems to fly

Honestly, the countdown on pyweek’s entry page makes me a little bit nervous - Time seems to fly. But ok, feeling nervous doesn’t make it better.

I worked mainly on a object oriented state machine for hopping through the different game modes (AttractMode, PlayMode, GameOverMode, …). This is not so impressive to someone standing outside looking on the game, so I began to produce some graphics output. At the end of the day I had a nice parallax starfield and a spaceship which can be moved with the cursor keys and shoot by pressing space.

As my concentration decreased I took some time to look into the topic of packaging everything. Took a look into py2exe and the setup.py scripts delivered with the skellington package. Unfortunately, this seems not to be optimal for Python 3. So, after a little bit fiddling around I decided to try out pyinstaller. At the end of the day it seems that I can execute the pyinstaller executable without any error. More time to spend later. Good Night!

http://stackoverflow.com/questions/31808180/installing-pyinstaller-via-pip-leads-to-failed-to-create-process
http://stackoverflow.com/questions/15221473/how-do-i-update-pip-itself-from-inside-my-virtual-environment


Add a comment

Trying every trick :-)

Today, I tried to enhance my creativity and brain performance by hearing some meditation sound tracks in the background. For me it get worse especially when I am trying to solve a problem...this kind of music got really annoying...  Nevertheless, at the end I got some further things done. Again, not as much as I expected but ok..

Today's agenda was:

- analysing my current coding, thinking about how it could be restructured to keep it maintainable somehow
- experimiented with an explosion generator which generates random explosion and writes on a spritesheet (Explosion Generator v1.1 by Cliff Harris)
- thought on some guys who inspired me since i am got my feet wet with game programming:
--- Eben Upton as Inventor of the Raspberry Pi
--- Guido van Rossum as Inventor of Python
--- Pete Shinners as for pygame
--- Al Sweigard, Paul V. Craven, Sean Riley, Lennart Steinke, Andi Harris and Horst Jens for their great books and online material regarding Game Programming (with Python)
--- Richard Jones for his contributions regarding Game Programming at PyCon and for founding and organizing pyweek challenge
- reprogrammed a little class for handling the spritesheets from the explosion generator
- used Gimp for converting the background of the bitmaps to tranparency and exporting them to PNG format
- wrote an explosion class which I can use now for animated explosions
- wrote a kind of particle/fragment class which I can use for objects which should burst
- integrated the classes into the existed game logic
- learned again something new about pygame's sprite collision functionality
- made a screencast video with OBS studio and uploaded my very first video to YouTube - YeeeHaaa!!!
- maintained my diary here :-)

Good Night!!!


Some preview of my current work can be seen on YouTube.


2 comments

Intro, Ammo, Sound and Score

Did work on a scorekeeping mechanism, an ammunition stock, on sounds, on the intro or attract mode.

Add a comment

Intro and Powerups

- fixed some misbehaviour within AttractMode
- introduced ammunition power-ups

Add a comment

Game Over :-)

Today it was one more time a harder day. Struggling around with the python package management. cx_Freeze, distutils, pyinstaller, py2exe, py2app - what the f*ck?!
In the  morning I still added some features and fixed some presentation problems on the intro screen. So, I had the chance to review my knowledge of pygame's blit functionality and other graphics stuff like per-pixel-alpha.
Very late afternoon, almost evening, I went on with cx_Freeze. And after 4 to 5 hours, several Python, cx_Freeze and pyinstaller installation later, I have at least the feeling that I understand a little bit how cx_Freeze works. In between and in hope that the packaging worked better I restructured the directories and even the coding a little bit. The result was a last upload with a source and binary (for Windows). I downloaded it on another windows machine and at least on this my package was working. Unfortunately the very last uplaod came a little bit, tool late :-( So, I am completey dependent on the grace of the pyweek referees.

Good Night and Happy Judging for all of us.

Peter

1 comment