Go to file
Elias Fleckenstein 9db01b72ab
Abort on failed shader program linkage
2022-07-13 15:22:47 +02:00
.github/workflows GitHub actions: fetch entire history on checkout 2022-07-13 01:32:27 +02:00
assets Make texture batching optional (for OpenGL 3.3 compat) 2022-05-11 17:49:05 +02:00
build Make texture batching optional (for OpenGL 3.3 compat) 2022-05-11 17:49:05 +02:00
deps Bump dragonnet 2022-05-11 18:03:41 +02:00
src Abort on failed shader program linkage 2022-07-13 15:22:47 +02:00
.gitattributes Add .gitattributes 2021-03-24 13:56:44 +01:00
.gitignore Tweak and enable snapshots 2022-07-13 01:26:18 +02:00
.gitmodules Rework structure 2022-04-25 12:43:59 +02:00
BUILDING.md Add note to install lua 2022-05-16 18:48:57 +02:00
LICENSE Add GPLv3 License 2021-07-09 19:45:20 +02:00
README.md Tweak and enable snapshots 2022-07-13 01:26:18 +02:00
singleplayer.bat Rework structure 2022-04-25 12:43:59 +02:00
singleplayer.sh Rework structure 2022-04-25 12:43:59 +02:00
snapshot.sh Snapshot script: use mkdir -p 2022-07-13 01:36:12 +02:00
upload.sh Tweak and enable snapshots 2022-07-13 01:26:18 +02:00

README.md

Dragonblocks Alpha

A multiplayer voxelgame for POSIX systems. It has been ported to Linux, Windows, FreeBSD and OpenBSD, but may work on other systems.

Head to https://www.elidragon.tk/dragonblocks_alpha/ for snapshot and release builds.

Invocation

# on posix
./dragonblocks_server "<address>:<port>"
./dragonblocks_client "<address>:<port>"

# on windows
dragonblocks_server.exe "<address>:<port>"
dragonblocks_client.exe "<address>:<port>"

or alternatively:

# on posix
./singleplayer.sh

# on windows
singleplayer.bat

Controls

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

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 3.3 core. 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.

Note: The game can work with OpenGL 3.3, but to use texture batching, you need at least OpenGL 4.0. If your machine doesn't that version, disable texture batching by adding the line "texture_batching off" to your client.conf file.

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

Usage

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).

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), 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