Skip to content

Feeeeddmmmeee/LynxEngine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

117 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lynx Engine

A simple (mostly) 2D game engine/framework written in C++ with Vulkan

✨ Features

  • Layer system
  • Macro based logging
  • Event system
    • Non blocking event queue
    • Window events (WindowClose, WindowMove, WindowResize, WindowEnterFullscreen, WindowExitFullscreen, WindowEnterFocus, WindowExitFocus)
    • Keyboard events (KeyPressed, KeyReleased, KeyRepeat)
      • Custom keycodes (Compatible with SDL3)
    • Mouse events (MouseButtonPressed, MouseButtonReleased, MouseScroll, MouseMove)
  • Timestep and Clock classes for framerate independent motion
  • User input polling
    • SDL implementation
    • GLFW implementation
  • Graphics
    • Window abstraction
    • SDL window implementation
    • GLFW window implementation
    • Perspective camera
    • Simple perspective camera controller with WASD movement + mouse rotation + scroll zoom (fov) + speed boost when holding shift
    • Orthographic camera
    • Rendering (Loosely based on my Vulkan learning repo)
  • Resource management
  • ECS
  • Audio support

🚀 Getting started

#include <LynxEngine.h>

class MyLayer : public Lynx::Layer
{
  public:
    virtual void onAttach() override
    {
      LYNX_INFO("Hello World");
    }
};

int main()
{
  auto app = Lynx::Application();
  app.pushLayer<MyLayer>();
  app.run();
}

💻 Compile time options

Name Function Default
LYNX_CLIENT_LOG_LEVEL Sets the client log level LYNX_LOG_LEVEL_DEBUG
LYNX_ENGINE_LOG_LEVEL Sets the engine log level LYNX_LOG_LEVEL_NONE
LYNX_DISABLE_CLIENT_ASSERTS Disables client asserts if defined Undefined
LYNX_DISABLE_ENGINE_ASSERTS Disabled engine asserts Undefined
LYNX_DISABLE_ASSERTS Defines the engine and client disable asserts macros Undefined
LYNX_DISABLE_VULKAN_VALIDATION_LAYERS Disables Vulkan validation layers Undefined

📦 Dependencies

Library Use
Vulkan Graphics API
SDL3 Window creation, input
LunarG's Vulkan SDK Provides Vulkan validation layers and a compiler for the slang shading language (sort of optional)
spdlog Logging
glm Math library
stb_image Single header image loading library
tinyobjloader Single header .obj file loader

About

A simple Vulkan game engine/framework

Topics

Resources

Stars

Watchers

Forks

Contributors