All Projects → afraidofdark → ToolKit

afraidofdark / ToolKit

Licence: MIT License
2d - 3d game and interactive application develepment kit

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
CMake
9771 projects
objective c
16641 projects - #2 most used programming language
GLSL
2045 projects
HTML
75241 projects

Projects that are alternatives of or similar to ToolKit

Gamedev Resources
🎮 🎲 A wonderful list of Game Development resources.
Stars: ✭ 2,054 (+7800%)
Mutual labels:  gamedev, 2d-game-engine, 3d-engine
Blue Flame Engine
A 3D/2D game engine that supports both DirectX11 and OpenGL 4.5
Stars: ✭ 129 (+396.15%)
Mutual labels:  gamedev, 2d-game-engine
Ct Js
Ct.js is a desktop game engine that makes learning programming fun and game development easy by its visual editors and well-documented code library
Stars: ✭ 831 (+3096.15%)
Mutual labels:  gamedev, 2d-game-engine
cage
Cage (Ain't a Game Engine) - write 2D games using plain C
Stars: ✭ 40 (+53.85%)
Mutual labels:  gamedev, 2d-game-engine
Grid Sdk
The Grid SDK - Game engine for Lua
Stars: ✭ 612 (+2253.85%)
Mutual labels:  gamedev, 2d-game-engine
Coffee
An opinionated 2D game engine for Rust
Stars: ✭ 771 (+2865.38%)
Mutual labels:  gamedev, 2d-game-engine
Cryengine
CRYENGINE is a powerful real-time game development platform created by Crytek.
Stars: ✭ 580 (+2130.77%)
Mutual labels:  gamedev, 3d-engine
Vulkan Renderer
A new 3D game engine using modern C++ and Vulkan API
Stars: ✭ 205 (+688.46%)
Mutual labels:  gamedev, 3d-engine
Fxgl
Stars: ✭ 2,378 (+9046.15%)
Mutual labels:  gamedev, 2d-game-engine
Diligentengine
A modern cross-platform low-level graphics library and rendering framework
Stars: ✭ 2,142 (+8138.46%)
Mutual labels:  gamedev, 3d-engine
Anything about game
A wonderful list of Game Development resources.
Stars: ✭ 541 (+1980.77%)
Mutual labels:  gamedev, 3d-engine
GroundEngine
Ground Engine is an easy to use Game Engine for 3D Game Development written in C++
Stars: ✭ 61 (+134.62%)
Mutual labels:  2d-game-engine, 3d-engine
Exengine
A C99 3D game engine
Stars: ✭ 391 (+1403.85%)
Mutual labels:  gamedev, 3d-engine
Pixelvision8
Pixel Vision 8's core philosophy is to teach retro game development with streamlined workflows. PV8 is also a platform that standardizes 8-bit fantasy console limitations built on top of the open-source C# game engine based on MonoGame.
Stars: ✭ 773 (+2873.08%)
Mutual labels:  gamedev, 2d-game-engine
Glide
Game engine for making 2d games on iOS, macOS and tvOS, with practical examples and tutorials
Stars: ✭ 353 (+1257.69%)
Mutual labels:  gamedev, 2d-game-engine
Obengine
2D Game Engine with Lua Scripting made on top of SFML !
Stars: ✭ 335 (+1188.46%)
Mutual labels:  gamedev, 2d-game-engine
Tinygizmo
📐 An immediate mode 3D gimzo (translation, rotation, scale for scene editing) in ~1200 LoC
Stars: ✭ 321 (+1134.62%)
Mutual labels:  gamedev, 3d-engine
Overload
3D Game engine with editor
Stars: ✭ 335 (+1188.46%)
Mutual labels:  gamedev, 3d-engine
Flaxapi
Old repository with C# Editor and C# API for creating games in Flax Engine
Stars: ✭ 131 (+403.85%)
Mutual labels:  gamedev, 3d-engine
Gdevelop
🎮 GDevelop is an open-source, cross-platform game engine designed to be used by everyone.
Stars: ✭ 3,221 (+12288.46%)
Mutual labels:  gamedev, 2d-game-engine

ToolKit

ToolKit is a 3d editor & interactive application development platform. It allows users to create 3d scenes and bring in the interactivity via C++ plug-ins.

Motivation

Simplicity

Most games, projects using Unity, UE4 or even Godot, don't need all those tools and functionalities. Having a far simple game engine, increases your comprehansion of the framework & tools, wich in return gives you more freedom to do things your way. This approach may not be suitable for professional game studios, however it is very suitable for indies whom after unique projects.

This project has a unique goal which is keeping all the source code under 30k lines of code excluding dependencies. Instead of adding more capabilites, tools and getting more complicated, ToolKit will be oriented towards simplicity, performance and being/staying modern.

Community

Bringing like minded people together around a project outputs invaluable assets as one can observe from projects like Blender & Godot. So the project's motivation is to bring people together who after uniqueness, simplicity, modernitiy and colloborative effort to create someting exceptional.

Editor High Lights

  • All required functionalites for scene creation, manipuation, save & load.
  • All required utilities for Asset management. Create / Save / Refresh / Browse resource directories.
  • Support having a workspace & multiple projects.
  • Multiple Prespective & Orthographic views.
  • Scene outliner to observe / interact entities in the scene.
  • Entity inspector & interactive resource manipulation trough the inspector.
  • Import whole scenes from various programs & formats including sketchfab, blender, glb, fbx ...
  • Console window along with usefull scene inspection commands and easy command creation.

Engine High Lights

  • Default fragment & vertex shaders and ability to create custom shaders for materials.
  • Sprite Sheets & Sprite Animation.
  • Skeletal animation & Key frame animation.
  • Resource serialization & deserialization to xml format.
  • Scene management.

Build & Run

ToolKit comes with a Visual Studio solution. The solution has been created with Visual Studio 2019 community. All the required dependencies are in the project as prebuilt for Windows 10.

Creating new project

  • Copy the visual studio template "ToolKit\ToolKitProject.zip" to "%USERPROFILE%\Documents\Visual Studio 2019\Templates\ProjectTemplates
  • Restart the Visual Studio and open the solution "ToolKit\ToolKit.sln"
  • In the Solution Explorer, right click the solution "ToolKit"
  • Add -> New Project
  • Search for ToolKitProject and select it
  • Fallow the instructions, this will create a new blank project

This way allows you to build an application entierly from scrach using the ToolKit engine. Alternatively you can use the ToolKit editor to create an interactivity plugin and publish the product as a web project or executable.

Projects in the solution

Engine

  • ToolKit project is the engine it self.
  • Editor project is the 3d editor to create conent for your projects.
  • Import project is the executable that Editor is utilizing for importing the resources for projects.

Sample

  • SpaceShooter project is a unit test project and also serving as a showcase.
  • Template project is a Visual Studio project template. You can make your adjustments to the template and export it to use as your project template.

Platforms

ToolKit does not have any Windows dependency and can be build for Linux and Mac easily. However my main OS is Windows, compiling from source and publishing the created apps will be done from Windows and I don't have any plans to support other OS anytime soon. ToolKit can pubish for:

  • Windows executable
  • Web html + .wasm or .js

Although it's possible, publishing to these platforms are not streamlined, still a lot of manual configuration and building is needed. Publishing for Android is on the way.

Web Platform

This feature is not stable & in active development.

  • Install emscripten, download ninja and place it in, emsdk / upstream / emscripten.
  • In the ToolKit directory, create a Build directory.
  • Enter Build. Open cmd and Run "emcmake cmake -S .."
  • Than run ninja
  • Install chrome
  • Install chrome C/C++ DevTools Support (Dwarf)
  • From the developer tools settings (wheel icon *)
  • Preferences / Sources / Check: "Enable javascript source maps"
  • Experiments / Check: "WebAssembly Debugging: Enable DWARF support"
  • Go to ToolKit / Bin open cmd run "emrun SpaceShooter.html --browser chrome

You can see the c++ code, call stack, local - global scope and set break points.

Dependencies

  • stb_image - MIT
  • SDL 2.0 - Zlib
  • rapidxml - MIT
  • openal-soft - LGPL (Dynamicyl linked)
  • glm - MIT
  • glew - BSD, MIT
  • Dear imgui - MIT
  • Assimp - BSD
  • lodepng - Zlib

Roadmap

Renderer

  • Currently I am using Opengl ES 2.0 along with Sdl. I have not isolated renderer from the underlying api. That is, renderer, texture, mesh ect ... makes direct calls to the Opengl. This isolation is needed.
  • Forward renderer.
    • Sort objects to minimize redundant state changes.
    • Support transparency by sorting objects by depth.
    • Support double sided transparent objects.
    • Dynamic batch small objects in polygon size.
    • Utilize instantiate for bigger objects in polygon size.
    • Environment lighting trough global light probe.
    • Simple shadow maps for directional lights.
    • Allow, pick 8 lights per object.
    • Point, spot, directional light entities for the editor.

Scene manager

  • Implement Non-uniform octree scene patitioning.
  • Implement frustum culling.
  • Update picking queries to utilze octree.

Editor

  • Editor plugins for enhencing the editor capabilities.
  • Create sound entity for the editor.

Engine

  • Implement Entity Component System.
  • Play 3d sound.
  • Replace openal with MojoAL.

Platform

  • Publish menu for Windows And Web.
  • Android support.
  • FireBase for mobile monetization and mobile backend.

Final Words

Project is in active development. Feel free to play around with it and get in touch with me.

Enjoy!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].