Add research on graphicmud
This commit is contained in:
parent
1223eebeb1
commit
e059bac633
2 changed files with 83 additions and 0 deletions
|
|
@ -185,6 +185,10 @@ java:
|
||||||
https://github.com/bozimmerman/CoffeeMud
|
https://github.com/bozimmerman/CoffeeMud
|
||||||
most feature-complete. 217 stars
|
most feature-complete. 217 stars
|
||||||
|
|
||||||
|
- graphicmud
|
||||||
|
https://bitbucket.org/taranion/graphicmud
|
||||||
|
java 21, tile graphics + text hybrid. sixel rendering, ECS, behavior trees, multi-connector (telnet/discord/telegram/websocket). 30+ plugins
|
||||||
|
|
||||||
C#:
|
C#:
|
||||||
- archaicquest
|
- archaicquest
|
||||||
https://github.com/ArchaicQuest/ArchaicQuest-II
|
https://github.com/ArchaicQuest/ArchaicQuest-II
|
||||||
|
|
|
||||||
|
|
@ -112,6 +112,14 @@ compiled engine + scripted logic pattern:
|
||||||
- dragon-mud (go+lua)
|
- dragon-mud (go+lua)
|
||||||
- ataxia (rust+lua)
|
- ataxia (rust+lua)
|
||||||
|
|
||||||
|
graphicmud (java)
|
||||||
|
tile-based graphics over telnet via sixel encoding. ECS architecture instead of
|
||||||
|
inheritance. behavior trees for NPC AI. 4-tier action system with automatic
|
||||||
|
dependency chaining. multi-connector: telnet, discord, telegram, websocket, MCP.
|
||||||
|
30+ plugins. symbol system maps each tile to multiple representations (ascii,
|
||||||
|
cp437, unicode, ansi colors, pixel bitmaps) — client capability detection picks
|
||||||
|
the best one.
|
||||||
|
|
||||||
taleweave-ai (python)
|
taleweave-ai (python)
|
||||||
AI NPCs via LLMs, discord integration, stable diffusion visuals.
|
AI NPCs via LLMs, discord integration, stable diffusion visuals.
|
||||||
|
|
||||||
|
|
@ -248,6 +256,14 @@ continuous/coordinate
|
||||||
advantages: seamless movement, true spatial relationships
|
advantages: seamless movement, true spatial relationships
|
||||||
challenge: rendering continuous space as text
|
challenge: rendering continuous space as text
|
||||||
|
|
||||||
|
tile graphics (graphicmud)
|
||||||
|
3D tile grid (x, y, z) with toroidal wrap. the unique part: tiles render as
|
||||||
|
actual bitmap graphics via sixel encoding over telnet, not just colored text
|
||||||
|
characters. symbol system gives each tile multiple representations — ascii
|
||||||
|
fallback, cp437 glyph, unicode, ansi colors (16/256/24-bit), and pixel-grid
|
||||||
|
bitmaps. client capability detection picks the richest format supported.
|
||||||
|
standalone symbol editor for creating tile sets.
|
||||||
|
|
||||||
OUR APPROACH (from dreambook)
|
OUR APPROACH (from dreambook)
|
||||||
2D toroidal tile grid with terrain types. viewport centered on player. hybrid -
|
2D toroidal tile grid with terrain types. viewport centered on player. hybrid -
|
||||||
overworld is grid, interiors can be rooms. this is relatively uncommon in the
|
overworld is grid, interiors can be rooms. this is relatively uncommon in the
|
||||||
|
|
@ -373,6 +389,48 @@ OUR APPROACH (from dreambook)
|
||||||
content.
|
content.
|
||||||
|
|
||||||
|
|
||||||
|
npc behavior
|
||||||
|
-----------
|
||||||
|
most muds: simple scripts or state machines. mobs patrol, aggro, flee at low hp.
|
||||||
|
|
||||||
|
diku
|
||||||
|
mobprog/mudprog triggers (on_greet, on_fight, on_death). procedural scripts.
|
||||||
|
|
||||||
|
lpc
|
||||||
|
NPC code in LPC, full programming language. powerful but requires coding skill.
|
||||||
|
|
||||||
|
evennia
|
||||||
|
no built-in NPC system. roll your own with scripts and tickers.
|
||||||
|
|
||||||
|
graphicmud
|
||||||
|
behavior trees. hierarchical node structure (sequence, best-effort, action
|
||||||
|
nodes). NPCs make decisions via tree traversal each tick. supports conditional
|
||||||
|
logic, parallel execution, error handling. combat AI: survive, eliminate threat,
|
||||||
|
patrol, assist.
|
||||||
|
|
||||||
|
OUR APPROACH (from dreambook)
|
||||||
|
not yet designed. behavior trees worth considering.
|
||||||
|
|
||||||
|
|
||||||
|
action architecture
|
||||||
|
-------------------
|
||||||
|
how commands turn into world changes.
|
||||||
|
|
||||||
|
simple (most muds)
|
||||||
|
command handler directly modifies state. "kill goblin" -> find goblin, check
|
||||||
|
conditions, deal damage, all in one function.
|
||||||
|
|
||||||
|
graphicmud (4-tier)
|
||||||
|
rawactions (atomic ops) -> cookedactions (single pulse) -> mudactions (multi-pulse
|
||||||
|
with conditions) -> commands (user input). actions automatically chain to resolve
|
||||||
|
dependencies — "attack goblin with sword" generates: walk to sword, pick up,
|
||||||
|
equip, walk to goblin, attack. planning system handles the sequencing.
|
||||||
|
|
||||||
|
evennia
|
||||||
|
at_pre_cmd -> parse -> func -> at_post_cmd. hooks at each stage but no
|
||||||
|
automatic chaining.
|
||||||
|
|
||||||
|
|
||||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
SECTION 4: protocols
|
SECTION 4: protocols
|
||||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
@ -590,3 +648,24 @@ the prototype/spawn pattern (evennia, diku zone resets) is how everyone handles
|
||||||
mob/item templates.
|
mob/item templates.
|
||||||
|
|
||||||
define once, instantiate many.
|
define once, instantiate many.
|
||||||
|
|
||||||
|
|
||||||
|
9. entity component system
|
||||||
|
---------------------------
|
||||||
|
graphicmud uses ECS (composition over inheritance). entities are bags of
|
||||||
|
components, archetypes define which components they get.
|
||||||
|
|
||||||
|
most MUDs use deep inheritance hierarchies (Object -> Item -> Weapon -> Sword).
|
||||||
|
ECS avoids the diamond problem and makes it easier to add cross-cutting features.
|
||||||
|
|
||||||
|
worth considering if our entity model gets complex.
|
||||||
|
|
||||||
|
|
||||||
|
10. capability-based rendering
|
||||||
|
------------------------------
|
||||||
|
graphicmud's symbol system — same tile has ascii, ansi, and sixel representations,
|
||||||
|
client detection picks the richest — is elegant.
|
||||||
|
|
||||||
|
we already adapt to NAWS for viewport size. extending this pattern to rendering
|
||||||
|
quality (plain text -> colored text -> graphics) would let us support everything
|
||||||
|
from raw telnet to sixel-capable terminals.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue