Weapon effects

My Sincerest Apologies...

A game of fun, shooting, and "I'm sorry to put you through this".

A fabricator robot on Mars was supposed to make a bunch of robots! But it got lazy and made robots that could make other robots. And it made them smarter than they should have been. Now they've all gone off and hidden away behind various tanks and computers.

Happily, he knew how to construct *you*, a simple fighting robot. It's your job to clean out each area!



Give this entry an award


Ratings (show detail)

Overall: 3.9
Fun: 3.6
Production: 4.4
Innovation: 3.7

41% respondents marked the game as not working.
Respondents: 7


File Uploader Date
Source distribution (with some bugfixes)
mauve 2017/10/22 17:46
Weapon effects
mauve 2017/10/22 01:06
Putting it together
mauve 2017/10/22 01:04
mauve 2017/10/21 02:07
Bullet impacts
mauve 2017/10/21 02:07
mauve 2017/10/21 02:06
Level lights
mauve 2017/10/20 01:53
Enemy shots
mauve 2017/10/20 01:53
Full diffuse and ambient lighting
mauve 2017/10/18 21:54
Tile map casting shadows
mauve 2017/10/18 21:54
Shadow volume demo
mauve 2017/10/18 21:53

Diary Entries


Still a few hours before I turn in, but I've just got to the point of having diffuse light, ambient and shadows in our game. I've been working pretty hard on this over the last few days, and failed to write a diary entry, so it's nice that it has taken shape.

On Monday I started programming (in C/C++) against trylock/visibility:

By yesterday I had that wrapped up as a library with CFFI bindings, which I've uploaded to PyPI as lightvolume.

I then plugged that into our engine (which is just rendering a TMX map with Pyglet) and added a simple shader to fade it:

Then I changed to rendering the map (and everything else) into a texture, which means I can now do lots of very cheap lighting passes. This is with one light and a little blue-ish ambient lighting. Starting to feel atmospheric!:



Rotation and weapons

The viewport now rotates. In this shot we're backtracking away from the enemy, hidden in the darkness:

There are some graphical artifacts in the rotation that I need to clean up.

This screenshot shows the effect of multiple lights (of different colours). Seeing it moving at 60FPS really feels awesome.


Weapon effects

Tonight, after wasting a couple of hours fixing the tile cracking problem, I mostly worked on visual effects.


Railguns and crates (because all games must have crates):

1 comment

It's a wrap

We had a very frantic last few hours trying to cram in enough features for our game to feel like a game. A huge amount of things landed today and it started to feel like a game.

I woke up this morning to find Larry had added weapon effects. I added the HUD to make it clear what is selected:

... and there's much more I'd like to show you, but, you know, spoilers.

I'm going to take my time in uploading tomorrow because it's complex this time. We fixed a build problem with Lepton which I need to release, and I'd like to see if I can put together a Windows release, because we use so many native libraries this time. I look forward to playing your games!

Add a comment

Day 8 (Releasing)

Today has been a busy release day (though not as busy as the contest). Larry is at Pycon Ireland and has been showing the game off to people. Through this he has found a couple of crash bugs and pushed fixes, and I fixed a bug that blocked correct level/powerup progression.

I'm very conscious that out entry uses a number of native extensions - including one that was created during the contest! It's a first for me to actually start, develop and release a library to PyPI during the contest.

Both Larry and I develop on Linux, but there was no intention to write a game that only works on Linux. Today I've been looking into using Appveyor to build binary wheels for Windows for the extensions we use. Mainly this is a case of fixing build/compile problems, which is boring, time-consuming work (non-Pyweek work).

Appveyor is great, though - it means that I can compile stuff for Windows without having a full Windows development environment.

So, I don't know that these are working - just building - but here are some successful Appveyor builds to try if you are a Windows user:

  • lightvolume
  • lepton - There are some build failures here, but our game only works on Python 3.6, and Python 3.6 is passing.

If you click on the build for your Python architecture (32/64-bit - type platform.architecture() in a Python REPL) and then "ARTIFACTS" at the top-right you'll see wheel files you can 'pip install'. The other dependencies are pure Python or have wheels on PyPI.

Please let me know in the comments if these wheels work for you (or not!). I now maintain lepton on PyPI so I will upload wheels for both of these.

I'm working on setting up a virtual machine to test these myself.


"My Sincerest Apologies" now runs on Windows!

"My Sincerest Apologies" runs on Windows!

To make it easy on everyone, we've made a ZIP file containing a ready-to-run version for Windows. Just unzip this zip file somewhere and run the "main.exe" you'll find inside. You can download the ZIP file here:


If you prefer to do the install manually, using an unmodified "my-sincerest-apologies-1.0.2.zip", here are the steps you'll have to follow:

  1. If you haven't already, install Python 3.6.3 for Windows (32-bit), making sure to put Python on your PATH.
  2.  Download the zip file for "My Sincere Apologies" and extract it to a new directory. I'll assume you name that new directory "my-sincerest-apologies-1.0.2".
  3. Download and run the AVBin 32-bit Windows installer from here: http://avbin.github.io/AVbin/Download.html
  4. Manually copy the file C:\Windows\System32\avbin.dll into the "my-sincerest-apologies-1.0.2/src" subdirectory inside the "my-sincerest-apologies-1.0.2" directory (where you extracted the game to in step 1).
  5. Download and install GLEW for Windows: https://sourceforge.net/projects/glew/files/glew/2.1.0/glew-2.1.0-win32.zip/download
  6. Open that zip file, and copy "glew-2.1.0/bin/Release/Win32/glew32.dll" into the "my-sincerest-apologies-1.0.2/src" subdirectory inside the "my-sincerest-apologies-1.0.2" directory (where you extracted the game to in step 1).
  7. Download the AppVeyor-built lepton wheel: https://ci.appveyor.com/api/buildjobs/god4mlfk5y42se8q/artifacts/dist%2Flepton-1.0-cp36-cp36m-win32.whl
  8. Install the lepton wheel by running "python -m pip install lepton-1.0-cp36-cp36m-win32.whl" in the same directory you downloaded the wheel to.
  9. Download the AppVeyor-built lepton wheel: https://ci.appveyor.com/api/buildjobs/52tjrnjug61lo41d/artifacts/dist%2Flightvolume-0.1.3-cp36-cp36m-win32.whl
  10. Install the lepton wheel by running "python -m pip install lightvolume-0.1.3-cp36-cp36m-win32.whl" in the same directory you downloaded the wheel to.
  11. Install the other packages you'll need, by running this command: "python -m pip install pyglet pymunk six tmx"
  12. Finally! Run the game by running by going to your "my-sincerest-apologies-1.0.2" directory and running "python run_game.py". Or, I think double-clicking on "run_game.py" will work.

We hope you have fun playing "My Sincerest Apologies"!