Skip to content

A 2D and 3D multi-platform game engine

License

Notifications You must be signed in to change notification settings

lcomstive/Yonai

Repository files navigation

Yonai

Author - @lcomstive | GitHub

Version GitHub Workflow Status

Table of Contents


Installation

Editor

All releases of the editor can be found here.

Engine

Currently the only way to implement the engine in your own application is to build from source. This can be done by cloning or adding the repository as a submodule.

When cloning remember to get submodules. On the command line this can be done using the --recurse-submodules flag.

CMake is used for cross-platform project generation.

Usage

Creating a new application

Inheriting from Yonai::Application provides basic functionality, or you can use Yonai::WindowedApplication for a graphical application.

class DemoApplication :
    public Yonai::WindowedApplication
{
public:
	// Application is being created
	// 	[from Yonai::Application]
	void Setup() override;

	// Application is shutting down
	// 	[from Yonai::Application]
	void Cleanup() override;

	// Called once per frame, prior to drawing
	// 	[from Yonai::Application]
	void OnUpdate() override;

	// Called once per frame, after update
	// 	[from Yonai::WindowedApplication]
	void OnDraw() override;
};

Running the application

int main(int argc, char** argv)
{
	// Create instance of app
	DemoApplication app;

	// If DemoApplication inherits from Yonai::Application
	app.ProcessArgs(argc, argv);

	// Start the game loop
	app.Run();

	// Exit application
	return 0;
}

Features

  • Completed

    • Core Engine
      • Custom "hybrid ECS" style systems
      • Centralised resource management
    • Components & Systems
      • 2D Sprite & 3D Mesh renderers
      • FPS-style camera movement
    • Graphics
      • Model loading (using Assimp for various popular formats)
      • Texture loading (using stb for image loading)
      • GLSL shader loading
        • w/ hot reloading
      • ImGUI implementation
    • Debugging
      • Logging to console & file
  • In Development

    • Graphics
      • Texture Maps (normal, diffuse, specular)
    • Scripting - C#
      • Communication between managed & unmanaged code (C++ <-> C#)
      • A core C# library - AquaScriptCore
      • Reloadable scripting engine support
  • Planned

    • Core Engine
      • Asset database
      • Scene serialization
    • Graphics
      • Instancing
      • Shadow mapping
      • Particles
      • Rigged Animations
    • Physics
      • Third party 2D physics library - Box2D
      • Third party 3D physics library - TBD

Dependencies

Dependencies are installed using VCPKG during the CMake configuration step.

Licenses

This project is released under the MIT license, and can be found in the LICENSE file.

Dependency Licenses

Contact

Feel free to contact me at lewiscomstive@gmail.com with any questions or feedback.

Resources of study

Please contact me for removal if you or your resources are in this section and you do not want them to be.