Coder Social home page Coder Social logo

noble's Introduction

Noble

Noble is a work-in-progress game engine that I've been developing to practice and demonstrate my skills with C++. It uses custom containers and strings, custom memory management tools, and more.

Architecture

The gameplay-layer of the engine is built similar to Unreal Engine or Unity, where a Component system is used to build custom functionality. GameObjects are containers of Components, and Components provide the unique behavior for GameObjects. GameObjects can be possessed by Controllers, which provide input queues to move Objects through the world.

The lower-level architecture is fairly simple. The Engine class handles initializing subsystems like the logger, physics, renderer. Each of these subsystems are wrapped in their own class(es).

ShaderTool

ShaderTool is a small utility I put together in C# to help with some of the asset massaging for BGFX. It runs BGFX's shaderc with the correct commands and builds those shaders into my custom shader format designed for Noble. It also loads Assimp-compatible 3D models and converts them into Noble-friendly static mesh files. I chose to implement mesh conversion in a separate tool because I didn't want to introduce another dependency (that being Assimp) to the engine itself. Additionally, this will eventually be built into the engine editor itself, so I didn't want to spend a ton of time implementing complex mesh conversion in C++ if it was going to be dumped at a later date.

To-do

Currently, I'm working on implementing Bullet physics into the engine. Once I feel comfortable with this, I want to move on to fleshing out rendering and implementing more than simple static meshes. At this point, I'd also like to build up ShaderTool to be easier to use. Additionally, I want to expand on the AssetManager to support packed assets, ie loading multiple assets from a single file.

Third-party

The engine uses BGFX for rendering, Bullet for physics, GLM for mathematics, and nlohmann's JSON parser for reading config files (though this may change to INI files at some point, I haven't decided).

noble's People

Contributors

lyonb96 avatar

Watchers

 avatar

noble's Issues

Inverted input for some users

I've been informed that in testing, some are experiencing "inverted movement" ie WASD keys correspond to the opposite of the expected move direction. Need to investigate if this is caused by actual inversion in the input code, or if the camera is upside down, which would visually give the same effect.

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.