Argentum Online is a MMORPG Video Game of the year 1999 created in Visual Basic 6.0 by Pablo Marquez (Morgolock), this game is open source.
This is the client translated to Java with LWJGL3. The connection to the server is implemented with Java sockets and is fully compatible with the Argentum Online Alkon v13.0 VB6 server. The Java server is also being developed in a separate module.
Tip
Para un análisis técnico profundo del motor, red y renderizado, consulta la Documentación de Arquitectura del Cliente.
For those who want to collaborate with the project, they are more than welcome! You can communicate with us on our Discord.
- 🎮 2D Rendering Engine with OpenGL 3.3 (batch renderer + GLSL shaders)
- 🖥️ Dear ImGui GUI system with 20+ game forms (login, inventory, bank, commerce, skills, stats, mini-map, GM panel...)
- 🔌 Complete protocol — 129 outgoing packets + 104 incoming packets + 105 handlers
- 🔊 OpenAL Audio — Music (OGG) and sound effects
- ⌨️ Configurable key bindings — 30+ remappable actions
- 🌍 Internationalization — Spanish and English supported
- 🏗️ Multi-platform — Windows, Linux, macOS (x64 & arm64)
- 📦 Automated releases — JAR, portable ZIP, and Windows EXE via GitHub Actions
- 🎭 Full asset loading — Bodies, heads, helmets, weapons, shields, FX, maps from legacy binary format
org.aoclient
├── Main.java ← Entry point (OpenGL / Vulkan selection)
├── engine/
│ ├── EngineGL.java ← OpenGL game loop (init → loop → close)
│ ├── audio/ ← OpenAL music and SFX
│ ├── game/ ← Game logic (User, Console, Weather, Inventory)
│ ├── gui/ ← Dear ImGui integration (20 forms)
│ ├── renderer/ ← 2D batch renderer + shaders + textures
│ ├── scenes/ ← IntroScene → MainScene → GameScene
│ ├── listeners/ ← Keyboard + Mouse handlers
│ └── window/ ← GLFW window management
├── network/
│ ├── Connection.java ← TCP socket connection
│ ├── PacketBuffer.java ← Little-endian binary buffer
│ └── protocol/
│ ├── Protocol.java ← 130+ packet serialization methods
│ ├── ClientPacket.java ← 129 client→server packet IDs
│ ├── ServerPacket.java ← 104 server→client packet IDs
│ ├── PacketProcessor.java ← Incoming packet dispatch
│ ├── handlers/ ← 105 packet handler implementations
│ └── command/ ← Chat command system (user + GM)
└── scripts/
└── Compressor.java ← .ao compressed file reader
| Component | Technology | Version |
|---|---|---|
| Language | Java | 17 |
| Build | Gradle + Shadow JAR | 8.1.1 |
| Graphics | LWJGL3 (OpenGL 3.3) | 3.3.3 |
| Math | JOML | 1.10.5 |
| GUI | Dear ImGui | 1.86.11 |
| Logging | TinyLog | 2.7.0 |
| Audio | OpenAL (via LWJGL) | — |
| Window | GLFW (via LWJGL) | — |
- Java Development Kit (JDK) 17 or higher
- IntelliJ IDEA (recommended), NetBeans, Eclipse or any Java IDE
- Gradle (automatically managed by the IDE)
- Clone the repository:
git clone https://github.com/gasti-jm/argentum-online-lwjgl3.git-
Open the project:
- In IntelliJ IDEA: Go to
File > Openand select the project folder - The IDE will automatically download all dependencies through Gradle
- In IntelliJ IDEA: Go to
-
Build the project:
./gradlew build- Run the project:
- Locate the main class
org.aoclient.Main - Right click and select 'Run' or press Shift+F10
- Alternatively:
./gradlew run
- Locate the main class
IMPORTANT: MacOS users should start their application passing -XstartOnFirstThread as a VM option.
Music = true
Sound = true
IP = 127.0.0.1
PORT = 7666
Fullscreen = false
VSYNC = true
Language = esAll actions are remappable. Default: WASD movement, Enter chat, Space use, Ctrl attack, Q pickup, E equip.
- Complete game protocol (compatible with VB6 server v13.0)
- Full 2D rendering engine with batch rendering
- 20+ Dear ImGui game forms
- OpenAL audio system (music + SFX)
- Asset loading from compressed
.aofiles - Full scene system (Intro → Login → Game)
- Chat command system (user + GM)
- Configurable key bindings
- Weather effects (rain)
- Mini-map
- Tutorial system
- CI/CD with automated releases
- Vulkan graphics backend (
EngineVulkan.javaplaceholder) - NIO networking (current: blocking sockets)
- Unit tests
| File | Content | Size |
|---|---|---|
graphics.ao |
All game sprites | ~25 MB |
gui.ao |
UI textures | ~18 MB |
inits.ao |
Data indices (GRH, heads, bodies...) | ~133 KB |
maps.ao |
All game maps | ~508 KB |
music/ |
Background music (OGG) | — |
sounds/ |
Sound effects | — |
shaders/ |
GLSL vertex + fragment shaders | — |
- The project uses Gradle for dependency management
- Native libraries are automatically downloaded based on your operating system
- Supports Windows, Linux and MacOS (x64 & arm64)
- Make sure your graphics drivers are up to date for optimal OpenGL performance
Pablo Marquez (Morgolock) creator of Argentum Online
Lord Fers - GS-Zone user who released a base client offline in LWJGL2
And the GS-Zone people
- Fork the Repository: Click on "Fork" in the top right corner of the page to create your own copy.
- Clone Your Repository: Clone your fork to your computer using git clone https://github.com/YOUR_USERNAME/argentum-online-lwjgl3.git.
- Create a Branch: Create a branch with git checkout -b branch-name for your changes.
- Make Changes: Make your improvements or fixes and commit them.
- Submit a Pull Request: From your fork, create a pull request for us to review your changes.


