Remaking Genesis: A 12-Year Journey from Java to C++
0:06 Game Overview: The streamer is remaking his first game, Genesis, originally created in Java 12 years ago, using C++ and the Raylib framework.
5:55 Animation and Collision: The C++ remake already features basic animation and collision detection, implemented using a simplified tile system compared to the original Java version.
26:40 Collision Implementation: Collision is implemented by checking the "solid" property of tiles in the game world.
27:59 Introducing Females: The "female" mob type is introduced, inheriting from the "mob" class and featuring random movement patterns.
46:51 Breeding Mechanics: Breeding mechanics are implemented, changing the color of a female mob's tag to indicate breeding availability and spawning new "forest mob" entities upon collision with the player.
51:56 Population Growth: A "population" class tracks the game's population, increasing it over time and spawning additional females and forest mobs.
1:56:26 Implementing a Timer: A timer is implemented using Raylib's time functions, triggering events every second and displaying the remaining time to the player.
2:06:56 Day-Night Cycle: A day-night cycle is implemented by manipulating brightness levels. The original game's complex logic is simplified using a brightness delta variable.
2:28:59 Implementing Torches: Torches are introduced, using the "render light" function to brighten nearby tiles and mobs. A bug where the player remains lit even when away from torches is identified and fixed.
3:08:41 Refining Lighting: The lighting system is further refined, ensuring that the closest light source is used for calculating mob brightness and adjusting the falloff curve for smoother transitions.
3:10:41 Menu System: A menu system is created, using classes derived from a base "menu" class to represent different screens like the main menu, help menu, about menu, and game over menu.
4:51:49 Publishing VODs: The streamer addresses an issue with Twitch VODs being unpublished due to potential copyright claims and resolves it by manually publishing them.
5:10:58 Implementing Sound: Sound effects and music are added using Raylib's audio functions. Music is streamed and requires manual buffer updates each frame, while sound effects are loaded into memory.
6:07:15 Adding an Icon: An icon is created in Photoshop and set for the game executable using resource files and a tutorial found online.
6:24:14 Building a Release Version: The game is built in release mode using Cmake options to enable optimization and statically link libraries, resulting in a smaller executable file.
7:06:29 Postmortem: The streamer concludes the project with a postmortem, highlighting the positive experience with Raylib and Clion, along with some minor challenges and areas for improvement.