Client files
The client carries the visible world: UI, maps, models, tables, language files, local resources, and the actual game executable.
Client and server research
AegisRO2 Remake is not being rebuilt from vibes alone. The current research combines public Saga and Saga Revised source, public tooling repositories, archived setup notes, local static inspection, and the map editor workbench into one practical model of the old client/server stack.
Research boundary
This page documents what the public material supports. It does not publish leaked official server archives, private forum attachments, bypass steps, account systems, or runnable private-service instructions. When a detail is inferred from multiple sources, it is labeled as a working model rather than an official Gravity specification.
The client carries the visible world: UI, maps, models, tables, language files, local resources, and the actual game executable.
The first network gate handles key exchange, packet framing, version proof, authentication handoff, and map session handoff.
Saga-style emulators need matching accounts, world proof, scripts, maps, NPC data, mob data, items, skills, and database rows.
Local research ledger
The preservation folders now separate hard evidence from hopeful leads. Some artifacts are downloaded and hashable, some are torrent or FileFront metadata only, and some are public forum notes that explain how the client and server were paired. That difference matters: the remake uses each item according to its confidence level.
ASB-Sakray, RO2Stuff, Datorrents, and FileFront captures all point to a very early Korean client package. FileFront lists `Setup.zip` as 756.77 MB / 793,530,546 bytes, while Datorrents preserves an infohash for `RO2 Setup`.
Remake value: earliest-client search fingerprint.A RO2Stuff capture describes `Full Client - version 18` as a zipped CB2 client patched to version 18, around 810.1 MB, with PatchClient 1.0.0.29 and launch notes pointing at a port-6000 setup.
Remake value: pre-open-beta client lineage clue.The preserved torrent metadata names `Setup.exe` at 1,093,608,535 bytes plus `RagII_launcher.zip` at 1,061,163 bytes. No payload bytes were recovered, so it is a provenance clue, not a working client.
Remake value: exact OBT package structure.The archived EuphRO2 downloads page resolves to FileFront metadata for `EuphRO2_15.12.07.exe`, uploaded by GMChii, 976.88 MB / 1,024,337,708 bytes, FileFront ID 9263490. The payload was not reachable.
Remake value: best EuphRO2 full-client fingerprint.The public kRO2 v126 archive is 891,261,309 bytes and contains `System/RagII.exe`, `Ragnarok2.exe`, `PatchInfo.bin`, Korean language data, and HackShield-era folders. Executable hashes and static launcher strings are recorded.
Remake value: stable modern reference client.A 2009 public launcher utility stores server/client mappings with app path, language code, host, port, and `System\RagII.exe` path. It confirms that old communities commonly managed multiple RO2 client folders side by side.
Remake value: historical launch workflow model.Client side
The most important client-side split is simple: `Ragnarok2.exe` behaves like the launcher and patcher layer, while `System\RagII.exe` is the actual game executable used by public Saga-style launch instructions and old private-server launchers.
Static inspection of preserved kRO2 material found patch/version strings, `PATCHW32.dll`, official launch URL text, and a `Rag2Patch` debug path. Public patcher notes describe update metadata, server/version fields, patch file lists, and helper DLLs.
Public Saga Revised documentation and archived setup posts agree on the same direct-launch pattern: start `RagII.exe` with a target gateway IP or hostname and a port. The common Saga Revised example uses port `64000`, while older Saga and private-server examples vary.
"System\RagII.exe" ServerIP=127.0.0.1 ServerPort=64000
That command is a compatibility clue, not a guarantee. The server branch, client build, local data, version proof, and database must still match.
| Client artifact | Why it matters | Preservation note |
|---|---|---|
| `System\RagII.exe` | Game executable and protocol participant. | Hash first, do not run directly from the archive. |
| `Ragnarok2.exe` | Patcher/launcher layer. | Compare patch strings and helper DLL expectations. |
| `patchw.dll` / `patchw32.dll` | Patch helper files referenced by public setup notes. | Keep with the matching launcher. |
| `RagII.cni` / `User.cni` | Configuration-like client files worth comparing between builds. | Record before editing. |
| VDK archives | Container format for game data in later RO2 tool research. | Use extractor/tooling on copies. |
| CT tables | Binary game-data tables convertible to CSV/XLSX by public tooling. | Useful for item, NPC, map, and table comparisons. |
| NIF models | Gamebryo model files with NiMesh/NiDataStream geometry. | Useful for map editor rendering and mesh repair. |
Client data layer
The server sends state and game events, but the local client determines the visual era: login screen, UI skin, language, maps, models, textures, tables, music, and resource layout. This is why an older client hunt matters. A different client can mean different maps, UI, dialogue text, models, and atmosphere even before the server sends much data.
Public RO2 Toolkit notes describe VDK archives as VDISK 1.0/1.1 containers with hierarchical storage, zlib/Deflate compression, and EUC-KR filename encoding.
Public tooling describes CT as RO2 table data with multiple scalar types, UTF-16LE strings, and CRC-16 XMODEM checks. Converting these to CSV/XLSX makes data comparisons practical.
The engine-file research identifies RO2 model files as Gamebryo/NIF version 20.6.0.0 with NiMesh, NiDataStream, and index streams.
Language, dialogue, labels, and table text must be compared by client build. An English patch can make the same executable/data era behave differently on the surface.
Protocol model
Public Saga and Python experiment sources are not a complete official protocol specification, but they agree on the shape of the early session: connect, exchange keys, frame packets, identify the client/session, authenticate, then hand the player toward the map service.
`RagII.exe` starts with a gateway target supplied by arguments or a launcher.
The client reaches the gateway/listening service on the configured port.
Public Saga code initializes keys from a static state, then sends a generated server key and stores the client key.
Public Saga code reads the first two bytes as packet size. Non-gateway dispatch derives message ID from later header bytes.
Older SagaRO2 gateway code asks for GUID/CRC-like proof and compares it against allowed client keys.
The authentication side validates the account/session. Account creation and password handling vary by branch.
The gateway identifies the session to the map service. The map service creates or loads the player actor and sends start/map-position data.
These values appear in public Saga/SagaRO2 configuration and forum material as gateway compatibility keys. They are not SHA-1 hashes of the full executable.
| Client label | Gateway key |
|---|---|
| kRO2 v66 | BE6ED3C5F923072EA91C43EB2F02B2BEE16D3BF1 |
| kRO2 v68 | FA0AE6C542F8A30311B2860CEC255B2B99D2CB53 |
| kRO2 v73 | 2B9F3A4C0A2537DDAC200624A9EDE50C12B75F17 |
| kRO2 v77 | 84AC9C76A35EA122640021260EA7B9D4F392D190 |
| kRO2 v81 | EDD187AE35CD507C041323B0397F1F22C4F3F640 |
| kRO2 v101 | D718E51F41AB15491D63C5688B5B07EBDBE93371 |
Server side
The public Saga/Saga Revised family splits the server into specialized services. A playable world depends on those services plus matching database rows, script files, map data, client-version handling, and client-side resources.
Account creation, login identity, password handling, and account/session state.
Client-facing entry point, key exchange, version proof, session routing, and world handoff.
World simulation, actor creation, movement, map entry, NPC visibility, mobs, skills, and gameplay state.
Lua/script integration for NPCs, quests, scenario logic, and content behavior.
MySQL world/account data, XML game data, item tables, skill data, mob data, portals, and spawn templates.
Packet definitions, shared types, encryption helpers, and common runtime infrastructure.
| Server artifact | Observed role in public Saga-style trees | Restoration value |
|---|---|---|
| `MapInfo.xml` | Map identifiers and map metadata. | Connects client-visible maps to server-side map IDs. |
| `MobDB.xml` | Mob definitions and server-side monster data. | Lets the editor compare visible mob placements with expected server actors. |
| `spawntemplates.xml` | Spawn templates and population data. | Helps reconstruct where mobs appear and how repeated spawns are grouped. |
| `portalDB.xml` | Portal and transition data. | Useful for rebuilding island, harbor, and route connectivity. |
| `itemDB.xml` / `weaponInfo.xml` | Item and weapon definitions. | Needed for inventory, equipment, rewards, drops, and visible gear behavior. |
| `skillDB.xml` | Skill definitions. | Needed before combat, class behavior, or NPC/quest skill checks can be trusted. |
| `exp.xml` | Experience/progression data. | Preserves early balance assumptions, even when formulas remain incomplete. |
| `SagaScripts` / `scripts` | NPC, quest, scenario, and Lua/script content. | Often the missing piece when the world loads but feels empty. |
Data inventory
The checked XML database snapshot already describes a measurable world: maps, mobs, spawn templates, loot tables, portals, item records, skills, progression rows, and addition/effect definitions. These counts do not prove the server is complete, but they show exactly what the editor can start cross-checking against the client.
`MapInfo.xml` links map IDs to names such as `Hod_f01` and stores Cattleya map coordinates plus heightmap blocks with sizes and scale values. That gives the editor a server-side map index to compare against visible terrain and starting positions.
`MobDB.xml` stores monster HP, SP, level, class/job/weapon EXP, defense, flee, attack range, sight range, size, movement speeds, and living-space flags such as land, water, or amphibian. Spawn templates then add AI mode and loot-rate structure.
Saga Revised setup notes use a generated `proof` value from `Saga.Map.config`. That proof is inserted into the MySQL `list_worlds` table beside the world name and ID. If the map service is running but this row is missing or wrong, world selection or handoff can fail.
list_worlds: Id, Name, Proof
Public setup notes repeatedly show that a stack can compile and listen while gameplay still breaks. Missing scripts can produce missing NPCs. Wrong account creation can look like a login failure. Wrong proof can break world listing. Wrong client version can fail before character selection.
Compatibility diagnosis
The restoration workflow treats each failure as a clue. "It does not work" is not one problem; it can mean patcher failure, file layout mismatch, gateway rejection, account format mismatch, map handoff failure, missing scripts, or client data from the wrong era.
| Symptom | Most likely layer | What it tells the remake |
|---|---|---|
| Patcher cannot update | Launcher/patch metadata | Preserve the archive and inspect the game binary directly on a copy. |
| Game cannot find files | Client folder layout | Expected `System` and data paths differ from the installed archive. |
| Gateway disconnects early | Version proof or key exchange | The client build may not match the server branch's allowed keys. |
| Login rejects account | Authentication database | Wrong account creation method, password hash, or auth service config. |
| World list missing | `list_worlds` / proof | Gateway/auth and map service do not agree on the registered world. |
| Character enters but map breaks | Gateway-to-map handoff | Session IDs, map IDs, or starting coordinates need tracing. |
| NPCs/mobs missing | Scripts and world data | Server DB/scripts may not match the client-visible map. |
| UI/maps look wrong | Client data era | The client archive may be newer, older, translated, or private-server modified. |
AegisRO2 Remake workflow
The practical path is not to guess. Each recovered client or server note gets reduced into evidence: hashes, version clues, resource formats, maps, actor data, scripts, NPCs, mobs, portals, and observed failure points. The editor then makes those invisible relationships visible.
Keep original archives untouched, record source pages, hash files, and work only on copies.
Use VDK/CT/NIF tooling to list archives, convert tables, inspect models, and compare client eras.
Render terrain, water, meshes, labels, placement boxes, and server-like actor data in the OpenGL preview.
Match a client build to a Saga/Saga Revised branch, allowed gateway key, database, scripts, and map content.
Start with a small route: login, character load, one map, visible NPCs, basic mobs, and stable movement.
Public sources used
This page is based on the local research dossier built from public repositories, archived public pages, and static inspection notes. The source list below gives the public anchors without linking to private or restricted files.