Guiding Light

Note

Guiding Light is a game developed along its own game engine in 4 months for courses conducted by the Lodz University of Technology.

You're a lighthouse keeper and a courier… at once. In "Guiding Light", a casual time-management game, you operate alone in the Pole of Cold. And you’re the only one who can feed the penguins!
Guide the ships, pick-up the food rations, and upgrade your lighthouse.
Get ready to prevent shipwrecks and master the polar night!

Our Engine is written in modern C++23. Its architecture is based on Object-Component model used by Unity. We use DirectX 11 as our graphics API (initially it was OpenGL, but we decided to port it).

Some notable systems:

  • 2D physics engine (collision detection and resolution)
  • Resource Manager (for sharing resources like models and textures)
  • UI
  • Runtime prefab loading
  • Input and Event systems

Guiding Light

We developed our own editor along with countless tools and functionalities:

  • Scene and prefab loading
  • Gizmos
  • Curve editors
  • Debug drawings
  • Debug logging
  • Shader hot-swapping
  • Custom inspectors for specific Components

To speed up our work, we wrote a Python script that generates (de)serialization code for all components by parsing the C++ header files, similarly to UnrealHeaderTool. (We are very proud of that.)

We are using deferred rendering, with exceptions for transparent objects and UI that use forward rendering. We managed to implement a couple of rendering algorithms:

  • Screen Space Reflection
  • Screen Space Refraction
  • Volumetric light scattering
  • Screen Space Ambient Occlusion (SSAO)
  • Particles (and particle emitters, done on CPU)
  • Fast Approximate Anti-Aliasing (FXAA)
  • Gerstner waves (for water geometry)
  • Shadow mapping (including point lights)
  • Percentage-Closer Soft Shadows

Editor’s UI is made with ImGui and it’s extensions: ImGuizmo, ImPlot. Audio is handled by miniaudio. glm for additional math operations.
(De)serializing yaml: yaml-cpp. Window abstraction: glfw. Helper loading libraries used: DDSTextureLoader, stb_image, assimp, FW1FontWrapper.

Credits
Name Role
Mikołaj Przybylski Programming Lead
Michał Galiński Production Lead
Jakub Januszewicz 2D & Branding Lead
Miłosz Kawczyński Design Lead
Nadia Kowalska 3D Art Lead
Hubert Olejnik Rendering Lead
Michał Świstak Sound Design
Julian Rakowski Voice Acting

See the devlog and gameplay video:

Source Code
Visit game website, download the game




← Back ↑ Top ↑