
Everything you have ever done in Duskmere โ every wolf, every log, every copper โ ran on an engine we wrote in TypeScript, the language of web pages. It carried the game a long way. On 24 October 2026 we switched it off and lit a new one.
In short
Duskmere 1.0.51 to 1.0.54 went live on 24 October 2026. What changed:
- The Duskmere world server now runs on a new engine written in Rust (version 1.0.51).
- The Duskmere game in your browser runs on the same Rust engine, delivered as WebAssembly, still with no download (version 1.0.52).
- In load tests with 64 simulated players, the Rust server used about 148 MB of memory against about 350 MB, and its slowest ticks took about 1.5 ms against 2.2โ3.0 ms.
- The new client prepares all 79 of its shaders before the world appears and none after, so there are no mid-game stutters while it compiles them.
- Shops gained "Sell many": choose exactly how many of an item to sell, across every slot that holds it.
- The magpie's timer works again: timed pets and mounts now really run out, even across server restarts.
- Tree crowns no longer turn black from below, and trees draw again on WebGL 2.
Why we rebuilt Duskmere in Rust
Duskmere is now powered by a custom engine written in Rust, a language built for software that has to be fast and must not fall over. This was not a fix for a slow game. It was a decision about the game we want Duskmere to become: bigger zones, more people in one world, more going on in every scene โ without each new idea arriving with the old question attached, how many players will this slow down?
Three things made Rust the answer:
- One set of rules, in one place. The rules of Duskmere โ how much a sword hits for, what a shop pays, how much room your pack has โ used to be written twice, once for the server and once for your game, and kept in step by hand. They now live in one Rust library that the server and the game both run. When the rules change, they change everywhere at once.
- Headroom on the server. Rust has no garbage collector pausing the world to tidy up, and it does the same work with far less memory. That headroom is what lets one world hold more players later.
- Work on the graphics card, not the processor. The new renderer was built around that rule from day one, and Rust keeps the processor's share of each frame small and predictable.
We did not take the new engine on trust. Before switching, we recorded how the old one behaved โ thousands of situations, from a shop sale to a boss fight โ and replayed them against the Rust engine until both answered the same way. Both servers still run side by side in our tests, so a rule can't quietly drift between them.

What got faster
The Duskmere world server is where the move pays off most. In our load test, 64 simulated players played on one PC against each engine in turn:
- Memory: about 148 MB for the Rust server over a two-hour run, against about 350 MB for the old one โ less than half.
- Tick time: the server's slowest ticks (the 95th percentile) took about 1.5 ms, against 2.2โ3.0 ms before โ roughly a third to a half less.
- Responsiveness: the simulated players' 95th-percentile ping fell from 10.4 ms to 6.1 ms.
In the browser, the change you are most likely to feel is what stopped happening. The old engine prepared its shaders โ the little programs the graphics card runs โ as it met new things, which meant a hitch whenever something appeared for the first time; on our test machine a login could spend around nine seconds waiting on them. The Rust client prepares its whole set up front: 79 of them before you see the world, and none afterwards. Before launch we also cut the client's peak memory on the mainland from 702 to 475 MiB, which matters most on phones.
One honest note: on a fast PC, an ordinary frame costs about what it did before โ the old engine had been tuned hard. The new one wins where the old one hurt, and it gives us the room to keep adding without the frame rate paying for it.

Press F3 in game and the build line now names the engine: client v1.0.54 (rust), server v1.0.54 (rust).
Sell many
Every Duskmere shop now asks how many you want to sell. Click an item you hold more than one of while a shop is open and a Sell many window appears, with a slider, a number box and 1 / 10 / 100 / Half / Max buttons. It starts at everything, and it counts every slot holding the same item, tier and enchant, so five bronze swords in five slots are one sale. A shop still takes at most 1,000 of anything at a time. Right-click offers Sell 1 and Sell many; a single item still sells with one click.

The magpie's clock
Duskmere's magpie, and every other timed pet and mount, runs on a timer that the server keeps. After a server restart, a save could arrive before you had rejoined, find no timers in memory, and quietly strip yours โ and a bird with no timer was treated as a bird with all the time in the world. Some of you noticed. The magpie did not volunteer the information.
As of version 1.0.54, the server reads its records before it trusts an empty memory, and every login asks the server for your timers and puts them back on the right pet. A timed pet or mount with no live timer neither flies, fetches nor carries you; it goes back to your pack, where wearing it starts its clock properly.

Trees, from every angle
Duskmere's tree crowns no longer go black when you look up at them from underneath. Leaves now lean their shading toward the sky, the way real leaves are thin enough to let light through, so a crown overhead reads green instead of as a dark silhouette. On browsers running the WebGL 2 fallback or compatibility-mode WebGPU, trees draw again โ on those machines they had been missing entirely.

Also since our last post
- Crafting can't overfill your pack any more: the batch size stops at the room you have (1.0.54).
- If your browser has WebAssembly switched off, the page now tells you why the game can't start instead of hanging (1.0.54).
- iPhones and HiDPI screens: no more "Rotate your device" lock on iPhone, full resolution on phones, and sharp text on high-DPI desktops (1.0.53). City gates are walkable again, too.
- Rivers run downstream between wet-mud banks (1.0.39); rain and sea sounds, shoreline waves, and an F key to interact with an on-screen prompt (1.0.38).
- The mainland uses about 290 MB less memory, and hopping between maps no longer grows it (1.0.42).
- Every shop buys every item, crafting materials and enchanting cores stack, and monsters drop enchanting cores (1.0.43โ1.0.44).
- Confirm your email for four hours of double XP (1.0.47), a gentler starter island with a better quest guide (1.0.49), atmospheric haze over the distance, and a paid talent reset (1.0.50).
Where this is going
We rebuilt the engine to stop performance from deciding what Duskmere can be. Next, we push it: larger zones, and many more players sharing one world. A Duskmere world holds 64 players today. The Rust server was designed for several times that, and we will load-test it far past that number before we raise the cap. No dates yet โ the work starts now.