# Univerxel Work in progress galaxy down to atom (mostly centimeter) online voxel game ## Table of Contents - [About The Project](#about-the-project) - [Built With](#built-with) - [Run it](#run-it) - [Prerequisites](#prerequisites) - [Usage](#usage) - [Build](#build) - [Prerequisites](#prerequisites-1) - [Optionally](#optionally) - [Installation](#installation) - [Additionally](#additionally) - [Windows](#windows) - [RoadMap](#roadmap) - [License](#license) - [Contact](#contact) ## About The Project Experimental project using OpenGL and Vulkan. ### Built With * C++ * OpenGL * Vulkan * ImGui * PicoQUIC * FasNoise2 * Love and insomnia ## Run it Get a release compatible with your system window library or [build](#build) it ### Prerequisites * OpenGL or Vulkan driver * OpenSSL 1.1+ ### Usage ```sh ./univerxel ``` Profit ! ## Build To get a local copy up and running, follow these simple steps. ### Prerequisites * C++17 * CMake 3.11 * System window headers *(xorg-dev)* * OpenGL, Vulkan and OpenSSL headers #### Optionally * Python: utility scripts * [Tracy](https://github.com/wolfpld/tracy) v0.7: profiling * [glslc](https://github.com/KhronosGroup/glslang): build vk shaders * Imagemagick: build textures (convert jpg to png) * [Compressonator](https://github.com/GPUOpen-Tools/compressonator): build textures (compress dds) * Doxygen, graphviz: generate documentation ### Installation 1. Clone the project repo ```sh git lfs clone --recursive https://framagit.org/univerxel/univerxel.git ``` 2. Create build folder and move ```sh mkdir build && cd build ``` 3. Setup CMake ```sh cmake .. ``` CMake options: `-DKEY=VAL` Key | Usage | Default --- | --- | --- CMAKE_BUILD_TYPE | Level of optimization | `Release` PROFILING | Tracy profiling | `0` LOG_DEBUG | Debug logs | `0` LOG_TRACE | Trace logs | `0` IPO | Link time optimisation | `1` LD_GOLD | Use gold linker | `1` CCACHE | Use code cache | `1` NATIVE | Optimize for native CPU | `0` RENDER_VK | Include Vulkan renderer | `1` 1. Compile ```sh cmake --build . --parallel --target ``` Target | Description --- | --- univerxel | All in one univerxel-server | Standalone server univerxel-client | Light client docs | Doxygen documentation #### Additionally 5. Recompile Vulkan shaders ```sh cd resource/shaders-src ./compile.sh # Use glslc GLSL="glslValidator -V" ./compile.sh # Other glslang compiler ``` 6. Rebuild textures ```sh cd resource/textures-src PACK= ./compile.sh # Build texture pack dds ``` ### Windows 1. Setup Visual Studio 2017+ with C++ 2. Clone picotls and picoquic in a separate directory 3. Set `%OPENSSL64DIR%` and check `WindowsPort.md` and `Readme.md` note from respective library 4. Compile then with MsBuild 5. Copy picoquic.lib, picotls-openssl.lib and picotls-fusion.lib to build/libs 6. Build univerxel with cmake `-A x64` and MsBuild ## RoadMap See [Features](TODO.md) ## License Distributed under the MIT License. See [LICENSE](LICENSE) for more information. ## Contact Shu - [/me](https://git.wadza.fr/me) - me@wadza.fr [Public repository](https://framagit.org/univerxel/univerxel)