↓
iaen.es Devlog Leer en español

Gotic · 2 min read

A progress journal that knows no mods: Gotic's island album in Godot

Press J and see how much of the island you've done: fish, recipes, medals, friends and villages visited. The journal doesn't know which mods exist; it asks them.

#UI#mods#design

A progress journal that knows no mods: Gotic's island album in Godot

With twenty-odd mods switched on, Gotic had a problem: each one kept its achievements to itself (the fishing log, for instance, is read by talking to Abel) and nothing told you how much was left. The album mod adds a journal that brings it all together. It opens with J on PC or with the DIARIO (journal) button, under VISTA, on mobile.

At the top it says how much of the island you've completed ("Llevas el 8 % de la isla", 8 % of the island, in the screenshot) and below that there's one page per mod: places visited, the rings with their record and medal, the recipes you've cooked, the fish you've caught, each villager's hearts... Anything you haven't started reads "Aún nada." (nothing yet).

How it's built

The album doesn't know which mods exist. It walks through the active ones and asks each for its page, if it has one: an album_page() returning a dictionary with title, done, total and lines. It's the same trick cooking uses with ingredients(). Separately, it counts visited villages by checking which mods have a boolean visited property: that's how the "Places visited" page appears without the villages knowing anything about the journal.

The overall percentage is a simple sum:

static func progress(all: Array) -> float:
	var done := 0
	var total := 0
	for page in all:
		total += int(page["total"])
		done += mini(int(page["done"]), int(page["total"]))
	return 0.0 if total == 0 else float(done) / total

The mini is there in case a mod claims more than there is: nothing can go past 100 %. When the album shipped, sixteen mods already had a page (fishing, cooking, friends, treasure, sky rings, regatta, festival, stable, farm, relay race, giant, flock, fireflies, Lía's errands, courier and wildlife). Those that came later, like the camera and the bestiary, only had to add their own album_page().

Since any mod can return whatever it likes, the shared test walks through every installed mod and checks its page has the right shape: a title, progress that doesn't exceed the total, and lines of text. I saw it fail with a page that went over its total.

One decision wasn't technical: the journal isn't in the pause menu, where it would naturally belong. That menu's file (core/menu.gd) had someone else's uncommitted changes and I didn't want to mix them in. So it got its own button.

The suite ended at 1,120 checks, zero failures.

Still unverified

I haven't opened the journal on a phone. And there's something I'm not sure about: the percentage weighs everything equally, so filling the camera roll (48 photos) counts sixteen times more than the sky rings' gold medal, which counts as 3. It works as written, but I haven't checked whether that "8 %" tells a player anything useful.

More from Gotic →