A bag full of ingredients is only a reward if you know what they are for.
That was one of the problems behind 27 October's work on Brackenmere. Watching children and friends play had exposed a game with plenty to do, but too many places where the next step was unclear. People missed where to buy things. Gear had names without an obvious reason to prefer one piece over another. Small monsters could hit the hero before the player had worked out where they were. Ingredients accumulated without suggesting a potion.
Earlier in the month, my children got lost on the first quest. The answer then was to keep the world and improve the path through it. This round takes that further: make the things you find, buy, wear, forge and drink explain themselves.
At the same time, the game needed to ask less of the machine running it. A clearer quest cannot help someone whose browser is struggling to hold the village in memory. Work on scenery, loading and recovery ran alongside the gameplay changes.
Those two halves belong together. One makes the adventure easier to follow; the other gives more of the machine's resources back to the adventure.
The arrival tour now stops at the Bracken Arms' job board. The caption connects a place in the village with something the player can do there.
First, make the next step visible
The job board was already part of the village. Now the opening tour points it out and explains that people pin jobs there, with gold and thanks to earn. A useful place should not depend entirely on a new player happening to notice it.
The controls lesson also became easier to revisit. Comma and full stop move backwards and forwards through its steps, alongside the on-screen arrows. A place-name banner no longer appears over the lesson and competes with what Bram is explaining.
There is a small economy change here too: a new hero starts with 30 gold. Existing heroes keep their money. The change belongs with the work on rewards and upgrade costs, but a starting balance alone cannot establish that the game's pacing is right. That still needs people playing it.
Shops needed a more direct invitation. A keeper who trades now puts Buy and Sell first, before the conversational topics. Agnes can still talk about the village and Tilly's father, but buying a water flask is no longer buried in the conversation. The shop category is called Goods, the topic list says Ask about, and the reply that ends the conversation sits apart from the rest.
These are small words with practical consequences. Someone trying to help Tilly should spend their attention on the errand, rather than decoding how to shop.
Buy and Sell come first. The water flask is in Agnes's Goods section, one clear action away from the conversation.
Help that waits until you need it
The maze still needs to be a maze. Finding the route is part of the game, and an arrow leading straight to every objective from the entrance would change that.
The new help has two parts. An item needed by the current quest gets a gently pulsing green ring. It answers the nearby question: is this the thing I am looking for? The second moonpetal also sits near the fountain, giving that part of the search a recognisable landmark.
For the bigger question, how do I get there, there is Show me the way. It waits before offering help. The timer only runs in a world containing an item the current quest needs, and scales with the size of the place. In the hedge maze, the prompt appeared after about three minutes in the verification run.
Pressing X then lays a trail along the passages to the nearest needed item. It follows the walkable route around the hedges, rather than pointing through them. The trail lasts about twenty seconds, and can be called again once the help is available for that step. Touch players get a button.
That makes room for both kinds of player: someone enjoying the search, and someone who has had enough of being lost. The help is there when the search stops being enjoyable, without becoming the first thing everyone must follow.
The trail follows the passages towards a needed quest item. This is the finished feature in use, not a comparison with an older version of the maze.
Keep the story in the place where it happens
Quest scenes had been using full-screen painted storybook pages. The new scenes keep their dialogue, but stay in the world.
When someone describes a place, the camera can turn towards it. If it is in another world, the view points towards the way there. Indoors, the scene can stay with the speaker gesturing towards the door. An item gets a small painted card beside the giver, so a player can recognise what they are being asked to find. Backstory can look towards a relevant landmark, or move closer to the person telling it.
The opening storybook still belongs at the beginning. A conversation during an errand has a different job: connect the person, the object and the place the player is standing in.
The framing received attention too. Quest speakers face the camera, and things carried on shoulders clear the neck. Those sound like details from a modelling checklist until a character is trying to tell you something important while looking away, or their load is cutting through them.
Tilly's hand-in stays in the Apothecary. The room, the character and the caption are part of the same scene.
An ingredient becomes part of a potion
The largest interface change is the new Potions tab in the inventory. Agnes's cauldron uses the same cards, so looking through recipes on the road and brewing at Agnes’s cauldron speak the same visual language.
A known recipe has a picture of the potion and a slot for each ingredient. The slots show what is present, what is missing and how many are needed. A separate count shows the potions already brewed. A locked recipe gives a hint about who teaches it, rather than pretending the player already knows how to make it.
Turn the card over and it explains the effect, its duration and where to brew it. That keeps the front about progress towards a recipe, with the explanation there when you want it.
Picking up an ingredient now connects the find to these cards. A notice can tell you a recipe is filling, then tell you when it is ready to brew. Silverleaf stops being just another small picture in a bag. It has a visible relationship to something useful.
After an ingredient find: the healing recipe has its two leaves and flask, while other cards show their own progress. The little count on the healing card is the stock already brewed.
There is a catch which matters much more than the card animation. Several recipes can use the same ingredient. Having enough silverleaf for two recipes does not mean you can spend the same leaves twice.
In the checked example, both the healing and strong-healing cards were ready. Brewing the healing potion consumed the leaves. The strong-healing card immediately lost its filled herb slot and its Brew button became unavailable. Every card now reflects the ingredients left after the brew.
It is the kind of consistency a player should be able to take for granted. Without it, the game invites a child to press a bright button, then has to explain why its own invitation was wrong.
After brewing: the healing-potion stock has risen to three, and the shared leaves are gone from the other recipes too. These two pictures show successive actions in the same implemented system.
Drinking also needed to show a result. Potions now give the hero a look matched to their effect in both camera views: a swift effect has a trail, protection has a shimmer, and other effects have their own treatment. A brief flash at the edge marks the drink itself. The effect chip includes the potion picture and a ring counting down the remaining time.
The Swiftwing tonic check followed the effect from the first drink, through a half-empty countdown, to its disappearance when the duration ended. The picture, the timer and the actual effect need to agree all the way through.
A sword with a future
Gear has a similar problem to ingredients. An impressive name does not tell a player whether an item is better than the one they are holding, or how to get something better next.
Swords, armour and shields now have ten-level ladders. Their cards show a picture, level, main statistic, bonuses and a comparison with what is equipped. They also show the next step and what it costs. The named milestones remain, with intermediate reforged levels between them; story rewards still have to be earned through their story.
Bram upgrades an existing item at the anvil. It stays in its equipment slot, so the result of improving your sword is that you are holding the improved sword. You do not have to hunt through a spare-gear rack afterwards to finish the job yourself.
The first iron-sword upgrade makes a concrete example: two iron ingots and 40 gold take Attack from 100 to 107. The next card then explains Level 3, its further gain and its cost. Iron availability and the placement of Vane steel were adjusted alongside the progression. Showing a material cost is only useful if the material has a sensible place in the world.
The result of a forge upgrade: a named level and an explicit change in Attack. The upgraded sword remains equipped.
Under the hood The forge changes the item, materials and gold together in one transaction. It must either do the whole upgrade or none of it. The server checks the same rules. A full spare rack must not block an upgrade that replaces one item with another, and upgrading a spare must not silently equip it.
Equipment also has to appear on the hero. Swords and shields now show as held models, with armour and boots changing the body's material and colour at milestones. The intermediate levels use their milestone appearance too. A reforged sword should not fall back to a generic model because its particular level is new.
This is still a distinction worth keeping: the armour treatment is a visible material change, rather than a complete fitted suit model for every level. It makes the progression visible without claiming an art system that has not been built.
Sword in the right hand, shield on the left. This verification capture also shows the first-person controls prompt; the equipment itself is already visible behind it.
Let a fight explain itself
A small enemy can be hard to read against grass, paths and the hero's own body. Hostile monsters in reach now get a ground ring. A hit also produces a short, soft red gradient at the edge of the screen towards its source.
The direction is relative to the camera. In first person, a blow from behind belongs at the bottom edge. From overhead, the signal follows where the attacker appears around the hero on screen. It should still make sense after changing the view.
Both aids have settings switches. Their purpose is to give information, and players can choose whether they want it.
The attacks themselves have more distinct motions. Slam, backhand, dash and finisher no longer depend on reused movements that make different actions look alike. The slam has a visible rise and wind-up before its contact. That matters for learning the move, and for making the hit feel connected to the swing the player saw.
The ground ring identifies the nearby threat. The red edge points towards the hit's source while leaving the centre of the fight visible.
The rest of the screen needed less competition. Temporary notices now share one stack above the zoom control. Repeated pickups close together merge into a count, rather than producing a fresh announcement for every leaf. Quest updates, defeats and renown still appear, while larger moments such as a new quest or a reward keep their own presentation.
Clearer feedback sometimes means adding a signal. Sometimes it means making several signals take turns.
Faces, pictures and one better pig
The art work supported the same goal. Potion ingredients and gear need pictures that a player can recognise across a card, a shop and a reward. Twenty-five painted character portraits joined the round, with better whole-word name wrapping on the cards that display them.
The village's blocky farm pig was replaced too. It is a small part of the day's work, but it belongs in the same world as the people, animals and equipment around it.
Checking the new portraits in the real welcome-card component, rendered over the inn for verification. This is a staged component check, not a claim that all these people appeared together in the live inn.
New art has a technical cost. Held gear models and the graphics programs used to draw them are prepared before the game declares the world ready. Otherwise, the first sword or potion effect can turn into a pause while the browser works out how to draw it.
The runtime checks found no newly linked graphics programs after ready in the village, Apothecary, maze, inn or Forge, including after the tested drink, trail and fight. That is a useful check on those actions, rather than a promise that every possible hitch has disappeared.
Keep the detail where it earns its place
The scenery work went underneath the village's familiar shapes. Broad stretches of masonry and roof no longer need the same density of individually built detail everywhere. The important edges, corners, openings and roof boundaries retain real shape, while larger fields use cheaper surfaces and shallow courses.
Think of a wall beside a doorway. The reveal around the opening helps you read the depth of the building. Giving every part of the broad wall the same geometric treatment can consume far more memory without contributing equally to that view.
The work extended beyond cottages. Repeated timber became cheaper. Woven fences kept their rods, with simpler construction. Roads and kerbs were included. Plants share reusable shapes, rather than holding needless separate copies of similar cores, while keeping their leafy outlines and movement.
There was also less visible work on how those shapes are stored. A vertex is a point in a 3D shape, accompanied by information such as its colour and the direction its surface faces. Compacting that information saves space across a whole village. It has to preserve the brighter-than-white colour values used by the rendering, and merging compact shapes must still handle older formats safely.
Village surface normal maps were compressed at full resolution, preserving their detail. These maps describe small changes in surface direction, helping light read texture as relief. New surface maps, art and refreshed distant scenery were allowed to increase the download size. Compression and the decision to add that detail are separate parts of the work.
The result is a village that costs less to hold and prepare, while keeping the features that explain its shape. That is the intention. The measurements tell us how far the cost actually moved.
What the scenery measurements say
The strongest result is geometry memory. For the same eligible group of scenery, resident geometry fell from 934.975 MiB to 350.760 MiB, a 62.5% reduction. Across the whole scene, geometry fell from 1,050.627 MiB to 454.063 MiB, down 56.8%.
A MiB is a unit of memory, just over a million bytes. These figures concern the data describing shapes. They do not mean the entire browser became 56.8% smaller. A separate check of the graphics buffers actually allocated for the eligible scenery found a 61.8% reduction, which supports the geometry result through a different measurement.
For timing and process memory, the comparison used three matched quiet-run pairs, with the same before and after builds. Two conditions were measured: ordinary Low quality, and the game's weak-device profile on Low with the storybook opening.
- Ordinary Low: median paired loading-time improvement of 10.12%, and 12.04% lower settled renderer memory.
- Weak profile with storybook: loading 6.07% faster, peak renderer memory 6.13% lower, and settled renderer memory 16.00% lower.
- The separate GPU process: settled memory was 29.97% lower in the weak-profile comparison. This is a different process and is not added to the renderer figure.
The renderer is the browser process running the page. Its memory includes much more than geometry, which is why its saving is smaller. The target was a 30% reduction in peak and settled renderer memory on the weak profile. That target was missed. The nearly 30% saving in the GPU process cannot stand in for it.
Frame pacing did not show a general speed-up. The route's 95th-percentile frame interval stayed at about 16.7 milliseconds. Put plainly, the boundary below which 95% of the measured intervals fell was unchanged. A few longer intervals remained, and their small counts varied between runs. This is not evidence for a higher maximum frame rate or a claim that all stutters are fixed.
About these numbers This isolates the scenery build
2d7b4ffa8against3722a7e40, not the sum of everything done on 27 October. The runs used Chrome on an Apple M5 Pro Mac, at 1280 by 720 with cache disabled and no CPU slowdown. The weak setting selects the game's rendering profile; it does not turn the Mac into an iPhone or an older Windows laptop. Those physical devices still need testing. The reported percentages are medians of the three paired changes.
Download size was allowed to grow for the art and full-resolution surface detail. Smaller in memory and smaller over the network are different goals, and this pass did not promise both.
A loading screen that tells the truth
The other performance work belongs to the friends' playtest stream begun on 26 October. Diagnostics and share codes started there; they were not all newly written today. The work carried into this round through a smaller opening footprint, safer memory handling and a more resilient first minute.
Preparing the opening separately means less has to be ready before play can begin. After eligible geometry and texture data has been uploaded to the graphics hardware, the game can release CPU-side copies it no longer needs. The qualification matters: data still needed by another part of the game must remain available.
The default quality choice now uses a device probe, with a weaker rendering profile for less capable hardware. Graphics-context recovery also has a route back. If the browser loses its connection to the graphics system, the game can reopen the place when that connection returns, or show a useful retry message if it does not.
Loading itself now follows bytes received. A few small files completing should not make the bar race ahead while one large model is still on its way. Retries have limits, there is an offline wait and a deadline, and abandoned requests are cancelled where supported instead of simply forgotten while their transfers continue.
Missing textures get appropriate stand-ins. A flat surface can use a flat fallback; a transparent cut-out needs to stay transparent, otherwise a missing cobweb can turn into an opaque sheet. The title screen can prefetch opening assets. If narration cannot load, the story continues in text rather than waiting forever for a voice.
These are changes to how the game behaves under pressure. They should not be turned into a single speed claim without measuring the matching builds.
The separate matched timing runs for this wider loading and memory stream are still underway. I will add those results once the comparison is complete. The figures above describe the completed scenery comparison only, with no combined whole-day percentage.
What has been checked, and what still needs players
The work went through independent reviews and corrections. The final unit run recorded 3,359 passes, alongside the named browser checks for the changed features. The integrated runtime verification recorded 10 out of 10 checks passing: a new hero, shopping, notifications, potion cards, the maze, combat, forging and equipment, quest scenes, portraits, and checks for errors and late graphics preparation.
Those checks exercised the game in a real browser. They also have boundaries. Four inn regulars were checked by rendering the real welcome-card component because the live inn card listed its fixed cast. An inherited village-quest test failure remained noted in the records. It would be misleading to call every conceivable suite clean.
The completed work was merged and pushed. Five stale worktrees and sixteen merged branches were cleaned up after their evidence was archived, leaving a tidier workspace for the next round. That is useful housekeeping, but the interesting result is in the game.
A flower can now explain its place in a recipe. A sword can show its next improvement. A lost player can ask for a path. A hit can say where it came from. The village takes less geometry memory, and a missing download has fewer ways to leave the player waiting without an answer.
The next playtest has a sharper question than whether these features exist: can someone who does not already know the answers work them out from the game?