A top down, fast paced, objective based, PvP game.
If you just want to play the game, go to this section!
To compile Lumina, you have to perform a recursive clone:
git clone --recursive https://github.com/nixon-voxell/lumina.git
Before running the game, the assets
folder needs to be linked correctly to all the binary crates.
You can do so by running:
create_asset_junctions.bat
To run the game, you need to start the server and the client. You can do so manually using:
cargo run --bin lumina_server
cargo run --bin lumina_client
For development purposes, a shell script has been created to speed things up:
run.bat x
With x
being the number of clients you want to spawn.
Lumina is made mainly using the Rust language. This means that most of the dependencies used will also be from the Rust ecosystem.
Here is the breakdown of the Lumina tech stack:
Component | Tool/Library |
---|---|
Game Engine | Bevy |
UI/UX | Velyst |
Global Illumination | Radiance Cascades, an improvement from here |
Particle System | Bevy Enoki |
Physics | Avian |
Networking | Lightyear |
Asset Management | Blenvy |
Input Manager | Leafwing Input Manager |
Coroutine | Bevy Coroutine |
Motion Graphics | Bevy MotionGfx |
Lumina is unique in several ways in terms of technical challenges. It is essentially also a technical playground in hindsight to test new tecnologies to their limits.
- Lumina uses vector graphics for all of its UI components which is rendered using Vello.
- Lumina's UI system is built entirely using a fairly new language called Typst.
- Lumina employs a novel approach towards 2d lighting using a global illumination technique called Radiance Cascades.
- Download the provided
lumina_build.zip
file from the release page and extract it. - Once extracted, you have 2 options, either host it locally, or host it online.
If you just want to play the game on a single machine, simply run both the lumina_server.exe
and lumina_client.exe
.
You can run multiple instances of lumina_client.exe
which will act like a different player.
To host for your entire LAN (local area network), open up terminal and determine your local IP address using ipconfig
on Windows or ifconfig
on Linux/Mac.
Then, copy the IP address and paste it in assets/settings.ron
in the server_addr
field:
..
shared: SharedSettings(
server_addr: "your ip here!",
server_port: 5000,
...
)
With the same IP address, paste it also in your other machines' settings.ron
file.
Once done, run lumina_server.exe
on the host machine (the machine where you copy the IP address).
On other machines, including the host machine, just run lumina_client.exe
, it will automatically connect to the server.
Warning
Hosting online risks your IP address being leaked. Continue this path with great caution!
The steps to host online is pretty similar to how you host on LAN (previous section). The only difference now is that you will need to do 2 extra things:
- Port-forward your hosting machine on your router with the port
5000
. - Change the
sever_addr
field to your public IP address instead (you can check this via https://whatismyipaddress.com/).