This page contains technical resources for the people who want to create their own 64k intros, or understand how they are made.

Contents

Getting Started

Community

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.

Setup

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 Javascript.

These links can help you get started:

Compression

Windows executable packers

There are two main alternatives to compress native binaries on Windows: kkrunchy and squishy.

kkrunchy

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.

KKP Analyzer is a tool from Conspiracy meant to help understanding how code and data impacts the final binary size, by analysing and visualising the compression information provided by kkrunchy. It requires using rekkrunchy, as the information report generated by the original kkrunchy is incomplete.

squishy

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.

Crinkler

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.

Javascript

The two most common tools for packing Javascript are:

Shader minification

Shader Minifier

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.

Tips

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:

You may also read Why are SMF files smaller? about packing the music data.

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:

Texture

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

Voronoi diagrams are a simple tool for procedural generation and can be used in a variety of ways:

Meshes

Some techniques that can be useful for including meshes in a 64k intro:

You may also check:

Ray Marching

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.

Making-ofs

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.

Moreover, Conspiracy has released the source code of apEx, the demomaking tool they used for their intros between 2014 and 2023, as well as the projects for those intros.