Skip to content
Zizeeria
Menu

News

A cube can be seen

Milestone

Two clients, one zone, and each of them can see the other standing there. Corrected on 2026-08-15: neither of them could move, so this was not the end of pre-production.

Corrected on 2026-08-15. This post was published as "A cube can move", and that title was wrong. Everything below about two clients seeing each other happened and stands. Moving did not: the character's input actions were never bound to a key, so nothing on either keyboard ever reached the pawn, and no character in this game had yet taken a step. Phase 0 is therefore still open. The full account is in "The cube has never moved".

The plan states the exit criterion for pre-production in one line: a cube can move in a networked zone, and two clients can see each other move. Tonight two windows were open side by side, connected to the same dedicated server, and each showed the other player's character standing on the ground under a red sky.

The chain behind that: the engine built from source on a machine bought for it, a Linux dedicated server cross-compiled and cooked with three maps in it, three server processes running one zone each on real hardware, a Windows client from the same source, and two instances of it connected at once.

The last missing piece was the smallest and the best hidden. Both players were connected, the server counted them, each had a character, the metrics said two — and the screen showed the floor and the sky. Unreal gives every C++ character a mesh COMPONENT and never an asset to put in it, so both characters existed, collided and replicated, and neither had anything to draw. Every signal we had said success. None of them could say whether there was anything to see.

That is the same lesson this project keeps paying for, arriving from a new direction each time: a check that cannot tell the healthy state from the broken one. A panel that always reads zero. A test that defends a false sentence. Two log lines that mean the same thing whether one client joined twice or two joined once. And now a world with two players in it and nothing rendered.

The character is a cube for now, and that is deliberate rather than sheepish: the criterion says cube, so the cube is the deliverable. It is scaled to the collision capsule rather than to a round number, because a visible shape that disagrees with what actually collides means the eye and the server disagree about where a player is.

Phase 1 is the vertical slice, and its exit criterion is a harder sentence: ten players play for an hour and want to come back. This paragraph originally opened it. It is not open — never enter the next phase before the current one's criterion is met, because the largest risk on this project's register is not technical, and a rule is only worth writing down if it also applies to the person who wrote it.