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.


