This page contains technical resources for the people who want to create their own 64k intros, or understand how
they are made.
There are multiple ways to join the 64k scene community, but one starting point can be the dedicated 4k-64k channel on the Sizecoding Discord server.
There, you can share tips, ask questions and get acquainted with other creators.
Not all programming languages are suitable for creating 64k intros. It's important to check that you can create small
executable files, and you'll often need to adjust the compiler options. The most common languages are C++, Rust, and
These links can help you get started:
Windows executable packers
There are two main alternatives to compress native binaries on Windows: kkrunchy and squishy.
kkrunchy was written by Farbrausch and has been the de facto executable compression tool for 64k intros since its release in 2006. It is simple to use, fast and efficient, but gives little debugging information (Revival and BoyC have written a version giving more detail, which they've dubbed rekkrunchy). Note that the generated binaries are generally flagged as malware by antivirus vendors.
squishy is a recent and modern alternative to kkrunchy, written by Logicoma. It generally gets better results than kkrunchy in terms of final size (see the metrics), but is also significantly slower, so it offers a different tradeoff.
While Crinkler is the de facto executable compression tool for 4k and 8k intros, its use for sizes like 32k and 64k is not recommended.
Shader Minifier written by Ctrl-Alt-Test and is the de facto shader minification tool. It rewrites shader source code in a way that uses a smaller footprint and compresses well, and options are exposed to choose the transformations to apply. Note that it can be more difficult to use efficiently with multiple shaders.
Compression changes how we need to think about size coding. Reducing the size of the compiler output doesn't
mean the compressed file will be smaller. If you're short on space, we recommend that you check the compressed size
regularly to avoid surprises (e.g. you can include it in the commit messages).
Some techniques can be useful:
- Group data by type, so that similar things are packed together.
- Repetitive data doesn't take much space. Sometimes, the smart "Don't Repeat Youself" principle can be
- Try delta encoding.
- Make the floats smaller.
You may also read Why are SMF files smaller? about packing the music
It's common for the music to take around 16kB, but this can vary a lot. Instruments are often generated using sound
synthesis, and the list of notes is compressed.
Multiple synths have been published that were specifically designed for 64k intros:
- 64klang, an extended version of 4klang (a popular synth for 4k
- WaveSabre, used in Logicoma intros and many others.
- Tunefish, used in Brain Control intros.
- v2 was a popular option around 2005-2015. It uses less
CPU than the alternatives above, but it can feel slightly outdated.
Procedural texture generation can be done either on the CPU or on the GPU. The article
GPU Based Texture Synthesis discusses some advantages of using the GPU.
Generating textures on the CPU can be slow, so you'll probably want to use multiple threads.
General introduction to texture generation:
Voronoi diagrams are a simple tool for procedural generation and can be used in a variety of ways:
Some techniques that can be useful for including meshes in a 64k intro:
You may also check:
Raymarching is a rendering technique that is extremely popular among 4k intros developers and the ShaderToy community. It is also commonly used for 64k intros.
Not stricly a making of, Debris: Opening the
box is a great series of highly technical articles from 2010 to 2012, about the design decisions behind the
engine and the tools written for the mid 2000s Farbrausch intros.