Giter VIP home page Giter VIP logo

exile's Introduction

Exile

Handmade-style voxel engine & game. Currently working on a re-write privately :^).

Blog

Objective is to create a featureful low-level programming environment & voxel game engine with minimal libraries, to dig into and perfect its systems, and to create a modded-minecraft-like game on top of the engine.

Goals:

  • High quality graphics (lighting, render distance, fast movement, large worlds)
  • Interesting and variable procedural terrain & feature generation
  • Powerful & complex player-managed systems (e.g. modded minecraft/factorio)
  • Smooth multiplayer and efficient servers
  • Flexible & powerful modding support

Build

Install meson and ninja if necessary.

Commands are run in the repository root.

Windows:

meson build
meson configure build -D buildtype=debugoptimized
ninja -C build

Linux - ubuntu/debian (probably works, but only with clang):

sudo apt install clang libclang-dev libsdl2-dev ninja-build
pip3 install meson
CXX=clang++ meson build
meson configure build -D buildtype=debugoptimized -D platform=sdl
ninja -C build

Run

In the top level directory:

cd data
..\build\main.exe

Screenshots

shot0 shot1

Tools

  • Engine & Game:
    • C+: C with member functions, function/operator overloading, lambdas, and templates (no STL, no exceptions, minimal RAII, minimal inheritance)
    • Custom standard library (data structures, threading, type info, serialization, platform, allocators)
    • Win32/Unix APIs
    • SSE4.2
  • Assets:
    • STB media libraries
    • C++14/STL
  • Metaprogram:
    • libclang for C++ parsing
    • C++14/STL

Current Features

See todo.txt for plans.

  • Game

    • World generation
      • Parallelized chunk generation, updates, and voxel lighting
    • Rendering
      • Hybrid voxel terrain meshing
      • Static voxel-based light propagation
      • Dynamic directional/spot/point lights
      • Modern OpenGL deferred renderer with light volumes
      • Effect pipeline, gamma
      • Diffuse, specular, and normal block textures
      • MSAA
      • Future: dynamic shadow mapping, bloom, HDR, screen-space AA
    • Time and environment assets
    • Block data framework
    • Player movement
  • Engine

    • Assets
      • Images
      • Fonts, font atlases
    • Debugging
      • Debug message system
      • Profiler
        • Timing
        • Calls/call locations
        • Allocations/memory safety
        • Threaded timing/work delegation
      • Debug console and command system
      • Runtime variable inspection interface
    • Input
      • Event parsing from the platform layer
      • Context state machines
    • Interface
      • Dear ImGui implementation and reflection-based add-ons
      • [depreciated] Custom immediate mode GUI system
    • Log
      • Thread safe log formatting and output
      • HTML and custom output
    • Rendering
      • Textures
      • Shaders
      • Meshes
      • Command lists
      • State management
      • OpenGL setup
    • Async
      • Atomics
      • Thread pool
      • Futures
  • Lib

    • Allocators
      • General
      • Arena
      • Pool
    • Array
    • Buffer
    • Queue
    • Hash Map
    • Stack
    • Vector
    • Strings
    • Thread pool and futures
    • Reflection
      • Type info
      • Serialization
    • SIMD vector and matrix math
  • Platform Layer

    • Windowing
    • Input
    • Filesystem
    • Threading
    • OpenGL
    • Dynamic code compilation/loading
    • Architectures
      • Win32
      • SDL2
  • Meta

    • Metaprogram to generate reflection data
    • Asset bulider to generate asset packs
    • Batch build system for asset builder, metaprogram, engine, tests, game

exile's People

Contributors

thenumbat avatar mabanta avatar

Stargazers

Vladislav avatar José Eduardo Monteiro avatar JiaWei Jason Wang avatar acceleration3 avatar Kolodiazhnyi Aleksandr avatar  avatar Garbage Monkey avatar D. M. avatar Max Brun avatar Coding Nomad avatar Andrei N. Onea avatar Rising Felix avatar  avatar  avatar Slushie avatar LYP avatar  avatar Andrei-Florin Bencsik avatar João Carlos Becker avatar  avatar Brian avatar Travis Watkins avatar Pebaz avatar Avery avatar Leon Zamel avatar Nikita avatar  avatar Chris Hart avatar Tommy D. Rossi avatar Arthur Ramalho avatar Wenbo Chen avatar yangfengzzz avatar  avatar Michael Loke avatar Lucas Arriesse avatar Alejandro Fernandez avatar Kevin Geng avatar Igor Morgado avatar Brandon Hong avatar Norton avatar Felipe Santos avatar Lachlan Sinclair avatar  avatar Justin Stevens avatar Matthew Bauer avatar  avatar Luke Ludlow avatar

Watchers

James Cloos avatar Igor Morgado avatar Matthew Bauer avatar  avatar Luke Ludlow avatar Justin Stevens avatar Konrad Kubacki avatar kaiserschmarrn_ avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.