Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
1efc8ff
[POC] fire
ViPErCZ Jun 9, 2025
6c93f68
[POC] fire
ViPErCZ Jun 9, 2025
3847038
[POC] fire
ViPErCZ Jun 9, 2025
9aff896
[POC] fire
ViPErCZ Jun 10, 2025
f430753
[POC] fire
ViPErCZ Jun 24, 2025
fff08ad
[POC] add smoke
ViPErCZ Jun 24, 2025
dc49bbd
[POC] add smoke
ViPErCZ Jun 24, 2025
c540f2b
[POC] add smoke
ViPErCZ Jun 24, 2025
849a7f3
[POC] add smoke
ViPErCZ Jun 24, 2025
822d46e
[POC] add smoke
ViPErCZ Jun 25, 2025
40bb81d
[POC] add smoke
ViPErCZ Jun 25, 2025
c665fe3
[POC] add smoke
ViPErCZ Jun 25, 2025
daeb35d
[POC] add smoke - bloom
ViPErCZ Jun 25, 2025
e710856
[POC] add smoke - torch
ViPErCZ Jun 25, 2025
e41515e
[POC] respawn effect
ViPErCZ Jul 2, 2025
04d1881
[POC] bolt and lighting effect
ViPErCZ Jul 3, 2025
74ed7d0
[POC] lighting effect - pulse sequence
ViPErCZ Jul 3, 2025
0514138
Create cmake-single-platform.yml
ViPErCZ Jul 3, 2025
a5c8b8f
[POC] refactoring
ViPErCZ Jul 3, 2025
c23b2fc
[POC] github workflow setup
ViPErCZ Jul 3, 2025
12a93e6
[POC] github workflow setup
ViPErCZ Jul 3, 2025
4db1a28
[POC] github workflow setup
ViPErCZ Jul 3, 2025
7759328
[POC] github workflow setup
ViPErCZ Jul 3, 2025
514f83b
[POC] github workflow setup
ViPErCZ Jul 3, 2025
58a2910
[POC] github workflow setup
ViPErCZ Jul 3, 2025
6bcec7a
[POC] github workflow setup
ViPErCZ Jul 3, 2025
6e2d984
[POC] github workflow setup
ViPErCZ Jul 3, 2025
d4c45dc
[POC] github workflow setup
ViPErCZ Jul 3, 2025
ee0fe35
[POC] github workflow setup
ViPErCZ Jul 3, 2025
d519b2f
[POC] github workflow setup
ViPErCZ Jul 3, 2025
858ae8a
[POC] github workflow setup
ViPErCZ Jul 3, 2025
774cef7
[POC] github workflow setup
ViPErCZ Jul 3, 2025
999456e
[POC] github workflow setup
ViPErCZ Jul 3, 2025
e7dc558
[POC] github workflow setup
ViPErCZ Jul 3, 2025
452f46c
[POC] github workflow setup
ViPErCZ Jul 3, 2025
caa75d4
[POC] ray intersect
ViPErCZ Jul 31, 2025
99c1b68
[POC] transparent walls
ViPErCZ Jul 31, 2025
a4e57d4
[POC] gizmo
ViPErCZ Aug 5, 2025
71cb312
[POC] camera debug mod + standard meshes and materials
ViPErCZ Aug 8, 2025
3a4f614
[POC] standardize mesh system, add pbr rendering
ViPErCZ Sep 12, 2025
e24cfc4
[POC] standardize mesh system, add pbr rendering
ViPErCZ Sep 12, 2025
7dd1149
[POC] standardize mesh system, add pbr rendering
ViPErCZ Sep 12, 2025
076e64c
[POC] standardize mesh system, add pbr rendering
ViPErCZ Sep 17, 2025
652ca7d
[POC] standardize mesh system, add pbr rendering
ViPErCZ Oct 4, 2025
e23d6ad
[POC] standardize mesh system, add pbr rendering
ViPErCZ Oct 5, 2025
4d6e7c0
[POC] standardize mesh system, add pbr rendering
ViPErCZ Oct 5, 2025
3948cd9
[POC] standardize mesh system, add pbr rendering
ViPErCZ Oct 5, 2025
275ad78
[POC] async loading
ViPErCZ Oct 15, 2025
5fbc470
[POC] nlohmann-json3-dev
ViPErCZ Oct 15, 2025
ba983df
[WIP] scenes
ViPErCZ Oct 24, 2025
c6396e2
[WIP] scenes - fix blur
ViPErCZ Oct 26, 2025
305eacd
[WIP] scenes - render priority
ViPErCZ Oct 27, 2025
72db5e4
[WIP] scenes - poc snake scene
ViPErCZ Oct 30, 2025
674e16b
[WIP] scenes - snake scene
ViPErCZ Nov 1, 2025
2d57637
[WIP] scenes - snake scene
ViPErCZ Nov 2, 2025
c2d3700
[WIP] scenes - fix shadows, unshaded
ViPErCZ Nov 3, 2025
1c20c84
[WIP] scenes - remove snakeInit (PlayerScene)
ViPErCZ Nov 3, 2025
287f70e
[WIP] scenes - remove baseItem
ViPErCZ Nov 3, 2025
ce956ac
[WIP] poc 2D renderers
ViPErCZ Nov 4, 2025
ded38d7
[WIP] poc 2D renderers - poc ttf font atlas and rendering 2D dynamic …
ViPErCZ Nov 11, 2025
f0d8780
[WIP] poc 2D renderers - poc ttf font atlas and rendering 2D dynamic …
ViPErCZ Nov 11, 2025
10b442d
[WIP] poc 2D renderers - poc ttf font atlas and rendering 2D dynamic …
ViPErCZ Nov 11, 2025
b57166f
[WIP] poc 2D renderers - texts + fade out/in effect, timer utils
ViPErCZ Nov 14, 2025
7bde2fe
[WIP] refactor radar
ViPErCZ Nov 19, 2025
0394b94
[WIP] fix tests
ViPErCZ Nov 19, 2025
95b2fab
[WIP] radar items with quad2d
ViPErCZ Nov 19, 2025
f9bb656
[WIP] fix radar and tests
ViPErCZ Nov 20, 2025
eefc327
[WIP] add coin scene
ViPErCZ Nov 20, 2025
eb2cc1d
[WIP] fix respawn and radar reset
ViPErCZ Nov 21, 2025
846d7af
[WIP] remove old classes
ViPErCZ Nov 21, 2025
617750e
[WIP] remove old classes
ViPErCZ Nov 21, 2025
77ae9f2
[WIP] animation player poc
ViPErCZ Dec 9, 2025
bd27218
[WIP] animation player poc
ViPErCZ Dec 12, 2025
6039195
[REF] animation player
ViPErCZ Dec 12, 2025
460a3e5
[REF] animation player - fix
ViPErCZ Dec 12, 2025
9be993a
[WIP] gpu particle
ViPErCZ Dec 15, 2025
d08eb1c
[WIP] gpu particle
ViPErCZ Dec 18, 2025
31500dc
[WIP] gpu particle
ViPErCZ Dec 18, 2025
1596df4
[WIP] gpu particle - rain
ViPErCZ Dec 21, 2025
3426368
[WIP] gpu particle - rain
ViPErCZ Dec 22, 2025
08d0329
[WIP] gpu particle - snow
ViPErCZ Dec 22, 2025
433a336
[WIP] gpu particle - explosion
ViPErCZ Dec 24, 2025
2868986
[WIP] gpu particle - explosion
ViPErCZ Dec 24, 2025
2d7a13d
[WIP] gpu particle - explosion
ViPErCZ Dec 24, 2025
35ab371
[WIP] gpu particle - 2d + rain drop into screen - poc
ViPErCZ Dec 30, 2025
1c14d49
[WIP] plane mesh reflection
ViPErCZ Dec 30, 2025
93a4c03
[WIP] plane mesh reflection - ref
ViPErCZ Dec 30, 2025
185aaa7
[REF] particle 3D
ViPErCZ Jan 2, 2026
3dffd0b
[WIP] particle 2D
ViPErCZ Jan 2, 2026
8697046
[WIP] particle 2D
ViPErCZ Jan 2, 2026
3df4500
[WIP] particle 2D
ViPErCZ Jan 4, 2026
a23d934
[REF] particle 2D
ViPErCZ Jan 4, 2026
fa8da47
[WIP] lightning + small particle fix
ViPErCZ Jan 9, 2026
3699219
[WIP] lightning - skybox refactor
ViPErCZ Jan 9, 2026
3379006
[WIP] lightning
ViPErCZ Jan 12, 2026
eaf6865
[WIP] fix tests
ViPErCZ Jan 13, 2026
d60e753
[WIP] street lamp
ViPErCZ Jan 19, 2026
ffded36
[WIP] lights, pbr + upgrade loading models
ViPErCZ Jan 24, 2026
ef39815
[WIP] collision
ViPErCZ Feb 3, 2026
819b471
[WIP] collision system
ViPErCZ Feb 6, 2026
5173406
[WIP] collision system
ViPErCZ Feb 15, 2026
ba79329
[WIP] collision system
ViPErCZ Feb 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
49 changes: 49 additions & 0 deletions .github/workflows/cmake-single-platform.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# This starter workflow is for a CMake project running on a single platform. There is a different starter workflow if you need cross-platform coverage.
# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-multi-platform.yml
name: CMake on a single platform

on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]

env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Install dependencies
run: |
sudo add-apt-repository universe
sudo apt-get update
sudo apt-get install -y \
libglfw3-dev \
libopenal-dev \
libalut-dev \
libassimp-dev \
freeglut3-dev \
libglew-dev \
libglm-dev \
libgl1-mesa-dev \
libfreetype6-dev \
nlohmann-json3-dev

- name: Clear build directory
run: rm -rf build

- name: Configure CMake
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}

- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}

- name: Test
working-directory: ${{github.workspace}}/build
run: ctest -C ${{env.BUILD_TYPE}}
859 changes: 477 additions & 382 deletions App.cpp

Large diffs are not rendered by default.

113 changes: 43 additions & 70 deletions App.h
Original file line number Diff line number Diff line change
@@ -1,107 +1,80 @@
#ifndef SNAKE3_APP_H
#define SNAKE3_APP_H

#include "ItemsDto/GameField.h"
#include "ItemsDto/Snake.h"
#include "ItemsDto/ObjWall.h"
#include "Resource/ObjModelLoader.h"
#include "Resource/ShaderLoader.h"
#include "Manager/ResourceManager.h"
#include "Manager/RenderManager.h"
#include "Manager/KeyboardManager.h"
#include "Renderer/Opengl/GameFieldRenderer.h"
#include "Renderer/Opengl/SkyboxRenderer.h"
#include "Renderer/Opengl/SnakeRenderer.h"
#include "Renderer/Opengl/RadarRenderer.h"
#include "Renderer/Opengl/DepthMapRenderer.h"
#include "Handler/SnakeMoveHandler.h"
#include "Handler/RadarHandler.h"
#include "Handler/EatLocationHandler.h"
#include "stdafx.h"
#include "Renderer/Opengl/EatRenderer.h"
#include "Renderer/Opengl/TextRenderer.h"
#include "ItemsDto/Eat.h"
#include "Manager/EatManager.h"
#include "Renderer/Opengl/EatRemoveAnimateRenderer.h"
#include "ItemsDto/Barriers.h"
#include "Renderer/Opengl/BarrierRenderer.h"
#include "Manager/LevelManager.h"
#include "Renderer/Opengl/ObjWallRenderer.h"
#include "Manager/Camera.h"
#include "Renderer/Opengl/BloomRenderer.h"
#include "Renderer/Opengl/RainRenderer.h"
#include "Renderer/Opengl/RainDropRenderer.h"
#include "Renderer/Opengl/AnimRenderer.h"
#include <filesystem>
#include "Particle/SmokeParticleSystem.h"
#include "Renderer/Opengl/BoltRenderer.h"
#include "Renderer/Opengl/FireRenderer.h"
#include <AL/al.h>
#include <AL/alc.h>
#include <AL/alut.h>
#include <nlohmann/json.hpp>
#include "Scenes/MainScene.h"
#include "Scenes/PreloaderScene.h"

#define MAX_POINT 6
#define MAX_LIVES 4
#define START_LEVEL 1
#define START_LEVEL 2

namespace fs = std::filesystem;
using namespace ItemsDto;
using namespace Manager;
using namespace Renderer;
using namespace Handler;
using namespace Resource;
using namespace Particle;
using namespace Model;
using namespace Material;

class App {
enum class SceneState {
LOADING,
RUNNING
};
public:
App(Camera* camera, int width, int height);
App(const shared_ptr<Camera> &camera, int width, int height);
~App();
void Init();
void run();
void processInput(int keyCode);
void processInput(GLFWwindow *window, int keyCode, int scancode, int action, int mods) const;
void mouseButtonCallback(GLFWwindow* window, int button, int action, int mods) const;
void mousePositionCallback(GLFWwindow* window, double x, double y) const;
void setKeyState(int key, bool pressed) const;
void cameraProcessKeyboard(GLFWwindow *window) const;
protected:
void InitResourceManager();
GameField* InitGameField();
Snake* InitSnake();
ObjWall* InitObjWall(); // outer wall
Barriers* InitBarriers(); // inter barriers
static Radar* CreateRadar();
void InitRadar();
Eat *InitEat();
void initTexts();
void initScene();
void InitResourceManager() const;
private:
LevelManager* levelManager{};
ResourceManager* resourceManager{};
RenderManager* rendererManager;
GameField* gameField{};
GameFieldRenderer* gameFieldRenderer{};
SkyboxRenderer* skyboxRenderer{};
Snake* snake{};
Eat* animateEat{};
Eat* eat;
Radar* radar{};
ObjWall* objWall{};
Barriers* barriers{};
Cube* skybox{};
SnakeRenderer* snakeRenderer{};
ObjWallRenderer* objWallRenderer{};
BarrierRenderer* barrierRenderer{};
EatRenderer* eatRenderer{};
RadarRenderer* radarRenderer{};
TextRenderer* textRenderer{};
DepthMapRenderer* depthMapRenderer{};
BloomRenderer* bloomRenderer{};
EatRemoveAnimateRenderer* eatRemoveAnimateRenderer{};
RainRenderer* rainRenderer{};
AnimRenderer* animRenderer{};
RainDropRenderer* rainDropRenderer{};
KeyboardManager* keyboardManager;
CollisionDetector* collisionDetector{};
EatManager* eatManager;
Text* startText;
Text* tilesCounterText;
Camera* camera;
struct TextureEntry {
std::string name;
std::string path;
std::string category;
};
shared_ptr<Environment> environment;
shared_ptr<ResourceManager> resourceManager;
shared_ptr<RenderManager> rendererManager;
shared_ptr<RainDropRenderer> rainDropRenderer{};
shared_ptr<FireRenderer> fireRenderer{};
shared_ptr<BoltRenderer> boltRenderer{};
unique_ptr<KeyboardManager> keyboardManager;
shared_ptr<CollisionDetector> collisionDetector;
unique_ptr<EatManager> eatManager;
shared_ptr<Camera> camera;
glm::mat4 projection{};
int width;
int height;
ALuint musicSource{}, coinSource{};
ALuint coinBuffer{}, musicBuffer{};
SceneState state = SceneState::LOADING;
std::atomic<bool> scanning = false;
shared_ptr<MainScene> mainScene;
shared_ptr<PreloaderScene> preloaderScene;
shared_ptr<ContextState> contextState;
};


#endif //SNAKE3_APP_H
12 changes: 0 additions & 12 deletions Assets/Objects/Cube.mtl

This file was deleted.

46 changes: 0 additions & 46 deletions Assets/Objects/Cube.obj

This file was deleted.

12 changes: 0 additions & 12 deletions Assets/Objects/Tile.mtl

This file was deleted.

Loading