Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

503 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation


Argentum Online Java โ€” LWJGL3 Client

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.

๐ŸŽฏ Discord

For those who want to collaborate with the project, they are more than welcome! You can communicate with us on our Discord.


โœจ Features

  • ๐ŸŽฎ 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

๐Ÿ—๏ธ Architecture

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

Tech Stack

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) โ€”

๐Ÿš€ Requirements

๐Ÿ“ฆ How to compile and run

  1. Clone the repository:
git clone https://github.com/gasti-jm/argentum-online-lwjgl3.git
  1. Open the project:

    • In IntelliJ IDEA: Go to File > Open and select the project folder
    • The IDE will automatically download all dependencies through Gradle
  2. Build the project:

./gradlew build
  1. Run the project:
    • Locate the main class org.aoclient.Main
    • Right click and select 'Run' or press Shift+F10
    • Alternatively: ./gradlew run

IMPORTANT: MacOS users should start their application passing -XstartOnFirstThread as a VM option.


โš™๏ธ Configuration

options.ini โ€” Client options

Music = true
Sound = true
IP = 127.0.0.1
PORT = 7666
Fullscreen = false
VSYNC = true
Language = es

keys.properties โ€” Key bindings (GLFW keycodes)

All actions are remappable. Default: WASD movement, Enter chat, Space use, Ctrl attack, Q pickup, E equip.


๐Ÿ“ธ Screenshots

Screenshot 2023-08-21 044542

VirtualBox_Linux_09_03_2024_04_13_54

2R3ZxNl

๐Ÿ“‹ Project Status

โœ… Implemented

  • 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 .ao files
  • 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

๐Ÿ”ง In Progress / Planned

  • Vulkan graphics backend (EngineVulkan.java placeholder)
  • NIO networking (current: blocking sockets)
  • Unit tests

๐Ÿ“ Game Resources

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 โ€”

Development Notes

  • 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

Thanks to:


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

How to Contribute:


  1. Fork the Repository: Click on "Fork" in the top right corner of the page to create your own copy.
  2. Clone Your Repository: Clone your fork to your computer using git clone https://github.com/YOUR_USERNAME/argentum-online-lwjgl3.git.
  3. Create a Branch: Create a branch with git checkout -b branch-name for your changes.
  4. Make Changes: Make your improvements or fixes and commit them.
  5. Submit a Pull Request: From your fork, create a pull request for us to review your changes.

About

MMORPG Video Game of the year 1999 created in Visual Basic 6.0 by Pablo Marquez (Morgolock), this game is open source. I have translated it to Java with LWJGL3, this game would be the base client, the connection to the server is being implemented with Java sockets.

Topics

Resources

Stars

15 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages