Graffathon 2023

How to submit your demo for the compo

The entries are submitted to the party management system.

It is highly recommended to upload a screenshot of your production to the PMS. We know from previous experience that people tend to not remember which demo is called what, and demos without a screenshot tend to get way less points than they deserve in the voting.

A Processing sketch can be submitted by just zipping the folder containing your .pde file(s), music and the syncdata.rocket file. We can run your demo directly from the Processing IDE. Remember to set your demo to full screen mode with fullScreen() and hide the mouse cursor with noCursor() in setup(). You can use the exit() to quit processing at the end of your demo. Remember to test your demo on the compo machine!

If you use a different system than Processing to create your demo, make sure that it works on the compo machine! Remember to also check the compo machine specs.

For web-based demos, it's ok if we have to click the screen to make it start, but we won't manually run a web server during the compo. You can write a simple shell script that starts a Python server and launches the browser:


# The demo can be longer than the timeout and it will still work.
# But the timeout should be there so we don't have to manually shut
# down the server after the demo ends. If your demo needs more than
# 30s to load, you can increase the timeout.
timeout 30s python3 -m http.server -d your-folder 3000 &

# The Linux compo machine has both Chrome and Firefox
firefox --new-window localhost:3000
# or
#google-chrome --new-window localhost:3000

You can't host the demo yourself, because we want to properly archive the demos.

Exporting your Processing demo as a stand-alone program

If you want to e.g. send a Processsing sketch to your friends who don't have Processing installed, it can be exported as an executable from Processing through the menu File -> Export application. For this to work, everything you want to be exported along with the program (such as the music and the syncdata.rocket file) need to be put in the folder data next to the .pde file and the references to the files need to be updated as well. For most people, this means that you need to change moonlander.initWithSoundtrack(this, "song.mp3", BPM) to moonlander.initWithSoundtrack(this, "data/song.mp3", BPM), and moonlander.start() to moonlander.start("localhost", 1338, "data/syncdata.rocket").

Note that bundling Java with the executable creates a large file (around 200-300MB), but this might be necessary to make it stand-alone, so that it can be run without installing Processing.

Network provided by Polygame ry

Graffathon is organized by the active members of the board of DOT. Contact us at