inanevin / LinaEngine

Lina Engine is an open-source , modular, tiny and fast C++ game engine, aimed to develop 3D desktop games.
MIT License
843 stars 50 forks source link
3d-graphics 3d-graphics-engine game-development game-engine game-engine-development gamedev graphics gui lina-engine ui vulkan-game-engine



[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/c0c10a437a214dbf963210ed3edf3c4f)](https://www.codacy.com/gh/inanevin/LinaEngine/dashboard?utm_source=github.com&utm_medium=referral&utm_content=inanevin/LinaEngine&utm_campaign=Badge_Grade) [![Build Status](https://app.travis-ci.com/inanevin/LinaEngine.svg?branch=master)](https://app.travis-ci.com/inanevin/LinaEngine) [![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/inanevin/LinaEngine/issues) [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/inanevin) [![Lina Discord](https://badgen.net/discord/members/QYeTkEtRMB)](https://discord.gg/QYeTkEtRMB) ![GitHub issues](https://img.shields.io/github/issues/inanevin/LinaEngine.svg) ![GitHub repo size](https://img.shields.io/github/repo-size/inanevin/LinaEngine.svg)

Lina Engine is a lightweight and ECS based open-source game engine. Initially it's a research project and is aimed to be a basis of development for more open-source game engine projects. Lina's architecture is designed to be as modular as possible and it focuses on creating replacable modules to customize for project-specific needs, rather than stacking thousands of features into one framework.

Visit the project page on my website for more information

Lina Lina

Announcements / Notes

Lina Engine Tools

External Dependencies

Installation

# Initialize git in your desired directory.
git init

# Clone Lina Engine
git clone https://github.com/inanevin/LinaEngine

# Alternatively you can clone recursively, this will download all the submodules if there exists any along with Lina Engine source code.
git clone --recursive https://github.com/inanevin/LinaEngine

Using Lina Engine Build Launcher (deprecated)

Using CMake with Shell

# You can define any options before generating project files.
cmake -DLINA_ENABLE_LOGGING=OFF

# You can define multiple options sequentially.
cmake -DLINA_ENABLE_LOGGING=OFF -DLINA_ENABLE_PROFILING=OFF

# It is recommended to declare the type of the option if multiple options are defined
cmake -DLINA_ENABLE_LOGGING:BOOL=OFF -DLINA_ENABLE_PROFILING:BOOL=OFF -DCMAKE_CONFIGURATION_TYPES:STRING="Debug,Release"

# Above commands will generate project files with default generator, you can specify a generator if you want.
cmake -DLINA_ENABLE_LOGGING=OFF -G "Visual Studio 15 2017"
# Create a directory for binaries
mkdir bin

# Navigate to directory
cd bin

# Build the root project
cmake ../ -G "Visual Studio 16 2019" -A "x64"

# After the project files are built, you can build the project via
cmake --build . --target ALL_BUILD

Using CMake GUI

Build Options

Option Description Default
LINA_ENABLE_EDITOR Launches the sandbox in editor mode. ON
LINA_ENABLE_LOGGING Enables log features for core modules. ON
LINA_ENABLE_PROFILING Enables profiler integration & profile data serialization. ON
LINA_PRODUCTION_BUILD Disable debug error checking & reporting. OFF
CMAKE_CONFIGURATION_TYPES Config types that will be available on the IDE. Debug, Release, MinSizeRel, RelWithDebInfo

License

License Check out Licence file.

Design Diagrams

System Architecture

Diagram 1

Design Document

Link to the Software Design Document of Lina Engine (PDF)

Lina Engine Project Report (PDF)