My Sincerest Apologies...
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!
github.com/larryhastings/pyweek24
Awards
Scores
Ratings (show detail)
Overall: 3.9
Fun: 3.6
Production: 4.4
Innovation: 3.7
Respondents: 7
Files
File | Uploader | Date |
---|---|---|
my-sincerest-apologies-1.0.2.zip
— final
Source distribution (with some bugfixes) |
mauve | 2017/10/22 17:46 |
day7-5.png
Weapon effects |
mauve | 2017/10/22 01:06 |
day7-4.png
Putting it together |
mauve | 2017/10/22 01:04 |
day6-3.png
Railgun |
mauve | 2017/10/21 02:07 |
day6-2.png
Bullet impacts |
mauve | 2017/10/21 02:07 |
day6-1.png
Rockets |
mauve | 2017/10/21 02:06 |
day5-1.png
Level lights |
mauve | 2017/10/20 01:53 |
day5-2.png
Enemy shots |
mauve | 2017/10/20 01:53 |
day4-1.png
Full diffuse and ambient lighting |
mauve | 2017/10/18 21:54 |
day3-2.png
Tile map casting shadows |
mauve | 2017/10/18 21:54 |
day2-1.png
Shadow volume demo |
mauve | 2017/10/18 21:53 |
Diary Entries
Lighting
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
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
Rockets:
Railguns and crates (because all games must have crates):
It's a wrap
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!
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!
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:
https://github.com/larryhastings/pyweek24/releases
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:
- If you haven't already, install Python 3.6.3 for Windows (32-bit), making sure to put Python on your PATH.
- 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".
- Download and run the AVBin 32-bit Windows installer from here: http://avbin.github.io/AVbin/Download.html
- 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).
- Download and install GLEW for Windows: https://sourceforge.net/projects/glew/files/glew/2.1.0/glew-2.1.0-win32.zip/download
- 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).
- Download the AppVeyor-built lepton wheel: https://ci.appveyor.com/api/buildjobs/god4mlfk5y42se8q/artifacts/dist%2Flepton-1.0-cp36-cp36m-win32.whl
- 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.
- Download the AppVeyor-built lepton wheel: https://ci.appveyor.com/api/buildjobs/52tjrnjug61lo41d/artifacts/dist%2Flightvolume-0.1.3-cp36-cp36m-win32.whl
- 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.
- Install the other packages you'll need, by running this command: "python -m pip install pyglet pymunk six tmx"
- 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"!