mustown is being built around a simple idea: the engine should help people make things without making them feel like they are borrowing somebody else's imagination.

That means staying small enough to understand, modular enough to replace, and open enough for curious people to pull at the seams.

The defining philosophy

mustown is not trying to be the biggest engine. It is trying to be a friendly place to begin.

The core should be boring in the best way. The renderer should be replaceable. The scheduler should be visible. A module should feel like a piece you can pick up, understand, and put back differently.

We care more about a clear path from idea to playable than a mountain of features.

Why half open source?

The public repository is the front door. It contains the parts that are ready to explore, the direction of the project, and the conversations we want to have in the open.

The development repository stays private for now because mustown is still very early. Some experiments are rough, some decisions are still moving, and we want a little room to make mistakes before turning every unfinished thought into a promise.

“Half open” is a bridge, not a wall:

  • Public ideas, progress, and selected source
  • Private experiments while the foundations are still shifting
  • Contributor access for people who want to help shape the engine
  • A commitment to open more as the project becomes more stable

If you have a strange backend idea, a new platform target, a renderer experiment, or a better question than the ones we are asking, we want to hear it.

Bring your own weird

The project is backend-independent by design. You can implement the callbacks for the backend you want and help us explore what the engine can become:

  • Direct3D, OpenGL, or Vulkan rendering
  • A raylib-backed integration while the systems prove themselves
  • An Unreal or bgfx bridge
  • A platform experiment that makes mustown compile for something delightfully unexpected
  • A Lua runtime, because apparently that is a perfectly reasonable thing to want

There is no requirement that every idea fit the original plan. In fact, the original plan is mostly a small sign pointing toward the interesting stuff.

The first little loop

The first real milestone is still wonderfully small:

while (running) {
  world.tick();
  renderer.draw(world);
}

An entity, a component, and one tiny thing happening every frame. It is not much. It is everything.