Coming to Steam

Compactory 2

Solo developer ยท Unity, PurrNet, PurrDiction

Compactory 2 is the unofficial sequel to Compactory. It's meant to build upon the fundamental concept of Compactory while handling all of the design issues that appeared in player feedback and during development. I am currently in early production and currently only have online multiplayer, map generation, and player actions. I don't have a playable slice yet.

What I built

Object Behavior

I created a modular, prediction-friendly behavior architecture so that each unique object doesn't need to repeat any common logic. Each object is composed of behavior modules that control their own state so that the object that owns them doesn't need to worry about them.

Intent Handling

To ensure systems stay deterministic, I created an intent handling system that deterministically sorts and resolves the intents from each object.

Behavior State Machine

I designed a custom prediction-based state machine where the state is stored externally instead of on each state. This is used to support character movement and game phases.

Map Generation

To create a more dynamic environment, I designed a map generation system that uses a defined set of tiles per map to generate the walls of each map. I decided to use a texture to define each map, where each color channel maps to different information, such as tile type, special tiles, and tile groups.

Editor Scripting

To improve the usability of the composition based systems, I created various custom property drawers, inspectors, and editor windows. These help make it easy to add modules to definitions, edit each module, and more. For example, I had to create a custom window to combine monochrome images into one colored image to simplify the map definition process.

Loading System

To centralize the loading process, I designed a sequential loading system that provides progress feedback and makes it easy to add steps to the loading process for each scene. The loading system is integrated with PurrNet so that clients can receive necessary server data such as the generated map layout.

How it was built

After stopping development for Compactory, I thought I would never come back to the concept. However, in early December 2025, I realized I could still use the overall concept and make it much better than it was before. There was nothing preventing me from making a sequel! So throughout December 2025, I brainstormed how Compactory 2 would be better than Compactory and finalized the overall concept. In early January 2026, I began developing the current prototype shown above using only PurrNet. However, in late Spring 2026, I realized using just PurrNet wouldn't be enough, so I spent several months switching all systems to use client-side prediction via PurrDiction.

The hard parts

Online Multiplayer

I had to learn how to think in a multiplayer mindset, since online multiplayer systems have many more requirements than local multiplayer systems.

Client-side Prediction

I had to learn how to design optimized, deterministic systems around predicted states that support rollback.

Architecture

I put a heavy focus on using composition over inheritance since scalability was a huge issue in Compactory.

Tech stack

  • Unity

    The engine for the current prototype.

  • PurrNet & PurrDiction

    Online co-op and client-side prediction.

  • Blender

    3D work for the prototype.

  • GitHub

    Version control.