A 2D game block building inspired by Everybody Edits. Code structure inspired by Minetest practices.
The project direction can be found in doc/DIRECTION.md.
Account management
- Any specified username is automatically converted to uppercase.
GUESTxxxusernames are treated as temporary.- Registration is nethier needed nor possible.
- The account registration is rate limited by IP.
Hotkeys
- W/A/S/D or arrow keys: move player
- Space: Jump
- LMB: Place the selected block
- RMB or Shift+LMB: Block eraser
- RMB + Ctrl: Select clicked block including params
- Mouse scroll: Zoom in/out
- Warning: Rendering performs pretty badly. Do not scroll out too far.
- 1-9: Hotbar block selector
- Use RMB to drag & drop a block from the selector into the hotbar
/or T or Enter: Open chat box- Enter: Submit
- ESC: Cancel and close
- Tab: Nickname autocompletion
- Up/Down: Previous chat message / empty chat message
- E: Toggle block selector
- G: Toggle god mode
- M: Toggle minimap
- F1: Toggle debug information
- Ctrl + F: Search worlds (lobby only)
Chat commands
- See
/helpand/help COMMAND(in-game)
Permission/player flag examples:
/fset FOOBAR tmp-edit-drawtemporary edit access (until rejoin)/fset FOOBAR godmodepersistent god mode access (after the world is saved)/fdel FOOBAR ownerremoves all persistent access except for "banned"/ffilterlists all players with any specified flags
Command line arguments
--versionoutputs the current game version--unittestruns the included tests to sanity check--decompress FILEPATHdecompresses an EELVL file (for development purposes)--serverstarts a server-only instance without GUI--setrole USERNAME ROLEROLEcan be one of:normal,moderator,admin.- Can be executed while a server is already running.
--go USERNAME PASSWORD(FILE) [WORLD_ID]- Starts a local server and joins the world ID (if provided)
Environment variables
OE_DEBUG=+foo,-bar,+alloverride the default log levels+prefix: verbose logging-prefix: ignore anything below error levelall: Changes all loggers- Specific log level overrides take priority over
all.
World import/export
*.eelvlfiles inworlds/imports/are listed by the server as playable read-only worlds- Helpful level archive: https://archive.offlinee.com/
- Clients may use
.export FILENAMEto export the current world toworlds/exports/ - See
worlds/README.txtfor further information
- Extract the archive to any location
- Run
AppRun.sh - In case of issues: run with
gdb. Debug symbols are included.
- Extract the archive to any location
- Run the executable
- In case of issues: use a debugger such as x64dbg
- CMake (cmake-gui recommended for desktops)
- Irrlicht-Mt : GUI/rendering library
- enet : networking library
- LuaJIT or Lua 5.1 : (WIP) server-defined scripts
- SQLite3 : auth & world saving
- Threads (pthread?)
- zlib: world compression (including EELVL import/export)
- OpenAL-soft: sound (for GUI builds only)
Dependency tree:
OpenEdits
├── enet
├── irrlicht-mt (server)
├── irrlicht-mt (client)
│ ├── libjpeg
│ ├── libpng
│ │ └── zlib
│ └── zlib
├── lua(jit)
├── openal-soft (client, optional)
├── sqlite3
└── zlib
Debian/Ubuntu:
# For all builds
sudo apt install libenet-dev libluajit-5.1-dev libsqlite3-dev zlib1g-dev
# Client builds only
sudo apt install libjpeg-dev libpng-dev libopenal-dev
Windows:
- C99 standard library is required. msvcrt uses C89, thus MinGW or Clang are recommended over MSVC.
Project compiling:
cmake -S . -B build
cd build
make -j
Headless server compiling
- Install the minimal required libraries
- Put the IrrlichtMt headers (include directory) somewhere
cmake -S . -B build -DBUILD_CLIENT=0 -DIRRLICHTMT_BUILD_DIR="/path/to/irrlicht/include/"cd build-> buildmake -j-> start./OpenEdits-server
Distributing (simplified)
cd build
make install
bash ../misc/pack.sh
Code: LGPL 2.1+
Imported code
- minimp3 (CC 0), used in GUI builds only
- SHA3IUF (MIT)
- FindENet.cmake (GPL 2)
- FindLuaJIT.cmake (LGPL 2.1+)
DejaVu Sans bitmaps (Bitstream Vera license, extended MIT)
- Converted with https://github.com/kahrl/irrtum
Images that are not listed below were created by SmallJoker (CC BY 4.0).
DailyYouth (CC BY 3.0)
IconMarket (CC BY 3.0)
icon_minimap.png(desaturated)
ZUMMACO (CC BY 3.0)
Sounds that are not listed below were created by SmallJoker (CC BY 4.0).
Piotr Barcz (CC 0)
