Recreating Genesis: From Java to C++ - A Full Game Remake in Raylib
0:00 Project Introduction: Cho introduces the live stream, detailing his plan to remake his first game, Genesis, originally created in Java in 2012, using C++ and the Raylib framework.
1:00 Delay Explanation: Cho explains the reason for starting the stream later than planned, citing exhaustion from physically preparing his new office space.
7:57 Genesis Overview: A demonstration of the current C++ version of Genesis is shown, showcasing basic player movement, tree rendering, and placeholder animations. Collision detection is still under development.
8:01 IDE Discussion: Cho discusses his experience using CLion, expressing his satisfaction with its performance, aesthetics, and CMake integration, while acknowledging the debugging capabilities and familiarity of Visual Studio.
26:45 Collision Implementation: Cho successfully implements basic collision detection, preventing the player from moving through solid objects like rocks.
27:59 Introducing Females: Cho introduces "female" mobs into the game, implementing their random movement behavior and the visual indication of their breeding status (green tag for breedable, red for not breedable).
51:56 Reproduction Logic: The reproduction mechanic is implemented, spawning new "forest mob" entities upon player collision with a breedable female mob. The population growth rate also increases with each breeding event.
1:27:57 Population and Timer: Cho implements the population counter, rendering it as text on screen. A timer is added, limiting gameplay to 5 minutes, and a mechanism for resetting the timer upon starting a new game is introduced.
2:09:02 Day/Night Cycle: Cho implements the day/night cycle, using a brightness variable to adjust the overall scene lighting. A dynamic brightness delta ensures a gradual transition between day and night.
2:28:04 Torch Lighting: Lighting effects from torch tiles are implemented, using a "render light" function to brighten surrounding tiles. A persistent lighting bug from the original Java version is initially replicated.
2:51:15 Debugging Lighting: Cho analyzes the lighting bug, discovering the issue stems from not selecting the closest light source for brightness calculation. He corrects the logic to find the nearest torch tile for accurate light attenuation.
3:08:12 Gameplay Testing: The implemented features are tested, showcasing the working day/night cycle, improved lighting effects, and core gameplay mechanics. Cho achieves a high score of over 4 billion, demonstrating the use of a 64-bit unsigned integer for population tracking.
6:07:00 Shipping Preparations: Cho adds a window icon, sets the executable name, prepares a release build, and writes a basic readme file for distribution.
6:58:25 Static Linking Issue: Initial attempts to distribute the game encounter issues with missing DLLs. Cho resolves this by enabling static linking for required libraries.
7:05:41 Project Conclusion: The final version of the game is successfully built and published on itch.io. Cho concludes the stream with a postmortem, highlighting his satisfaction with Raylib and CLion, and reflecting on the overall development process.