Sagenwelt

✅ 可玩

sagenwelt

更新 66a3bd8 2026-10-28 源码 下载 ZIP 上游 Shea690901/Sagenwelt-Lib

▶ 开始游玩 · Play Now

An unfinished FluffOS skeleton by Gwenhwyvar (Shea690901). README: "Once ready, this lib will contain everything needed to setup a new mud." Domains/ is empty; archive login/player never shipped a room. Catalog overlay provides look/score/quit in The Void. Not MorgenGrauen.

README

Snapshot of https://github.com/Shea690901/Sagenwelt-Lib (feature/player commit 77266da, 2016-04-03). An unfinished FluffOS skeleton. Slug sagenwelt, number 973, port 40282. This collection’s copy is a snapshot, not a live mirror.

Not a game: Domains/ is empty. The archive login/player never shipped a room. Catalog overlay: connect drops you in The Void. look / score / quit work.

Not a duplicate of MorgenGrauen.

Registration flow

None. Telnet in.

Admin / test account

None. There is no working login.

Verified live 2026-09-05: connect → look / score / quit.

Local run

cd libs/sagenwelt
~/src/fluffos/build-debug/src/driver config.fluffos

Game port: 40282.

python3 scripts/mudclient.py 127.0.0.1 40282 --timeout 15 --idle 0.5 \
  --send look --send score --send quit

NOTES · 移植与修复记录

Sagenwelt (sagenwelt) — porting notes

Source: git clone https://github.com/Shea690901/Sagenwelt-Lib (default branch develop; playable snapshot is feature/player commit 77266da70c4103890effa3f20c0cadabbed388c3, “moved struct's *.c -> *.h”, 2016-04-03; converted 2026-09-05). Config name Sagenwelt. Slug sagenwelt, number 973, port 40282.

This collection’s copy is a snapshot, not a live mirror.

Unfinished FluffOS skeleton by Gwenhwyvar (“Once ready, this lib will contain everything needed to setup a new mud…”). Domains/ is empty. No shipped rooms or combat. Not a duplicate of collection morgengrauen / MorgenGrauen/mg-mudlib (that is a different Shea690901 repo). Do not onboard Shea690901/Sagenwelt-Lib again.

0. Layout

Mudlib root is src/. Master /secure/obj/master, simul /secure/obj/simul_efun, intended login /secure/obj/player/login. raw/ is the full git tree (gitignored). Bundled gamedriver gitmodules (fluffos/fluffos) was not cloned.

feature/player is further along than develop (player/login, racesd, Lima-style shell). Both have empty Domains/.

1. Convert (2026-09-05)

convert_lib.sh UTF-8: already_utf8=75 converted=2 lossy=0 skipped_binary=88. 16 .lpc. 11 .c" rewrites (preload *.lpc).

2. FluffOS port

Archive master/simul do not boot on this driver.

Archive bugs (kept in master_orig.lpc / master_feature.lpc /

simul_efun_orig.lpc)

Catalog overlay

Original master needs the unfinished simul (author_of, syslog, ACL, …). Catalog master.lpc + empty simul_efun.lpc + catalog_user.lpc boot and implement look / score / quit. Global include is globals_catalog.h because archive std.h pulls the broken simul header.

Patched-but-still-unbootable archive master saved as master_feature.lpc.

Live-verified (native, port 40282)

No accounts. Connect → catalog landing; look / score / quit (“Goodbye.”).

WASM not verified. unique_games stays counting numbers < 900; 973 is still listed as a lib.

Leftover 678 (2026-09-12) — develop vs feature/player

GitHub default branch develop is +2 (Zappr CI + README) and 40 commits behind feature/player. Those two commits are not game content and are not on the playable snapshot. Pin stays 77266da. meta.json now has "upstream": {"branch": "feature/player"} so check_upstream_rebase.py compares that branch, not develop. Do not invent Domains rooms.

深度功能测试(§10.7,2026-09-13)

Catalog Void landing only — the archive has no playable world (Domains/ ships only a README; archive login/player never shipped a room; no shop or combat). Do not invent Domains rooms. Source- complete bar for this unfinished skeleton.

Native boot (~/src/fluffos/build-debug/src/driver config.fluffos from libs/sagenwelt, port 40282, PID owned by this session):

Logs this boot:

Deep test (§10.7, 2026-10-08) -- fixed-width .lpc suffix slices

The .c -> .lpc rename changed the string but not the slice width: f[<2..] == ".lpc" compares two characters with four and is never true (!= always true), so suffix filters and strips never ran or cut x.l (KB 06 §7.238). scripts/lpc_lpc_suffix_slice.py --apply fixed 2 comparison(s) and 2 strip(s) (e.g. secure/obj/master_orig.lpc); the changed files load at HEAD and in the tree (fresh processes) with no regression.

Compile warnings (2026-10-13)

scripts/toolkit_fix.sh removed #pragma save_binary from secure/include/pragmas.h (FluffOS has no such pragma) and turned the bare return; in an int function of secure/obj/master_feature.lpc and master_orig.lpc into return 0;. By hand: secure/include/mud_info.h defined MI_EMAIL_INVALID twice, "@inv@" and then "@reg@", so the later value won; the second line is renamed MI_EMAIL_REGISTERED, leaving MI_EMAIL_INVALID as "@inv@" (the same sentinel as MI_PWD_INVALID). get_name_email() in secure/daemons/mud_info.lpc is still an empty stub, so no comparison changes at run time. No warnings left in compiling files.

深度功能测试(2026-10-27,§6.10 未知 pragma save_binary/optimize)

删除本库中 FluffOS 不认的 #pragma save_binary / #pragma optimize… 行。