- Joined
- Jul 28, 2011
- Messages
- 124
- Reaction score
- 63
#Audition Server - Setup Guide
A Java-based private server emulator for Audition Online (Season 5). This guide covers everything you need to get the server running and connect with the game client.
---
## Prerequisites
### 1. Java Development Kit 8 (JDK 8)
> **
Java 8 is REQUIRED. The server will NOT compile or run on Java 9+.**
Download one of these:
- [BellSoft Liberica JDK 8](https://bell-sw.com/pages/downloads/#jdk-8-lts)
- [Eclipse Temurin JDK 8](https://adoptium.net/temurin/releases/?version=8)
- [Oracle JDK 8](https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html)
Install to a known path (e.g., `C:\Program Files\BellSoft\LibericaJDK-8`).
Verify:
```
set JAVA_HOME=C:\Program Files\BellSoft\LibericaJDK-8
set PATH=%JAVA_HOME%\bin;%PATH%
java -version
```
Should show `1.8.x`.
### 2. Apache Maven 3.6+
- Download from [maven.apache.org](https://maven.apache.org/download.cgi)
- Extract to `C:\apache-maven`
- Add `C:\apache-maven\bin` to your system PATH
Verify:
```
mvn -version
```
### 3. MySQL 5.7+ (Optional)
The server supports MySQL or H2 embedded database. H2 requires no setup but data is lost on restart.
For MySQL:
- Download from [dev.mysql.com](https://dev.mysql.com/downloads/mysql/)
- Install and start the MySQL service
---
## Step 1: Build the Server
Open a terminal in the project root directory and set Java 8:
**Windows:**
```cmd
set JAVA_HOME=C:\Program Files\BellSoft\LibericaJDK-8
set PATH=%JAVA_HOME%\bin;%PATH%
mvn clean package -DskipTests
```
**Linux/Mac:**
```bash
export JAVA_HOME=/path/to/jdk8
export PATH=$JAVA_HOME/bin:$PATH
mvn clean package -DskipTests
```
Or simply run `build.bat` (Windows).
The output JAR will be at `target/agx-server-1.0.0.jar`.
---
## Step 2: Configure the Database
### Option A: H2 Embedded (Easy, no setup)
Edit `server.properties`:
```properties
database.type=h2
```
That's it. The database file is created automatically at `./data/agx_db`.
### Option B: MySQL (Persistent)
1. Create the database and user:
```sql
CREATE DATABASE audition_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'audition_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON audition_db.* TO 'audition_user'@'localhost';
FLUSH PRIVILEGES;
```
Or run:
```
mysql -u root -p < sql/000_create_user.sql
mysql -u root -p < sql/001_create_schema.sql
```
2. Edit `server.properties`:
```properties
database.type=mysql
database.host=localhost
database.port=3306
database.name=audition_db
database.username=audition_user
database.password=your_password
```
> **Note:** The table `Character` and columns `set`, `read` are MySQL reserved words. The code handles this with backtick escaping. If you get errors about NULL values in existing data, ensure all numeric columns have default values (not NULL).
---
## Step 3: Start the Server
```cmd
set JAVA_HOME=C:\Program Files\BellSoft\LibericaJDK-8
set PATH=%JAVA_HOME%\bin;%PATH%
java -jar target/agx-server-1.0.0.jar
```
Or run `start-server.bat`.
You should see:
```
Audition Reborn v.0.0.1 startup
Validated 93 packet types' request and response classes
Login server startup - Socket opened: port 18505
Game server startup - Socket opened: port 18506
File transfer server startup - Socket opened: port 18510
```
The first user account is created automatically (if using H2) or you can configure test credentials in `AuditionRebornApplication.java`.
---
## Step 4: Client Setup
### 4.1 XTrap Bypass
The Audition client includes XTrap anti-cheat which will kill the process after ~75 seconds. You need to replace it with a stub DLL.
**Generate the stub:**
```
python build_xtrap_stub.py
```
This creates a `XTrapVa.dll` (2KB) in the `XTrap/` folder with no-op exports (`XProc1` through `XProc9`).
**Install:**
1. Go to your Audition client's `XTrap/` folder
2. Rename the original `XTrapVa.dll` to `XTrapVa.dll.backup`
3. Copy the generated `XTrapVa.dll` into the `XTrap/` folder
### 4.2 IP Encoder
The client needs an encoded IP parameter to connect. For `127.0.0.1` (localhost), use:
```
Audition.exe /t3enter 0F007E346F540C55641C5A7E074364
```
You can use the `ipencoder` tool (if available) to generate parameters for other IPs.
### 4.3 Create a Launch Script
Create `play.bat` in your Audition client folder:
```cmd
Echo off
Audition.exe /t3enter 0F007E346F540C55641C5A7E074364
```
### 4.4 Launch
1. Start the server (Step 3)
2. Run `play.bat` in the client folder
3. Log in with any username/password (new accounts are created automatically with H2, or use the configured test account)
4. Create your character name
5. Enter the Pin (000000 for new accounts)
6. Select a channel and enter the Dancing Hall
---
## Step 5: Music Headers
The server needs `music_headers.dat` to validate songs during gameplay. 202 songs are pre-included.
### How It Works
When a game starts, the client sends a music filename (e.g., `k1018.tbm`). The server looks up the corresponding header in `music_headers.dat` and sends it back. The client validates this header against its local `.tbm` file.
### Available Songs
- **200 standard songs** (k1013-k1154) — Standard 4key/8key and Beat Rush modes
- **20 beat-up songs** (kb1001-kb1025)
- **46 guitar entries** (kg*) — Headers sent but may be rejected by some client versions
### Adding More Songs
If you have `.thd` header files from a compatible server:
1. Place them alongside the client's `.tbm` files
2. Run `python generate_music_headers.py` to create a new `music_headers.dat`
3. Restart the server
To analyze which songs are available:
```
python analyze_music.py
```
---
## Server Ports
| Service | Port | Notes |
|---------|------|-------|
| Login Server | 18505 | Authentication and character selection |
| Game Server | 18506 | Gameplay, channels, rooms |
| File Transfer | 18510 | Asset serving |
Ports are hardcoded in the source code (`LoginServer.java`, `GameServer.java`, `FileTransferServer.java`).
---
## Troubleshooting
### "Java 9+ module error" during build
You're using the wrong Java version. Set `JAVA_HOME` to JDK 8.
### Client disconnects immediately after login
- Check that the Game Server is running on port 18506
- Verify `LoginHandler.java` sends `127.0.0.1` as the game server IP
### Client closes after ~75 seconds
XTrap is active. Install the stub DLL (Step 4.1).
### Client closes when entering Dancing Hall
The server must have exactly 93 packet types. Check the startup log for `Validated 93 packet types`.
### "Music code does not match" error
The music header doesn't match the client's `.tbm` file. This song is incompatible with the current headers.
### "Music Not Found" error
The `.tbm` file doesn't exist in the client's `abm/` folder, or no header is available on the server.
### NULL value errors with MySQL
Run this SQL to fix existing data:
```sql
UPDATE `Character` SET `set`=0 WHERE `set` IS NULL;
UPDATE `Character` SET PinUnlockTime=0 WHERE PinUnlockTime IS NULL;
UPDATE `Character` SET pinAttempt=0 WHERE pinAttempt IS NULL;
UPDATE `Character` SET ban=0 WHERE ban IS NULL;
-- Add similar for any other columns with NULL values
```
### Scoreboard doesn't close after song ends
The server detects end-of-game in two ways:
1. `lastRound=1` flag in dance packets (standard mode)
2. Client sends `ResultsRequestPacket` (some modes)
3. Any `GAME_END` packet subtype is routed to results
If none of these triggers, the game may hang. This affects some non-standard game modes.
---
## Project Structure
```
agx-server/
├── pom.xml # Maven build config
├── server.properties # Database and server config
├── music_headers.dat # Song validation headers (202 songs)
├── build.bat # Build script (sets Java 8)
├── start-server.bat # Launch script
├── build_xtrap_stub.py # XTrap bypass DLL generator
├── analyze_music.py # Music file analyzer
├── generate_music_headers.py # Header generator from .thd files
├── src/main/java/agx/
│ ├── AuditionRebornApplication.java # Entry point
│ ├── game/ # Game entities (Character, Session, Inbox)
│ ├── net/ # Networking (Client, Crypto, Packets)
│ ├── password/ # PBKDF2 password hashing
│ ├── persistence/ # Database repositories (Hibernate)
│ ├── server/ # Server logic and packet handlers
│ └── util/ # Utilities (ByteBuffer, Hex)
└── sql/ # Database setup scripts
```
---
Normal mode has approximately 200 functional songs.
Guitar mode is not working at the moment. BeatUp is functional with some songs.
Needs improvements, implement everything.
Download
Server:
Client:
A Java-based private server emulator for Audition Online (Season 5). This guide covers everything you need to get the server running and connect with the game client.
---
## Prerequisites
### 1. Java Development Kit 8 (JDK 8)
> **
Download one of these:
- [BellSoft Liberica JDK 8](https://bell-sw.com/pages/downloads/#jdk-8-lts)
- [Eclipse Temurin JDK 8](https://adoptium.net/temurin/releases/?version=8)
- [Oracle JDK 8](https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html)
Install to a known path (e.g., `C:\Program Files\BellSoft\LibericaJDK-8`).
Verify:
```
set JAVA_HOME=C:\Program Files\BellSoft\LibericaJDK-8
set PATH=%JAVA_HOME%\bin;%PATH%
java -version
```
Should show `1.8.x`.
### 2. Apache Maven 3.6+
- Download from [maven.apache.org](https://maven.apache.org/download.cgi)
- Extract to `C:\apache-maven`
- Add `C:\apache-maven\bin` to your system PATH
Verify:
```
mvn -version
```
### 3. MySQL 5.7+ (Optional)
The server supports MySQL or H2 embedded database. H2 requires no setup but data is lost on restart.
For MySQL:
- Download from [dev.mysql.com](https://dev.mysql.com/downloads/mysql/)
- Install and start the MySQL service
---
## Step 1: Build the Server
Open a terminal in the project root directory and set Java 8:
**Windows:**
```cmd
set JAVA_HOME=C:\Program Files\BellSoft\LibericaJDK-8
set PATH=%JAVA_HOME%\bin;%PATH%
mvn clean package -DskipTests
```
**Linux/Mac:**
```bash
export JAVA_HOME=/path/to/jdk8
export PATH=$JAVA_HOME/bin:$PATH
mvn clean package -DskipTests
```
Or simply run `build.bat` (Windows).
The output JAR will be at `target/agx-server-1.0.0.jar`.
---
## Step 2: Configure the Database
### Option A: H2 Embedded (Easy, no setup)
Edit `server.properties`:
```properties
database.type=h2
```
That's it. The database file is created automatically at `./data/agx_db`.
### Option B: MySQL (Persistent)
1. Create the database and user:
```sql
CREATE DATABASE audition_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'audition_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON audition_db.* TO 'audition_user'@'localhost';
FLUSH PRIVILEGES;
```
Or run:
```
mysql -u root -p < sql/000_create_user.sql
mysql -u root -p < sql/001_create_schema.sql
```
2. Edit `server.properties`:
```properties
database.type=mysql
database.host=localhost
database.port=3306
database.name=audition_db
database.username=audition_user
database.password=your_password
```
> **Note:** The table `Character` and columns `set`, `read` are MySQL reserved words. The code handles this with backtick escaping. If you get errors about NULL values in existing data, ensure all numeric columns have default values (not NULL).
---
## Step 3: Start the Server
```cmd
set JAVA_HOME=C:\Program Files\BellSoft\LibericaJDK-8
set PATH=%JAVA_HOME%\bin;%PATH%
java -jar target/agx-server-1.0.0.jar
```
Or run `start-server.bat`.
You should see:
```
Audition Reborn v.0.0.1 startup
Validated 93 packet types' request and response classes
Login server startup - Socket opened: port 18505
Game server startup - Socket opened: port 18506
File transfer server startup - Socket opened: port 18510
```
The first user account is created automatically (if using H2) or you can configure test credentials in `AuditionRebornApplication.java`.
---
## Step 4: Client Setup
### 4.1 XTrap Bypass
The Audition client includes XTrap anti-cheat which will kill the process after ~75 seconds. You need to replace it with a stub DLL.
**Generate the stub:**
```
python build_xtrap_stub.py
```
This creates a `XTrapVa.dll` (2KB) in the `XTrap/` folder with no-op exports (`XProc1` through `XProc9`).
**Install:**
1. Go to your Audition client's `XTrap/` folder
2. Rename the original `XTrapVa.dll` to `XTrapVa.dll.backup`
3. Copy the generated `XTrapVa.dll` into the `XTrap/` folder
### 4.2 IP Encoder
The client needs an encoded IP parameter to connect. For `127.0.0.1` (localhost), use:
```
Audition.exe /t3enter 0F007E346F540C55641C5A7E074364
```
You can use the `ipencoder` tool (if available) to generate parameters for other IPs.
### 4.3 Create a Launch Script
Create `play.bat` in your Audition client folder:
```cmd
Echo off
Audition.exe /t3enter 0F007E346F540C55641C5A7E074364
```
### 4.4 Launch
1. Start the server (Step 3)
2. Run `play.bat` in the client folder
3. Log in with any username/password (new accounts are created automatically with H2, or use the configured test account)
4. Create your character name
5. Enter the Pin (000000 for new accounts)
6. Select a channel and enter the Dancing Hall
---
## Step 5: Music Headers
The server needs `music_headers.dat` to validate songs during gameplay. 202 songs are pre-included.
### How It Works
When a game starts, the client sends a music filename (e.g., `k1018.tbm`). The server looks up the corresponding header in `music_headers.dat` and sends it back. The client validates this header against its local `.tbm` file.
### Available Songs
- **200 standard songs** (k1013-k1154) — Standard 4key/8key and Beat Rush modes
- **20 beat-up songs** (kb1001-kb1025)
- **46 guitar entries** (kg*) — Headers sent but may be rejected by some client versions
### Adding More Songs
If you have `.thd` header files from a compatible server:
1. Place them alongside the client's `.tbm` files
2. Run `python generate_music_headers.py` to create a new `music_headers.dat`
3. Restart the server
To analyze which songs are available:
```
python analyze_music.py
```
---
## Server Ports
| Service | Port | Notes |
|---------|------|-------|
| Login Server | 18505 | Authentication and character selection |
| Game Server | 18506 | Gameplay, channels, rooms |
| File Transfer | 18510 | Asset serving |
Ports are hardcoded in the source code (`LoginServer.java`, `GameServer.java`, `FileTransferServer.java`).
---
## Troubleshooting
### "Java 9+ module error" during build
You're using the wrong Java version. Set `JAVA_HOME` to JDK 8.
### Client disconnects immediately after login
- Check that the Game Server is running on port 18506
- Verify `LoginHandler.java` sends `127.0.0.1` as the game server IP
### Client closes after ~75 seconds
XTrap is active. Install the stub DLL (Step 4.1).
### Client closes when entering Dancing Hall
The server must have exactly 93 packet types. Check the startup log for `Validated 93 packet types`.
### "Music code does not match" error
The music header doesn't match the client's `.tbm` file. This song is incompatible with the current headers.
### "Music Not Found" error
The `.tbm` file doesn't exist in the client's `abm/` folder, or no header is available on the server.
### NULL value errors with MySQL
Run this SQL to fix existing data:
```sql
UPDATE `Character` SET `set`=0 WHERE `set` IS NULL;
UPDATE `Character` SET PinUnlockTime=0 WHERE PinUnlockTime IS NULL;
UPDATE `Character` SET pinAttempt=0 WHERE pinAttempt IS NULL;
UPDATE `Character` SET ban=0 WHERE ban IS NULL;
-- Add similar for any other columns with NULL values
```
### Scoreboard doesn't close after song ends
The server detects end-of-game in two ways:
1. `lastRound=1` flag in dance packets (standard mode)
2. Client sends `ResultsRequestPacket` (some modes)
3. Any `GAME_END` packet subtype is routed to results
If none of these triggers, the game may hang. This affects some non-standard game modes.
---
## Project Structure
```
agx-server/
├── pom.xml # Maven build config
├── server.properties # Database and server config
├── music_headers.dat # Song validation headers (202 songs)
├── build.bat # Build script (sets Java 8)
├── start-server.bat # Launch script
├── build_xtrap_stub.py # XTrap bypass DLL generator
├── analyze_music.py # Music file analyzer
├── generate_music_headers.py # Header generator from .thd files
├── src/main/java/agx/
│ ├── AuditionRebornApplication.java # Entry point
│ ├── game/ # Game entities (Character, Session, Inbox)
│ ├── net/ # Networking (Client, Crypto, Packets)
│ ├── password/ # PBKDF2 password hashing
│ ├── persistence/ # Database repositories (Hibernate)
│ ├── server/ # Server logic and packet handlers
│ └── util/ # Utilities (ByteBuffer, Hex)
└── sql/ # Database setup scripts
```
---
Normal mode has approximately 200 functional songs.
Guitar mode is not working at the moment. BeatUp is functional with some songs.
Needs improvements, implement everything.
Download
Server:
To view the content, you need to sign in or register
Client:
To view the content, you need to sign in or register

