Skip to content

Self-hostable 2D block building/physics game heavily inspired by the flash game Everybody Edits

License

Notifications You must be signed in to change notification settings

SmallJoker/OpenEdits

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenEdits

preview image v1.0.8-dev

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.

Gameplay

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

Chat commands

  • See /help

Permission/player flag examples:

  • /fset FOOBAR tmp-edit-draw temporary edit access (until rejoin)
  • /fset FOOBAR godmode persistent god mode access (after the world is saved)
  • /fdel FOOBAR owner removes all persistent access except for "banned"
  • /ffilter lists all players with any specified flags

Command line arguments

  • --version outputs the current game version
  • --unittest runs the included tests to sanity check
  • --server starts a server-only instance without GUI
  • --setrole USERNAME ROLE
    • ROLE can 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,+all override the default log levels
    • + prefix: verbose logging
    • - prefix: ignore anything below error level
    • all: Changes all loggers
    • Specific log level overrides take priority over all.

World import/export

  • *.eelvl files in worlds/imports/ are listed by the server as playable read-only worlds
  • Clients may use .export FILENAME to export the current world to worlds/exports/
  • See worlds/README.txt for further information

Linux

  1. Extract the archive to any location
  2. Run AppRun.sh
  3. In case of issues: run with gdb. Debug symbols are included.

Windows

  1. Extract the archive to any location
  2. Run the executable
  3. In case of issues: use a debugger such as x64dbg

Compiling

Dependencies

  • 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
├── openal-soft (client, optional)
└── sqlite3
└── zlib

Debian/Ubuntu:

sudo apt install libenet-dev libopenal-dev libsqlite3-dev zlib1g-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

  1. Install the minimal required libraries
  2. Put the IrrlichtMt headers (include directory) somewhere
  3. cmake -S . -B build -DBUILD_CLIENT=0 -DIRRLICHTMT_BUILD_DIR="/path/to/irrlicht/include/"
  4. cd build -> build make -j -> start ./OpenEdits-server

Distributing (simplified)

cd build
make install
bash ../misc/pack.sh

Licenses

Code: LGPL 2.1+

Imported code

Fonts

DejaVu Sans bitmaps (Bitstream Vera license, extended MIT)

Images

Images that are not listed below were created by SmallJoker (CC BY 4.0).

DailyYouth (CC BY 3.0)

IconMarket (CC BY 3.0)

ZUMMACO (CC BY 3.0)

Sounds

Sounds that are not listed below were created by SmallJoker (CC BY 4.0).

Piotr Barcz (CC 0)