dorkhub

lifthrasir

A Ragnarok Online Client written in Rust and Bevy

EndurnyrProject
Rust537 forksMITupdated 3 days ago
git clone https://github.com/EndurnyrProject/lifthrasir.gitEndurnyrProject/lifthrasir

Lifthrasir

A modern, cross-platform Ragnarok Online client implementation built with Rust and Bevy.

Overview and Objective

I always wanted to build this stuff, and since i wanted to learn Rust, why not? Will this ever be fully playable? Probably not, maybe, who knows?

The objetive here is most fun, i don't want to build a 1-to-1 ragnarok client copy, i want some liberty to add new stuff, redo some stuff i didn't like, while trying to keep the same feeling.

Project Architecture and Functionalities

I'm trying to keep it as close to the Bevy ECS recommended architecture, the basic concepts are:

  1. Follow the ECS pattern, where systems operate on components attached to entities.
  2. Keep the network and game logic separate, albeit i don't want to build compatibility for other servers, do not keep people from doing it.

Prerequisites

  • Rust (latest stable)
  • Ragnarok Online GRF Files - You must provide your own legitimate GRF data files

Required Files

This client requires Ragnarok Online data files, which are proprietary to Gravity Co., Ltd. and are NOT included in this repository.

Getting Started

git clone git@github.com:EndurnyrProject/lifthrasir.git
# Add your *.grf to the assets folder, configure the loader.toml
# Then convert the stuff
cargo run -p ro-to-lifthrasir-cli -- convert

# Then, generate your pak file
cargo run --release -p grf-utils -- pack \
  --grf assets/en.grf --grf assets/data.grf \
  --content-dir assets/data \
  --out assets/lifthrasir.pak --content-version 1

# Run the app on dev mode
cargo run -p lifthrasir --features dev

Server Side

Does it work with rAthena?

Nope, and its not my plan to make it work, only with Aesir, the engine protocol is agnostic though, feel free to implement the protocol for rAthena if you want.

Contributing

Contributions are welcome! Please ensure:

  1. Code follows Rust idioms and formatting (cargo fmt)
  2. All tests pass (cargo test)
  3. Clippy produces no warnings (cargo clippy)
  4. Commits follow conventional commit format

Thank you

I shamelessly took a lot of code and ideas from these amazing projects:

Legal Notice

This project is not affiliated with, endorsed by, or connected to Gravity Co., Ltd. or any official Ragnarok Online server. Users must provide their own legitimate game data files and comply with all applicable terms of service. Gravity pls don't strike me :(

more like this

anne-key

Firmware for Anne Pro Keyboard written in Rust

Rust572

TachiSnap

TachiSnap — Pixel Snapper for animation pixel artists. Rust + WebAssembly client-side tool for cleaning up AI-generated…

HTML50

bit_gossip

Pathfinding library for calculating all node pairs' shortest paths in an unweighted undirected graph.

Rust50

search

search projects, people, and tags