choria - Finally, an MMORPG that's all about grinding and doing chores
by Alan Witkowski
https://choria.gitlab.io

----- DOWNLOADING -----

Download and extract the latest choria-*-src.tar.gz from https://gitlab.com/choria/code/-/releases

OR

Clone the repository:
git clone https://gitlab.com/choria/code.git --branch dev --recurse-submodules choria

----- BUILDING ON LINUX -----

-- Dependencies required --
Ninja
CMake 3.10+
OpenGL 3.3+
SDL3
libwebp
OpenAL
libvorbis
libogg
FreeType2
SQLite 3.25+
zlib
pthreads

-- Installing dependencies on Debian --
sudo apt install ninja-build cmake build-essential libsdl3-dev libwebp-dev libopenal-dev libvorbis-dev libfreetype-dev libsqlite3-dev

-- Installing dependencies on Arch Linux --
sudo pacman -S base-devel ninja cmake sdl3 libwebp openal libvorbis libogg freetype2 sqlite

-- Build executable --
./build.sh

-- Running the game without installing --
cd working && ./choria

-- Installing --
cd build/release
sudo ninja install

-- Uninstall --
cd build/release
cat install_manifest.txt | xargs sudo rm

----- BUILDING FOR WINDOWS ON LINUX -----

-- Mingw-w64 dependencies required when building for Windows --
mingw-w64-gcc
mingw-w64-sdl3
mingw-w64-libwebp
mingw-w64-freetype2
mingw-w64-openal
mingw-w64-libvorbis
mingw-w64-libogg
mingw-w64-sqlite

-- Building for Windows --
cd deployment
./build_mingw.sh
ls out/*.zip

----- COMMAND-LINE ARGUMENTS -----

Parameters with <> denote required values
Parameters with [] denote optional values

use 4K textures
-4k

run a dedicated server
-server

change listen port for dedicated server
-port <port>

set username on login screen
-username <username>

set password on login screen
-password <password>

connect to a server
-connect <host> <port>

enable hardcore only
-hardcore

disable audio
-noaudio

disable chat
-nochat

disable pvp
-nopvp

open the mapeditor
-editor [map]

----- HOW TO PLAY -----

Read the manual online at https://choria.gitlab.io

Use arrow keys or ESDF to walk around.
During battle, press 1-8 to use a skill. Press the arrow keys or use the mouse cursor to switch targets. Press 1-8 again or left mouse button to confirm the action.
Items on your belt can be used by pressing F1-F4. Certain items can only be used in battle.
Press Spacebar to activate events.
Press C to open your inventory and see character stats.
Press R to open your skill page. Every level gets you one skill point to spend. All skills must be equipped to your action bar before they're activated.
Press T to trade with other players.
Press G to join an existing battle.
Press P to set a private party name.
Press Tab to show the relic wheel. Press 1-8 on the keyboard, or click to select a relic, or right-click to select and keep the wheel open.
Press Enter to chat with other players.
Press Grave to show the console. Press Tab to show a list of available commands.
Press F6 to show technical info.
Hold Alt to show additional information on various screens.

Save data is in ~/.local/share/choria for Linux and %APPDATA%/choria for Windows

----- MULTIPLAYER -----

Singleplayer games will start a server in the background on port 31234 by default, so other computers can connect to that without having to start a dedicated server.

----- MAP EDITOR -----

To access the map editor, the game must be built with the map editing flag:
ENABLE_EDITOR=1 ./build.sh

-- Modes --
Press 1 to draw textures
Press 2 to draw zones
Press 3 to draw PVP/safe areas
Press 4 to draw events
Press 5 to draw lights

Press F1-F5 to change brush size
Press Spacebar to list textures
Press Tab to change from background/foreground layer
Press W to change from Wall/Walkable
Press P to change from PVP/Safe zone
Press E/Shift-E to change event types
Press G on an event to open it in the design tool or to switch maps
Press V to paste a copied area of tiles
Press X to flip the copied tiles horizontally
Press Shift+X to flip the copied tiles vertically
Press Z to rotate through different zone colors
Press D to delete light under cursor
Press Ctrl+Alt+D to delete all lights

-- Rendering --
Press F to toggle the foreground layer
Press M to toggle background map
Press H to toggle text overlay
Press T/Shift-T to cycle the clock
Press Ctrl+T to toggle day/night ambient light

-- Mouse --
Use Left-mouse button to apply the current brush
Use Right-mouse button to pan the camera

Use Mousewheel to zoom the camera in or out
Use Shift+Mousewheel to quickly zoom the camera in or out

Use Ctrl+Mousewheel to change zones or event data number
Use Shift+Ctrl+Mousewheel to change zones or event data number by 10

Use Ctrl+Left-mouse button to copy an existing tile into the brush
Use Middle-click drag to highlight an area to copy, then V to paste

-- Misc --
Press N to start a new map
Press L to load a map
Press S to save
Press R to resize the map

----- DESIGN TOOL -----

The design tool allows you to modify the game stats easily.

Start the web server:
cd assets/web
./server.py

Then open your browser and go to "http://localhost:8000"
