Skip to content

japsuu/KorpiEngine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Korpi Engine banner

SonarCloud

Lines of Code Maintainability Rating Security Rating Technical Debt

.github/workflows/documentation.yml .github/workflows/build.yml .github/workflows/test.yml

An open-source, MIT-licensed 3D game engine written in pure C# and .NET 8. The engine uses a 64-bit (double) coordinate system on the CPU and camera-relative rendering on the GPU, to achieve large world support.

Warning

The engine is still under development and is not yet feature-complete!

Important

Only the MAIN branch is reserved for releases. All other branches might contain broken features!


About The Project

The goal of this project is to provide a viable alternative to other game engines for programmers, and other people who prefer working directly with code.

Korpi Engine does NOT aim to:

  • be just like Unity or Unreal Engine
  • offer a visual scripting system
  • be a one-size-fits-all solution for every game project

Korpi Engine DOES aim to

  • stand out with its 'programmer-first' approach
  • offer a clean and simple API
  • adhere to the KISS principle
  • be a good learning tool for game/engine development
  • be modular and extensible, to allow for easy integration of new features and systems.

Which types of games is Korpi Engine best suited for?

  • Open-world games: The engine is designed to handle large worlds with minimal additional programmer effort.
  • Procedural generation: The APIs have been designed to support custom procedurally generated meshes.

An example of such a game could be a Minecraft-like voxel game, or a deep-space exploration game.

Which types of games is Korpi Engine NOT well-suited for?

  • 2D games: The engine is designed for 3D games, and does not have built-in support for 2D games.
  • Mobile games: The engine is designed for desktop platforms, and does not have built-in support for mobile platforms.
  • Highly visual games: The engine does not have a visual scripting system, and is not designed for rapid prototyping of visual effects.
  • Games that require a large/complex asset pipeline: While the current pipeline supports streaming and dynamic loading/unloading, features like asset compression have not yet been implemented.

Why the name "Korpi"?

The name "Korpi" is Finnish and means "wilderness" or "forest". It was chosen to reflect the engine's focus on large, open-world games.

Gallery

Sponza example scene @ ~5ms / frame

Screenshot 2024-08-30 111435 Composite frame Screenshot 2024-08-30 111439 Albedo
Screenshot 2024-08-30 111443 Normal Screenshot 2024-08-30 111451 ObjectID
Screenshot 2024-08-30 111455 Depth Screenshot 2024-08-30 111500 Wireframe

Features / Roadmap

A non-exhaustive list of currently implemented engine features. Updated every once in a while.

  • Runtime
    • Scripting
      • Unity-like C# scripting API
      • Unity-like Coroutines
      • Hybrid Entity/Component/System model
      • Asset/Resource management
    • Graphics
      • Graphics-API agnostic backend
        • OpenGL renderer
        • DirectX renderer
        • Vulcan renderer
      • Camera-relative rendering
      • Point, spot & directional lights
      • Post-processing pipeline
      • Gizmo rendering
      • Custom shader language (KSL)
    • UI
      • Native Dear ImGUI support
    • Physics
      • Colliders
      • Rigidbodies
    • Audio
      • OpenAL audio backend
    • Networking
      • LiteNetLib transport layer
      • High-level networking API
      • Server/Client architecture
    • Other
      • Input system
      • Scene system
      • Full 64-bit coordinate system support
  • Editor layer
    • Standalone editor

Documentation

The official documentation is hosted on GitHub Pages and is automatically updated with every commit to the main branch.

Quick links:


Getting Started

Check out the Getting Started guide in the documentation.

It will help you get the engine up and running on your machine, and guide you through building and running the example project.


Contributing

Contributions are welcome!

  • If you are new to contributing to open-source projects, please read the CONTRIBUTING.md file for more information.
  • If you are a seasoned contributor, you can jump straight to the developer section of the documentation.

Acknowledgments

Portions of code or ideas are derived from the following sources:

  • OpenTK for providing a managed OpenGL wrapper.
  • Prowl Engine for providing inspiration and some code snippets.
  • Unity for providing inspiration and a reference point for the engine's design.
  • LiteNetLib for providing a high-performance C# rUDP networking library.
  • 2D game framework Duality for providing a reference point for the asset pipeline.

Releases

No releases published

Packages

No packages published