X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=README.md;h=5a14615846f3fc364209efa3f40be2cc1d76f25c;hb=77d98fc9a3a882390e06f3618f70de5cde59124c;hp=51e8c1790f02beced14efc2399d7043923ac67b6;hpb=08f88c00fd1123e1d4b2aea978db0329f10cad49;p=dragonblocks_alpha.git diff --git a/README.md b/README.md index 51e8c17..5a14615 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,107 @@ -# Dragonblocks alpha +# Dragonblocks Alpha -A multiplayer voxelgame for POSIX.1-2008 systems. +A multiplayer voxelgame for POSIX systems. +It has been ported to Linux, Windows, FreeBSD and OpenBSD, but may work on other systems. -## Usage -```bash -./DragonblocksServer -./Dragonblocks
+Head to for snapshot and release builds (CURRENTLY DOWN). + +## Invocation + +```sh +# on posix +./dragonblocks_server "
:" +./dragonblocks_client "
:" + +# on windows +dragonblocks_server.exe "
:" +dragonblocks_client.exe "
:" ``` or alternatively: -```bash +```sh +# on posix ./singleplayer.sh + +# on windows +singleplayer.bat ``` -The server will save the map to a file named "map" in the directory it is run in. It will also load the map from there at startup, given that the file exists. +## Controls -Interrupt handlers for SIGINT und SIGTERM are implemented. +| Key | Action | +|-|-| +| W | Move Forward | +| A | Move Left | +| S | Move Backward | +| D | Move Right | +| Space | Jump / When flying: Move Up | +| Left Shift | When flying: Move Down | +| F | Toggle flight | +| C | Toggle collision | +| T | Toggle timelapse | +| F2 | Take screenshot | +| F3 | Toggle debug info | +| F11 | Toggle fullscreen | +| ESC | Pause / unpause game | -## Controls +## System Requirements +Dragonblocks Alpha targets PCs only. Non x86-64 platforms may work, however there is no guarantee whatsoever. +You need a POSIX system conforming to the ISO C and POSIX 2008 standards. However, so far only GNU/Linux systems, in particular Ubuntu and Debian, have been tested. +The minimum OpenGL version is 4.2.0. Dragonblocks has been tested on Intel Integrated and NVIDIA GPUs, however other graphics cards should work as well. +A PC with at least 4 CPU cores is recommended, but not necessarily required. -Use W, A, S and D to move forward / left / backward / right. +## Current Features +- Multiplayer, Animated player model, Nametags +- Mountains, snow, temperature and humidity, dynamic grass color, oceans and beaches, vulcanos, boulders +- Physics +- FPS Camera +- Mipmapping, Antialiasing, Face Culling, Frustum Culling, Diffuse Lighting, Skybox, Fog +- Taking screenshots +- Daylight cycle +- GUI +- Saving terrain, player positions and other data to a SQLite3 database +- Multithreaded terrain generation, mesh generation and networking +- Handlers for SIGINT und SIGTERM (just Ctrl+C to shut down the server) +- Log levels: error, warning, access, action, info, verbose +- Loading assets such as textures, models, schematics, shaders and fonts from files -## Dependencies +## Usage -The client depends on GLFW3, OpenGL and GLEW. +### Server +The server currently stores the world database (world.sqlite) in the current working directory, and it will stay like that. +If you want to have multiple worlds, just run the DragonblocksServer process from different directories. +It's up to you how you organize the world folders, which is an advantage since the program really just "does one thing well" +without having to search your system for share directories or maintaining a world list (like Minetest does). -```bash -sudo apt install libgl1-mesa-dri libglfw3 libglew2.1 -``` +### Client / Singleplayer +The Dragonblocks client itself does not and will not have a Main menu. It goes against the already mentioned UNIX philosophy to have a binary +that does multiple things at once. For now, there is a singleplayer script that launches a server and a client, and in the future a launcher +will be added that is used to do all the stuff that users nowadays don't want to do themselves, like showing you a list of worlds and launching the +server in the correct directory, as well as updating the game and managing game versions for you. It's gonna do the ugly `~/.program_name`, but you +wont't have to use it if you don't want to. + +### Modding +Dragonblocks Alpha does not and will most likely never have a modding API. If anything, a Lua plugin API will be added. +It would be possible to have a native modding API for a C project (as demonstrated by [dungeon_game](https://github.com/EliasFleckenstein03/dungeon_game)), +but it would remove simplicity and, most importantly, remove optimisation possibilities. +The way you are meant to mod dragonblocks is by simply forking it on github and modifiying the game directly. To use multiple mods together, just git merge them. +If there are conflicts, the mods would likely not be compatible anyway. + +## Project Goals +The name "Dragonblocks _Alpha_" does not have anything to do with the game being in early development (which it is tho), it's just the game's name. + +### What Dragonblocks Alpha aims to achieve +- A voxelgame inspired by Minecraft and Veloren, with the techical side being inspired by Minetest +- Exciting and feature-rich gameplay with the focus on exploring and adventuring, while still being multi-optional and not too bloated +- A simple structure and invocation syntax +- Using modern OpenGL to combine performance with graphics quality on high-end computers +- Portability between PCs running POSIX systems (focus: Linux, BSD, MacOS, Plan 9 APE, Windows MinGW) + +### What Dragonblocks Alpha does not aim to achieve +- Portability to Phones / Consoles +- Good performance on low-end PCs +- A fixed story or lore +- Cloning Minecraft behavior +- Replacement for Minecraft and / or Minetest +- An engine