M4 — Ground items #6

Closed
opened 2026-07-16 23:04:48 +02:00 by marco · 1 comment
Owner

First "stuff" in the world: authoritative items on the ground, seen and picked up by nearby players. Foundation for inventory.

Scope

  • Authoritative item entities on the ground (spawn/despawn).
  • Drop and pick up, validated server-side (range/ownership).
  • Item events broadcast within AoI (needs M3) — or globally if M3 not yet landed, documented.

Definition of Done

Base DoD applies on top (tests green, whole solution builds, zero warnings, multi-platform preserved); the criteria below are the issue-specific delta.

  • An item dropped by one player appears on the ground for nearby others and can be picked up.
  • The server rejects a pickup out of range (unit test against the world rules); clients cannot fabricate items.
  • Item lifecycle (spawn → on ground → picked up → removed) is fully server-authoritative.
First "stuff" in the world: authoritative items on the ground, seen and picked up by nearby players. Foundation for inventory. ## Scope - [ ] Authoritative item entities on the ground (spawn/despawn). - [ ] Drop and pick up, validated server-side (range/ownership). - [ ] Item events broadcast within AoI (needs M3) — or globally if M3 not yet landed, documented. ## Definition of Done _Base DoD applies on top (tests green, whole solution builds, zero warnings, multi-platform preserved); the criteria below are the issue-specific delta._ - [ ] An item dropped by one player appears on the ground for nearby others and can be picked up. - [ ] The server rejects a pickup out of range (unit test against the world rules); clients cannot fabricate items. - [ ] Item lifecycle (spawn → on ground → picked up → removed) is fully server-authoritative.
Author
Owner

Done and merged to main (commit 1908ecc).

Ground items are now server-authoritative world entities. New (additive) protocol messages ItemSpawned/ItemRemoved (server) and PickUp/Drop (client) — Welcome unchanged; items reach clients via the AoI reconciliation like players. Drop spawns a generic item at the player's tile, PickUp removes one only within GameOptions.PickupRange; both are AoI-scoped. The server seeds a few coins near spawn (disabled in tests). Client renders items with a placeholder gem, click to pick up, G to drop.

No inventory yet (M5): a picked-up item just leaves the world and drop spawns from nothing — deliberate stubs. Real UO static art for items is tracked in #16.

Verified: protocol round-trip tests, World item-op unit tests (drop/pickup range), and an integration test (drop is seen by a nearby player but not a far one; pickup removes it). 137 tests green, zero warnings.

This completes the MVP (M1–M4): a persistent world with a walkable map, local view + local chat, and pickable ground items.

Done and merged to `main` (commit 1908ecc). Ground items are now server-authoritative world entities. New (additive) protocol messages `ItemSpawned`/`ItemRemoved` (server) and `PickUp`/`Drop` (client) — `Welcome` unchanged; items reach clients via the AoI reconciliation like players. `Drop` spawns a generic item at the player's tile, `PickUp` removes one only within `GameOptions.PickupRange`; both are AoI-scoped. The server seeds a few coins near spawn (disabled in tests). Client renders items with a placeholder gem, **click to pick up**, **G to drop**. No inventory yet (M5): a picked-up item just leaves the world and drop spawns from nothing — deliberate stubs. Real UO static art for items is tracked in #16. Verified: protocol round-trip tests, World item-op unit tests (drop/pickup range), and an integration test (drop is seen by a nearby player but not a far one; pickup removes it). 137 tests green, zero warnings. This completes the **MVP (M1–M4)**: a persistent world with a walkable map, local view + local chat, and pickable ground items.
marco closed this issue 2026-07-17 07:56:46 +02:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
marco/IsoMmo#6
No description provided.