Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/smalljoker/openedits
Self-hostable 2D block building/physics game heavily inspired by the flash game Everybody Edits
https://github.com/smalljoker/openedits
2d-game everybody-edits irrlicht multiplayer platformer
Last synced: 2 months ago
JSON representation
Self-hostable 2D block building/physics game heavily inspired by the flash game Everybody Edits
- Host: GitHub
- URL: https://github.com/smalljoker/openedits
- Owner: SmallJoker
- License: other
- Created: 2023-01-30T23:22:22.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2024-10-17T16:00:57.000Z (3 months ago)
- Last Synced: 2024-10-19T23:29:02.828Z (3 months ago)
- Topics: 2d-game, everybody-edits, irrlicht, multiplayer, platformer
- Language: C++
- Homepage:
- Size: 1.94 MB
- Stars: 9
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# OpenEdits
![preview image v1.0.8-dev](screenshot.jpeg)
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](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
* Helpful level archive:
* Clients may use `.export FILENAME` to export the current world to `worlds/exports/`
* See `worlds/README.txt` for further information## [Downloads](https://github.com/SmallJoker/OpenEdits/releases)
### 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](https://github.com/SmallJoker/irrlicht-mt) : GUI/rendering library
* [enet](http://enet.bespin.org/) : 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](https://github.com/kcat/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
└── zlibDebian/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](LICENSE.txt)+
**Imported code**
* [minimp3](https://github.com/lieff/minimp3) (CC 0), used in GUI builds only
* [SHA3IUF](https://github.com/brainhub/SHA3IUF) (MIT)
* [FindENet.cmake](https://www.orxonox.net/browser/code/trunk/cmake/tools) (GPL 2)
* [FindLuaJIT.cmake](https://github.com/minetest/minetest/tree/master/cmake/Modules) (LGPL 2.1+)### Fonts
DejaVu Sans bitmaps (Bitstream Vera license, extended MIT)
* Converted with https://github.com/kahrl/irrtum
### Images
Images that are not listed below were created by SmallJoker (CC BY 4.0).
DailyYouth (CC BY 3.0)
* [`icon_chat.png`](https://www.iconfinder.com/icons/3643728/balloon_chat_conversation_speak_word_icon)
IconMarket (CC BY 3.0)
* [`icon_minimap.png`](https://www.iconfinder.com/icons/6442794/compass_direction_discover_location_navigation_icon) (desaturated)
ZUMMACO (CC BY 3.0)
* [`ìcon_leave.png`](https://www.iconfinder.com/icons/7030313/sign_out_ui_basic_logout_app_user_interface_ui_icon)
### Sounds
Sounds that are not listed below were created by SmallJoker (CC BY 4.0).
Piotr Barcz (CC 0)
* [`piano_c4.mp3`](https://freepats.zenvoid.org/Piano/honky-tonk-piano.html)