the thin c++ game engine

Related tags

Game toy
Overview

CI Community Support
Build Status Build status Community Gitter Patreon

toy is a thin and modular c++ game engine. it aims to provide the thinnest and simplest stack of technology for making games directly from c++. toy offers simple expressive c++ idioms for user interface, rendering, audio, and the seamless extension of your game code with zero-cost tools, editors and scripting, to design full featured 2d or 3d games in fast iterations. toy is built on top of the underlying two library, which provides most functionality.

toy is under heavy development, not yet stable, fully documented or production ready. this mean we can't guarantee any kind of stability yet (including the git history too)

toy simplicity and modularity makes it deeply hackable, extensible and versatile. toy is perfect to build games with atypical constraints: complex user interface and rendering schemes, procedural generation, etc. it provides a fully programmable 3d renderer, with full control over shaders, materials and render paths, as well as higher level primitives and systems such as entities, physics, navmesh generation and navigation, and procedural generation helpers.

As a collection of game programming building blocks, toy aims to foster an ecosystem of simple minimal reusable components suited for building your own game technology.

Note: I've released toy, for the time being, under the GPL v3.0 license, hoping for it to evolve into a truly free and open-source technology, by releasing under a more permissive license: however this can only happen if it secures a regular financial support, to ensure it's funded as an open-source project: this is where your help comes into play :)

live demo

Try a live demo in this gorgeous lightmapped scene ported to toy engine from godot (also beware that it includes potentially loud sound):

reactor

principles

  • simple and lightweight, simplicity is the core aim and philosophy behind toy. the codebase is about one-tenth the size of competing engines, and toy is so light, the whole editor runs in your browser !
  • modular, each functionality is enclosed in a small, simple, easy to understand code building block. most of these blocks lie in the underlying two library.
  • extensible, as a collection of modules, toy is a perfect fit to build your own game technology, keeping full control over the components you use, the application design and the control flow.
  • game code first, toy is first and foremost meant to build games in native c++ code, in direct contact with the core systems. this allows for much greater control than typical scripting in-engine.
  • versatile, toy is designed from the start with complex games in mind, such as strategy or role playing games, by giving full control over its powerful user interface and rendering systems.
  • zero-cost tools, reflection automatically extends your game core code for seamless scripting, editing, inspection of your game objects, types and procedures in the built-in tools/editor.
  • educative, toy aims to provide simplest technical solutions to typical game programming problems, easily studied and understood, hoping to be a driver of education on game development topics.
  • fast iteration, coupling seamless bindings of both built-in systems and game code to various scripting languages, hot-reload of native code, and immediate UI and rendering, toy provides fast iteration speeds.

features

  • two is the low-level library providing most of the base features behind toy, in separate modules
    • reflection
    • scripting: Reflection automatically extends your game core code for seamless scripting via text-based languages (lua, Wren), and a node visual-scripting language, including interfaces for editing these. toy scripting component is so lean, it can be added to the game itself, for live scripting or for an in-game console.
    • rendering
    • user interface: A simple expressive user interface API is the fundamental block for writing any robust game or application. toy offers the best-in-class : immediate-mode widget declarations, fully automatic layout, css-like skinning, image-based skinning, style sheets, various input widgets, docking windows and tabs.
  • entity
  • physics
  • navigation

roadmap

toy is mostly feature complete in terms of the basic features we wanted for a minimal viable engine. this mean it could finally be open-sourced. but toy is still a bit unstable and undocumented: that means it is in a transitory phase, where the pace can settle down for a while, allowing to:

  • iron out all the bugs, crashes, instabilities
  • thoroughly document all the classes and functionalities which will remain stable

this is the step that toy will be during the next month or so.

after that, when toy is a robust, stable and fully documented game engine foundation, there are many features which will bring toy in a more cutting-edge category: this is what I will be working on next, and by supporting two you will help us implement the following features:

  • tool applications: implement minimal tooling apps, including: a model painter, an animation editor, a particle editor, a prefab/scene editor. most of these features are partly implemented, but a set of standalone apps would be a great addition.
  • scripting languages: implement support for Wren, Javascript, and C# scripting.
  • clustered rendering: implement state-of-the-art clustered rendering techniques, along with a deferred rendering pipeline.
  • real-time global illumnation: investigate state-of-the-art global illumination techniques and implement the best real-time compromise currently feasible.
  • node-based shader language: the two node editor is a perfect tool to start playing with node-based shader and render pipeline definitions.
  • multi-threading: implement efficient job/fibers system and parallelize everything that can be.
  • performance-focused ECS: implement an ECS skeleton focused towards heavily parallelized performance, to implement typical scenarios such as the boid example.
  • networking: investigate how a networking solution can be integrated with reflection, how to automatically expose objects procedures and fields through a networking API, to provide seamless basic multiplayer support, then implement it.

get started

examples

Platform Example RTS Example
Editor Example Space Example

how to build

  • git clone https://github.com/hugoam/toy --recursive
  • cd toy
  • generate the project files for your target
    • bin/linux/genie --gcc=linux-gcc gmake for gmake/linux
    • bin/windows/genie vs2015 for Visual Studio 2015
    • bin/windows/genie vs2017 for Visual Studio 2017
  • go to the generated folder
    • cd build/projects/gmake-linux for gmake/linux
    • cd build/projects/vs2015 for Visual Studio 2015
    • cd build/projects/vs2017 for Visual Studio 2017
  • build
    • make config=debug64 -j8 for gmake/linux 64bit
    • open toy.sln and build for Visual Studio
  • run the examples: ex_platform, ex_space, ex_blocks

credits

toy couldn't exist without:

sponsors

Creating toy has been a huge time investment over the course of a few years: the only way I can pursue that effort and make it thrive into the game programming ecosystem of our dreams, is through funding and sponsorship: you are welcome to have a look at our patreon.

Iron supports:

  • Mike King

Stone supports:

  • Etienne Balit, Le Bach, Manos Agelidis, Nebo Milic, Omar Cornut, Stefan Hagen, Sunder Iyer

license

two is licensed under the GPLv3 license

Comments
  • Linear Math from the bullet library will not build in Visual Studio 2017

    Linear Math from the bullet library will not build in Visual Studio 2017

    Maybe this is just me being dense but for whatever reason the linear math solution decides that some of the source files are missing even though when I go to check if they're there they are so I'm not sure why this is happening. Either way I can't build the project.

    here's the compiler output:

    1>------ Build started: Project: LinearMath, Configuration: Debug Win32 ------
    1>btAlignedAllocator.cpp
    1>btConvexHull.cpp
    1>btConvexHullComputer.cpp
    1>c1xx : fatal error C1083: Cannot open source file: '..\..\..\3rdparty\bullet\src\LinearMath\btAlignedAllocator.cpp': No such file or directory
    1>btGeometryUtil.cpp
    1>c1xx : fatal error C1083: Cannot open source file: '..\..\..\3rdparty\bullet\src\LinearMath\btConvexHull.cpp': No such file or directory
    1>c1xx : fatal error C1083: Cannot open source file: '..\..\..\3rdparty\bullet\src\LinearMath\btConvexHullComputer.cpp': No such file or directory
    1>c1xx : fatal error C1083: Cannot open source file: '..\..\..\3rdparty\bullet\src\LinearMath\btGeometryUtil.cpp': No such file or directory
    1>btPolarDecomposition.cpp
    1>c1xx : fatal error C1083: Cannot open source file: '..\..\..\3rdparty\bullet\src\LinearMath\btPolarDecomposition.cpp': No such file or directory
    1>btQuickprof.cpp
    1>btSerializer.cpp
    1>btSerializer64.cpp
    1>btThreads.cpp
    1>c1xx : fatal error C1083: Cannot open source file: '..\..\..\3rdparty\bullet\src\LinearMath\btThreads.cpp': No such file or directory
    1>c1xx : fatal error C1083: Cannot open source file: '..\..\..\3rdparty\bullet\src\LinearMath\btQuickprof.cpp': No such file or directory
    1>c1xx : fatal error C1083: Cannot open source file: '..\..\..\3rdparty\bullet\src\LinearMath\btSerializer.cpp': No such file or directory
    1>c1xx : fatal error C1083: Cannot open source file: '..\..\..\3rdparty\bullet\src\LinearMath\btSerializer64.cpp': No such file or directory
    1>btVector3.cpp
    1>c1xx : fatal error C1083: Cannot open source file: '..\..\..\3rdparty\bullet\src\LinearMath\btVector3.cpp': No such file or directory
    1>Done building project "LinearMath.vcxproj" -- FAILED.
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
    
    opened by Avynn 6
  • cannot open toolchain.lua - cant generate build

    cannot open toolchain.lua - cant generate build

    cloned down, cd to toy/bin/windows.

    ./genie vs2015

    get following:

    ./genie vs2015 cannot open c:/Users/altck/Desktop/Toy/toy/mud/scripts/toolchain.lua: No such file or directory stack traceback: [C]: in upvalue 'builtin_dofile' [string "premake = { }..."]:103: in function 'dofile' c:/Users/altck/Desktop/Toy/toy/scripts/toolchain.lua:9: in main chunk [C]: in upvalue 'builtin_dofile' [string "premake = { }..."]:103: in function 'dofile' c:/Users/altck/Desktop/Toy/toy/scripts/genie.lua:20: in main chunk [C]: in upvalue 'builtin_dofile' [string "premake = { }..."]:103: in function 'dofile' [string "_WORKING_DIR = os.getcwd()..."]:45: in function '_premake_main'

    opened by Vawx 4
  • Missing bx.lua file

    Missing bx.lua file

    Here's an extraction from cmd:

    C:\Users\XXXX\Desktop\toy2\bin\windows>genie vs2017
    cannot open c:/Users/XXXX/Desktop/toy2/mud/3rdparty/bx/scripts/bx.lua: No such file or directory
    stack traceback:
            [C]: in upvalue 'builtin_dofile'
            [string "premake = { }..."]:96: in function 'dofile'
            ...rs/void_/Desktop/toy2/mud/scripts/3rdparty/bgfx/bgfx.lua:6: in main chunk
            [C]: in upvalue 'builtin_dofile'
            [string "premake = { }..."]:96: in function 'dofile'
            c:/Users/void_/Desktop/toy2/mud/scripts/mud.lua:14: in main chunk
            [C]: in upvalue 'builtin_dofile'
            [string "premake = { }..."]:96: in function 'dofile'
            c:/Users/void_/Desktop/toy2/scripts/toy.lua:10: in main chunk
            [C]: in upvalue 'builtin_dofile'
            [string "premake = { }..."]:96: in function 'dofile'
            c:/Users/void_/Desktop/toy2/scripts/genie.lua:22: in main chunk
            [C]: in upvalue 'builtin_dofile'
            [string "premake = { }..."]:96: in function 'dofile'
            [string "_WORKING_DIR        = os.getcwd()..."]:45: in function '_premake_main'
    

    Seems like not all of the files from 3rdparties are pulled regularly. There's any fix?

    opened by thepra 2
  • macOS build support?

    macOS build support?

    The website has an Apple logo on it, though I see it missing from the build instructions and of course there's no genie binary for it in the repo either.

    Is there a long-term plan to support macOS? Can it already be built perhaps?

    opened by yamamushi 2
  • Build system issues  (

    Build system issues ("genie" / cmake / gmake)

    Toy sounds like a really interesting project to look into.

    Unfortunately, i'm unable to build the project. Neither the cmake nor the gmake generators work.

    1. Calling the 'genie' script from outside the project directory (out-of-source build) does not seem to work. Nothing is generated.
    2. The CMake files use non-standard conventions:
    $ cmake .
    -- The C compiler identification is Clang 6.0.1
    -- The CXX compiler identification is Clang 6.0.1
    -- Check for working C compiler: /usr/bin/clang
    -- Check for working C compiler: /usr/bin/clang -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Check for working CXX compiler: /usr/bin/clang++
    -- Check for working CXX compiler: /usr/bin/clang++ -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /home/dev/Development/toy/build/projects/cmake
    [[email protected]  /home/dev/Development/toy/build/projects/cmake ]$ make
    [[email protected]  /home/dev/Development/toy/build/projects/cmake ]$ 
    

    Nothing happens, because CMAKE_BUILD_TYPE Must be set to either 'Release' or 'Debug'. The cmake default, however, is RELWITHDEBINFO. Unfortunately, the generated CMake files contain custom conditionals like these:

    if(CMAKE_BUILD_TYPE MATCHES "Debug")
      add_library(toy_d SHARED ${source_list})
    endif()
    
    if(CMAKE_BUILD_TYPE MATCHES "Release")
      add_library(toy SHARED ${source_list})
    endif()
    
    1. Unfortunately, it still doesn't work:
    [[email protected]  /home/dev/Development/toy/build/projects/cmake ]$ cmake . -DCMAKE_BUILD_TYPE=Debug
    -- Configuring done
    CMake Error at json11/CMakeLists.txt:35 (add_library):
      Cannot find source file:
        ../../../../mud/3rdparty/json11/json11.h
      Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm
      .hpp .hxx .in .txx
    CMake Error at json11/CMakeLists.txt:35 (add_library):
      No SOURCES given to target: json11_d
    -- Build files have been written to: /home/dev/Development/toy/build/projects/cmake
    
    1. The gmake generator does not work either: Generating the makefiles works, however, Compilation fails with lots of these errors: /usr/include/gnu/stubs.h:7:11: fatal error: 'gnu/stubs-32.h' file not found I 'think' it tried to compile for a 32bit platform.
    2. Setting the platform to 64 bit doesn't work either:
    [[email protected]  /home/dev/Development/toy ]$ ./bin/linux/genie --os=linux --gcc=linux-clang --platform=x64 gmake
    lib mud
        links shaderc
        links bimg_decode
        links vg
        links bgfx
        links bimg
        links bx
        links glfw
        links lua
        links stb_rect_pack
        links json11
    lib toy
        links mud
        links vg
        links bimg_decode
        links glfw
        links shaderc
        links bgfx
        links bimg
        links bx
        links lua
        links stb_rect_pack
        links json11
    lib editor
        links toy
    lib _05_character
        links toy
    lib ex_minimal
        links toy
    lib ex_space
        links toy
    lib ex_platform
        links toy
    lib ex_blocks
        links toy
    Error: toy does not target native platform
    Native platform settings are required for the --platform feature.
    stack traceback:
            [C]: in function 'error'
            [string "_WORKING_DIR        = os.getcwd()..."]:65: in function '_premake_main'
    

    Of course, this is a normal x86-64 (Arch-)Linux:

    $ uname -a Linux XXX 4.17.10-1-ARCH #1 SMP PREEMPT Wed Jul 25 11:23:00 UTC 2018 x86_64 GNU/Linux

    I think it would be nice if toy used a normal build system like CMake in a standard, idiomatic way.

    opened by tcShadowWalker 2
  • genie error

    genie error

    ./bin/linux/genie --gcc=linux-gcc gmake cannot open /home/fujinghui/gitcode/toy/mud/3rdparty/bx/scripts/bx.lua: No such file or directory stack traceback: [C]: in upvalue 'builtin_dofile' [string "premake = { }..."]:103: in function 'dofile' ...fujinghui/gitcode/toy/mud/scripts/3rdparty/bgfx/bgfx.lua:6: in main chunk [C]: in upvalue 'builtin_dofile' [string "premake = { }..."]:103: in function 'dofile' /home/fujinghui/gitcode/toy/mud/scripts/mud.lua:14: in main chunk [C]: in upvalue 'builtin_dofile' [string "premake = { }..."]:103: in function 'dofile' /home/fujinghui/gitcode/toy/scripts/toy.lua:10: in main chunk [C]: in upvalue 'builtin_dofile' [string "premake = { }..."]:103: in function 'dofile' /home/fujinghui/gitcode/toy/scripts/genie.lua:22: in main chunk [C]: in upvalue 'builtin_dofile' [string "premake = { }..."]:103: in function 'dofile' [string "_WORKING_DIR = os.getcwd()..."]:45: in function '_premake_main'

    opened by yydsleo 1
  • About the use of C++

    About the use of C++

    This site mentions that I am able to directly code in C++. Does that mean that the game engine has to be recompiled each time I am programming in C++?

    opened by Raj2032 1
  • Function signature mismatch

    Function signature mismatch

    Function signature in

    example\05_character\05_character.cpp

    jams\blocks\ex_blocks.cpp

    jams\minimal\ex_minimal.cpp

    jams\platform\ex_platform.cpp

    jams\space\ex_space.cpp

    doesnt match the signature of base class virtual function

    virtual void pump(GameShell& app, Game& game, Widget& ui)

    opened by anshul-soni 1
  • Issue with Genie vs2017 build

    Issue with Genie vs2017 build

    Tried to build the engine using the genie command line build in windows, but I got a too many C levels error. Just going to do a console dump here. I am using windows 10, and have visual studios 2017 successfully installed. If there is any more information that is relevant that I am missing just ask.

    d:/Toy/mud/3rdparty/jsonlua/json.lua:93: too many C levels (limit is 200) in function at line 59 near 'v'
    stack traceback:
            [C]: in upvalue 'builtin_dofile'
            [string "premake = { }..."]:103: in function 'dofile'
            d:/Toy/mud/scripts/toolchain.lua:19: in main chunk
            [C]: in upvalue 'builtin_dofile'
            [string "premake = { }..."]:103: in function 'dofile'
            d:/Toy/scripts/toolchain.lua:9: in main chunk
            [C]: in upvalue 'builtin_dofile'
            [string "premake = { }..."]:103: in function 'dofile'
            d:/Toy/scripts/genie.lua:20: in main chunk
            [C]: in upvalue 'builtin_dofile'
            ...
            [string "premake = { }..."]:103: in function 'dofile'
            (...tail calls...)
            d:/Toy/scripts/3rdparty/bullet.lua:6: in main chunk
            [C]: in upvalue 'builtin_dofile'
            [string "premake = { }..."]:103: in function 'dofile'
            d:/Toy/scripts/toy.lua:8: in main chunk
            [C]: in upvalue 'builtin_dofile'
            [string "premake = { }..."]:103: in function 'dofile'
            d:/Toy/scripts/genie.lua:22: in main chunk
            [C]: in upvalue 'builtin_dofile'
            [string "premake = { }..."]:103: in function 'dofile'
            [string "_WORKING_DIR        = os.getcwd()..."]:45: in function '_premake_main'
    
    opened by dresio 1
  • Can't compile

    Can't compile

    I compiled straight from git HEAD:

    ...
    In file included from ../../../src/core/Core.h:10,
                     from ../../../src/core/Core.cpp:7:
    ../../../src/core/World/Section.h:97:15: error: ‘function’ in namespace ‘std’ does not name a template type
      typedef std::function<void()> TaskFunc;
                   ^~~~~~~~
    ../../../src/core/World/Section.h:97:10: note: ‘std::function’ is defined in header ‘<functional>’; did you forget to ‘#include <functional>’?
    ../../../src/core/World/Section.h:18:1:
    +#include <functional>
     #endif
    ../../../src/core/World/Section.h:97:10:
      typedef std::function<void()> TaskFunc;
              ^~~
    ../../../src/core/World/Section.h:109:17: error: ‘TaskFunc’ has not been declared
       void add_task(TaskFunc task) { m_task_queue.push(task); }
                     ^~~~~~~~
    ../../../src/core/World/Section.h:113:17: error: ‘TaskFunc’ was not declared in this scope
       LocklessQueue<TaskFunc> m_task_queue;
                     ^~~~~~~~
    ../../../src/core/World/Section.h:113:17: note: suggested alternative: ‘Task’
       LocklessQueue<TaskFunc> m_task_queue;
                     ^~~~~~~~
                     Task
    ../../../src/core/World/Section.h:113:25: error: template argument 1 is invalid
       LocklessQueue<TaskFunc> m_task_queue;
                             ^
    ../../../src/core/World/Section.h: In member function ‘void toy::QueueSection::add_task(int)’:
    ../../../src/core/World/Section.h:109:47: error: request for member ‘push’ in ‘((toy::QueueSection*)this)->toy::QueueSection::m_task_queue’, which is of non-class type  int’
       void add_task(TaskFunc task) { m_task_queue.push(task); }
                                                   ^~~~
    EventFilter.cpp
    make[1]: *** [toy.make:836: ../../linux64_gcc/obj/x64/Debug/toy/src/core/Core.o] Error 1
    make[1]: *** Waiting for unfinished jobs....
    make: *** [Makefile:93: toy] Error 2
    

    Looks like some C++ version mismatch?

    └─ $ ▶ g++ --version
    g++ (GCC) 8.1.1 20180531
    Copyright (C) 2018 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    opened by f0086 1
  • cling based C++ as scripting language / hot code reload

    cling based C++ as scripting language / hot code reload

    cling based C++ as scripting language / hot code reload Why? Able to run C++ script in runtime or compile it for max speed ( as in example https://github.com/derofim/cling-cmake )

    HOT code reload possible approaches:

    store app state fix cling undo for files https://root-forum.cern.ch/t/loading-unloading-class-as-interpreted-macro-in-cling-multiple-times/32976/2

    execute cling code to change callbacks & variables nested cling::Interpreter with multiple cling::MetaProcessor IDK how to do it, but you can create child cling::Interpreter

    opened by blockspacer 0
  • Error while cloning repository

    Error while cloning repository

    I'll leave the complete output:

    D:\Engines>git clone https://github.com/hugoam/toy --recursive

    Cloning into 'toy'... remote: Enumerating objects: 900, done. remote: Counting objects: 100% (900/900), done. remote: Compressing objects: 100% (542/542), done. remote: Total 7071 (delta 480), reused 593 (delta 358), pack-reused 6171 Receiving objects: 100% (7071/7071), 231.45 MiB | 1.18 MiB/s, done. Resolving deltas: 100% (4490/4490), done. Checking out files: 100% (1276/1276), done. Submodule '3rdparty/bullet' (https://github.com/bulletphysics/bullet3) registered for path '3rdparty/bullet' Submodule '3rdparty/hashmap' (https://github.com/skarupke/flat_hash_map) registered for path '3rdparty/hashmap' Submodule '3rdparty/recast' (https://github.com/recastnavigation/recastnavigation) registered for path '3rdparty/recast' Submodule 'mud' (https://github.com/hugoam/mud/) registered for path 'mud' Cloning into 'D:/Engines/toy/3rdparty/bullet'... remote: Enumerating objects: 40, done. remote: Counting objects: 100% (40/40), done. remote: Compressing objects: 100% (26/26), done. remote: Total 90030 (delta 17), reused 26 (delta 14), pack-reused 89990 Receiving objects: 100% (90030/90030), 192.86 MiB | 1.21 MiB/s, done. Resolving deltas: 100% (66345/66345), done. Cloning into 'D:/Engines/toy/3rdparty/hashmap'... remote: Enumerating objects: 31, done. remote: Total 31 (delta 0), reused 0 (delta 0), pack-reused 31 Cloning into 'D:/Engines/toy/3rdparty/recast'... remote: Enumerating objects: 8, done. remote: Counting objects: 100% (8/8), done. remote: Compressing objects: 100% (8/8), done. remote: Total 7610 (delta 0), reused 2 (delta 0), pack-reused 7602 Receiving objects: 100% (7610/7610), 19.89 MiB | 1.14 MiB/s, done. Resolving deltas: 100% (4792/4792), done. Cloning into 'D:/Engines/toy/mud'... remote: Enumerating objects: 902, done. remote: Counting objects: 100% (902/902), done. remote: Compressing objects: 100% (689/689), done. remote: Total 23192 (delta 521), reused 431 (delta 212), pack-reused 22290 Receiving objects: 100% (23192/23192), 69.26 MiB | 1007.00 KiB/s, done. Resolving deltas: 100% (18015/18015), done. Submodule path '3rdparty/bullet': checked out '380738308d421c3969eeb528c22fb05273bc8fdd' Submodule path '3rdparty/hashmap': checked out '2c4687431f978f02a3780e24b8b701d22aa32d9c' Submodule path '3rdparty/recast': checked out '787ce2c18d713b5ceaeadd99a52c41443a6296de' Submodule path 'mud': checked out '8da74bce4b55021c35e5a6a22013328e3edce3ea' Submodule '3rdparty/FastNoise' (https://github.com/Auburns/FastNoise) registered for path 'mud/3rdparty/FastNoise' Submodule '3rdparty/GENie' (https://github.com/hugoam/GENie) registered for path 'mud/3rdparty/GENie' Submodule '3rdparty/amalgamate' (https://github.com/edlund/amalgamate) registered for path 'mud/3rdparty/amalgamate' Submodule '3rdparty/bgfx' (https://github.com/hugoam/bgfx) registered for path 'mud/3rdparty/bgfx' Submodule '3rdparty/bimg' (https://github.com/bkaradzic/bimg) registered for path 'mud/3rdparty/bimg' Submodule '3rdparty/bx' (https://github.com/bkaradzic/bx) registered for path 'mud/3rdparty/bx' Submodule '3rdparty/culling' (https://github.com/hugoam/MaskedOcclusionCulling) registered for path 'mud/3rdparty/culling' Submodule '3rdparty/fcontext' (https://github.com/septag/deboost.context) registered for path 'mud/3rdparty/fcontext' Submodule '3rdparty/glfw' (https://github.com/glfw/glfw) registered for path 'mud/3rdparty/glfw' Submodule '3rdparty/glm' (https://github.com/g-truc/glm) registered for path 'mud/3rdparty/glm' Submodule '3rdparty/json11' (https://github.com/dropbox/json11) registered for path 'mud/3rdparty/json11' Submodule '3rdparty/lua' (https://github.com/lua/lua) registered for path 'mud/3rdparty/lua' Submodule '3rdparty/meshoptimizer' (https://github.com/zeux/meshoptimizer) registered for path 'mud/3rdparty/meshoptimizer' Submodule '3rdparty/nanovg-layers' (https://github.com/hugoam/nanovg) registered for path 'mud/3rdparty/nanovg-layers' Submodule '3rdparty/ogg' (https://github.com/xiph/ogg) registered for path 'mud/3rdparty/ogg' Submodule '3rdparty/pycgen' (https://github.com/Celtoys/pycgen) registered for path 'mud/3rdparty/pycgen' Submodule '3rdparty/stb' (https://github.com/nothings/stb) registered for path 'mud/3rdparty/stb' Submodule '3rdparty/tinystl' (https://github.com/hugoam/tinystl) registered for path 'mud/3rdparty/tinystl' Submodule '3rdparty/tracy' (https://bitbucket.org/wolfpld/tracy.git) registered for path 'mud/3rdparty/tracy' Submodule '3rdparty/vg-renderer' (https://github.com/hugoam/vg-renderer) registered for path 'mud/3rdparty/vg-renderer' Submodule '3rdparty/vorbis' (https://github.com/xiph/vorbis) registered for path 'mud/3rdparty/vorbis' Submodule '3rdparty/wren' (https://github.com/munificent/wren) registered for path 'mud/3rdparty/wren' Submodule '3rdparty/xatlas' (https://github.com/jpcy/xatlas) registered for path 'mud/3rdparty/xatlas' Cloning into 'D:/Engines/toy/mud/3rdparty/FastNoise'... remote: Enumerating objects: 263, done. remote: Total 263 (delta 0), reused 0 (delta 0), pack-reused 263 Receiving objects: 100% (263/263), 1.13 MiB | 1.16 MiB/s, done. Resolving deltas: 100% (149/149), done. Cloning into 'D:/Engines/toy/mud/3rdparty/GENie'... remote: Enumerating objects: 6527, done. remote: Total 6527 (delta 0), reused 0 (delta 0), pack-reused 6527 Receiving objects: 100% (6527/6527), 3.75 MiB | 4.71 MiB/s, done. Resolving deltas: 100% (4496/4496), done. Cloning into 'D:/Engines/toy/mud/3rdparty/amalgamate'... remote: Enumerating objects: 95, done. remote: Total 95 (delta 0), reused 0 (delta 0), pack-reused 95 Cloning into 'D:/Engines/toy/mud/3rdparty/bgfx'... remote: Enumerating objects: 74644, done. remote: Total 74644 (delta 0), reused 0 (delta 0), pack-reused 74644 Receiving objects: 100% (74644/74644), 161.11 MiB | 1.15 MiB/s, done. Resolving deltas: 100% (55791/55791), done. Cloning into 'D:/Engines/toy/mud/3rdparty/bimg'... remote: Enumerating objects: 206, done. remote: Counting objects: 100% (206/206), done. remote: Compressing objects: 100% (153/153), done. remote: Total 1619 (delta 48), reused 195 (delta 45), pack-reused 1413 Receiving objects: 100% (1619/1619), 2.53 MiB | 3.66 MiB/s, done. Resolving deltas: 100% (796/796), done. Cloning into 'D:/Engines/toy/mud/3rdparty/bx'... remote: Enumerating objects: 43, done. remote: Counting objects: 100% (43/43), done. remote: Compressing objects: 100% (30/30), done. remote: Total 10572 (delta 16), reused 23 (delta 13), pack-reused 10529 Receiving objects: 100% (10572/10572), 27.06 MiB | 785.00 KiB/s, done. Resolving deltas: 100% (6359/6359), done. Cloning into 'D:/Engines/toy/mud/3rdparty/culling'... remote: Enumerating objects: 484, done. remote: Total 484 (delta 0), reused 0 (delta 0), pack-reused 484 Receiving objects: 100% (484/484), 573.11 KiB | 313.00 KiB/s, done. Resolving deltas: 100% (351/351), done. Cloning into 'D:/Engines/toy/mud/3rdparty/fcontext'... remote: Enumerating objects: 17, done. remote: Counting objects: 100% (17/17), done. remote: Compressing objects: 100% (11/11), done. remote: Total 233 (delta 4), reused 10 (delta 2), pack-reused 216 Receiving objects: 100% (233/233), 105.30 KiB | 3.19 MiB/s, done. Resolving deltas: 100% (112/112), done. Cloning into 'D:/Engines/toy/mud/3rdparty/glfw'... remote: Enumerating objects: 12, done. remote: Counting objects: 100% (12/12), done. remote: Compressing objects: 100% (9/9), done. remote: Total 23249 (delta 5), reused 5 (delta 3), pack-reused 23237 Receiving objects: 100% (23249/23249), 11.43 MiB | 858.00 KiB/s, done. Resolving deltas: 100% (16294/16294), done. Cloning into 'D:/Engines/toy/mud/3rdparty/glm'... remote: Enumerating objects: 81, done. remote: Counting objects: 100% (81/81), done. remote: Compressing objects: 100% (74/74), done. remote: Total 53031 (delta 27), reused 17 (delta 7), pack-reused 52950 Receiving objects: 100% (53031/53031), 66.94 MiB | 1.52 MiB/s, done. Resolving deltas: 100% (39656/39656), done. Cloning into 'D:/Engines/toy/mud/3rdparty/json11'... remote: Enumerating objects: 299, done. remote: Total 299 (delta 0), reused 0 (delta 0), pack-reused 299 Receiving objects: 100% (299/299), 82.88 KiB | 233.00 KiB/s, done. Resolving deltas: 100% (164/164), done. Cloning into 'D:/Engines/toy/mud/3rdparty/lua'... remote: Enumerating objects: 19, done. remote: Counting objects: 100% (19/19), done. remote: Compressing objects: 100% (18/18), done. remote: Total 22722 (delta 2), reused 4 (delta 1), pack-reused 22703 Receiving objects: 100% (22722/22722), 8.65 MiB | 4.93 MiB/s, done. Resolving deltas: 100% (17038/17038), done. Cloning into 'D:/Engines/toy/mud/3rdparty/meshoptimizer'... remote: Enumerating objects: 93, done. remote: Counting objects: 100% (93/93), done. remote: Compressing objects: 100% (59/59), done. remote: Total 3353 (delta 58), reused 64 (delta 34), pack-reused 3260 Receiving objects: 100% (3353/3353), 1.20 MiB | 2.57 MiB/s, done. Resolving deltas: 100% (2420/2420), done. Cloning into 'D:/Engines/toy/mud/3rdparty/nanovg-layers'... remote: Enumerating objects: 1599, done. remote: Total 1599 (delta 0), reused 0 (delta 0), pack-reused 1599 Receiving objects: 100% (1599/1599), 3.51 MiB | 1.43 MiB/s, done. Resolving deltas: 100% (1111/1111), done. Cloning into 'D:/Engines/toy/mud/3rdparty/ogg'... remote: Enumerating objects: 3318, done. remote: Total 3318 (delta 0), reused 0 (delta 0), pack-reused 3318 Receiving objects: 100% (3318/3318), 1.99 MiB | 4.43 MiB/s, done. Resolving deltas: 100% (2325/2325), done. Cloning into 'D:/Engines/toy/mud/3rdparty/pycgen'... remote: Enumerating objects: 12, done. remote: Counting objects: 100% (12/12), done. remote: Compressing objects: 100% (9/9), done. remote: Total 12 (delta 2), reused 12 (delta 2), pack-reused 0 Cloning into 'D:/Engines/toy/mud/3rdparty/stb'... remote: Enumerating objects: 6318, done. remote: Total 6318 (delta 0), reused 0 (delta 0), pack-reused 6318 Receiving objects: 100% (6318/6318), 4.30 MiB | 396.00 KiB/s, done. Resolving deltas: 100% (4205/4205), done. Cloning into 'D:/Engines/toy/mud/3rdparty/tinystl'... remote: Enumerating objects: 51, done. remote: Counting objects: 100% (51/51), done. remote: Compressing objects: 100% (26/26), done. remote: Total 714 (delta 27), reused 39 (delta 17), pack-reused 663 Receiving objects: 100% (714/714), 181.58 KiB | 1.87 MiB/s, done. Resolving deltas: 100% (370/370), done. Cloning into 'D:/Engines/toy/mud/3rdparty/tracy'... remote: Counting objects: 11366, done. remote: Compressing objects: 100% (3717/3717), done. remote: Total 11366 (delta 8176), reused 10730 (delta 7594) Receiving objects: 100% (11366/11366), 3.67 MiB | 3.98 MiB/s, done. Resolving deltas: 100% (8176/8176), done. Cloning into 'D:/Engines/toy/mud/3rdparty/vg-renderer'... remote: Enumerating objects: 17, done. remote: Counting objects: 100% (17/17), done. remote: Compressing objects: 100% (10/10), done. remote: Total 974 (delta 4), reused 12 (delta 4), pack-reused 957 Receiving objects: 100% (974/974), 1.73 MiB | 3.48 MiB/s, done. Resolving deltas: 100% (606/606), done. Cloning into 'D:/Engines/toy/mud/3rdparty/vorbis'... remote: Enumerating objects: 37, done. remote: Counting objects: 100% (37/37), done. remote: Compressing objects: 100% (24/24), done. remote: Total 16301 (delta 21), reused 22 (delta 13), pack-reused 16264 Receiving objects: 100% (16301/16301), 28.40 MiB | 4.10 MiB/s, done. Resolving deltas: 100% (12842/12842), done. Cloning into 'D:/Engines/toy/mud/3rdparty/wren'... remote: Enumerating objects: 124, done. remote: Counting objects: 100% (124/124), done. remote: Compressing objects: 100% (79/79), done. remote: Total 16130 (delta 49), reused 85 (delta 44), pack-reused 16006 Receiving objects: 100% (16130/16130), 6.45 MiB | 5.21 MiB/s, done. Resolving deltas: 100% (10736/10736), done. Cloning into 'D:/Engines/toy/mud/3rdparty/xatlas'... remote: Enumerating objects: 132, done. remote: Counting objects: 100% (132/132), done. remote: Compressing objects: 100% (71/71), done. remote: Total 2442 (delta 82), reused 107 (delta 61), pack-reused 2310 Receiving objects: 100% (2442/2442), 3.30 MiB | 3.02 MiB/s, done. Resolving deltas: 100% (1606/1606), done. Submodule path 'mud/3rdparty/FastNoise': checked out 'faba4443efcd85ad55bf5dd85c8ee458d427d6aa' Submodule path 'mud/3rdparty/GENie': checked out 'ced9790704f3d89c22d5c6e393929cff2d833ae5' Submodule path 'mud/3rdparty/amalgamate': checked out 'c91f07eea1133aa184f652b8f1398eaf03586208' Submodule path 'mud/3rdparty/bgfx': checked out '66d64bf42e663db8cc1b2cb01f74c4c61a6003a9' Submodule path 'mud/3rdparty/bimg': checked out '81e493d7a58d5b100478c15469ebaf26e3ca8408' Submodule path 'mud/3rdparty/bx': checked out '3f82031731c60d3b5cfd24e1ad68907f9ce9b2be' Submodule path 'mud/3rdparty/culling': checked out '6f76096bd99c6cb5a2897d8df20507797de15826' Submodule path 'mud/3rdparty/fcontext': checked out '109166c446493499317ed61f778fd10071c282ae' Submodule path 'mud/3rdparty/glfw': checked out 'fdfb5ab466217bb34e38b84333ed286960cc4c75' Submodule path 'mud/3rdparty/glm': checked out '5ba45d302cd409797a2a8ad0897cccd4bb492012' Submodule path 'mud/3rdparty/json11': checked out 'ec4e45219af1d7cde3d58b49ed762376fccf1ace' Submodule path 'mud/3rdparty/lua': checked out '6b01b6cf6a1631f7ca2ce527a5c355517095c209' Submodule path 'mud/3rdparty/meshoptimizer': checked out '28432f944a82c0aacdcda0a1926ebb0e62ccd13c' Submodule path 'mud/3rdparty/nanovg-layers': checked out '40c1401b80e3684e97136a4cce093625f3b1b4da' Submodule path 'mud/3rdparty/ogg': checked out 'c8391c2b267a7faf9a09df66b1f7d324e9eb7766' Submodule path 'mud/3rdparty/pycgen': checked out '1be942fb2f8c0d343f3c257e37894c3f733bd58f' Submodule path 'mud/3rdparty/stb': checked out '73990fefe7e44fb12986173fdbd9e5b60ab6bb5e' Submodule path 'mud/3rdparty/tinystl': checked out '4e9dde9aa0510ffb7122da14050c8350d42168f9' Submodule '3rdparty/unittest-cpp' (git://github.com/unittest-cpp/unittest-cpp) registered for path 'mud/3rdparty/tinystl/3rdparty/unittest-cpp' remote: Enumerating objects: 1693, done. Cloning into 'D:/Engines/toy/mud/3rdparty/tinystl/3rdparty/unittest-cpp'... remote: Total 1693 (delta 0), reused 0 (delta 0), pack-reused 1693 Receiving objects: 100% (1693/1693), 403.27 KiB | 1.57 MiB/s, done. Resolving deltas: 100% (1138/1138), done. Submodule path 'mud/3rdparty/tinystl/3rdparty/unittest-cpp': checked out 'ae24d94242a6afe27149722ad290e3e34ccb74ca' Submodule 'docs' (https://github.com/unittest-cpp/unittest-cpp.wiki.git) registered for path 'mud/3rdparty/tinystl/3rdparty/unittest-cpp/docs' Cloning into 'D:/Engines/toy/mud/3rdparty/tinystl/3rdparty/unittest-cpp/docs'... remote: Enumerating objects: 177, done. remote: Total 177 (delta 0), reused 0 (delta 0), pack-reused 177 Receiving objects: 100% (177/177), 33.12 KiB | 1.74 MiB/s, done. Resolving deltas: 100% (84/84), done. Submodule path 'mud/3rdparty/tinystl/3rdparty/unittest-cpp/docs': checked out '0aa16abcb2d2516de4ca09c0c5d397243522e7c0' Submodule path 'mud/3rdparty/tracy': checked out '44fae53583d5f53e0e59a0863aa0e63b25ea1bf0' error: Server does not allow request for unadvertised object 428464d98ec630a48170fa303506dab013753440 Fetched in submodule path 'mud/3rdparty/vg-renderer', but it did not contain 428464d98ec630a48170fa303506dab013753440. Direct fetching of that commit failed. Failed to recurse into submodule path 'mud'

    opened by Gerard097 2
CLUSEK-RT is a complex game engine written in C++ and the successor of the CLUSEK game engine

CLUSEK-RT is a complex game engine written in C++ and the successor of the CLUSEK game engine. This engine has been designed with a cross-platform design in mind. Thanks to Vulkan API it delivers a next-gen experience with ray tracing to both Linux and Windows platforms

Jakub Biliński 48 Dec 29, 2022
Ground Engine is an easy to use Game Engine for 3D Game Development written in C++

Ground Engine is an easy to use Game Engine Framework for 3D Game Development written in C++. It's currently under development and its creation will b

 PardCode 61 Dec 14, 2022
Godot Engine – Multi-platform 2D and 3D game engine

Godot Engine 2D and 3D cross-platform game engine Godot Engine is a feature-packed, cross-platform game engine to create 2D and 3D games from a unifie

Godot Engine 56.7k Jan 9, 2023
Flax Engine – multi-platform 3D game engine

Flax Engine – multi-platform 3D game engine

Flax Engine 3.7k Jan 7, 2023
MAZE (My AmaZing Engine) - 🎮 Personal open-source cross-platform game engine

MAZE (My AmaZing Engine) is the self-written open-source cross-platform game engine in the active development stage. At the moment it is my main pet project, developed for the purpose of learning and preserving different game dev technologies.

Dmitriy Nosov 13 Dec 14, 2022
Rogy-Engine- - My 3D game engine source code.

Rogy-Engine Development My 3D game engine. (NOT THE FINAL VERSION- Windows only) Features: PBR shading and reflection probes with parallax correction.

AlaX 97 Dec 28, 2022
The Atomic Game Engine is a multi-platform 2D and 3D engine with a consistent API in C++, C#, JavaScript, and TypeScript

The Atomic Game Engine is a multi-platform 2D and 3D engine with a consistent API in C++, C#, JavaScript, and TypeScript

null 2.8k Dec 29, 2022
Hyperion Engine is a 3D game engine written in C++

Hyperion Engine About Hyperion Engine is a 3D game engine written in C++. We aim to make Hyperion be easy to understand and use, while still enabling

null 293 Jan 1, 2023
Minetest is an open source voxel game engine with easy modding and game creation

Minetest is an open source voxel game engine with easy modding and game creation

Minetest 8.3k Dec 29, 2022
Stealthy way to hijack the existing game process handle within the game launcher (currently supports Steam and Battle.net). Achieve external game process read/write with minimum footprint.

Launcher Abuser Stealthy way to hijack the existing game process handle within the game launcher (currently supports Steam and Battle.net). Achieve ex

Ricardo Nacif 80 Nov 25, 2022
Game Boy, Game Boy Color, and Game Boy Advanced Emulator

SkyEmu SkyEmu is low level cycle accurate GameBoy, GameBoy Color and Game Boy Advance emulator that I have been developing in my spare time. Its prima

Sky 321 Jan 4, 2023
A high speed C++17 Vulkan game engine

Acid is an open-source, cross-platform game engine written in modern C++17 and structured to be fast, simple, and extremely modular. Vulkan is the sol

Equilibrium Games 1.4k Dec 30, 2022
Pure C Game Engine

Corange game engine Version 0.8.0 Written in Pure C, SDL and OpenGL. Running Corange is a library, but to take a quick look at some of the things it d

Daniel Holden 1.6k Dec 27, 2022
The flexible game engine.

The flexible game engine. Crown is a general purpose and data-driven game engine, written in orthodox C++ with a minimalistic and data-oriented design

Daniele Bartolini 1.7k Dec 28, 2022
Open-source, cross-platform, C++ game engine for creating 2D/3D games.

GamePlay v3.0.0 GamePlay is an open-source, cross-platform, C++ game framework/engine for creating 2D/3D mobile and desktop games. Website Wiki API De

gameplay3d 3.9k Jan 8, 2023
Grit Game Engine

Grit Engine This is the central repository for the Grit Game Engine project. From here can be built the engine executable itself, the launcher, and va

Grit Game Engine 103 Dec 7, 2022
A lightweight game engine written in modern C++

Halley Game Engine A lightweight game engine written in C++17. It has been used to ship Wargroove, a turn-based strategy game, on Windows, Mac (experi

Rodrigo Braz Monteiro 3.2k Dec 30, 2022
KlayGE is a cross-platform open source game engine with plugin-based architecture.

KlayGE KlayGE is a cross-platform open source game engine with plugin-based architecture. It's started since 2003. The explicit goal of KlayGE is: to

Minmin Gong 1.8k Dec 23, 2022
A cross-platform 2D game engine

nCine nCine is a cross-platform 2D game engine. It is released under the MIT License, Copyright (c) 2011-2021 Angelo Theodorou. For additional informa

nCine 780 Dec 31, 2022