.x.
|||||::::.. . .d888b. . ..::::|||||$$$$$88888880000000000000000000
|||::::.. . .d8888888b. . ..::::|||||$$$$$888888800000000000000000
|::::.. . .d88888888888b. . ..::::|||||$$$$$8888888000000000000000
:::.. . .d888888888888888b. . ..::::|||||$$$$$88888880000000000000
8888888888888888888
8888888P'.`Y8888888
8P'88P'.d8b.`Y88`Y8 __________ ______ _______ _____
.d88888P' P' d88888b `Y `Y88888b. \ \ \ \
.d888888888P' 8888888 `Y888888888b. | | | |
.d888888888P .d88888P'Y88888b.`Y888888888b. | | | |
.d888888888P'.d88888P' `Y88888b.`Y888888888b. | | | |
`Y888888888b.`Y88888b. .d88888P'.d888888888P' | | | | | |
`Y888888888b.`Y88888b.d88888P'.d888888888P' __| __| __| |_
`Y888888888b. 8888888 .d888888888P' | \ \ | | |
`Y88888b. b. Y88888P .d .d88888P'|_____/_____|\____/________/______/
8b.88b.`Y8P'.d88.db t o p r i g h t b o t t o m l e f t
8888888b. .d8888888
888888888Y888888888
:::.. . `Y888888888888888P' . ..::::|||||$$$$$88888880000000000000
|::::.. . `Y88888888888P' . ..::::|||||$$$$$8888888000000000000000
|||::::.. . `Y8888888P' . ..::::|||||$$$$$888888800000000000000000
|||||::::.. . `Y888P' . ..::::|||||$$$$$88888880000000000000000000
. . . . `Y' . . . .
TOP RIGHT BOTTOM LEFT presents "STRIPES"
at the Gravedigger Compo at Nordlicht 2025
Only stripes.
Only three colors.
Only ten years too late.
code and sync by KeyJ
music by GOOD&GUNSTIG
used third-party material and libraries:
- a few modified clipart graphics found on the internet (no "AI" slop!)
- Python + PyInstaller, PyGame / SDL, Pillow, BASS
This entry is based on a prototype for a demo targeted at the first-generation
Raspberry Pi back in 2015. KeyJ sent around a "devkit" to the other group
members, so they could play around with the myriad parameters of the stripe
shader, but nothing ever came out of that. For Nordlicht 2025, the project has
been resurrected, a suitable (read: short but groovy) soundtrack has been
excavated from the group's archives, and another two weeks of work were spent
on turning the loose collection of parts into something that looks a bit like
a demo, if you squint.
SOME TECHNICAL INFO:
Rendering is done with a single full-screen pixel shader and a few control
textures, all in OpenGL (ES) 2.0. A custom implementation of a GNU Rocket
synctracker client is used for syncing.
This release archive contains the Windows executable version. The source code
and GNU Rocket XML sync file is included in the sources.zip file. Unpack the
files into the base directory, add a system-appropriate bass.dll or libbass.so
from https://www.un4seen.com/bass.html, install Python 3.x as well as the
PyGame and Pillow libraries, and you should be ready to go. (Tested on
Windows and Linux, with Python 3.12 and 3.13, on x86_64.)
If stripes.py is launched while a Rocket editor is running, it automatically
connects to that; otherwise, it acts as a player. The editor's Ctrl+E shortcut
also updates the .rocket XML file, so the binary and XML sync data can't go
out of ... sync.
To see what the various mapModes and colorModes do, run `stripes.py -v'.
New mapModes can be created by simply putting .png or .jpg image files with
a number at the beginning of the file name into the `stripes_assets`
directory. (Most of the existing mapModes are created that way already.)
Note that regardless of the size of the image files, the internal resolution
of the map is always `stripes.VirtualSize', i.e. currently 1280x720. You can
change that, but then you need to adapt all `stripes:scale' values too.