Skip to content

Latest commit

 

History

History
49 lines (30 loc) · 3.9 KB

File metadata and controls

49 lines (30 loc) · 3.9 KB

Frequently Asked Questions (FAQ)

Welcome to the JoySword Online FAQ. This document answers common questions regarding system requirements, SRE sentinels, database performance, game preservation, and deployment.


🚀 General & Project Mission

Q1: What is JoySword Online?

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.

Q2: What is the goal of the project?

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.


🛡️ SRE Architecture & Launch Resilience

Q3: How does the 100% Self-Healing Supervisor work?

The process supervisor (start-offline.py) monitors all five legacy C++ server processes. It uses exponential backoff ($2\text{s} \dots 60\text{s}$), a 5-restart circuit breaker, dual-socket TCP liveness probes (ports 9100–9500), and 32-bit RAM working set watchdogs to auto-restart frozen or crashed binaries without manual intervention.

Q4: What is the Launch State Machine?

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.

Q5: How do the 32-Bit Memory Sentinels prevent OOM crashes?

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.


⚡ Database Performance & Optimization

Q6: What is Read-Committed Snapshot Isolation (RCSI)?

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.

Q7: Why are there 4 data files in TempDB?

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.

Q8: How does SHA-256 caching speed up startup?

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).


🎮 Gameplay & Economy Rebalancing

Q9: What is 0% Enhancement Destruction?

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.

Q10: How does the Grounded PvP AI V7 work?

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.