Skip to content
Zizeeria
Menu

News

A character exists

Milestone

The fifth service runs. A character can be created, its stats computed by the server and read back — over the same route a zone server will use.

Character state is the part of an MMORPG that cannot be trusted to the client, so it was built as its own service with its own database role: it may write the tables that hold who you are, and read the catalogue it needs to work out what you are wearing. It cannot write the catalogue, and it cannot write the rules about which Callings may equip what. Those belong to content, and a rule a request can change is not a rule.

Deploying it took ten steps and three of them fail quietly if done wrong, which is the interesting half. The migration tool reported success while doing nothing, because the container image it ran from predated the change it was asked to apply — from inside that image, "nothing to apply" and "I have never heard of this" are the same sentence. A missing flag on one command handed the authentication service a placeholder password and took logins down for about ninety seconds; the command printed that it had started the service and exited successfully.

So the test that says this works does not ask whether the process is running. It mints a real token, creates a character over HTTPS, reads it back, and checks one number: a Warden's health must arrive as 15, being a base of 12 multiplied by their 1.25. A service whose stat model failed to load answers 12 — with a 201, and nothing in the logs. The status code cannot tell those apart. That number can.

Everything the test creates, it erases, and then it counts the rows to make sure. The first version reported that it had cleaned up while leaving a character behind.