Skip to main content

Manifesto

The Cube Framework is built upon a simple conviction:

Architecture is more important than implementation.

Every line of code is temporary. Every implementation will eventually evolve. Only a well-designed architecture is capable of surviving continuous change.

For this reason, the framework deliberately avoids solutions that optimise only for short-term convenience. Instead, it favours systems that remain predictable as projects become larger and more complex.

Several principles guide every architectural decision.

Composition over inheritance

Behaviour should be assembled from independent building blocks rather than embedded inside deep inheritance hierarchies.

Composition reduces coupling, improves flexibility and enables systems to evolve without affecting unrelated functionality.

Data before behaviour

Runtime behaviour should emerge from data rather than hardcoded assumptions.

When data defines behaviour, systems become configurable instead of requiring constant modification of source code.

Explicit responsibilities

Every system should have exactly one clearly defined responsibility.

When responsibilities overlap, complexity grows exponentially.

When responsibilities remain isolated, complexity grows linearly.

Predictable runtime

Runtime systems should be deterministic.

Objects should not discover behaviour through hidden dependencies or implicit side effects.

Every operation should have a clearly defined owner, input and output.

Extensibility without modification

Frameworks should invite extension without requiring modification of their existing architecture.

New functionality should integrate naturally into existing systems instead of replacing them.

Long-term maintainability

Software is rarely discarded.

It is maintained.

Architectures should therefore optimise for readability, consistency and evolution instead of minimizing the number of lines of code.

The Cube Philosophy

The Cube Framework is not a collection of gameplay features.

It is a collection of architectural ideas.

Plugins, runtime systems and tools are merely concrete expressions of those ideas.

The objective has never been to build the largest framework.

The objective has always been to build one that remains understandable years after its creation.