Welcome to the JoySword Online FAQ. This document answers common questions regarding system requirements, SRE sentinels, database performance, game preservation, and deployment.
JoySword Online is an enterprise-grade, self-hosted game preservation platform for the legacy Elsword MMORPG server executables (CenterServer, LoginServer, GameServer, ChannelServer, GlobalServer). It combines legacy 32-bit Windows PE C++ binaries with modern SRE sentinels, Read-Committed Snapshot Isolation (RCSI) database performance, Next.js 14 web portals, and zero-RNG gacha rebalancing.
The project's mission is digital game preservation, Site Reliability Engineering research, and historical software restoration. It provides gaming historians, private server operators, and SRE researchers with a 100% self-healing platform.
The process supervisor (start-offline.py) monitors all five legacy C++ server processes. It uses exponential backoff (
The Launch State Machine enforces strict startup phase transitions (INIT -> PREFLIGHT -> LOCK -> SNAPSHOT -> SANITIZE_SOCKETS -> SPAWN -> PROBE_READINESS -> ACTIVE). If any server process fails readiness, the orchestrator executes an emergency teardown, purges PIDs, and restores the pre-flight configuration snapshot via config-snapshot.py --rollback.
Legacy 32-bit Windows executables crash with 0xC0000005 (Access Violation) when virtual memory exceeds 2.0 GB. The Memory Sentinel (sre-memory-sentinel.py) audits process working set sizes, triggers EmptyWorkingSet OS working set trimming when memory spikes, and enforces a 1.75 GB warm supervisor recycling threshold.
Standard SQL Server locking uses pessimistic Shared (S) locks for reads, causing readers to block writers. RCSI (READ_COMMITTED_SNAPSHOT ON) uses TempDB row versioning so SELECT queries read committed snapshot data without acquiring Shared locks, eliminating database deadlocks during heavy gameplay.
Configuring 4 equal-sized TempDB data files (tempdev1..4) with identical 64MB autogrowth eliminates PFS (Page Free Space) and SGAM (Shared Global Allocation Map) allocation page latch stalls under high concurrent row versioning load.
configure-offline.py and db-patch-cache.py write SHA-256 receipts (config.receipt, db-patches.receipt). On subsequent boots, the preflight engine compares receipt hashes, skipping redundant regex scanning of 239 Lua files (125.29 ms vs 53.75s cold: 429.0x speedup).
In EnchantTable.lua, equipment enhancement levels 1–12 are rebalanced to 0% Break and 0% DownTo0. Items will never shatter, reset to level 0, or degrade upon failure.
PvP AI V7 powers all 10 Hero NPCs (Amelia, Apple, Balak, Edan, Lime, Low, Noa, Penensio, Q-PROTO_00, Spika) with a 48-signal shared contract, action-confirmation lifecycle tracking, and combo execution trees for autonomous competitive combat.