]> git.lizzy.rs Git - dragonblocks_alpha.git/blob - README.md
529bb0f82b56e2b6252176f2d6b1981a8e763469
[dragonblocks_alpha.git] / README.md
1 # Dragonblocks Alpha
2
3 A multiplayer voxelgame for POSIX systems.
4
5 Head to <https://www.elidragon.tk/dragonblocks_alpha/> for ubuntu snapshot and release builds.
6
7 ## Invocation
8
9 ```bash
10 ./DragonblocksServer <port>
11 ./Dragonblocks <address> <port>
12 ```
13
14 or alternatively:
15
16 ```bash
17 ./singleplayer.sh
18 ```
19
20 ## Controls
21
22 | Key | Action |
23 |-|-|
24 | W | Move Forward |
25 | A | Move Left |
26 | S | Move Backward |
27 | D | Move Right |
28 | Space | Jump / When flying: Move Up |
29 | Left Shift | When flying: Move Down |
30 | F | Toggle flight |
31 | C | Toggle collision |
32 | T | Toggle timelapse |
33 | F2 | Take screenshot |
34 | F3 | Toggle debug info |
35 | F11 | Toggle fullscreen |
36 | ESC | Pause / unpause game |
37
38 ## Dependencies
39
40 Both the client and the server depend on ZLib.
41 The client depends on GLFW3, OpenGL, GLEW and Freetype.
42 The server depends on SQLite3.
43
44 Ubuntu / Debian:
45
46 ```bash
47 sudo apt install zlib1g libgl1-mesa-dri libglfw3 libglew2.1 libfreetype6 libsqlite3-0
48
49 ```
50
51 FreeBSD:
52
53 ```csh
54 sudo pkg install lzlib mesa-dri glfw glew freetype sqlite3
55 ```
56
57 OpenBSD:
58
59 ```sh
60 sudo pkg_add lzlib glfw glew freetype sqlite3
61 ```
62
63 ## Setup Requirements
64 Dragonblocks Alpha targets PCs only. Non x86-64 platforms may work, however there is no guarantee whatsoever.
65 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.
66 The minimum OpenGL version is 4.6.0. Dragonblocks has been tested on Intel Integrated and NVIDIA GPUs, however other graphics cards should work as well.
67 A PC with at least 4 CPU cores is recommended, but not necessarly required.
68
69 ## Current Features
70 - Multiplayer
71 - Mountains, snow, temperature and humidity, dynamic grass color, oceans and beaches, vulcanos, boulders
72 - Physics
73 - FPS Camera
74 - Mipmapping, Antialiasing, Face Culling, Frustum Culling, Diffuse Lighting, Skybox, Fog
75 - Taking screenshots
76 - Daylight cycle
77 - GUI
78 - Saving map, player positions and other data to a SQLite3 database
79 - Multithreaded map generation, mesh generation and networking
80 - Handlers for SIGINT und SIGTERM (just Ctrl+C to shut down the server)
81
82 ## Usage
83
84 ### Server
85 The server currently stores the world database (world.sqlite) in the current working directory, and it will stay like that.
86 If you want to have multiple worlds, just run the DragonblocksServer process from different directories.
87 It's up to you how you organize the world folders, which is an advantage since the program really just "does one thing well"
88 without having to search your system for share directories or maintaining a world list (like Minetest does).
89
90 ### Client / Singleplayer
91 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
92 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
93 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
94 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
95 wont't have to use it if you don't want to.
96
97 ### Modding
98 Dragonblocks Alpha does not and will most likely never have a modding API. If anything, a Lua plugin API will be added.
99 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)),
100 but it would remove simplicity and, most importantly, remove optimisation possibilities.
101 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.
102 If there are conflicts, the mods would likely not be compatible anyway.
103
104 ## Project Goals
105 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.
106
107 ### What Dragonblocks Alpha aims to achieve
108 - A voxelgame inspired by Minecraft and Veloren, with the techical side being inspired by Minetest
109 - Exciting and feature-rich gameplay with the focus on exploring and adventuring, while still being multi-optional and not too bloated
110 - A simple structure and invocation syntax
111 - Using modern OpenGL to combine performance with graphics quality on high-end computers
112 - Portability between PCs running POSIX systems (focus: Linux, BSD, MacOS, Plan 9 APE, Windows MinGW)
113
114 ### What Dragonblocks Alpha does not aim to achieve
115 - Portability to Phones / Consoles
116 - Good performance on low-end PCs
117 - A fixed story or lore
118 - Cloning Minecraft behavior
119 - Replacement for Minecraft and / or Minetest
120 - An engine