Repository navigation
EN Installation
- Rust 1.85 or later, installed with rustup (tested with 1.99).
-
MariaDB 10.6 or later (tested with 13.0). On Windows:
winget install MariaDB.Server. - An extracted 64-bit ArchLord client, by default in
../client/ArchLord/Gamerelative to the ArchCore folder. ArchCore ships no game data.
git clone https://github.com/BlaMacfly/ArchCore.git
cd ArchCore
cargo build --releaseThe build produces a single executable, target/release/archcore (archcore.exe on Windows). It
holds the server and every tool. Below, archcore means that executable; cargo run --release --
works too. Run the commands from the repository root, where config/ lives.
The db/start-mariadb.cmd script starts a local instance whose data lives in db/data
(port 3306, user root, password archcore). An existing MariaDB server works too: just set its
credentials (Database.*) in config/auth.conf and config/world.conf, created on first start from
their .dist templates (see Configuration).
archcore db-init --account test testThis creates archcore_auth, archcore_characters and archcore_world, applies the scripts in
sql/, then creates the account test with the password test. A game master level (1 to 3) can be
given as a fourth argument; 3 opens every command (see Administration):
archcore db-init --account admin password 3The same command updates an existing account (password, GM level). It is safe to run again after a code update: it only adds what is missing.
archcore decrypt # Game/ini → data/client-ini (plain text)
archcore import # data/client-ini → archcore_worldThe client tables are RC4-encrypted, with a key derived from MD5("1111"), and written in CP949. The
import converts them to UTF-8: character templates, experience, NPCs, items, shops, skills, quests. It
also reads the ground height from the world geometry (the client's world/), which takes a few minutes.
Monsters, drops and map. They are not in the client: they come from the original ArchLord server
tables (spawndatatable.txt, spawninstancetable.txt, itemdroptable.txt, groupdroprate.txt,
droprankrate.txt and world/node_data), which ArchCore does not ship. Put them in data/server-ini
(never versioned), or point to their folder:
archcore import data/client-ini --server path/to/iniWithout them the server starts, but the world has no monsters. The files are detailed in Tools.
archcore # login (11002) + world (11008)
archcore login # login only
archcore world # world only
ARCHCORE_TRACE=1 archcore # detailed log of every packet
ARCHCORE_PROBE=1 archcore # probe: data/probe-*.log, what each player sees (adds, removals, moves, hits, tracked position)Settings live in config/auth.conf and config/world.conf (all described in
Configuration). The most useful ones to start with, in world.conf:
| Key | Purpose |
|---|---|
WorldServer.Name |
World name in the server list |
WorldServer.PublicAddress |
Address given to players to join the world (see "Playing with others") |
World.MonsterDensity |
Monsters per spawn point (1: tables as they are; 2 or 3: more crowded) |
Rate.Exp, Rate.Gold, Rate.Drop
|
Experience, gold and drop rates (1: normal) |
World.Language |
Language of the NPC titles sent to players (fr by default) |
Every key can also come from an environment variable: World.MonsterDensity →
ARCHCORE_WORLD_MONSTER_DENSITY. A setting change needs a server restart.
archcore sim client test test TesteurThe simulator replays the handshake, the login, the character list and the world entry. It should end with "entrée en jeu confirmée", then "flux complet OK".
The client reads the server list from an encrypted .ini file next to its executable. It first
reads, if present, a plain-text file with the same name followed by Test (for example
<ClientName>Test.ini). Create that file in Game/ with:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<IPInfo>
<ServerGroup><GroupName>ArchCore</GroupName><IP>127.0.0.1:11002</IP></ServerGroup>
</IPInfo>The client runs with administrator rights, so type the login in the game window: another program cannot send it keystrokes.
To play in French, write 17 in Launcher/LanguageInfo.txt (see Translation).
By default everything is set up to play on the same machine (127.0.0.1). To welcome other players:
-
World address. In
config/world.conf, setWorldServer.PublicAddressto the address players use to reach the machine: its local network address (for example192.168.1.20, given byipconfig) or its public address / a domain name for the Internet. The login server hands it to clients to join the world. -
Firewall. Allow TCP ports 11002 (login) and 11008 (world). On Windows, in a PowerShell run as administrator:
New-NetFirewallRule -DisplayName "ArchCore" -Direction Inbound -Protocol TCP -LocalPort 11002,11008 -Action Allow
-
Router. For players outside the local network, forward these two ports to the server machine in the router's settings.
-
Player side. In
<ClientName>Test.ini, replace127.0.0.1with the server address (<IP>192.168.1.20:11002</IP>). -
Accounts. Create one account per player with
archcore db-init --account name password.
Nothing is lost on shutdown: characters, items and positions are in the database. After a restart, start again in order, each in its own window:
- MariaDB:
db/start-mariadb.cmd(not needed if MariaDB is installed as a Windows service); - the server:
archcorefrom the repository root.
If the machine was cut off abruptly, MariaDB repairs its tables on start ("Crash table recovery finished"): this is normal.
| Symptom | Lead |
|---|---|
| "Cannot access the login server" | ArchCore is not listening on 11002, or <ClientName>Test.ini is missing |
| Endless loading when entering the world | Run with ARCHCORE_TRACE=1 and read the log |
| The server stops at start-up on a database error | MariaDB is not running, or its credentials (Database.*) are wrong |
The server refuses to start: "schema of the databases to update" (schéma des bases à mettre à jour) |
Database not tracked yet or behind: run archcore db-init; ahead: update the executable (see Database) |
| No monsters in the world | The server tables were not imported (archcore import --server …) |
| Creatures vanish when moving or coming closer | Client display setting: in Game/ini/COption.ini (client closed), CharView multiplies the character draw distance (0: 0.25; 1: 0.45; 2: 0.875; 3: unlimited) and MapView the map's (0.5 to 1.8). Set both to 3, or to the maximum in the game's graphics options |
| Another player is stuck after choosing a character |
WorldServer.PublicAddress is still 127.0.0.1, or port 11008 is closed |
| "Unknown column" message in the log | Code updated without running archcore db-init again |
| Empty inventory or shop | The client's language folder (ini_fr…) must hold ItemTemplateAll.ini (see [[Translation |
| No sound | Check [Sound_Option] in Game/ini/COption.ini; the game rewrites this file on exit |
ArchCore — github.com/BlaMacfly/ArchCore · Discord · Pages sources dans docs/wiki / Source pages in docs/wiki.