bowmap-11 Packet handling is complex
Bowmap · bowmap.git · Tickets
A Bowmap Ticket (Open):
Ticket · History
- October 15, 2026 Created (title: 10: Split Responses and Events)
Changes
@@ -0,0 +1,23 @@+---+title: "10: Split Responses and Events"+permalink: bowmap/10/+ticket: open+---++*A [[bowmap-tickets|Bowmap Ticket]]:*++## Symptoms++Currently, the server responds to all packets directly with 0 or more packets in response in `handle.clj`, which returns a new server state, client state, and a list of packets.++## Problem++The packet handling function has too much responsibility. It handles the game state, responding to login/connection packets, and updating the client state.++## Solutions++Split these responsibilities into a packet response function, a state transformation function (and eventually a second one for serverbound/clientbound state transitions), and dispatch other packets to a game event handler.++Have `respond` just return packets, the state transformation functions return new state, and the event handler return the new state.++## Implementation - October 15, 2026 Edited (title: 10: Split Responses and Events → 11: Split Responses and Events)
Changes
@@ -1,6 +1,6 @@ ----title: "10: Split Responses and Events"-permalink: bowmap/10/+title: "11: Split Responses and Events"+permalink: bowmap/11/ ticket: open --- - October 15, 2026 Edited
Changes
@@ -19,5 +19,3 @@ Split these responsibilities into a packet response function, a state transformation function (and eventually a second one for serverbound/clientbound state transitions), and dispatch other packets to a game event handler. Have `respond` just return packets, the state transformation functions return new state, and the event handler return the new state.--## Implementation - October 15, 2026 Edited (title: 11: Split Responses and Events → 11: Packet handling is complex)
Changes
@@ -1,5 +1,5 @@ ----title: "11: Split Responses and Events"+title: "11: Packet handling is complex" permalink: bowmap/11/ ticket: open ---@@ -16,6 +16,14 @@ ## Solutions +### Split+ Split these responsibilities into a packet response function, a state transformation function (and eventually a second one for serverbound/clientbound state transitions), and dispatch other packets to a game event handler. Have `respond` just return packets, the state transformation functions return new state, and the event handler return the new state.++### Translate++Translate all packets into game events and handle them there.++Things like login and config are mostly request/response, though. - October 20, 2026 Remove redundant permalinks and titles
Changes
@@ -1,6 +1,5 @@ --- title: "11: Packet handling is complex"-permalink: bowmap/11/ ticket: open --- - October 21, 2026 Update the rest of the ticket pages to use numbers (title: 11: Packet handling is complex → Packet handling is complex, status: none → open, type: none → addition)
Changes
@@ -1,10 +1,9 @@ ----title: "11: Packet handling is complex"-ticket: open+title: Packet handling is complex+status: open+type: addition --- -*A [[bowmap-tickets|Bowmap Ticket]]:*- ## Symptoms Currently, the server responds to all packets directly with 0 or more packets in response in `handle.clj`, which returns a new server state, client state, and a list of packets. - October 24, 2026 Rename tickets to <project>-<number> <title> (renamed from bowmap@11.md, title: Packet handling is complex → none)
Changes
@@ -1,5 +1,4 @@ ----title: Packet handling is complex status: open type: addition --- - October 24, 2026 Replace ticket status, category and resolution with ticket (status: open → none)
Changes
@@ -1,5 +1,5 @@ ----status: open+ticket: open type: addition ---