Up to Main Index Up to Journal for October, 2026
JOURNAL FOR SUNDAY 25TH OCTOBER, 2026
______________________________________________________________________________
SUBJECT: WolfMUD Prototype Progress
DATE: Sun 25 Oct 17:37:44 GMT 2026
Ugh! Started the first two weeks of October with a nasty cough and cold. Just
got rid of them when the boiler packed up on Wednesday just gone and I’ve had
not heating since. Both the cold and cough are back again :(
Despite the nasties I’ve still been having fun this week :) I’ve spent every
evening working on my new WolfMUD prototype. The commands I’ve implemented
include; movement, GET, DROP, PUT, TAKE, SNEEZE, EXAMINE, LOOK, INVENTORY and
ACT. There is also DUMP for debugging:
• dump a
`- id: 1 [Room A]
|- Strings (2):
| |- name: Room A
| `- description: This is room A.
|- Lists (1):
| `- aliases: [A]
|- Numbers (0):
|- Flags (0):
|- Inventory (0):
|- Who (1):
| `- id: 9 [Player 9]
| |- Strings (2):
| | |- description: This is a player just like you.
| | `- name: Player 9
| |- Lists (1):
| | `- aliases: [PLAYER9]
| |- Numbers (0):
| |- Flags (1):
| | `- player
| |- Inventory (0):
| |- Who (0):
| `- References (1):
| `- where: id: 1 [Room A]
|
`- References (1):
`- E: id: 2 [Room B]
At the moment the world is hard-coded. Players are created when they connect
and deleted when they quit. I have a simple bot runner to simulate players. The
bots run around and sneeze randomly. The SNEEZE command is ideal for testing as
it broadcasts messages to the current and surrounding locations. During testing
with 4,098 bots the server used 110Mb RAM and 3% CPU on an Intel i9-12900T.
User response times were instant with a command taking under 50µs. Part of the
server’s debug log:
2026/10/25 16:56:30 handle: SNEEZE (19.565µs)
2026/10/25 16:56:30 handle: SNEEZE (11.68µs)
2026/10/25 16:56:30 handle: EXAMINE (14.883µs)
2026/10/25 16:56:30 handle: S (16.088µs)
2026/10/25 16:56:30 handle: SNEEZE (9.292µs)
2026/10/25 16:56:30 handle: E (24.694µs)
2026/10/25 16:56:30 handle: EXAMINE (9.746µs)
2026/10/25 16:56:30 handle: S (5.331µs)
2026/10/25 16:56:30 handle: EXAMINE (5.242µs)
2026/10/25 16:56:30 handle: SNEEZE (9.556µs)
2026/10/25 16:56:30 handle: E (21.097µs)
2026/10/25 16:56:30 handle: N (13.734µs)
2026/10/25 16:56:30 handle: E (26.012µs)
2026/10/25 16:56:30 handle: EXAMINE (8.407µs)
2026/10/25 16:56:30 handle: E (22.585µs)
2026/10/25 16:56:30 handle: E (5.497µs)
2026/10/25 16:56:30 handle: E (19.901µs)
2026/10/25 16:56:30 handle: E (5.824µs)
2026/10/25 16:56:30 handle: N (14.49µs)
2026/10/25 16:56:30 handle: EXAMINE (15.055µs)
2026/10/25 16:56:30 handle: EXAMINE (5.264µs)
2026/10/25 16:56:30 handle: SNEEZE (8.808µs)
2026/10/25 16:56:30 handle: N (10.504µs)
2026/10/25 16:56:30 handle: E (7.777µs)
2026/10/25 16:56:30 handle: E (7.651µs)
2026/10/25 16:56:30 handle: EXAMINE (9.951µs)
2026/10/25 16:56:30 handle: S (64.037µs)
2026/10/25 16:56:30 handle: SNEEZE (8.13µs)
2026/10/25 16:56:30 handle: EXAMINE (9.74µs)
I have events and scheduling working. Only the action event is implemented so
far. However, there is a tester running around and executing random commands.
I also have a frog hopping around:
`- id: 7 [a frog]
|- Strings (2):
| |- name: a frog
| `- description: This is a small bright green frog.
|- Lists (2):
| |- aliases: [FROG NPC]
| `- onAction: [ACT croaks. ACT hops around a bit. N N N E E E S S S W W W]
|- Numbers (3):
| |- actionAfter: 5
| |- actionJitter: 5
| `- actionDueIn: 7
|- Flags (0):
|- Inventory (0):
|- Who (0):
`- References (1):
`- where: id: 9 [Player 9]
There is a non-blocking messaging system handling getting responses back to
players. So far the code is under 1,500 lines:
77 cmd/bots/main.go
70 cmd/server/main.go
687 core/core.go
49 core/mailbox.go
224 core/scheduler.go
14 core/thing.go
211 core/world.go
1332 total
Not too shabby for a week of evenings :) If anyone wants to poke at the code, I
hope to have a git repo available soon. Hopefully in time for Halloween!
--
Diddymus
Up to Main Index Up to Journal for October, 2026