|
2701
|
My first slack bot! by @nandanjai69 | Stardance
|
nandanjai69
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @nandanjai69 | Stard Title: My first slack bot! by @nandanjai69 | Stardance...
|
1792677079.630324
|
1793281879.630324
|
|
2702
|
My awesome macropad! by @SamSam | Stardance
|
SamSam
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @SamSam | Stardance
|
1792651645.9874532
|
1793256445.9874532
|
|
2703
|
Project Orion Animatronic by @jaxonparnell | Stard Project Orion Animatronic by @jaxonparnell | Stardance...
|
jaxonparnell
|
0
|
7.96
|
0
|
[]
|
[{"post_id": 3090, "ts": "2026 [{"post_id": 3090, "ts": "2026-06-06T00:02:28Z", "hours": 1.585, "text": "Devlog 2.5? Among a few other tweaks and stuff I have designed a potentially working motor-lead screw coupling. I will keep you guys updated if it works. Now I just have to print most of the parts"}, {"post_id": 1336, "ts": "2026-06-03T08:51:31Z", "hours": 3.8975, "text": "Project Orion Animatronic Devlog #2 Hello guys, I have spent a few more hours on my project orion animatronic. First I modelled the engine/shock absorber part of the build. The shock absorber moves up and down through a lead screw and Nema 17 stepper motor. The stock absorber has 2 stages. The first one uses springs that are meant to compress and the second, slides up and down through tubes. I also added a plate so the marble chamber stays still. Aswell it holds the command pod, which is heavily inspired by kerbal space program (I also made my own custom parachute, im not sure if i should add functionality to it). In total so far, this built is 0.8 meters tall (80cm/800mm) and about 20 cm wide"}, {"post_id": 1063, "ts": "2026-06-02T21:24:09Z", "hours": 2.4728, "text": "Project Orion Animatronic Devlog #1 2/6/2026 Created a mechanism that loads marbles into a chamber and drops them through a hole similar to that of a revolver gun. Currently my mechanism fits 4 fittings that act as magazines, these sit on a platform that rotates around a platform underneath. I mis calculated the size of the fittings, so now im reprinting a platform with much bigger magazine slots."}]...
|
Title: Project Orion Animatronic by @jaxonparnell Title: Project Orion Animatronic by @jaxonparnell | Stardance
Devlogs:
Project Orion Animatronic Devlog #1 2/6/2026 Created a mechanism that loads marbles into a chamber and drops them through a hole similar to that of a revolver gun. Currently my mechanism fits 4 fittings that act as magazines, these sit on a platform that rotates around a platform underneath. I mis calculated the size of the fittings, so now im reprinting a platform with much bigger magazine slots.
Project Orion Animatronic Devlog #2 Hello guys, I have spent a few more hours on my project orion animatronic. First I modelled the engine/shock absorber part of the build. The shock absorber moves up and down through a lead screw and Nema 17 stepper motor. The stock absorber has 2 stages. The first one uses springs that are meant to compress and the second, slides up and down through tubes. I also added a plate so the marble chamber stays still. Aswell it holds the command pod, which is heavily inspired by kerbal space program (I also made my own custom parachute, im not sure if i should add functionality to it). In total so far, this built is 0.8 meters tall (80cm/800mm) and about 20 cm wide
Devlog 2.5? Among a few other tweaks and stuff I have designed a potentially working motor-lead screw coupling. I will keep you guys updated if it works. Now I just have to print most of the parts...
|
1792515288.5564399
|
1793120088.5564399
|
|
2704
|
Motivator by @yeshwanth_purusothaman | Stardance
|
yeshwanth_purusothaman
|
2
|
5.0
|
10
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-05T16:19:11Z", "hours": 3.0, "multiplier": 1.46, "payout": 4, "blessing": "neutral", "text": "I improved my project to include many more features like a breathing exercise.", "repo": "https://github.com/Adax1216/Motivator", "demo": "https://github.com/Adax1216/Motivator/releases/download/v2.0.0/Project.exe"}, {"ship_num": 2, "ts": "2026-06-04T21:20:07Z", "hours": 2.0, "multiplier": 4.1, "payout": 6, "blessing": "neutral", "text": "Motivator is an interactive, command-line Python application designed to act as a digital sounding board and a mood booster. Built with a focus on user well-being and simple interactivity, the project serves a dual purpose: providing a safe, private space to express negative emotions and delivering instant, lighthearted entertainment to brighten the user’s day. Core Architecture & Workflow The application operates on a responsive decision-tree logic based on user input: The Greeting & Assessment: The program initiates a check-in, asking the user to evaluate their current emotional state. The “Good Day” Path (Positive Reinforcement): If the user is feeling well, the script triggers an endless amusement loop. It utilizes Python’s built-in random module to pull dynamic content from a curated array of classic riddles, logic puzzles, and lighthearted jokes—ensuring the user’s good mood is sustained. The “Bad Day” Path (Empathy & Venting): If the user indicates they are having a tough time, the application shifts to an empathetic tone. It opens an interactive text prompt, acting as a private journal where the user can freely type out and vent their frustrations. The Motivation Loop: Once the user finishes venting, the script transitions into a comforting support system, pulling timeless, inspiring quotes from historical figures and philosophers to offer perspective and encouragement.", "repo": "https://github.com/Adax1216/Motivator", "demo": "https://github.com/Adax1216/Motivator/releases/download/v2.0.0/Project.exe"}]...
|
[{"post_id": 10084, "ts": "202 [{"post_id": 10084, "ts": "2026-06-16T17:44:16Z", "hours": 0.3983, "text": "Today i fixed a few issues like fixing my github and making a better executable. the Code is now kinda like an app."}, {"post_id": 3899, "ts": "2026-06-07T00:22:26Z", "hours": 1.1864, "text": "Today I worked on building a breathing exercise to be part of my code. I made it so the code makes you do breathing exercises if you chose not to vent out your feelings. I also worked on changing my Github repo and pushing an executable . I didn’t know how to do this so it took me a while, But I figured it out and now it is perfect. I am planning on adding more joke/riddles and quotes to Motivator."}, {"post_id": 3217, "ts": "2026-06-06T01:27:02Z", "hours": 0.5231, "text": "Right Now I am trying to make it so the code waits a few seconds before it says the answer of the joke/riddle. I still haven’t figured out how to do this, I might have to watch some videos on youtube."}, {"post_id": 2970, "ts": "2026-06-05T21:46:57Z", "hours": 0.2836, "text": "I updated my read me. AT first I didn’t know what a read me was as I am new to this so I used AI to make my read me, but now I updated it, I made it completely from scratch."}, {"post_id": 2727, "ts": "2026-06-05T14:06:53Z", "hours": 0.5892, "text": "Today I made the entire project a loop to improve user experience. after user is done with their jokes/riddles/quotes I made it so they can choose to restart the code so they can do it from the beginning."}, {"post_id": 2369, "ts": "2026-06-04T20:29:51Z", "hours": 0.5747, "text": "What I Did Today: Spent some time setting up the core interaction loop for the project. The goal was to make a text-based companion that listens to user input and reacts dynamically. How it Works: The program uses a continuous loop to prompt the user. It converts whatever they type into lowercase so it doesn’t get tripped up by typos or caps, then scans the text for specific triggers like “miserable” or “hungry” to send back a helpful, relevant reply. Next Steps: Looking into expanding the keyword vocabulary and handling unexpected inputs more smoothly! Also if anybody has ideas on what words should leave a customized message pls leave in comments, Thank You!! *"}, {"post_id": 1852, "ts": "2026-06-04T02:02:44Z", "hours": 0.9786, "text": "I didn’t get any ideas but than I was inspired by reading a quote somewhere, I decided to make some code thar randomly says jokes/riddles/quotes , than i realized why not market it as a motivator. I have finished a little code, I am still improving it though."}]...
|
Title: Motivator by @yeshwanth_purusothaman | Star Title: Motivator by @yeshwanth_purusothaman | Stardance
Devlogs:
I didn’t get any ideas but than I was inspired by reading a quote somewhere, I decided to make some code thar randomly says jokes/riddles/quotes , than i realized why not market it as a motivator. I have finished a little code, I am still improving it though.
What I Did Today: Spent some time setting up the core interaction loop for the project. The goal was to make a text-based companion that listens to user input and reacts dynamically. How it Works: The program uses a continuous loop to prompt the user. It converts whatever they type into lowercase so it doesn’t get tripped up by typos or caps, then scans the text for specific triggers like “miserable” or “hungry” to send back a helpful, relevant reply. Next Steps: Looking into expanding the keyword vocabulary and handling unexpected inputs more smoothly! Also if anybody has ideas on what words should leave a customized message pls leave in comments, Thank You!! *
Today I made the entire project a loop to improve user experience. after user is done with their jokes/riddles/quotes I made it so they can choose to restart the code so they can do it from the beginning.
I updated my read me. AT first I didn’t know what a read me was as I am new to this so I used AI to make my read me, but now I updated it, I made it completely from scratch.
Right Now I am trying to make it so the code waits a few seconds before it says the answer of the joke/riddle. I still haven’t figured out how to do this, I might have to watch some videos on youtube.
Today I worked on building a breathing exercise to be part of my code. I made it so the code makes you do breathing exercises if you chose not to vent out your feelings. I also worked on changing my Github repo and pushing an executable . I didn’t know how to do this so it took me a while, But I figured it out and now it is perfect. I am planning on adding more joke/riddles and quotes to Motivator.
Today i fixed a few issues like fixing my github and making a better executable. the Code is now kinda like an app.
Ships:
Motivator is an interactive, command-line Python application designed to act as a digital sounding board and a mood booster. Built with a focus on user well-being and simple interactivity, the project serves a dual purpose: providing a safe, private space to express negative emotions and delivering instant, lighthearted entertainment to brighten the user’s day. Core Architecture & Workflow The application operates on a responsive decision-tree logic based on user input: The Greeting & Assessment: The program initiates a check-in, asking the user to evaluate their current emotional state. The “Good Day” Path (Positive Reinforcement): If the user is feeling well, the script triggers an endless amusement loop. It utilizes Python’s built-in random module to pull dynamic content from a curated array of classic riddles, logic puzzles, and lighthearted jokes—ensuring the user’s good mood is sustained. The “Bad Day” Path (Empathy & Venting): If the user indicates they are having a tough time, the application shifts to an empathetic tone. It opens an interactive text prompt, acting as a private journal where the user can freely type out and vent their frustrations. The Motivation Loop: Once the user finishes venting, the script transitions into a comforting support system, pulling timeless, inspiring quotes from historical figures and philosophers to offer perspective and encouragement.
I improved my project to include many more features like a breathing exercise....
|
1792979414.8943274
|
1793065814.8943274
|
|
2705
|
Untitled project by @bright | Stardance
|
bright
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @bright | Stardance
|
1792529460.6958313
|
1793134260.6958313
|
|
2706
|
My first slack bot! by @Aryan-Shah | Stardance
|
Aryan-Shah
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Aryan-Shah | Starda Title: My first slack bot! by @Aryan-Shah | Stardance...
|
1792612518.5795453
|
1793217318.5795453
|
|
2707
|
Space Rocket Game by @Andrew | Stardance
|
Andrew
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Space Rocket Game by @Andrew | Stardance
|
1792673508.878976
|
1793278308.878976
|
|
2708
|
ebic gaemer space gaem by @natezos07 | Stardance
|
natezos07
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ebic gaemer space gaem by @natezos07 | Star Title: ebic gaemer space gaem by @natezos07 | Stardance...
|
1792518786.2705424
|
1793123586.2705424
|
|
2709
|
Untitled by @Aryan-Shah | Stardance
|
Aryan-Shah
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Aryan-Shah | Stardance
|
1792680777.119794
|
1793285577.119794
|
|
2710
|
Microbit pong by @Brantley | Stardance
|
Brantley
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Microbit pong by @Brantley | Stardance
|
1792742048.0830657
|
1793346848.0830657
|
|
2711
|
Zero-Assist by @tanmay | Stardance
|
tanmay
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Zero-Assist by @tanmay | Stardance
|
1792947057.8999221
|
1793811057.8999221
|
|
2712
|
Stitch by @jomanade | Stardance
|
jomanade
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Stitch by @jomanade | Stardance
|
1792597944.1801903
|
1793202744.1801903
|
|
2713
|
My first slack bot! by @brunohakuzwe | Stardance
|
brunohakuzwe
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @brunohakuzwe | Star Title: My first slack bot! by @brunohakuzwe | Stardance...
|
1792680861.5654163
|
1793285661.5654163
|
|
2714
|
EDC Box by @TyrantLizard76 | Stardance
|
TyrantLizard76
|
0
|
8.28
|
0
|
[]
|
[{"post_id": 51315, "ts": "202 [{"post_id": 51315, "ts": "2026-08-20T21:59:30Z", "hours": 2.1167, "text": "After a very long time, I am back to working on the box. The original version had many flaws with it, including parts not printing correctly and it being way too large. This version cuts out extras and sticks to only a few basic items, and is now smaller in all three dimensions! Hope you enjoy the rendering!!"}, {"post_id": 19189, "ts": "2026-06-30T13:36:06Z", "hours": 1.9214, "text": "It’s been some time, but the box is done!! It has been done, but I got busy with life and other Stardance projects. Hope you enjoy!!!"}, {"post_id": 3933, "ts": "2026-06-07T01:54:49Z", "hours": 0.9389, "text": "EDC Box - Update!! After returning from a 7-hour work shift, I decided to continue working on my mini project. I have not changed much, but I did decide to add a divider for the last main compartment! This does not need to be used or even made, but I have no main use for this area, so I thought that it would be best to add a divider for anyone who would be interested This project does not have much more to it. I have some dimensions to change, and a few cosmetic changes, but that is it for this project. I have some big things planned, so stay tuned for them!"}, {"post_id": 2731, "ts": "2026-06-05T14:18:08Z", "hours": 3.3069, "text": "The EDC Box - A box to hold all of your daily needs! I like to carry a few things to school, but I want it all to be centralized. I had seen people put all of their goods in a small box and thought, “I could probably make that myself.” So that is what brought me to this. A simple box that is about the size of a large phone, so it will fit in most pockets. It opens up to the side as shown below and has room for a stack of U.S. quarters, some cash, a pen, a comb, and extra space for anything else you need. Please watch out for updates and for other future projects. I have some big ones in store."}]...
|
Title: EDC Box by @TyrantLizard76 | Stardance
Dev Title: EDC Box by @TyrantLizard76 | Stardance
Devlogs:
The EDC Box - A box to hold all of your daily needs! I like to carry a few things to school, but I want it all to be centralized. I had seen people put all of their goods in a small box and thought, “I could probably make that myself.” So that is what brought me to this. A simple box that is about the size of a large phone, so it will fit in most pockets. It opens up to the side as shown below and has room for a stack of U.S. quarters, some cash, a pen, a comb, and extra space for anything else you need. Please watch out for updates and for other future projects. I have some big ones in store.
EDC Box - Update!! After returning from a 7-hour work shift, I decided to continue working on my mini project. I have not changed much, but I did decide to add a divider for the last main compartment! This does not need to be used or even made, but I have no main use for this area, so I thought that it would be best to add a divider for anyone who would be interested This project does not have much more to it. I have some dimensions to change, and a few cosmetic changes, but that is it for this project. I have some big things planned, so stay tuned for them!
It’s been some time, but the box is done!! It has been done, but I got busy with life and other Stardance projects. Hope you enjoy!!!
After a very long time, I am back to working on the box. The original version had many flaws with it, including parts not printing correctly and it being way too large. This version cuts out extras and sticks to only a few basic items, and is now smaller in all three dimensions! Hope you enjoy the rendering!!...
|
1792803240.366088
|
1793408040.366088
|
|
2715
|
Macropad first project fr by @Jaden | Stardance
|
Jaden
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Macropad first project fr by @Jaden | Stard Title: Macropad first project fr by @Jaden | Stardance...
|
1792752772.6349554
|
1793357572.6349554
|
|
2716
|
Untitled project by @ttt600161 | Stardance
|
ttt600161
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @ttt600161 | Stardance
|
1792918347.20832
|
1793782347.20832
|
|
2717
|
Voxly by @devlsx | Stardance
|
devlsx
|
0
|
523.94
|
0
|
[]
|
[{"post_id": 49741, "ts": "202 [{"post_id": 49741, "ts": "2026-08-18T17:41:48Z", "hours": 7.5717, "text": "Today, I focused on the menu subsystem, primarily implementing and refining the main menu and inventory screen functionalities. This work is essential for user interaction and enhancing the player experience through intuitive navigation."}, {"post_id": 49029, "ts": "2026-08-17T16:52:34Z", "hours": 8.4061, "text": "Today, I worked primarily on the HUD subsystem, focusing on the implementation of various HUD components and inventory screens. This is crucial for improving user interaction and providing feedback during gameplay"}, {"post_id": 48635, "ts": "2026-08-17T03:21:13Z", "hours": 8.1392, "text": "Today, I focused on enhancing the console subsystem, which is crucial for debugging and player input management. The improvements made today lay the groundwork for a more robust command interface, enabling better interaction with the game engine."}, {"post_id": 47593, "ts": "2026-08-15T16:07:27Z", "hours": 7.4953, "text": "Today I focused on the user interface subsystem, specifically initializing components for the HUD and integrating health and experience mechanics. This work is essential to establish a basis for player feedback and interaction, enhancing overall gameplayability."}, {"post_id": 47305, "ts": "2026-08-15T05:26:32Z", "hours": 8.2014, "text": "Today, I focused on the tools subsystem, particularly the tools registry and experience (XP) management systems. This work is crucial for establishing a structured framework for tool interactions and player progression"}, {"post_id": 46467, "ts": "2026-08-13T18:07:41Z", "hours": 7.835, "text": "Today I focused on the inventory and tools subsystems, specifically enhancing item durability management and transfer mechanisms. These additions are critical for ensuring that tool usage and inventory interactions are coherent and efficient."}, {"post_id": 45764, "ts": "2026-08-12T13:49:08Z", "hours": 3.4153, "text": "Today I focused on the inventory subsystem, specifically initializing and structuring the inventory components. This work is critical for ensuring a robust and functional system for managing player items, which is foundational for gameplay mechanics."}, {"post_id": 45616, "ts": "2026-08-12T07:06:28Z", "hours": 5.5572, "text": "Today I focused on the implementation of the fishing subsystem, which is crucial for adding interactive gameplay elements that enhance player engagement. This work lays the foundation for fishing mechanics, including casting, line management, and loot generation."}, {"post_id": 45119, "ts": "2026-08-11T12:21:18Z", "hours": 5.0722, "text": "This morning’s work focused on implementing mechanics related to fishing, an essential feature for gameplay. The changes address various aspects of the fishing system, including mechanics for enchantments and loot generation."}, {"post_id": 44638, "ts": "2026-08-10T15:15:36Z", "hours": 7.275, "text": "Today, I focused on the enchantment subsystem, establishing the foundational architecture for enchantments and their associated mechanics. This work is critical, as enchantments will enhance player interaction and item customization within the game."}, {"post_id": 44121, "ts": "2026-08-09T18:03:06Z", "hours": 5.5161, "text": "Today, I focused on the effects subsystem and the crafting system to enhance gameplay mechanics and item interactions. These improvements are crucial for player feedback and item management in the game."}, {"post_id": 43832, "ts": "2026-08-09T08:15:49Z", "hours": 6.155, "text": "Today, I focused on the crafting subsystem, establishing foundational components essential for managing crafting recipes and related functionalities. This work is crucial for enabling player interactions with crafting mechanics, which are integral to gameplay progression."}, {"post_id": 43212, "ts": "2026-08-08T10:42:59Z", "hours": 12.7892, "text": "Today, I focused on the building subsystem, which is critical for player interaction and environment manipulation. The work primarily involved finalizing and scaffolding various components of the building mechanics, including previews, placement, and rotation."}, {"post_id": 41484, "ts": "2026-08-05T18:37:03Z", "hours": 7.0583, "text": "Today, I focused on the spawning subsystem, specifically on the initial implementation of the spawnx module and the scaffolding of related systems. This work is essential for managing entity generation and behavior in the voxel environment."}, {"post_id": 40295, "ts": "2026-08-03T18:45:01Z", "hours": 8.5008, "text": "Today, I focused on the spawning subsystem, specifically on the initial implementation of the spawnx module and the scaffolding of related systems. This work is essential for managing entity generation and behavior in the voxel environment."}, {"post_id": 39476, "ts": "2026-08-02T13:26:12Z", "hours": 16.3919, "text": "Today, I focused on the projectile system within the game engine, specifically working on the memory management and foundational structures for spawning and managing projectiles. This work is crucial for optimizing projectile behavior and ensuring efficient resource allocation during gameplay."}, {"post_id": 38063, "ts": "2026-07-31T08:10:43Z", "hours": 8.2386, "text": "Today, I focused on the navigation subsystem, implementing several foundational components essential for pathfinding and AI navigation within the voxel environment. This work is crucial for enabling agents to navigate through the game world effectively."}, {"post_id": 37248, "ts": "2026-07-29T20:14:29Z", "hours": 5.8831, "text": "Today, I focused on the implementation of the mob subsystem, particularly in setting up the foundational structures and behaviors for various mobile entities within the engine. This work is crucial for establishing NPC interactions and their movement dynamics in the game world."}, {"post_id": 36423, "ts": "2026-07-28T15:19:47Z", "hours": 1.5781, "text": "Today, I focused on enhancing the physics subsystem, specifically the entity physics (ephysics) module. This work is essential to establish a robust framework for collision handling, motion integration, and interactions with the environment. ephysics_sweep: Expanded the logic to improve sweep tests for collision detection, ensuring accurate intersection calculations between moving entities and static geometry.ephysics_step: Initiated the implementation of the stepping function, which manages the simulation time step for physics updates, crucial for maintaining consistent behavior across frame rates.ephysics_spatial: Established a spatial partitioning system to optimize collision queries, using an efficient data structure to reduce the number of checks required during each physics update.ephysics_body_from_entity: Completed the function to create physics bodies from game entities, allowing for dynamic interaction based on entity properties and state.ephysics_query_solid_cell: Implemented a query method to check for solid cells within the voxel grid, facilitating accurate collision responses for entities interacting with the voxel environment.ephysics_pushout: Began development on the pushout mechanism, which resolves collisions by adjusting the position of entities to avoid overlaps with solid objects.ephysics_motion_ballistic: Filled in the calculations for ballistic motion, allowing entities to simulate projectile trajectories accurately under the influence of gravity.ephysics_falldmg: Developed functionality to handle fall damage, tying entity physics state to health mechanics based on vertical distance fallen. The physics subsystem is becoming more cohesive with these additions. The next logical step is to finalize the integration of the impulse and fluid simulation components, enhancing interaction realism further."}, {"post_id": 36375, "ts": "2026-07-28T13:29:59Z", "hours": 5.6275, "text": "This morning, I focused on enhancing the physics subsystem, specifically in the area of impulse and motion mechanics. This work is crucial for achieving realistic interactions and responses to forces within the game environment. ephysics_motion_ballistic: Implemented the initial projectile motion calculations, enabling objects to follow a parabolic trajectory under gravity.ephysics_pushout: Started designing the pushout mechanism to resolve overlaps between colliding objects, which will be essential for player movement and interaction.ephysics_impulse: Created a stub for impulse application, setting up the necessary data structures to handle instantaneous force applications on entities.ephysics_falldmg: Completed the fall damage calculation, accounting for the velocity of the entity at impact, which enhances realism in gameplay.ephysics_current: Filled in the functionality for current effects, allowing entities to be influenced by environmental forces, such as water currents. The current state includes foundational motion and interaction mechanics. The next step will involve expanding on impulse handling to ensure comprehensive force interactions across various physics scenarios."}, {"post_id": 36055, "ts": "2026-07-27T22:00:35Z", "hours": 7.0375, "text": "Today’s work focused on the integration of the entity-component-system (ECS) architecture and the initial implementation of the physics subsystem. This is crucial for establishing a robust framework for game object management and collision detection. ephysics_aabb: Implemented the Axis-Aligned Bounding Box (AABB) structure to support collision checks. This provides an efficient way to handle spatial queries.ephysics_broadphase: Developed the broad phase collision detection system. This module identifies potential collisions using AABBs to minimize computational overhead during the narrow phase checks.ephysics_ccd_resolve: Added continuous collision detection resolution to ensure accurate collision handling for fast-moving entities, preventing tunneling issues.ecs_world: Scaffolding for the ECS world management was set up, allowing for the organization and management of entities and components effectively.ecs_types: Established foundational data structures for components, enhancing type safety and access patterns within the ECS framework.ecs_get: Implemented the ecs_get function to retrieve components associated with entities, facilitating component retrieval in a type-safe manner.ecs_sys_collide: Wrote the initial collision system that integrates with the ECS, processing collision events and leveraging the broad phase detection.ecs_stats: Initiated the ECS stats module, which tracks performance metrics and entity counts, vital for optimizing system performance. The current state of the engine now includes a foundational ECS structure with a basic physics engine integrated. The next step involves refining the collision resolution mechanism and expanding the entity management features."}, {"post_id": 35390, "ts": "2026-07-26T19:15:43Z", "hours": 6.2511, "text": "Today, I focused on the development of the Entity-Component-System (ECS) architecture, specifically initializing spatial queries and establishing foundational components for entity management. This work is critical for optimizing game object interactions and enabling efficient systems for rendering and gameplay logic. ecs_spatial: Initiated the module to manage spatial queries for entities, allowing for efficient retrieval of entities based on their spatial positions. This is essential for implementing features like frustum culling and collision detection.ecs_query: Added the initial structure for querying entities based on components. Stubbing out this system lays the groundwork for flexible querying mechanisms essential for game logic processing.ecs_relations: Started the implementation of relational data structures to handle parent-child relationships between entities, which will facilitate a hierarchy for transformations and event propagation.ecs_blob_init: Completed the initialization sequence for ECS blobs, which encapsulate component data for entities, improving memory layout and access patterns while ensuring efficient entity creation and destruction.ecs_prefab: Introduced the prefab system for defining reusable entity templates. This system will streamline the instantiation of common game objects and reduce redundancy in entity creation.ecs_group_refresh: Enhanced the group management system to refresh entity groups based on component changes, optimizing the update cycle for systems relying on dynamic entity states.ecs_events: Implemented an event system to handle notifications between entities and systems, allowing for decoupled interactions and improved modularity.combat_resist, combat_rng, combat_knockback, and combat_log: Started implementing core combat mechanics, including resistance calculations and random number generation for combat outcomes, along with stubbing out logging for combat events. The ECS framework is now more robust, and the next step will be to integrate these components into a cohesive system, ensuring that queries and events operate seamlessly across the game engine."}, {"post_id": 35134, "ts": "2026-07-26T11:39:12Z", "hours": 1.6492, "text": "This morning, I focused on the combat subsystem, implementing new mechanics that enhance player interactions and feedback during combat. These changes are pivotal for establishing a robust gameplay foundation. combat_resist: Implemented a resistance mechanic that determines damage mitigation based on player attributes, allowing for more nuanced combat outcomes.combat_rng: Added a random number generator for damage calculations, introducing variability in combat results to enhance unpredictability and player engagement.combat_knockback: Developed a knockback effect that alters player position upon receiving damage, improving the physicality of combat interactions.combat_log_death_message: Implemented logging functionality to display a message when a player character dies, providing clear feedback for the player on their status.stub out combat_log: Created a basic structure for the combat log system, laying the groundwork for future enhancements in tracking combat events and player actions. Current progress has established essential combat mechanics. The next step will involve integrating these systems into the overall game loop for testing and refinement."}, {"post_id": 34884, "ts": "2026-07-25T23:24:12Z", "hours": 7.8778, "text": "Today, I focused on the combat subsystem, specifically implementing various components necessary for managing health, damage, and character behaviors during combat scenarios. This work is critical for establishing a solid foundation for player interactions and enemy behaviors. Combat System: Implemented combat_health, which tracks and manages health points for entities, including health reduction mechanics and thresholds for death events.Combat System: Added combat_invuln, providing temporary invulnerability states for characters, which allows for the management of damage immunity during specific animations or effects.Combat System: Developed combat_knockback, a mechanic that applies force to characters upon receiving damage, enhancing the feedback of combat interactions.Behavior Tree: Stubbed out the combat_combo, which will facilitate chaining of attacks for characters, setting up a framework for more advanced combat mechanics.Behavior Management: Completed behavior_tree_free to ensure proper memory management of behavior trees, preventing memory leaks during runtime.Behavior Management: Initiated behavior_runner_init, which sets up the initial state for behavior execution, crucial for managing different character actions effectively.Combat System: Implemented combat_dmg_info_get, which retrieves damage information relevant for interaction logic, aiding in the clarity of combat events.Cleanup: Conducted code tidying and minor fixes across the combat module to enhance readability and maintainability. The combat subsystem now has a more cohesive structure with the groundwork laid for complex interactions. The next step will involve fleshing out the behavior tree logic to integrate advanced AI behaviors and attack combos."}, {"post_id": 34137, "ts": "2026-07-24T17:15:39Z", "hours": 8.2794, "text": "Today, I focused on the animation subsystem of the voxl engine, specifically enhancing the animation systems to support skeletal animation and procedural walking behaviors. This work is crucial for implementing character animations that are both dynamic and responsive to gameplay inputs. behavior_leaf: Implemented the behavior_leaf module, establishing a base for behavior trees that allows for more complex AI decision-making processes.behavior_builder: Developed the behavior_builder to construct behavior trees programmatically, centralizing the creation and management of AI behaviors.behavior_act_target_in_reach: Completed the implementation of the behavior_act_target_in_reach, which checks proximity to targets for AI actions, enhancing interaction capabilities.anim_skeleton: Began scaffolding the anim_skeleton module, which will define the structure and hierarchy of skeletal animations, essential for character rigging.anim_rig: Set up the anim_rig, providing the framework for binding animations to skeletal structures, facilitating smooth character movement.animation_procedural_walk: Expanded the animation_procedural_walk to allow for dynamic adjustments based on character speed and terrain, improving realism in character locomotion.anim_controller: Introduced the anim_controller to manage the state and transitions of animations, allowing for layered animation blending and more responsive character behaviors.entity_render: Implemented entity_render functionality, which integrates the rendering of animated entities into the broader scene graph, ensuring visual coherence. The current state of the animation system is foundational but progressing well, with core modules in place for skeletal animation. The next steps will involve refining the blending of animations and integrating more complex animation states."}, {"post_id": 33722, "ts": "2026-07-23T21:05:30Z", "hours": 7.5361, "text": "Today, I focused on implementing the initial stages of the animation and AI subsystems, as well as enhancements to the water rendering pipeline. These components are critical for enhancing the game’s dynamic interactions and visual fidelity. Animation System: Implemented foundational structures for anim_blend. This allows for smooth transitions between different animations, improving character movement fluidity.Entity System: Completed the entity module, enabling proper management of game objects, including their lifecycle and state management, which is essential for gameplay.AI Module: Introduced the pathfind function, allowing entities to navigate the game world effectively. This is a crucial step towards integrating more complex AI behaviors.Water Rendering: Established the water_pass, implementing the water rendering pipeline. This includes setting up reflection and refraction capabilities using a dedicated reflection camera (water_reflcam), enhancing visual realism.Water Effects: Started work on water_wave and water_foam, which will simulate surface interactions and enhance the dynamic appearance of water bodies.AI Updates: Added ai_tick, which will manage updates to AI behaviors each frame, ensuring responsive and engaging NPC interactions. Current progress includes foundational setups for both animation and AI systems, alongside initial water rendering capabilities. The next logical step involves refining the AI behaviors and continuing the development of the water effects to enhance environmental interactions."}, {"post_id": 33113, "ts": "2026-07-22T18:48:49Z", "hours": 7.3406, "text": "Today, I focused on implementing various aspects of the volumetric rendering subsystem. This work is critical for enhancing the visual fidelity of the water rendering and introducing new volumetric effects, which are essential for achieving realistic environmental interactions in the engine. water_reflect: Implemented reflective properties for water surfaces, enhancing the realism of water rendering by calculating reflection vectors based on the viewer’s position and the surface normals.volumetric_programs_use_march: Wired up the volumetric rendering programs to utilize a raymarching approach for rendering volumetric effects, allowing for more complex light interactions within volumes.vol_raymarch: Began development of the raymarching algorithm for volumetric rendering, laying the groundwork for subsequent implementations of effects such as fog and smoke.volumetric_pass_run: Implemented the core function to execute volumetric passes, establishing a pipeline for rendering volumetric effects sequentially within the main render loop.vol_caustics: Initiated the caustics rendering system, which will simulate light patterns created by surface reflections on the volumetric medium, enhancing the visual complexity of water interactions.vol_pass: Scaffolded the volumetric pass structure, defining how different volumetric effects will be processed in the render pipeline.vol_medium: Created an initial implementation of volumetric mediums, allowing the engine to define properties such as density and scattering for various materials. The volumetric rendering subsystem is now more robust and modular, with foundational components in place. The next step is to continue refining the raymarching implementation and integrate the caustics calculations within the rendering pipeline."}, {"post_id": 32804, "ts": "2026-07-22T05:56:26Z", "hours": 3.2358, "text": "Today, I focused on the development of the tonemapping subsystem, which is essential for controlling the luminance and color mapping of rendered scenes to enhance visual fidelity. This work is crucial as it directly affects the output quality of rendered images. volumetric_blur: Scaffolded the vol_blur module to introduce volumetric blur processing. This lays the groundwork for further development of blur algorithms.tonemap: Established the initial framework for tonemapping, including scaffolded modules for tonemap_params, tonemap_grade, and tonemap_curve. This modular approach allows for easy future enhancements and testing.tonemap_selftest: Wired up self-testing capabilities for tonemapping to ensure that changes can be effectively validated. This includes fleshing out the self-test to cover edge cases and expected behavior.tonemap_lut: Implemented a lookup table (LUT) for tonemapping, which will optimize color grading processes. Set up associated functions to support LUT creation and application.tonemap_exposure: Started the implementation of exposure management in tonemapping, including functions to retrieve and adjust exposure levels dynamically.text_layout: Completed the implementation of the text layout system, which will be utilized for rendering debug information and UI elements related to tonemapping.cleanup: Conducted code cleanup across several modules, focusing on reducing technical debt and improving readability. The current state of the tonemapping subsystem is foundational, with several key components scaffolded and initial implementations underway. The next logical step involves further developing the tonemapping algorithms and integrating them into the rendering pipeline to evaluate their impact on scene output."}, {"post_id": 32348, "ts": "2026-07-21T13:39:12Z", "hours": 5.2303, "text": "This morning’s work focused on the tonemapping subsystem, particularly enhancing exposure control and initializing the necessary data structures. These changes are critical for achieving realistic rendering through proper dynamic range management. Tonemap Exposure: Implemented tonemap_exposure to calculate exposure values based on scene luminance, improving how bright areas are rendered.Tonemap Configuration: Added tonemap_config, defining parameters for exposure and curve settings, facilitating easy adjustments and future expansion.Tonemap Curve: Began the implementation of tonemap_curve, establishing a basis for non-linear mapping of color values to enhance dynamic range perception.Text Layout: Completed the text_layout function, which manages text rendering for UI elements, ensuring proper alignment and spacing.Tonemap Debugging: Implemented tonemap_debug_run_split to allow testing of various tonemapping scenarios, aiding in fine-tuning the visual output. Current progress sets a solid foundation for further work on the tonemapping pipeline, with the next steps aimed at refining the tonemap grading process and integrating it into the rendering loop."}, {"post_id": 31649, "ts": "2026-07-20T07:02:35Z", "hours": 8.5392, "text": "Today, I focused on the text rendering subsystem, specifically the development of the text context and text batch systems. This work is foundational for rendering 2D text efficiently, which is crucial for UI elements and in-game text displays. text_ctx: Implemented the initial structure for the text context, which manages the state related to text rendering. This includes setting up memory allocations for text data and glyph information.text_batch: Created a scaffold for the text batch system to handle multiple text draw calls efficiently. This will allow for batching of text rendering operations to minimize state changes.text_atlas: Developed the initial setup for the text atlas, which will store glyph images for rapid access during rendering. This will improve performance by reducing texture binding overhead.text_font: Initialized the text font subsystem to load and manage font data. This includes parsing font files and generating the necessary glyph data.text_glyphdata: Started the implementation of glyph data handling, allowing for precise control over individual characters and their metrics.ssr_settings and ssr_pass: Set up the screen space reflections (SSR) settings and pass, which will enhance the visual fidelity of reflective surfaces in the engine.ssrx_material_unpack: Completed the unpacking of material data for SSR, ensuring that material properties are correctly interpreted during rendering. The text rendering subsystem is now well-structured, and the next step will involve integrating the text rendering into the main rendering pipeline to ensure text is displayed correctly in the game environment."}, {"post_id": 30541, "ts": "2026-07-18T06:21:48Z", "hours": 6.8261, "text": "Today I worked on the implementation of screen space reflections (SSR) and screen space ambient occlusion (SSAO) within the rendering subsystem. These features are vital for enhancing visual fidelity and realism in lighting interactions within the voxel environment. SSR Module: Introduced the ssr_fsquad, which sets up a full-screen quad for executing the SSR shader pass. This establishes a foundation for reflection calculations.SSR Configuration: Created ssr_config scaffolding to manage SSR parameters, allowing for adjustable settings such as reflection intensity and roughness.SSR Depth Setup: Implemented the ssr_depth, which captures depth information necessary for accurate reflection rendering. This enables proper occlusion of reflections based on scene depth.SSR Debugging: Set up ssr_debug to visualize reflection calculations during development, aiding in the identification of rendering artifacts or inaccuracies.SSAO Configuration: Initialized ssao_settings to provide user-adjustable controls over ambient occlusion effects, including radius and intensity.SSAO Pass Setup: Established the ssao_pass, which integrates the SSAO calculations into the render pipeline, ensuring it runs alongside other post-processing effects.SSAO Sampling: Started working on ssao_sample, which defines the sampling strategy for ambient occlusion, leveraging a kernel to calculate occlusion values based on neighboring pixels.Kernel Statistics: Set up ssao_kernel_stats to track and debug the parameters of the SSAO kernel, which will assist in optimizing performance and quality. The rendering subsystem now has a foundational implementation for both SSR and SSAO, with key components in place. The next steps will involve refining the sampling methods for SSAO and integrating the blurring effect for the final output to enhance visual quality."}, {"post_id": 29650, "ts": "2026-07-16T18:32:56Z", "hours": 6.8736, "text": "Today, I focused on enhancing the rendering subsystem with the implementation of Screen Space Ambient Occlusion (SSAO). This feature is critical for improving scene depth and realism by simulating how light interacts with surfaces. SSAO Module: Implemented the foundational SSAO computation logic in ssao_compute, which calculates ambient occlusion based on depth and normal maps to enhance shading realism.SSAO Debugging: Developed ssao_debug to visualize SSAO outputs, allowing for quick verification of occlusion values and aiding in fine-tuning the algorithm.SSAO Blur: Completed the SSAO blur process in ssao_blur, which smooths the occlusion map to reduce artifacts and achieve a more visually appealing result. The blur uses a separable Gaussian filter for performance efficiency.Skybox Renderer: Progressed on the skybox rendering system by fleshing out skyb_renderer_upload_dome and skyb_dome_vertex, which define the dome geometry and texture uploads for the skybox, ensuring proper visual integration with the ambient occlusion effects.Skybox Palette and Gradient: Initiated the scaffolding for skyb_palette and set up skyb_gradient, enabling gradient-based skybox coloring to enhance atmospheric effects in conjunction with SSAO. The SSAO implementation is now functional, with debug features in place to assess its performance and visual fidelity. The next step will involve further optimizing the SSAO calculations and integrating them seamlessly into the main rendering pipeline."}, {"post_id": 29009, "ts": "2026-07-15T17:30:42Z", "hours": 7.0656, "text": "Today I focused on the lighting subsystem, specifically implementing shadow mapping techniques and enhancing the atmospheric rendering system. These improvements are crucial for achieving realistic lighting and depth effects in the voxel environment. shadow_map: Implemented the shadow mapping algorithm, which includes creating a depth texture to store the distance from the light source to the nearest surface, enabling more realistic shadows.shadow_pcf: Developed percentage-closer filtering (PCF) for shadows to soften the edges of the shadow map, increasing visual fidelity. This involved setting up the filtering process within the shader pipeline.shadow_split: Introduced the shadow split technique to improve shadow rendering across varying depths. This includes calculating split distances based on the camera’s frustum to reduce artifacts.shadow_matrix: Added a shadow matrix computation to transform world coordinates into shadow map space, ensuring correct shadow projection during rendering.skyb: Began implementing the skybox atmospheric effects, specifically the skyb_atmosphere_clear_color and skyb_billboard. This includes color adjustments for clearer skies and setting up billboards for celestial bodies.shadow_stabilize: Stubbed out a shadow stabilization technique to reduce flickering and aliasing in shadow rendering, which will be fleshed out in future commits.code maintenance: Conducted minor cleanups and cosmetic tweaks across multiple files for better readability and organization, including renaming functions for clarity. The current state of the shadow rendering system is functional with basic shadow mapping and initial atmospheric effects implemented. The next step will be to refine the shadow stabilization method and continue developing the full atmospheric rendering features."}, {"post_id": 28394, "ts": "2026-07-14T17:00:18Z", "hours": 6.8947, "text": "Today, I focused on the graphics subsystem, specifically enhancing the shader management and shadow rendering capabilities. This work is essential for achieving more sophisticated visual effects and better performance in the rendering pipeline. Shader Management Module: Implemented shaderman_set_hot_reload, enabling dynamic shader reloading during runtime to facilitate rapid iteration without restarting the engine.Shader Compilation: Completed the shader_compile function, which compiles shader code into GPU executable format, improving the setup time for rendering.Shader Initialization: Added shadow_init, which initializes parameters related to shadow rendering, ensuring proper setup before rendering occurs.Shader Stage Handling: Filled in the shader_stage structure to manage different stages of shader processing, which allows for cleaner organization of shader tasks.Active Uniforms Retrieval: Finalized shaderman_gl_active_uniforms, which retrieves and stores active uniform variables from shaders, enhancing the shader’s interaction with the rendering system.Debugging Support: Set up shader_debug, providing hooks for debugging shader issues during development, which improves the ease of identifying and resolving shader-related problems.Bloom Effect: Added a basic implementation of bloom rendering through bloom_resize and the bloom module, initiating post-processing effects to enhance scene brightness. The shader management system is now more robust, allowing for dynamic updates and improved shader handling. The next step will involve integrating the shadow rendering into the main rendering loop to evaluate performance and visual fidelity."}, {"post_id": 27739, "ts": "2026-07-13T15:47:05Z", "hours": 2.3244, "text": "Today I focused on the particle system and initial components for voxel chunk mesh building, which are critical for enhancing visual effects and optimizing rendering performance in the engine. Particle System: Implemented particle_rng, which initializes a random number generator for particle behavior, crucial for generating varied particle effects.Particle Emission: Completed the particles_rng_in_cone function, allowing for particles to be emitted in a cone-shaped area, enhancing the realism of effects like explosions or smoke.Particle Pool Management: Developed particles_pool_clear, which efficiently resets the particle pool between frames, minimizing memory usage and helping maintain performance during high-load scenarios.Vertex Packing: Set up vertex_pack, which organizes vertex data into a compact format suitable for GPU processing, improving data transfer efficiency and reducing memory bandwidth usage.Chunk Mesh Building: Started the meshbuild_chunk implementation to facilitate efficient chunk rendering, laying the groundwork for further optimizations like greedy meshing.Emitter System: Added a basic emitter class to manage particle emission attributes, enabling future extensibility for different particle effects and behaviors.Cleanup and Organization: Conducted minor cleanups and formatting across various files, ensuring code maintainability and consistency. The particle system is now more robust, and the chunk building process has a foundational structure in place. The next step involves completing the mesh building logic and integrating more complex particle behaviors using the emitter system."}, {"post_id": 27651, "ts": "2026-07-13T12:42:19Z", "hours": 4.5136, "text": "This morning’s work focused on enhancing the rendering pipeline and starting the implementation of the particle emitter system. These improvements are crucial for visual fidelity and performance in voxel rendering. clamp01: Implemented a function to constrain values between 0 and 1, ensuring proper normalization for graphical calculations.curves: Began the implementation of curve interpolation methods for smoother transitions in animations and particle emissions.gpu_buffer: Added a structured buffer for GPU memory allocation, enhancing the efficiency of data transfer between CPU and GPU for rendering tasks.emitter: Developed the foundational structure for the particle emitter, which will support dynamic visual effects in the game environment.meshbuild_chunk: Completed the initial version of the chunk mesh building algorithm, optimizing how voxel data is converted into renderable geometry. Current progress sets the stage for integrating the particle system fully and refining the mesh building process. The next logical step will be to finalize the emitter’s functionality and connect it to the rendering pipeline."}, {"post_id": 27194, "ts": "2026-07-12T15:15:38Z", "hours": 0.7075, "text": "Today I focused on the mesh building subsystem, which is critical for generating and managing the geometry of voxel chunks in real-time. This work is foundational for optimizing rendering and ensuring efficient memory usage. MeshBuild Module: Started the implementation of the meshbuild system, establishing the groundwork for efficient chunk geometry generation. This includes setting up the initial data structures for mesh management.Snapshot System: Implemented the mb_snapshot functionality, which allows for capturing the state of the mesh at a given time. This is crucial for optimizing updates and rendering by reducing unnecessary computations.Statistics Tracking: Scaffolding for mb_stats was added to track performance metrics related to mesh generation, providing insights into the efficiency of the rendering pipeline.Block Properties: Introduced initial definitions for block_shape and face_dir, setting up the essential parameters required for defining voxel geometry.Terrain Type Management: Added the lt_terrain module to manage different terrain types within the game, enabling diverse environments and interaction mechanics.Bounds Checking: Fixed a bounds check issue during initialization, ensuring that the allocation of voxel data structures remains within valid memory limits, thus preventing potential crashes or corruption. Current state reflects a significant advancement in the mesh building architecture, with basic functionality established. The next steps will involve fleshing out the mesh generation algorithms and integrating them with the rendering pipeline for further testing."}, {"post_id": 27141, "ts": "2026-07-12T12:58:04Z", "hours": 6.1558, "text": "This morning, I focused on establishing the foundational components for the voxel engine’s module system, which is crucial for modularizing functionality and enhancing maintainability. I initiated the groundwork for both configuration and debugging systems. mb_config: Started the configuration module to manage engine settings, establishing a basic structure for loading and saving configurations.mb_debug: Added the debugging module, scaffolding the structure to allow for runtime diagnostics and performance monitoring.lt_stats_format: Implemented a format for terrain statistics, ensuring that performance metrics can be effectively logged and analyzed.block_shape: Began work on the block shape definitions, laying the groundwork for specifying voxel dimensions and orientations.cross_mesh: Stubbed out the cross-mesh functionality, preparing for future implementation of cross-sectional rendering techniques. The foundational modules are now in place, and the next step will involve fleshing out the configuration and debugging features to support real-time adjustments and diagnostics."}, {"post_id": 26593, "ts": "2026-07-11T14:45:10Z", "hours": 8.4497, "text": "Today, I focused on the implementation of the instancing subsystem within the rendering pipeline. This work is critical for optimizing draw calls and managing multiple instances of meshes efficiently, which will enhance rendering performance in voxel environments. lt_mesh: Implemented the initial mesh structure to accommodate instance data. This includes setting up vertex attributes for instance transformations.lt_grid: Created an initial grid structure to manage spatial organization of instances, allowing for efficient frustum culling.lt_gpu: Stubbed out the GPU interface to handle instanced rendering commands, establishing a foundation for future integration.lt_cache_init: Implemented the cache initialization routine for storing instance data, which reduces overhead during rendering.instancing_stats: Completed the stats tracking for instanced objects, capturing performance metrics that can be analyzed for optimization.instancing_transform_bounds: Finished the bounding volume calculations for instances, crucial for frustum culling to avoid unnecessary rendering.frustum_batch: Scaffolded the frustum batching system to group instances based on visibility, optimizing the rendering process and minimizing state changes.Cleanup: Executed minor cleanups across multiple modules to enhance code readability and maintainability. The instancing subsystem is now in a functional state, with core structures established and initial implementations completed. The next step will involve refining the GPU integration for instanced rendering and testing performance metrics in various scenarios."}, {"post_id": 25478, "ts": "2026-07-09T19:31:03Z", "hours": 7.7797, "text": "Today, I focused on enhancing the rendering pipeline, specifically the implementation of the g-buffer and draw call management. This work is critical for achieving efficient deferred rendering, which is essential for handling complex lighting scenarios in the engine. Rendering System: Implemented draw_indirect, allowing for batch processing of draw commands without CPU intervention, which reduces overhead and improves performance during frame rendering.Batch Management: Stubbed out batch functionality to prepare for more efficient draw call aggregation, laying the groundwork for optimizing the number of draw calls issued per frame.G-buffer Implementation: Completed the gbuffer_shade, gbuffer_normal, and gbuffer_material modules, each responsible for storing necessary per-pixel data for deferred shading, enhancing the ability to handle multiple light sources effectively.G-buffer Lighting: Initiated the gbuffer_light and gbuffer_brdf_eval_light components, which are responsible for evaluating lighting based on stored g-buffer data and enabling realistic material responses to light.Edge Case Handling: Fixed an edge case in gbuffer_emit_from_chunk, ensuring correct handling when emitting light from chunk edges, which aids in visual consistency across chunk borders.Utility Functions: Implemented clampf for clamping float values, which will be used in various calculations across the rendering pipeline to maintain valid ranges for rendering parameters.Texture Management: Added make_tex to streamline texture creation, facilitating easier integration of textures into the rendering pipeline. The rendering pipeline has significantly improved with these updates, and the next step will be to integrate the batching process fully and assess the overall performance impact in various rendering scenarios."}, {"post_id": 24172, "ts": "2026-07-07T15:58:24Z", "hours": 7.6097, "text": "Today, I focused on the integration and initial implementation of the G-buffer system and Fast Approximate Anti-Aliasing (FXAA) in the rendering pipeline. This work is crucial for improving the visual fidelity and performance of the rendering process. G-buffer Module: Implemented the initial G-buffer structure, facilitating the storage of geometry attributes for deferred rendering. This involves creating texture storage for position, normal, and albedo data.G-buffer Initialization: Developed the gbuffer_init function to allocate and configure the G-buffer textures, ensuring proper setup for rendering operations.FXAA Implementation: Added the core FXAA functionality, including fxaa_main and fxaa_settings_apply, allowing for real-time anti-aliasing effects to smooth out jagged edges in rendered frames.Self-Test for FXAA: Completed the fxaa_selftest implementation to validate the correctness of the FXAA algorithm, ensuring that edge cases are handled and results are consistent across different scenarios.Sampling and Quality: Finished the grid_sample function to enhance texture sampling for FXAA and initiated fxaa_quality, laying the groundwork for different quality settings in the anti-aliasing process.Historical Data Management: Implemented fxaa_history to maintain previous frame data necessary for temporal smoothing in the FXAA algorithm.Stubs for Future Work: Created stubs for fxaa_blit and fxaa_debug, preparing the framework for future enhancements and debugging capabilities. The rendering engine now has foundational G-buffer and FXAA support, significantly advancing the visual quality of the output. The next steps will involve refining the FXAA implementation and integrating the remaining stub functions to complete the"}, {"post_id": 23624, "ts": "2026-07-06T18:05:07Z", "hours": 7.5222, "text": "Today, I focused on implementing the depth of field (DoF) post-processing effect within the rendering pipeline. This is a critical enhancement for visual fidelity, as it allows for more realistic focus transitions in the scene. Depth of Field (dof_programs): Implemented dof_programs_unload, which properly releases shaders and associated resources when no longer needed, optimizing memory usage.Depth of Field (dof_pass): Began the development of the dof_pass, which will serve as the new rendering stage to handle depth of field computations, ensuring it integrates smoothly with the existing render pipeline.Depth of Field (dof_gather): Completed the dof_gather function, which samples the scene to collect color and depth information needed for the DoF effect, with attention to efficient texture access patterns.Depth of Field (dof_quad): Started implementing the dof_quad, which will represent the screen-space quad used for applying the DoF effect in a fragment shader.Depth of Field (dof_focus): Added functionality for dof_focus, allowing users to set the focal distance dynamically, enhancing control over the DoF effect.Depth of Field (dof_coc): Initiated the dof_coc (circle of confusion) calculations, which are essential for determining which parts of the scene should appear in focus versus out of focus based on their distance from the camera.Code Cleanup: Performed various minor cleanups and formatting changes throughout the modules to improve code readability and maintainability. The depth of field implementation is progressing well, with foundational components in place. The next step will involve integrating the dof_coc calculations into the rendering pipeline and refining the dof_pass to ensure correct visual output."}, {"post_id": 22929, "ts": "2026-07-05T15:56:09Z", "hours": 8.4486, "text": "Today, I focused on implementing the decals subsystem, which is critical for enhancing visual fidelity by allowing textured decals to be rendered on surfaces in the voxel environment. This will significantly improve the realism of interactions and environmental details. Decals Types: Established the decals_types module to define various decal types and their properties, facilitating extensibility for future decal features.Decals Pass: Implemented the decals_pass, which organizes the rendering of decals in the pipeline. This pass is integrated into the main render loop to ensure decals are drawn after opaque geometry.GLSL Shader Setup: Began the decals_glsl to handle decal shaders, ensuring that the shaders can accommodate blending and fading effects, which are crucial for realistic rendering.Decal Atlas: Developed the decals_atlas, allowing for efficient texture sampling by consolidating multiple decal textures into a single texture atlas, reducing state changes during rendering.Decals Fade and Blend: Added functionality for decals_fade and decals_blend, implementing visual effects that allow decals to gradually appear or disappear and blend with underlying textures, enhancing realism.Debug Drawing: Finished the debugdraw_timed and fleshed out debugdraw_flush_labels, providing tools for visual debugging of decals, which will assist in ensuring correct placements and transitions. The decals subsystem is now partially operational, with foundational components in place for rendering. The next step will involve completing the decals_config and integrating it fully into the scene management system."}, {"post_id": 22346, "ts": "2026-07-04T19:31:24Z", "hours": 7.6814, "text": "Today, I focused on the debug rendering subsystem, which is crucial for visualizing various components of the engine during development. This work will facilitate easier debugging of spatial relationships, frustum culling, and occlusion handling. debugdraw: Established the foundational structure for the debug drawing system, enabling visualization of shapes and paths in the rendering pipeline.debugdraw_helpers: Completed the implementation of helper functions to streamline the rendering of basic shapes (lines, spheres, etc.), improving the clarity of debug visuals.debugdraw_path: Added functionality to visualize paths, which aids in debugging movement and AI-related features.debugdraw_frustum: Implemented frustum visualization, allowing for the assessment of what is currently visible in the scene, thereby enhancing frustum culling debugging.frustum_cull: Integrated frustum culling logic to improve performance by eliminating objects outside the view, with bounds checks refined for edge cases.sphere_cull: Developed a sphere-based culling mechanism to efficiently determine visibility of spherical objects, optimizing rendering performance.cull_occlusion_run: Fixed a bounds check issue within the occlusion culling routine, ensuring accurate visibility determinations.chunk_dist_sq: Implemented a distance-squared function for chunks, which will be useful in sorting and rendering optimization. The debug rendering system is now significantly more functional, laying the groundwork for more complex visualizations. The next step will involve integrating these debug features with the main rendering loop to ensure they can be toggled during runtime for effective debugging."}, {"post_id": 21610, "ts": "2026-07-03T17:28:02Z", "hours": 8.0522, "text": "Today’s work focused primarily on the implementation of the bloom post-processing system, specifically the initial setup and functionality of the bloom2 module. This subsystem is essential for enhancing the visual quality of the rendered scene by simulating the effect of light bleeding and softening bright areas. bloom2_pass: Implemented the initial pass for the bloom effect, which includes setting up the framebuffer and rendering targets to capture bright sections of the scene.bloom2_target_bind: Defined the binding process for the bloom render target, ensuring that the correct framebuffers are activated during the bloom rendering sequence.bloom2_blur_v: Stubbed out the vertical blur function, which will be responsible for processing the intermediate bloom render results, preparing for the subsequent blur pass.bloom2_gauss_eval: Added an evaluation function for Gaussian weights, which will be used in the blur calculations to create a smooth transition effect.bloom2_quad: Set up a quad for rendering the bloom effect onto the screen, which serves as the final output display of the bloom post-processing.bloom2_params: Began the definition of parameters for the bloom effect, including thresholds for bright areas and intensity settings, allowing for future adjustments.upload_taps: Implemented the upload process for the sampling taps used in the Gaussian blur, ensuring efficient access to texture samples during rendering. The bloom post-processing pipeline is now in its early stages, with the foundational components established. The next step will be to flesh out the blur functionality and integrate it with the bloom pass for a complete visual effect."}, {"post_id": 20950, "ts": "2026-07-02T18:01:03Z", "hours": 1.6128, "text": "Today, I focused on the initialization and setup of various subsystems related to rendering and environmental simulation within the voxl engine. This work is foundational, as it establishes the groundwork for rendering techniques and weather simulation mechanics. OpenGL Module: Implemented initial OpenGL context creation to prepare for rendering. This included setting up basic state configurations for future draw calls.Camera System: Added a camera system to manage view transformations. The camera setup allows for dynamic movement and orientation adjustments, facilitating a clean separation of view logic from game entities.Chunk Queue: Began the implementation of a chunk queue to handle asynchronous chunk loading. This structure will optimize memory usage and improve performance by deferring loading operations until necessary.Ambient Occlusion: Scaffolded the ambient occlusion module, allowing for more realistic lighting interactions. Initial ambient occlusion calculations were introduced, which will be refined in subsequent iterations.Weather Simulation: Implemented core components of the weather simulation system, including the weathersim_front and weathersim_front_pool_init functions. This lays the foundation for managing weather states and transitions effectively. The current state of the engine includes basic rendering capabilities and preliminary environmental simulations. The next step involves refining the ambient occlusion calculations and expanding the weather simulation features to include precipitation dynamics."}, {"post_id": 20714, "ts": "2026-07-02T11:45:25Z", "hours": 4.8128, "text": "Today’s work focused primarily on foundational systems related to environmental effects and rendering, specifically fog, camera setup, and ambient occlusion. These components are crucial for enhancing the visual quality and atmospheric realism of the engine. Camera Module: Implemented a basic camera system that supports perspective projection, allowing for a flexible viewpoint in the 3D environment.Fog Implementation: Began initial work on fog rendering, laying out a basic framework to integrate atmospheric effects into the scene, improving depth perception.Chunk Queue System: Established a chunk_queue to manage chunk updates and rendering efficiently, which is vital for optimizing visibility and performance.Ambient Occlusion: Started scaffolding the ambient occlusion module to simulate soft shadows and improve lighting realism, enhancing the overall visual fidelity.Weather Simulation: Developed foundational components for weather simulation, including the weathersim_report and weathersim_front, which will facilitate dynamic environmental changes. Current progress sets a strong base for further development of visual effects. The next steps will involve completing the ambient occlusion implementation and integrating fog into the rendering pipeline."}, {"post_id": 19452, "ts": "2026-06-30T19:35:54Z", "hours": 10.0364, "text": "Weather’s looking a lot more interesting in voxly! Today, I kicked off the weather simulation with some solid progress on precipitation and the foundations for advecting particles through the environment. The rain isn’t just for show, it’s got a role to play now. Also worked out the tree generation system, which means they will have more than just empty ground to stand on."}, {"post_id": 18583, "ts": "2026-06-29T19:32:20Z", "hours": 5.2333, "text": "Just when I thought I was digging in the trenches, the trees started working! Finally got the tree generation demo up and running, which has been a bit of a puzzle piece I’ve been working on for a while. Cleared out a bunch of clutter in the codebase too. It feels good to put some roots down in this project, literally and figuratively."}, {"post_id": 17520, "ts": "2026-06-28T10:25:48Z", "hours": 3.1486, "text": "The puzzle pieces are finally coming together with the struct generators. I wrestled with structgen_buffer_init today. Thats such a simple name for a surprisingly deep rabbit hole, but getting it wired up felt like unlocking a secret door. A few cosmetic tweaks and renamings later and im already done. Onward to strongholds!"}, {"post_id": 17420, "ts": "2026-06-28T05:55:16Z", "hours": 6.5364, "text": "Just wrapped up the stronghold_rng_next implementation, and let me tell you, it feels good to finally have that randomness flowing where it needs to! The stronghold features are coming together with stronghold_query also in the mix. Sure, there were some cosmetic tweaks and minor cleanups along the way, but every small piece is building towards that epic world."}, {"post_id": 15849, "ts": "2026-06-25T19:27:56Z", "hours": 10.1414, "text": "Building a stronghold feels a bit like crafting a slice of medieval magic. Today, I wrangled a bunch of components into our stronghold system with corridors, boxes, and initial buffers. Not to mention, I tamed the chaotic skies with some weather initialization."}, {"post_id": 15260, "ts": "2026-06-24T19:35:56Z", "hours": 9.715, "text": "Finally got the rivers flowing with some real depth implemented everything from types to flow mechanics. It’s like watching the world come alive; every little tweak adds to that immersion. And yes, the moon now has phases that actually reflect in the sky."}, {"post_id": 14620, "ts": "2026-06-23T20:02:56Z", "hours": 10.0336, "text": "Cracked open the vault of regions today, and finally wrangled the region_codec into shape! It feels good to see that component take form after a few iterations. Took the time to clean up and scaffold the cache while getting those chunks to read smoothly. A few cosmetic tweaks here and there, but hey, every small fix adds to the whole."}, {"post_id": 13891, "ts": "2026-06-22T19:31:53Z", "hours": 9.9464, "text": "Diving into the wild world of noise generation today, specifically ravines. After a good chunk of head-scratching, I’ve got the initial ravine noise and debug systems wired up, laying the groundwork for some seriously dramatic landscapes."}, {"post_id": 13287, "ts": "2026-06-21T19:11:03Z", "hours": 9.8797, "text": "Nothing quite like the rush of finally tackling those mineshaft features. After all the planning, I can now see the maze taking shape and the ore types just begging to be mined. I spent a good chunk of time cleaning up leaks and renaming stuff for clarity. The mineshaft feels alive and thats really cool and important"}, {"post_id": 12820, "ts": "2026-06-21T00:02:53Z", "hours": 10.0989, "text": "After a marathon of coding, I finally got the loader queue working. It’s a joy to see all those little pieces, like logic grids and queues, slot together. There’s something satisfying about renaming for clarity. Its kinda like cleaning up a messy drawer and finding all the tools you forgot you had. Now, on to scaffolding the loader worker."}, {"post_id": 12227, "ts": "2026-06-19T23:05:16Z", "hours": 9.6194, "text": ". After wrangling with a mountain of renames and tidying up the loader, I finally got the light properties implemented and running through the pipeline. The loader’s debug functions are on the horizon too, which means I’ll be able to dive deep into those shadows and highlights soon."}, {"post_id": 11490, "ts": "2026-06-18T19:31:07Z", "hours": 10.0503, "text": "Finally cracked the heightmap samples, they’re now alive with weirdness! It’s a subtle but game-changing layer to the terrain; I can already picture the landscapes taking shape. Spent way too long wrangling typos and cleaning up the code, but hey, it’s all part of the grind. The scaffolding for some tree and structure features is in place, so we’re on the wya to success"}, {"post_id": 10838, "ts": "2026-06-17T19:40:36Z", "hours": 9.6964, "text": "Fluid dynamics are finally bubbling to the surface! I spent the day diving into the guts of the voxel engine, fleshing out the fluid simulation code. I’ve carved out the groundwork for water spreading and even kicked off lava behavior."}, {"post_id": 10154, "ts": "2026-06-16T19:26:47Z", "hours": 10.0178, "text": "So I dove into the farming system today, and let me tell you, crafting the mechanics feels like planting seeds in soil. I even tackled some erosion dynamics, which is just a fancy way of saying I’m making dirt work for me."}, {"post_id": 9412, "ts": "2026-06-15T19:22:42Z", "hours": 10.0094, "text": "Experimenting with erosion algorithms has been a wild ride today. I finally got the thermal erosion system wired up and running in tandem with the various types. Implementing that flux function was a puzzle, but seeing the terrain shift under different conditions was totally worth it."}, {"post_id": 8875, "ts": "2026-06-14T19:35:32Z", "hours": 9.8747, "text": "After a long grind, I finally got cave generation fleshed out and worms and ravines are slithering their way into the world! It’s all about those small victories right now."}, {"post_id": 8305, "ts": "2026-06-13T20:09:05Z", "hours": 9.8025, "text": "Finally wrangled the biomes into something that feels alive. Implemented the blending and height parameters, and even dived into the noise generation getting the worldgen to feel organic is like layering a sweet melody over a rough track. There’s still a ton of work to do, but it’s exciting to see the terrain start to take shape, complete with the first ore deposits peeking through. This is one step closer to that voxel heaven"}, {"post_id": 7629, "ts": "2026-06-12T19:06:38Z", "hours": 9.9367, "text": "There’s something satisfying about watching light dance across a voxel landscape. Today, I wired up the lighting for chunk re-computation, finally getting that glowy ambience just right. The little wins all add up, and each tweak brings me closer to my vision."}, {"post_id": 7010, "ts": "2026-06-11T19:21:18Z", "hours": 11.1639, "text": "Cracked the code for serialization today. Finally got ‘serialize_save’ up and running, which means I can actually save my voxel worlds without losing my work to the void of digital oblivion. 🥳 The octree stuff is coming together too. wired up the raycasting and node setup, making progress on spatial queries."}, {"post_id": 6315, "ts": "2026-06-10T17:04:58Z", "hours": 9.0033, "text": "Octrees are now officially part of the voxl family! After wrestling with a JSON function, I finally got the octree’s initial structure up and running. Implementing the octree_collect_pairs was a puzzle, but seeing it all click is worth it. Still a ways to go, but today feels like a solid step toward the final goal!"}, {"post_id": 5736, "ts": "2026-06-09T17:12:29Z", "hours": 8.4711, "text": "Finally got the job system framework working! The scaffolding is up, and I’ve wired in the parallel execution and fence management. It’s like building a complicated LEGO set and each piece finally feels like it fkts."}, {"post_id": 5033, "ts": "2026-06-08T18:07:41Z", "hours": 16.8914, "text": "Finally managed to defeat bounding volume hierarchy (BVH) . I’ve wrapped up the raycasting and query functions. Tidied up some code, renamed a few things for clarity, and even kicked off a basic profiler. The structure is starting to solidify, and I can almost taste the optimization magic."}, {"post_id": 4444, "ts": "2026-06-07T19:27:18Z", "hours": 1.6194, "text": "made some good progress today, finally started on the README and added a basic skeleton for the Makefile. also cleaned up some formatting and added a stub config along with an AABB implementation"}]...
|
Title: Voxly by @devlsx | Stardance
Devlogs:
made Title: Voxly by @devlsx | Stardance
Devlogs:
made some good progress today, finally started on the README and added a basic skeleton for the Makefile. also cleaned up some formatting and added a stub config along with an AABB implementation
Finally managed to defeat bounding volume hierarchy (BVH) . I’ve wrapped up the raycasting and query functions. Tidied up some code, renamed a few things for clarity, and even kicked off a basic profiler. The structure is starting to solidify, and I can almost taste the optimization magic.
Finally got the job system framework working! The scaffolding is up, and I’ve wired in the parallel execution and fence management. It’s like building a complicated LEGO set and each piece finally feels like it fkts.
Octrees are now officially part of the voxl family! After wrestling with a JSON function, I finally got the octree’s initial structure up and running. Implementing the octree_collect_pairs was a puzzle, but seeing it all click is worth it. Still a ways to go, but today feels like a solid step toward the final goal!
Cracked the code for serialization today. Finally got ‘serialize_save’ up and running, which means I can actually save my voxel worlds without losing my work to the void of digital oblivion. 🥳 The octree stuff is coming together too. wired up the raycasting and node setup, making progress on spatial queries.
There’s something satisfying about watching light dance across a voxel landscape. Today, I wired up the lighting for chunk re-computation, finally getting that glowy ambience just right. The little wins all add up, and each tweak brings me closer to my vision.
Finally wrangled the biomes into something that feels alive. Implemented the blending and height parameters, and even dived into the noise generation getting the worldgen to feel organic is like layering a sweet melody over a rough track. There’s still a ton of work to do, but it’s exciting to see the terrain start to take shape, complete with the first ore deposits peeking through. This is one step closer to that voxel heaven
After a long grind, I finally got cave generation fleshed out and worms and ravines are slithering their way into the world! It’s all about those small victories right now.
Experimenting with erosion algorithms has been a wild ride today. I finally got the thermal erosion system wired up and running in tandem with the various types. Implementing that flux function was a puzzle, but seeing the terrain shift under different conditions was totally worth it.
So I dove into the farming system today, and let me tell you, crafting the mechanics feels like planting seeds in soil. I even tackled some erosion dynamics, which is just a fancy way of saying I’m making dirt work for me.
Fluid dynamics are finally bubbling to the surface! I spent the day diving into the guts of the voxel engine, fleshing out the fluid simulation code. I’ve carved out the groundwork for water spreading and even kicked off lava behavior.
Finally cracked the heightmap samples, they’re now alive with weirdness! It’s a subtle but game-changing layer to the terrain; I can already picture the landscapes taking shape. Spent way too long wrangling typos and cleaning up the code, but hey, it’s all part of the grind. The scaffolding for some tree and structure features is in place, so we’re on the wya to success
. After wrangling with a mountain of renames and tidying up the loader, I finally got the light properties implemented and running through the pipeline. The loader’s debug functions are on the horizon too, which means I’ll be able to dive deep into those shadows and highlights soon.
After a marathon of coding, I finally got the loader queue working. It’s a joy to see all those little pieces, like logic grids and queues, slot together. There’s something satisfying about renaming for clarity. Its kinda like cleaning up a messy drawer and finding all the tools you forgot you had. Now, on to scaffolding the loader worker.
Nothing quite like the rush of finally tackling those mineshaft features. After all the planning, I can now see the maze taking shape and the ore types just begging to be mined. I spent a good chunk of time cleaning up leaks and renaming stuff for clarity. The mineshaft feels alive and thats really cool and important
Diving into the wild world of noise generation today, specifically ravines. After a good chunk of head-scratching, I’ve got the initial ravine noise and debug systems wired up, laying the groundwork for some seriously dramatic landscapes.
Cracked open the vault of regions today, and finally wrangled the region_codec into shape! It feels good to see that component take form after a few iterations. Took the time to clean up and scaffold the cache while getting those chunks to read smoothly. A few cosmetic tweaks here and there, but hey, every small fix adds to the whole.
Finally got the rivers flowing with some real depth implemented everything from types to flow mechanics. It’s like watching the world come alive; every little tweak adds to that immersion. And yes, the moon now has phases that actually reflect in the sky.
Building a stronghold feels a bit like crafting a slice of medieval magic. Today, I wrangled a bunch of components into our stronghold system with corridors, boxes, and initial buffers. Not to mention, I tamed the chaotic skies with some weather initialization.
Just wrapped up the stronghold_rng_next implementation, and let me tell you, it feels good to finally have that randomness flowing where it needs to! The stronghold features are coming together with stronghold_query also in the mix. Sure, there were some cosmetic tweaks and minor cleanups along the way, but every small piece is building towards that epic world.
The puzzle pieces are finally coming together with the struct generators. I wrestled with structgen_buffer_init today. Thats such a simple name for a surprisingly deep rabbit hole, but getting it wired up felt like unlocking a secret door. A few cosmetic tweaks and renamings later and im already done. Onward to strongholds!
Just when I thought I was digging in the trenches, the trees started working! Finally got the tree generation demo up and running, which has been a bit of a puzzle piece I’ve been working on for a while. Cleared out a bunch of clutter in the codebase too. It feels good to put some roots down in this project, literally and figuratively.
Weather’s looking a lot more interesting in voxly! Today, I kicked off the weather simulation with some solid progress on precipitation and the foundations for advecting particles through the environment. The rain isn’t just for show, it’s got a role to play now. Also worked out the tree generation system, which means they will have more than just empty ground to stand on.
Today’s work focused primarily on foundational systems related to environmental effects and rendering, specifically fog, camera setup, and ambient occlusion. These components are crucial for enhancing the visual quality and atmospheric realism of the engine. Camera Module: Implemented a basic camera system that supports perspective projection, allowing for a flexible viewpoint in the 3D environment.Fog Implementation: Began initial work on fog rendering, laying out a basic framework to integrate atmospheric effects into the scene, improving depth perception.Chunk Queue System: Established a chunk_queue to manage chunk updates and rendering efficiently, which is vital for optimizing visibility and performance.Ambient Occlusion: Started scaffolding the ambient occlusion module to simulate soft shadows and improve lighting realism, enhancing the overall visual fidelity.Weather Simulation: Developed foundational components for weather simulation, including the weathersim_report and weathersim_front, which will facilitate dynamic environmental changes. Current progress sets a strong base for further development of visual effects. The next steps will involve completing the ambient occlusion implementation and integrating fog into the rendering pipeline.
Today, I focused on the initialization and setup of various subsystems related to rendering and environmental simulation within the voxl engine. This work is foundational, as it establishes the groundwork for rendering techniques and weather simulation mechanics. OpenGL Module: Implemented initial OpenGL context creation to prepare for rendering. This included setting up basic state configurations for future draw calls.Camera System: Added a camera system to manage view transformations. The camera setup allows for dynamic movement and orientation adjustments, facilitating a clean separation of view logic from game entities.Chunk Queue: Began the implementation of a chunk queue to handle asynchronous chunk loading. This structure will optimize memory usage and improve performance by deferring loading operations until necessary.Ambient Occlusion: Scaffolded the ambient occlusion module, allowing for more realistic lighting interactions. Initial ambient occlusion calculations were introduced, which will be refined in subsequent iterations.Weather Simulation: Implemented core components of the weather simulation system, including the weathersim_front and weathersim_front_pool_init functions. This lays the foundation for managing weather states and transitions effectively. The current state of the engine includes basic rendering capabilities and preliminary environmental simulations. The next step involves refining the ambient occlusion calculations and expanding the weather simulation features to include precipitation dynamics.
Today’s work focused primarily on the implementation of the bloom post-processing system, specifically the initial setup and functionality of the bloom2 module. This subsystem is essential for enhancing the visual quality of the rendered scene by simulating the effect of light bleeding and softening bright areas. bloom2_pass: Implemented the initial pass for the bloom effect, which includes setting up the framebuffer and rendering targets to capture bright sections of the scene.bloom2_target_bind: Defined the binding process for the bloom render target, ensuring that the correct framebuffers are activated during the bloom rendering sequence.bloom2_blur_v: Stubbed out the vertical blur function, which will be responsible for processing the intermediate bloom render results, preparing for the subsequent blur pass.bloom2_gauss_eval: Added an evaluation function for Gaussian weights, which will be used in the blur calculations to create a smooth transition effect.bloom2_quad: Set up a quad for rendering the bloom effect onto the screen, which serves as the final output display of the bloom post-processing.bloom2_params: Began the definition of parameters for the bloom effect, including thresholds for bright areas and intensity settings, allowing for future adjustments.upload_taps: Implemented the upload process for the sampling taps used in the Gaussian blur, ensuring efficient access to texture samples during rendering. The bloom post-processing pipeline is now in its early stages, with the foundational components established. The next step will be to flesh out the blur functionality and integrate it with the bloom pass for a complete visual effect.
Today, I focused on the debug rendering subsystem, which is crucial for visualizing various components of the engine during development. This work will facilitate easier debugging of spatial relationships, frustum culling, and occlusion handling. debugdraw: Established the foundational structure for the debug drawing system, enabling visualization of shapes and paths in the rendering pipeline.debugdraw_helpers: Completed the implementation of helper functions to streamline the rendering of basic shapes (lines, spheres, etc.), improving the clarity of debug visuals.debugdraw_path: Added functionality to visualize paths, which aids in debugging movement and AI-related features.debugdraw_frustum: Implemented frustum visualization, allowing for the assessment of what is currently visible in the scene, thereby enhancing frustum culling debugging.frustum_cull: Integrated frustum culling logic to improve performance by eliminating objects outside the view, with bounds checks refined for edge cases.sphere_cull: Developed a sphere-based culling mechanism to efficiently determine visibility of spherical objects, optimizing rendering performance.cull_occlusion_run: Fixed a bounds check issue within the occlusion culling routine, ensuring accurate visibility determinations.chunk_dist_sq: Implemented a distance-squared function for chunks, which will be useful in sorting and rendering optimization. The debug rendering system is now significantly more functional, laying the groundwork for more complex visualizations. The next step will involve integrating these debug features with the main rendering loop to ensure they can be toggled during runtime for effective debugging.
Today, I focused on implementing the decals subsystem, which is critical for enhancing visual fidelity by allowing textured decals to be rendered on surfaces in the voxel environment. This will significantly improve the realism of interactions and environmental details. Decals Types: Established the decals_types module to define various decal types and their properties, facilitating extensibility for future decal features.Decals Pass: Implemented the decals_pass, which organizes the rendering of decals in the pipeline. This pass is integrated into the main render loop to ensure decals are drawn after opaque geometry.GLSL Shader Setup: Began the decals_glsl to handle decal shaders, ensuring that the shaders can accommodate blending and fading effects, which are crucial for realistic rendering.Decal Atlas: Developed the decals_atlas, allowing for efficient texture sampling by consolidating multiple decal textures into a single texture atlas, reducing state changes during rendering.Decals Fade and Blend: Added functionality for decals_fade and decals_blend, implementing visual effects that allow decals to gradually appear or disappear and blend with underlying textures, enhancing realism.Debug Drawing: Finished the debugdraw_timed and fleshed out debugdraw_flush_labels, providing tools for visual debugging of decals, which will assist in ensuring correct placements and transitions. The decals subsystem is now partially operational, with foundational components in place for rendering. The next step will involve completing the decals_config and integrating it fully into the scene management system.
Today, I focused on implementing the depth of field (DoF) post-processing effect within the rendering pipeline. This is a critical enhancement for visual fidelity, as it allows for more realistic focus transitions in the scene. Depth of Field (dof_programs): Implemented dof_programs_unload, which properly releases shaders and associated resources when no longer needed, optimizing memory usage.Depth of Field (dof_pass): Began the development of the dof_pass, which will serve as the new rendering stage to handle depth of field computations, ensuring it integrates smoothly with the existing render pipeline.Depth of Field (dof_gather): Completed the dof_gather function, which samples the scene to collect color and depth information needed for the DoF effect, with attention to efficient texture access patterns.Depth of Field (dof_quad): Started implementing the dof_quad, which will represent the screen-space quad used for applying the DoF effect in a fragment shader.Depth of Field (dof_focus): Added functionality for dof_focus, allowing users to set the focal distance dynamically, enhancing control over the DoF effect.Depth of Field (dof_coc): Initiated the dof_coc (circle of confusion) calculations, which are essential for determining which parts of the scene should appear in focus versus out of focus based on their distance from the camera.Code Cleanup: Performed various minor cleanups and formatting changes throughout the modules to improve code readability and maintainability. The depth of field implementation is progressing well, with foundational components in place. The next step will involve integrating the dof_coc calculations into the rendering pipeline and refining the dof_pass to ensure correct visual output.
Today, I focused on the integration and initial implementation of the G-buffer system and Fast Approximate Anti-Aliasing (FXAA) in the rendering pipeline. This work is crucial for improving the visual fidelity and performance of the rendering process. G-buffer Module: Implemented the initial G-buffer structure, facilitating the storage of geometry attributes for deferred rendering. This involves creating texture storage for position, normal, and albedo data.G-buffer Initialization: Developed the gbuffer_init function to allocate and configure the G-buffer textures, ensuring proper setup for rendering operations.FXAA Implementation: Added the core FXAA functionality, including fxaa_main and fxaa_settings_apply, allowing for real-time anti-aliasing effects to smooth out jagged edges in rendered frames.Self-Test for FXAA: Completed the fxaa_selftest implementation to validate the correctness of the FXAA algorithm, ensuring that edge cases are handled and results are consistent across different scenarios.Sampling and Quality: Finished the grid_sample function to enhance texture sampling for FXAA and initiated fxaa_quality, laying the groundwork for different quality settings in the anti-aliasing process.Historical Data Management: Implemented fxaa_history to maintain previous frame data necessary for temporal smoothing in the FXAA algorithm.Stubs for Future Work: Created stubs for fxaa_blit and fxaa_debug, preparing the framework for future enhancements and debugging capabilities. The rendering engine now has foundational G-buffer and FXAA support, significantly advancing the visual quality of the output. The next steps will involve refining the FXAA implementation and integrating the remaining stub functions to complete the
Today, I focused on enhancing the rendering pipeline, specifically the implementation of the g-buffer and draw call management. This work is critical for achieving efficient deferred rendering, which is essential for handling complex lighting scenarios in the engine. Rendering System: Implemented draw_indirect, allowing for batch processing of draw commands without CPU intervention, which reduces overhead and improves performance during frame rendering.Batch Management: Stubbed out batch functionality to prepare for more efficient draw call aggregation, laying the groundwork for optimizing the number of draw calls issued per frame.G-buffer Implementation: Completed the gbuffer_shade, gbuffer_normal, and gbuffer_material modules, each responsible for storing necessary per-pixel data for deferred shading, enhancing the ability to handle multiple light sources effectively.G-buffer Lighting: Initiated the gbuffer_light and gbuffer_brdf_eval_light components, which are responsible for evaluating lighting based on stored g-buffer data and enabling realistic material responses to light.Edge Case Handling: Fixed an edge case in gbuffer_emit_from_chunk, ensuring correct handling when emitting light from chunk edges, which aids in visual consistency across chunk borders.Utility Functions: Implemented clampf for clamping float values, which will be used in various calculations across the rendering pipeline to maintain valid ranges for rendering parameters.Texture Management: Added make_tex to streamline texture creation, facilitating easier integration of textures into the rendering pipeline. The rendering pipeline has significantly improved with these updates, and the next step will be to integrate the batching process fully and assess the overall performance impact in various rendering scenarios.
Today, I focused on the implementation of the instancing subsystem within the rendering pipeline. This work is critical for optimizing draw calls and managing multiple instances of meshes efficiently, which will enhance rendering performance in voxel environments. lt_mesh: Implemented the initial mesh structure to accommodate instance data. This includes setting up vertex attributes for instance transformations.lt_grid: Created an initial grid structure to manage spatial organization of instances, allowing for efficient frustum culling.lt_gpu: Stubbed out the GPU interface to handle instanced rendering commands, establishing a foundation for future integration.lt_cache_init: Implemented the cache initialization routine for storing instance data, which reduces overhead during rendering.instancing_stats: Completed the stats tracking for instanced objects, capturing performance metrics that can be analyzed for optimization.instancing_transform_bounds: Finished the bounding volume calculations for instances, crucial for frustum culling to avoid unnecessary rendering.frustum_batch: Scaffolded the frustum batching system to group instances based on visibility, optimizing the rendering process and minimizing state changes.Cleanup: Executed minor cleanups across multiple modules to enhance code readability and maintainability. The instancing subsystem is now in a functional state, with core structures established and initial implementations completed. The next step will involve refining the GPU integration for instanced rendering and testing performance metrics in various scenarios.
This morning, I focused on establishing the foundational components for the voxel engine’s module system, which is crucial for modularizing functionality and enhancing maintainability. I initiated the groundwork for both configuration and debugging systems. mb_config: Started the configuration module to manage engine settings, establishing a basic structure for loading and saving configurations.mb_debug: Added the debugging module, scaffolding the structure to allow for runtime diagnostics and performance monitoring.lt_stats_format: Implemented a format for terrain statistics, ensuring that performance metrics can be effectively logged and analyzed.block_shape: Began work on the block shape definitions, laying the groundwork for specifying voxel dimensions and orientations.cross_mesh: Stubbed out the cross-mesh functionality, preparing for future implementation of cross-sectional rendering techniques. The foundational modules are now in place, and the next step will involve fleshing out the configuration and debugging features to support real-time adjustments and diagnostics.
Today I focused on the mesh building subsystem, which is critical for generating and managing the geometry of voxel chunks in real-time. This work is foundational for optimizing rendering and ensuring efficient memory usage. MeshBuild Module: Started the implementation of the meshbuild system, establishing the groundwork for efficient chunk geometry generation. This includes setting up the initial data structures for mesh management.Snapshot System: Implemented the mb_snapshot functionality, which allows for capturing the state of the mesh at a given time. This is crucial for optimizing updates and rendering by reducing unnecessary computations.Statistics Tracking: Scaffolding for mb_stats was added to track performance metrics related to mesh generation, providing insights into the efficiency of the rendering pipeline.Block Properties: Introduced initial definitions for block_shape and face_dir, setting up the essential parameters required for defining voxel geometry.Terrain Type Management: Added the lt_terrain module to manage different terrain types within the game, enabling diverse environments and interaction mechanics.Bounds Checking: Fixed a bounds check issue during initialization, ensuring that the allocation of voxel data structures remains within valid memory limits, thus preventing potential crashes or corruption. Current state reflects a significant advancement in the mesh building architecture, with basic functionality established. The next steps will involve fleshing out the mesh generation algorithms and integrating them with the rendering pipeline for further testing.
This morning’s work focused on enhancing the rendering pipeline and starting the implementation of the particle emitter system. These improvements are crucial for visual fidelity and performance in voxel rendering. clamp01: Implemented a function to constrain values between 0 and 1, ensuring proper normalization for graphical calculations.curves: Began the implementation of curve interpolation methods for smoother transitions in animations and particle emissions.gpu_buffer: Added a structured buffer for GPU memory allocation, enhancing the efficiency of data transfer between CPU and GPU for rendering tasks.emitter: Developed the foundational structure for the particle emitter, which will support dynamic visual effects in the game environment.meshbuild_chunk: Completed the initial version of the chunk mesh building algorithm, optimizing how voxel data is converted into renderable geometry. Current progress sets the stage for integrating the particle system fully and refining the mesh building process. The next logical step will be to finalize the emitter’s functionality and connect it to the rendering pipeline.
Today I focused on the particle system and initial components for voxel chunk mesh building, which are critical for enhancing visual effects and optimizing rendering performance in the engine. Particle System: Implemented particle_rng, which initializes a random number generator for particle behavior, crucial for generating varied particle effects.Particle Emission: Completed the particles_rng_in_cone function, allowing for particles to be emitted in a cone-shaped area, enhancing the realism of effects like explosions or smoke.Particle Pool Management: Developed particles_pool_clear, which efficiently resets the particle pool between frames, minimizing memory usage and helping maintain performance during high-load scenarios.Vertex Packing: Set up vertex_pack, which organizes vertex data into a compact format suitable for GPU processing, improving data transfer efficiency and reducing memory bandwidth usage.Chunk Mesh Building: Started the meshbuild_chunk implementation to facilitate efficient chunk rendering, laying the groundwork for further optimizations like greedy meshing.Emitter System: Added a basic emitter class to manage particle emission attributes, enabling future extensibility for different particle effects and behaviors.Cleanup and Organization: Conducted minor cleanups and formatting across various files, ensuring code maintainability and consistency. The particle system is now more robust, and the chunk building process has a foundational structure in place. The next step involves completing the mesh building logic and integrating more complex particle behaviors using the emitter system.
Today, I focused on the graphics subsystem, specifically enhancing the shader management and shadow rendering capabilities. This work is essential for achieving more sophisticated visual effects and better performance in the rendering pipeline. Shader Management Module: Implemented shaderman_set_hot_reload, enabling dynamic shader reloading during runtime to facilitate rapid iteration without restarting the engine.Shader Compilation: Completed the shader_compile function, which compiles shader code into GPU executable format, improving the setup time for rendering.Shader Initialization: Added shadow_init, which initializes parameters related to shadow rendering, ensuring proper setup before rendering occurs.Shader Stage Handling: Filled in the shader_stage structure to manage different stages of shader processing, which allows for cleaner organization of shader tasks.Active Uniforms Retrieval: Finalized shaderman_gl_active_uniforms, which retrieves and stores active uniform variables from shaders, enhancing the shader’s interaction with the rendering system.Debugging Support: Set up shader_debug, providing hooks for debugging shader issues during development, which improves the ease of identifying and resolving shader-related problems.Bloom Effect: Added a basic implementation of bloom rendering through bloom_resize and the bloom module, initiating post-processing effects to enhance scene brightness. The shader management system is now more robust, allowing for dynamic updates and improved shader handling. The next step will involve integrating the shadow rendering into the main rendering loop to evaluate performance and visual fidelity.
Today I focused on the lighting subsystem, specifically implementing shadow mapping techniques and enhancing the atmospheric rendering system. These improvements are crucial for achieving realistic lighting and depth effects in the voxel environment. shadow_map: Implemented the shadow mapping algorithm, which includes creating a depth texture to store the distance from the light source to the nearest surface, enabling more realistic shadows.shadow_pcf: Developed percentage-closer filtering (PCF) for shadows to soften the edges of the shadow map, increasing visual fidelity. This involved setting up the filtering process within the shader pipeline.shadow_split: Introduced the shadow split technique to improve shadow rendering across varying depths. This includes calculating split distances based on the camera’s frustum to reduce artifacts.shadow_matrix: Added a shadow matrix computation to transform world coordinates into shadow map space, ensuring correct shadow projection during rendering.skyb: Began implementing the skybox atmospheric effects, specifically the skyb_atmosphere_clear_color and skyb_billboard. This includes color adjustments for clearer skies and setting up billboards for celestial bodies.shadow_stabilize: Stubbed out a shadow stabilization technique to reduce flickering and aliasing in shadow rendering, which will be fleshed out in future commits.code maintenance: Conducted minor cleanups and cosmetic tweaks across multiple files for better readability and organization, including renaming functions for clarity. The current state of the shadow rendering system is functional with basic shadow mapping and initial atmospheric effects implemented. The next step will be to refine the shadow stabilization method and continue developing the full atmospheric rendering features.
Today, I focused on enhancing the rendering subsystem with the implementation of Screen Space Ambient Occlusion (SSAO). This feature is critical for improving scene depth and realism by simulating how light interacts with surfaces. SSAO Module: Implemented the foundational SSAO computation logic in ssao_compute, which calculates ambient occlusion based on depth and normal maps to enhance shading realism.SSAO Debugging: Developed ssao_debug to visualize SSAO outputs, allowing for quick verification of occlusion values and aiding in fine-tuning the algorithm.SSAO Blur: Completed the SSAO blur process in ssao_blur, which smooths the occlusion map to reduce artifacts and achieve a more visually appealing result. The blur uses a separable Gaussian filter for performance efficiency.Skybox Renderer: Progressed on the skybox rendering system by fleshing out skyb_renderer_upload_dome and skyb_dome_vertex, which define the dome geometry and texture uploads for the skybox, ensuring proper visual integration with the ambient occlusion effects.Skybox Palette and Gradient: Initiated the scaffolding for skyb_palette and set up skyb_gradient, enabling gradient-based skybox coloring to enhance atmospheric effects in conjunction with SSAO. The SSAO implementation is now functional, with debug features in place to assess its performance and visual fidelity. The next step will involve further optimizing the SSAO calculations and integrating them seamlessly into the main rendering pipeline.
Today I worked on the implementation of screen space reflections (SSR) and screen space ambient occlusion (SSAO) within the rendering subsystem. These features are vital for enhancing visual fidelity and realism in lighting interactions within the voxel environment. SSR Module: Introduced the ssr_fsquad, which sets up a full-screen quad for executing the SSR shader pass. This establishes a foundation for reflection calculations.SSR Configuration: Created ssr_config scaffolding to manage SSR parameters, allowing for adjustable settings such as reflection intensity and roughness.SSR Depth Setup: Implemented the ssr_depth, which captures depth information necessary for accurate reflection rendering. This enables proper occlusion of reflections based on scene depth.SSR Debugging: Set up ssr_debug to visualize reflection calculations during development, aiding in the identification of rendering artifacts or inaccuracies.SSAO Configuration: Initialized ssao_settings to provide user-adjustable controls over ambient occlusion effects, including radius and intensity.SSAO Pass Setup: Established the ssao_pass, which integrates the SSAO calculations into the render pipeline, ensuring it runs alongside other post-processing effects.SSAO Sampling: Started working on ssao_sample, which defines the sampling strategy for ambient occlusion, leveraging a kernel to calculate occlusion values based on neighboring pixels.Kernel Statistics: Set up ssao_kernel_stats to track and debug the parameters of the SSAO kernel, which will assist in optimizing performance and quality. The rendering subsystem now has a foundational implementation for both SSR and SSAO, with key components in place. The next steps will involve refining the sampling methods for SSAO and integrating the blurring effect for the final output to enhance visual quality.
Today, I focused on the text rendering subsystem, specifically the development of the text context and text batch systems. This work is foundational for rendering 2D text efficiently, which is crucial for UI elements and in-game text displays. text_ctx: Implemented the initial structure for the text context, which manages the state related to text rendering. This includes setting up memory allocations for text data and glyph information.text_batch: Created a scaffold for the text batch system to handle multiple text draw calls efficiently. This will allow for batching of text rendering operations to minimize state changes.text_atlas: Developed the initial setup for the text atlas, which will store glyph images for rapid access during rendering. This will improve performance by reducing texture binding overhead.text_font: Initialized the text font subsystem to load and manage font data. This includes parsing font files and generating the necessary glyph data.text_glyphdata: Started the implementation of glyph data handling, allowing for precise control over individual characters and their metrics.ssr_settings and ssr_pass: Set up the screen space reflections (SSR) settings and pass, which will enhance the visual fidelity of reflective surfaces in the engine.ssrx_material_unpack: Completed the unpacking of material data for SSR, ensuring that material properties are correctly interpreted during rendering. The text rendering subsystem is now well-structured, and the next step will involve integrating the text rendering into the main rendering pipeline to ensure text is displayed correctly in the game environment.
This morning’s work focused on the tonemapping subsystem, particularly enhancing exposure control and initializing the necessary data structures. These changes are critical for achieving realistic rendering through proper dynamic range management. Tonemap Exposure: Implemented tonemap_exposure to calculate exposure values based on scene luminance, improving how bright areas are rendered.Tonemap Configuration: Added tonemap_config, defining parameters for exposure and curve settings, facilitating easy adjustments and future expansion.Tonemap Curve: Began the implementation of tonemap_curve, establishing a basis for non-linear mapping of color values to enhance dynamic range perception.Text Layout: Completed the text_layout function, which manages text rendering for UI elements, ensuring proper alignment and spacing.Tonemap Debugging: Implemented tonemap_debug_run_split to allow testing of various tonemapping scenarios, aiding in fine-tuning the visual output. Current progress sets a solid foundation for further work on the tonemapping pipeline, with the next steps aimed at refining the tonemap grading process and integrating it into the rendering loop.
Today, I focused on the development of the tonemapping subsystem, which is essential for controlling the luminance and color mapping of rendered scenes to enhance visual fidelity. This work is crucial as it directly affects the output quality of rendered images. volumetric_blur: Scaffolded the vol_blur module to introduce volumetric blur processing. This lays the groundwork for further development of blur algorithms.tonemap: Established the initial framework for tonemapping, including scaffolded modules for tonemap_params, tonemap_grade, and tonemap_curve. This modular approach allows for easy future enhancements and testing.tonemap_selftest: Wired up self-testing capabilities for tonemapping to ensure that changes can be effectively validated. This includes fleshing out the self-test to cover edge cases and expected behavior.tonemap_lut: Implemented a lookup table (LUT) for tonemapping, which will optimize color grading processes. Set up associated functions to support LUT creation and application.tonemap_exposure: Started the implementation of exposure management in tonemapping, including functions to retrieve and adjust exposure levels dynamically.text_layout: Completed the implementation of the text layout system, which will be utilized for rendering debug information and UI elements related to tonemapping.cleanup: Conducted code cleanup across several modules, focusing on reducing technical debt and improving readability. The current state of the tonemapping subsystem is foundational, with several key components scaffolded and initial implementations underway. The next logical step involves further developing the tonemapping algorithms and integrating them into the rendering pipeline to evaluate their impact on scene output.
Today, I focused on implementing various aspects of the volumetric rendering subsystem. This work is critical for enhancing the visual fidelity of the water rendering and introducing new volumetric effects, which are essential for achieving realistic environmental interactions in the engine. water_reflect: Implemented reflective properties for water surfaces, enhancing the realism of water rendering by calculating reflection vectors based on the viewer’s position and the surface normals.volumetric_programs_use_march: Wired up the volumetric rendering programs to utilize a raymarching approach for rendering volumetric effects, allowing for more complex light interactions within volumes.vol_raymarch: Began development of the raymarching algorithm for volumetric rendering, laying the groundwork for subsequent implementations of effects such as fog and smoke.volumetric_pass_run: Implemented the core function to execute volumetric passes, establishing a pipeline for rendering volumetric effects sequentially within the main render loop.vol_caustics: Initiated the caustics rendering system, which will simulate light patterns created by surface reflections on the volumetric medium, enhancing the visual complexity of water interactions.vol_pass: Scaffolded the volumetric pass structure, defining how different volumetric effects will be processed in the render pipeline.vol_medium: Created an initial implementation of volumetric mediums, allowing the engine to define properties such as density and scattering for various materials. The volumetric rendering subsystem is now more robust and modular, with foundational components in place. The next step is to continue refining the raymarching implementation and integrate the caustics calculations within the rendering pipeline.
Today, I focused on implementing the initial stages of the animation and AI subsystems, as well as enhancements to the water rendering pipeline. These components are critical for enhancing the game’s dynamic interactions and visual fidelity. Animation System: Implemented foundational structures for anim_blend. This allows for smooth transitions between different animations, improving character movement fluidity.Entity System: Completed the entity module, enabling proper management of game objects, including their lifecycle and state management, which is essential for gameplay.AI Module: Introduced the pathfind function, allowing entities to navigate the game world effectively. This is a crucial step towards integrating more complex AI behaviors.Water Rendering: Established the water_pass, implementing the water rendering pipeline. This includes setting up reflection and refraction capabilities using a dedicated reflection camera (water_reflcam), enhancing visual realism.Water Effects: Started work on water_wave and water_foam, which will simulate surface interactions and enhance the dynamic appearance of water bodies.AI Updates: Added ai_tick, which will manage updates to AI behaviors each frame, ensuring responsive and engaging NPC interactions. Current progress includes foundational setups for both animation and AI systems, alongside initial water rendering capabilities. The next logical step involves refining the AI behaviors and continuing the development of the water effects to enhance environmental interactions.
Today, I focused on the animation subsystem of the voxl engine, specifically enhancing the animation systems to support skeletal animation and procedural walking behaviors. This work is crucial for implementing character animations that are both dynamic and responsive to gameplay inputs. behavior_leaf: Implemented the behavior_leaf module, establishing a base for behavior trees that allows for more complex AI decision-making processes.behavior_builder: Developed the behavior_builder to construct behavior trees programmatically, centralizing the creation and management of AI behaviors.behavior_act_target_in_reach: Completed the implementation of the behavior_act_target_in_reach, which checks proximity to targets for AI actions, enhancing interaction capabilities.anim_skeleton: Began scaffolding the anim_skeleton module, which will define the structure and hierarchy of skeletal animations, essential for character rigging.anim_rig: Set up the anim_rig, providing the framework for binding animations to skeletal structures, facilitating smooth character movement.animation_procedural_walk: Expanded the animation_procedural_walk to allow for dynamic adjustments based on character speed and terrain, improving realism in character locomotion.anim_controller: Introduced the anim_controller to manage the state and transitions of animations, allowing for layered animation blending and more responsive character behaviors.entity_render: Implemented entity_render functionality, which integrates the rendering of animated entities into the broader scene graph, ensuring visual coherence. The current state of the animation system is foundational but progressing well, with core modules in place for skeletal animation. The next steps will involve refining the blending of animations and integrating more complex animation states.
Today, I focused on the combat subsystem, specifically implementing various components necessary for managing health, damage, and character behaviors during combat scenarios. This work is critical for establishing a solid foundation for player interactions and enemy behaviors. Combat System: Implemented combat_health, which tracks and manages health points for entities, including health reduction mechanics and thresholds for death events.Combat System: Added combat_invuln, providing temporary invulnerability states for characters, which allows for the management of damage immunity during specific animations or effects.Combat System: Developed combat_knockback, a mechanic that applies force to characters upon receiving damage, enhancing the feedback of combat interactions.Behavior Tree: Stubbed out the combat_combo, which will facilitate chaining of attacks for characters, setting up a framework for more advanced combat mechanics.Behavior Management: Completed behavior_tree_free to ensure proper memory management of behavior trees, preventing memory leaks during runtime.Behavior Management: Initiated behavior_runner_init, which sets up the initial state for behavior execution, crucial for managing different character actions effectively.Combat System: Implemented combat_dmg_info_get, which retrieves damage information relevant for interaction logic, aiding in the clarity of combat events.Cleanup: Conducted code tidying and minor fixes across the combat module to enhance readability and maintainability. The combat subsystem now has a more cohesive structure with the groundwork laid for complex interactions. The next step will involve fleshing out the behavior tree logic to integrate advanced AI behaviors and attack combos.
This morning, I focused on the combat subsystem, implementing new mechanics that enhance player interactions and feedback during combat. These changes are pivotal for establishing a robust gameplay foundation. combat_resist: Implemented a resistance mechanic that determines damage mitigation based on player attributes, allowing for more nuanced combat outcomes.combat_rng: Added a random number generator for damage calculations, introducing variability in combat results to enhance unpredictability and player engagement.combat_knockback: Developed a knockback effect that alters player position upon receiving damage, improving the physicality of combat interactions.combat_log_death_message: Implemented logging functionality to display a message when a player character dies, providing clear feedback for the player on their status.stub out combat_log: Created a basic structure for the combat log system, laying the groundwork for future enhancements in tracking combat events and player actions. Current progress has established essential combat mechanics. The next step will involve integrating these systems into the overall game loop for testing and refinement.
Today, I focused on the development of the Entity-Component-System (ECS) architecture, specifically initializing spatial queries and establishing foundational components for entity management. This work is critical for optimizing game object interactions and enabling efficient systems for rendering and gameplay logic. ecs_spatial: Initiated the module to manage spatial queries for entities, allowing for efficient retrieval of entities based on their spatial positions. This is essential for implementing features like frustum culling and collision detection.ecs_query: Added the initial structure for querying entities based on components. Stubbing out this system lays the groundwork for flexible querying mechanisms essential for game logic processing.ecs_relations: Started the implementation of relational data structures to handle parent-child relationships between entities, which will facilitate a hierarchy for transformations and event propagation.ecs_blob_init: Completed the initialization sequence for ECS blobs, which encapsulate component data for entities, improving memory layout and access patterns while ensuring efficient entity creation and destruction.ecs_prefab: Introduced the prefab system for defining reusable entity templates. This system will streamline the instantiation of common game objects and reduce redundancy in entity creation.ecs_group_refresh: Enhanced the group management system to refresh entity groups based on component changes, optimizing the update cycle for systems relying on dynamic entity states.ecs_events: Implemented an event system to handle notifications between entities and systems, allowing for decoupled interactions and improved modularity.combat_resist, combat_rng, combat_knockback, and combat_log: Started implementing core combat mechanics, including resistance calculations and random number generation for combat outcomes, along with stubbing out logging for combat events. The ECS framework is now more robust, and the next step will be to integrate these components into a cohesive system, ensuring that queries and events operate seamlessly across the game engine.
Today’s work focused on the integration of the entity-component-system (ECS) architecture and the initial implementation of the physics subsystem. This is crucial for establishing a robust framework for game object management and collision detection. ephysics_aabb: Implemented the Axis-Aligned Bounding Box (AABB) structure to support collision checks. This provides an efficient way to handle spatial queries.ephysics_broadphase: Developed the broad phase collision detection system. This module identifies potential collisions using AABBs to minimize computational overhead during the narrow phase checks.ephysics_ccd_resolve: Added continuous collision detection resolution to ensure accurate collision handling for fast-moving entities, preventing tunneling issues.ecs_world: Scaffolding for the ECS world management was set up, allowing for the organization and management of entities and components effectively.ecs_types: Established foundational data structures for components, enhancing type safety and access patterns within the ECS framework.ecs_get: Implemented the ecs_get function to retrieve components associated with entities, facilitating component retrieval in a type-safe manner.ecs_sys_collide: Wrote the initial collision system that integrates with the ECS, processing collision events and leveraging the broad phase detection.ecs_stats: Initiated the ECS stats module, which tracks performance metrics and entity counts, vital for optimizing system performance. The current state of the engine now includes a foundational ECS structure with a basic physics engine integrated. The next step involves refining the collision resolution mechanism and expanding the entity management features.
This morning, I focused on enhancing the physics subsystem, specifically in the area of impulse and motion mechanics. This work is crucial for achieving realistic interactions and responses to forces within the game environment. ephysics_motion_ballistic: Implemented the initial projectile motion calculations, enabling objects to follow a parabolic trajectory under gravity.ephysics_pushout: Started designing the pushout mechanism to resolve overlaps between colliding objects, which will be essential for player movement and interaction.ephysics_impulse: Created a stub for impulse application, setting up the necessary data structures to handle instantaneous force applications on entities.ephysics_falldmg: Completed the fall damage calculation, accounting for the velocity of the entity at impact, which enhances realism in gameplay.ephysics_current: Filled in the functionality for current effects, allowing entities to be influenced by environmental forces, such as water currents. The current state includes foundational motion and interaction mechanics. The next step will involve expanding on impulse handling to ensure comprehensive force interactions across various physics scenarios.
Today, I focused on enhancing the physics subsystem, specifically the entity physics (ephysics) module. This work is essential to establish a robust framework for collision handling, motion integration, and interactions with the environment. ephysics_sweep: Expanded the logic to improve sweep tests for collision detection, ensuring accurate intersection calculations between moving entities and static geometry.ephysics_step: Initiated the implementation of the stepping function, which manages the simulation time step for physics updates, crucial for maintaining consistent behavior across frame rates.ephysics_spatial: Established a spatial partitioning system to optimize collision queries, using an efficient data structure to reduce the number of checks required during each physics update.ephysics_body_from_entity: Completed the function to create physics bodies from game entities, allowing for dynamic interaction based on entity properties and state.ephysics_query_solid_cell: Implemented a query method to check for solid cells within the voxel grid, facilitating accurate collision responses for entities interacting with the voxel environment.ephysics_pushout: Began development on the pushout mechanism, which resolves collisions by adjusting the position of entities to avoid overlaps with solid objects.ephysics_motion_ballistic: Filled in the calculations for ballistic motion, allowing entities to simulate projectile trajectories accurately under the influence of gravity.ephysics_falldmg: Developed functionality to handle fall damage, tying entity physics state to health mechanics based on vertical distance fallen. The physics subsystem is becoming more cohesive with these additions. The next logical step is to finalize the integration of the impulse and fluid simulation components, enhancing interaction realism further.
Today, I focused on the implementation of the mob subsystem, particularly in setting up the foundational structures and behaviors for various mobile entities within the engine. This work is crucial for establishing NPC interactions and their movement dynamics in the game world.
Today, I focused on the navigation subsystem, implementing several foundational components essential for pathfinding and AI navigation within the voxel environment. This work is crucial for enabling agents to navigate through the game world effectively.
Today, I focused on the projectile system within the game engine, specifically working on the memory management and foundational structures for spawning and managing projectiles. This work is crucial for optimizing projectile behavior and ensuring efficient resource allocation during gameplay.
Today, I focused on the spawning subsystem, specifically on the initial implementation of the spawnx module and the scaffolding of related systems. This work is essential for managing entity generation and behavior in the voxel environment.
Today, I focused on the spawning subsystem, specifically on the initial implementation of the spawnx module and the scaffolding of related systems. This work is essential for managing entity generation and behavior in the voxel environment.
Today, I focused on the building subsystem, which is critical for player interaction and environment manipulation. The work primarily involved finalizing and scaffolding various components of the building mechanics, including previews, placement, and rotation.
Today, I focused on the crafting subsystem, establishing foundational components essential for managing crafting recipes and related functionalities. This work is crucial for enabling player interactions with crafting mechanics, which are integral to gameplay progression.
Today, I focused on the effects subsystem and the crafting system to enhance gameplay mechanics and item interactions. These improvements are crucial for player feedback and item management in the game.
Today, I focused on the enchantment subsystem, establishing the foundational architecture for enchantments and their associated mechanics. This work is critical, as enchantments will enhance player interaction and item customization within the game.
This morning’s work focused on implementing mechanics related to fishing, an essential feature for gameplay. The changes address various aspects of the fishing system, including mechanics for enchantments and loot generation.
Today I focused on the implementation of the fishing subsystem, which is crucial for adding interactive gameplay elements that enhance player engagement. This work lays the foundation for fishing mechanics, including casting, line management, and loot generation.
Today I focused on the inventory subsystem, specifically initializing and structuring the inventory components. This work is critical for ensuring a robust and functional system for managing player items, which is foundational for gameplay mechanics.
Today I focused on the inventory and tools subsystems, specifically enhancing item durability management and transfer mechanisms. These additions are critical for ensuring that tool usage and inventory interactions are coherent and efficient.
Today, I focused on the tools subsystem, particularly the tools registry and experience (XP) management systems. This work is crucial for establishing a structured framework for tool interactions and player progression
Today I focused on the user interface subsystem, specifically initializing components for the HUD and integrating health and experience mechanics. This work is essential to establish a basis for player feedback and interaction, enhancing overall gameplayability.
Today, I focused on enhancing the console subsystem, which is crucial for debugging and player input management. The improvements made today lay the groundwork for a more robust command interface, enabling better interaction with the game engine.
Today, I worked primarily on the HUD subsystem, focusing on the implementation of various HUD components and inventory screens. This is crucial for improving user interaction and providing feedback during gameplay
Today, I focused on the menu subsystem, primarily implementing and refining the main menu and inventory screen functionalities. This work is essential for user interaction and enhancing the player experience through intuitive navigation....
|
1792918278.539593
|
1793782278.539593
|
|
2718
|
Underwater Submarine Adventure by @NC | Stardance
|
NC
|
1
|
81.0
|
1715
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-06T09:00:20Z", "hours": 81.0, "multiplier": 17.91, "payout": 1715, "blessing": "neutral", "text": "I built Abysmal Echo. This is by far my most comprehensive project I have EVER made using the Godot Engine. I put a lot of effort into it and I hope you enjoy playing it This game is about recovering some nuclear warheads at the bottom of the sea while navigating fields of sea mines, cavernous tunnels and mutated sharks. Good Luck! P.S. Please read the controls on how to play the game. PLEEASE", "repo": "https://github.com/NCGameMaking/STEM-Video-Game-2026", "demo": "https://github.com/NCGameMaking/STEM-Video-Game-2026/releases/tag/V1.1"}]...
|
[{"post_id": 62767, "ts": "202 [{"post_id": 62767, "ts": "2026-09-06T08:57:09Z", "hours": 0.3867, "text": "Devlog 15: Exported Game & Ready for Submission! This is the last devlog until submissions, I was just getting the export templates and etc. I also finished with the README No actual progress…"}, {"post_id": 62603, "ts": "2026-09-06T02:18:32Z", "hours": 7.5394, "text": "Devlog 14: Received 2nd Round of Feedback and Implemented it. What have I accomplished: I went to my coding club and asked fellow Godot/Unity enthusiasts to test my game! Here’s basically what they said… They couldn’t find the tunnel entrances The Radio Messages don’t stand out enough Make the Flashlight brighter (again…) Add some sort of Sonar Scan circle thingy on the periscope - make it more useful rather than a wall of text Make the main menu brighter, can’t see the submarine Do not exactly know the initial objective of the game/where to go Make Arrows or hints to show player what to do in Finale sequence When the player escapes through the tunnel, add some decorations make it less boring. Additionally, I got a 2nd round of feedback from my Dad… He said the UI is much better, less cluttered and the flashlight is better as well as the other features, but he has some more feedback. He wants a minimap, so he can see where to go because he is lost and does not understand the compass heading. He wants a clearer font for the submarine UI as the current one is too blurry for him He wants me to put radioactive trifoils on the missiles So onto how I implemented their feedback I made some vines on blender, I did it fairly quicky i didn’t bother putting it on Lapse. So, I implemented the vines with a glowing green shader, so it is easily visible to the player. I placed them in paths leading to the entrance and tunnels, so player knows where to go. As for the radio messages I added a yellow flashing border around them to attract player attention. As for the flashlight, I just cranked the energy up to like 50+, did the job pretty well. I added a sonar scan because the testers believe that the beacon signal is too generic and not really helpful, thus making the periscope itself not useful. In order to improve this, I added a sonar scan, the circular map that actual submarines use. After looking at some tutorials, checking documentation and reddit posts, I realized that I just have to somehow convert my prior knowledge of polar coordinates and convert them into game code. After a while, I got the red dots (sea mines) to appear on the map when the player presses the scan button (x). Additionally, using groups, I got the warheads to come up as yellow dots on the sonar map. The main menu was an easy fix, just had to increase the energy of the light. As for the initial objective, I made an animation where the camera shows the player where the warheads are located and the journey they have to take, it like shows the whole path so the player has some knowledge of knowing if they are going on the right path. Also just added another hint telling the player of the direction (80-90° East.) As for the Finale sequence, I just added a spinning arrow that points to the warhead signalling that the player has to ram it with their hull. Additionally, there are radio messages telling the player what to do. When the player escapes, I added a tall, enclosed tunnel with hanging vines for the player to escape through. Makes the game design much more intentional and doesn’t confuse players into thinking they just broke through the map. For the minimap, I used a SubViewportContainer with a camera being referenced to the actual SubViewport Node. The camera is in Orthogonal mode, and just facing down on the player 30metres away. The input is being displayed on the SubViewport. For the submarine font, I changed some of the colors so the font stands out more and becomes more CRISP and changed the font so the player can easily understand what’s on the dashboard. Another quick and easy fix was the radioactive logos. Just got a MeshInstance3D and slapped the texture on there and stuck it on the side of the warhead. This is probably the last devlog until submission."}, {"post_id": 59511, "ts": "2026-09-01T11:47:53Z", "hours": 2.0072, "text": "Devlog 13 : Recieved Tester Feedback and implemented it What have I accomplished: I have asked a tester (Dad) to test my game. He started playing the game and gave me a sheet of feedback. Upon deciphering the handwriting I made a list of main list of what needs to be improved. Here is the list Give more screen-space for player to see ocean Do something about the radio messages being sent as they are very annoying when the player is exploring and they just appear and block the player’s screen Also the radio messages go away too quickly The flashlight isn’t crisp. It like bleeds into the ocean and doesn’t look nice The ocean environment is too dark, make it brigher What/How did I implement the feedback? As a result, I merged the top panel into the bottom panel while replacing the top section with the radio messages. This time the player has much more screen-space to play in while the radio messages just briefly appear on the screen, not blocking the player’s view. As for the flashlight, I used a MeshInstance3D equipped with an emission Material so the flashlight looks much “crisper”. I also increased the show time for the radio messages from 3 seconds to 5 seconds so player will realise that a message has popped and has sufficient time to read it. As for the ocean environment, I just boosted the emission of the volumetric fog while make the background color slightly lighter rather than leaving it pitch black (Made it like a really dark navy blue). Bonus bug patch! While testing the game, I also found a bug with the Restart button in the pause screen. The bug was that when the player pressed restart, the scene tree was still paused, so the intro animation wouldn’t start until you unpaused it. So in order to fix this I just added another single line of code. func _on_restart_button_pressed(): get_tree().paused = false#This was the line of code needed get_tree().reload_current_scene() That is it so far, definitely getting more people to test it (Family, friends etc…) and implementing more feedback!"}, {"post_id": 56260, "ts": "2026-08-27T23:09:35Z", "hours": 1.4308, "text": "Devlog 12 : Finished Death screen as well as added help features What have I accomplished: Added a death screen Added a ‘help’ feature and hints in the submarine Made a death screen The death screen was fairly easy, I just repurposed the pause screen to become the death screen when the player dies. Added a help feature Put a help option on the home screen. If you hover your mouse over the help button, the hints will appear on the side, similar to FNAF. Additionally, I added a scrolling bar that goes from right to left on the submarine UI. I didn’t want to add another button to the pause menu because it would look too cluttered. This new addition looks pretty neat. What’s Next? Making the README document Getting people to test my game Implement some of their feedback"}, {"post_id": 54076, "ts": "2026-08-24T20:58:15Z", "hours": 10.3475, "text": "Devlog 11: Working on UI as well as Prologue/Epilogue animations What have I accomplished: Made a main menu Made a mission de/briefing scene Made a pause menu Finished with the Prologue/Epilogue animations Added a bonus cutscene during the retrieval of the warheads Made a main menu I went for an extreme horror vibe, dark environment, low light, eerie background noises and single sonar ping. I also animated the camera so that it ‘floats’ around as well as a nearly invisible figure moving in the background to give that eerie feeling that you are not safe and something is watching you. This was done in response to my research on what makes a horror game so scary from the menu only. Mission de/briefing scene Using the visible characters setting in the Label node, I made this niche typewriter/coding briefing scene. With a single ‘ACCEPT’ button. Upon clicking it, player gets sent to the play scene. Pause screen I made a fairly simple pause screen. Nothing fancy, but vital at the same time. Press ‘Escape’, game paused. I am considering reusing the pause menu, change the text with code to use it as a death screen The intro/outro animations The animations are just the player being transported on the tugboat. The same one I modelled in the previous devlog. Intro takes the player to the site. Outro has 5/6 warheads on it and taking the player away from the site. This is to add cohesion so the player doesn’t get confused between scene transitions. However, I realised during the animations, the sky in the environment goes MAD. It starts rapidly flashing between white and blue, similar to lightning, but I am not a fan of it, must remove. BONUS scene! I decided to spice things up by adding a little bit of drama at the end. The player will collect the 6th warhead, uh-oh it’s jammed AND at the SAME time, the ceiling’s going to collapse! The player ram their hull with the warhead to trigger the ignition. The warhead will launch itself at the wall creating a huge hole for the player to escape through, they rise up to the surface and the epilogue cutscene plays. What’s Next? Making a death screen (Should be easy) Making a tutorial on the submarine functionality. Doing the README document"}, {"post_id": 51897, "ts": "2026-08-21T20:01:17Z", "hours": 10.3164, "text": "Devlog 10: Finished map layout and small tweaks to submarine started working on story and UI What have I accomplished: Finished making the environment Coded the sharks to move around the map Added clues for the player Started the story, the lore, the introduction Finished the environment: Making the environment definitely took the longest but it wasn’t the hardest task, just a lot of copy and paste of walls. However finding any gaps or holes in which the player can creep down into was annoying. After a few hours of looking around, banging into walls, I did find and patch up a few but am not sure if that is all of them. Hopefully, to discourage/guide the player away from the corners and edges, I put huge sharks guarding the walls as well as rows of sea mines to tell the player to look somewhere else, not here. Also, I added a couple of underwater ruins, like a wrecked ship and a submarine. The actual warhead retrieval process is working now, when the submarine touches it, a parachute will come up and lift the warhead to the surface, where hopefully the boat will collect. Coding the sharks! Coding the sharks was fairly easy (Literally 2 lines of code) as I used a Path3D and a PathFollow3D node to just map out the path in the inspector. func _process(delta): progress += 20*delta That is all the code, the progress, is how far the shark is along the track and the integer determines how fast the shark moves. I could’ve used an AnimationTree node but with my prior experience to that, just thinking of the whole coding part, setting the animations up, the chase player code made me cringe a lot, also there’s not enough time. Giving the player clues So in addition to the current features of the MMS scanner, it can also track the ‘SOS beacon’ of the abandoned target submarine by taking its position and comparing it to the player’s and using ranges of signal strength with distance to see how ‘strong’ the signal is. Additionally, it does the exact same for angle, so the scanner can tell player which direction the submarine was found. Started the introduction The plan in mind is like some cool visual graphics telling you, your objective, a brief map layout telling you of hazards, some lore, like ‘Secret weapon’s mission gone wrong, must retrieve warheads before enemies do so’ the submarine is on a tugboat sailing on the sea, the crane will pick it up and dump it in the water Full lapse of tugboat here : https://lapse.hackclub.com/timelapse/lsYzC1wA-xLH What’s next? Adding UI to the game, pause menu, main menu, death screen Finishing lore of game, animations, mission objective, win scene."}, {"post_id": 47824, "ts": "2026-08-16T01:16:04Z", "hours": 9.85, "text": "Devlog 9: Major Change of Plans and Coded Assets What have I accomplished: Started Making the environment Made a scanner for the periscope to detect objects Coded the sea mine Added explosion Particles The part that took the longest was the environment, taking in the lengths, finding hidden collision gaps, setting each zone up and placing obstacles. The sea mine code was fairly simple, I also added some explosion particles when it exploded. That was really fun. Additionally, I made a periscope scanner that can scan the ocean for any relics/mines/sharks in sight. The most aesthetic addition to the submarine and it gives the periscope a proper purpose rather than just a fun extra. I was heavily inspired by Call of Duty with their MMS (Milimeter scanner). This scanner can see through walls and highlight enemies! Major change in plans : Before we would have relics being the prized possession to retrieve. However, after realising how vast the map was and the extreme likelihood of players not being able to find all relics was too high to ignore. So instead of the player collecting relics, I have decided that they will go on an extremely difficult mission to retrieve some nuclear warheads/missiles on a U.S. nuclear submarine. The abandoned submarine will lie at the very bottom of 300m. The player must dodge sea mines, explore the other shipwrecks/submarines all before some rivals get their hands on it. Something like that for the briefing screen The player will deploy buoys/parachutes on the missiles, and they will float to the surface. A boat will come and collect them. Mission Complete! What’s Next? I will be using a similar layout but with a different set of decorations, more submarines/shipwrecks, signs of naval warfare, mines and the warhead finally."}, {"post_id": 45414, "ts": "2026-08-11T20:57:09Z", "hours": 10.4542, "text": "Devlog 8: Imported Environmental Assets and Hazards What I have accomplished: Using Blender 5.0 I hand modelled all the 3D assets. RUINS For some ruins where the relic might be, I have added some crumbled pillars, ruined archways, cracked stone slabs and an altar for the relic to rest on. I did some basic extruding to get the original shape down, then just pulled and twitched with the vertexes to give it the run down effect Sea mines! Additionally, the sea mine was fairly easy to make, a sphere, cylinders and a chain. Making the chain to the base was by far was the most satisfying part of the build as you just copy, paste, rotate and within seconds you get a neat, professional looking chain. Relics The relics were pretty easy, a glowing orb with unique patterns drawn across it and a shield. The plan is to just change the colour of the hues so the player has a common sense of what an orb looks like. Colours can be blue, violet, pink, red, yellow, gold, orange, and vice versa for the shield. Underwater Predator Now, the main event, the shark. I spent 6 hours and 32 minutes, modelling, texturing, rigging and animating this thing. This is by far the most complex project I have ever done (maybe even the most successful in terms of rigging!) Below is the link of all my lapses for the shark only https://lapse.hackclub.com/user/@NCGAMEMAKING I’ve set the basic environment up, just a big square with rocks as barriers. What’s next? Using all of these assets to make the environment. I have to layout the relics, ruins, sea mines, sharks. I have to code out the sea mine so it explodes with explosion graphics (not that hard) Code the shark so it like swims in its patrol area and so if the player’s flashlight is shining on the shark it will start chasing the player, hurt the player and move on with its basic patrol."}, {"post_id": 39279, "ts": "2026-08-02T04:45:38Z", "hours": 8.3853, "text": "Devlog 7: Finished Adding Submarine Polish and started working on building an environment Submarine Controls: Fixed and Polished During further testing of the submarine on new features, I felt like steering the submarine felt awkward as it was locked on a flat horizontal plane. Pitching up and down required extra key binds. So I decided to change/improve the physics and input methods of the submarine so driving it feels much more smoother. From Third person Camera to Periscope: I decided to change my third person camera into a periscope to give my game a more ‘claustrophobic’ feel hoping to get the element to show how small you are in such a big ocean. Well, the periscope has a open and shut animation and well as audio polish. The player can see through a small circle and see their surroundings. (Also for visual polish when the submarine is at low health the glass will even appear cracked!) Full Axis mouse control: Moving the mouse left and right handles the Yaw (left and right) but now I made it so that it can handle the pitch (up and down) so the player can point the sub’s nose up when ascending. Keyboard Axis controls: The player does have the direct keys for vertical changes like diving and climbing still giving players all the options when using the submarine. Full Audio Response: I have added dynamics pitch scaling so the background engine hum will go change when in different states. Quiet for idle. Loud for moving. I added hiss and bubble effects just like how real submarine use their ballasts to rise and fall, hull breach alarms, collision thuds, warning sounds as well deep pressure creaking of the hull. Death Animation and Warning Collision: When the player reaches 0(Zero) health, the sub will like spin out of control and ‘crash land’ in the water. The screens will show errors and soon fade away. The scene then reloads. Also using a Shapecast3D , I managed to make a collisions system. The bottom left text will say ‘COLLISION : FINE’ if there are no objects in the enlarged ShapeCast but if there are objects in that shape the text will go red and say ‘COLLISION : WARNING’ Responsive Steering Controls: I also added a script to the steering wheel so it would turn as the player is moving the mouse to give it more responsiveness. Much better than a static wheel in the front. Marine Particles: Additionally, to give that immersive feel I made simple marine particles. These are like your pieces of plankton or dust in the ocean. They just float around the screen and even rush by appropriate to the sub’s velocity. Upgrading the Ocean: Boujie Water Shader After the player features and movement was locked in. It was time for environmental visuals. I realised that my basic volumetric fog wasn’t quite cutting it for an immersive ocean. After some research, I stumbled upon the fantastic Boujie Water Shader created by Cory Petkovsek (GodotNite / Boujie) I love this addon. It really brings the ocean to life using Gerstner waves this is really good for optimization in the future! What’s Next? With Submarine movement, UI and audio out of the way, the focus is now entirely towards Level Design and Gameplay loops. Here is my todo list: Mapping out ocean zones: I will have 3 zones and each zone has 4 artifacts. Each zone will get darker, and more scarier. Relic Retrieval: Now that I am changing my placeholder of ‘RINGS : 0/12’ to Relics I am thinking of making 12 ancient, artifacts scattered across the map waiting for the player to collect them. Potential Underwater Hazards: By placing environmental obstacles, tight squeeze caverns, minefields or even patrolling enemies this will make the gameplay much more exciting! See you in the next devlog where we explore level design!"}, {"post_id": 31071, "ts": "2026-07-19T05:19:25Z", "hours": 6.3125, "text": "Devlog 6 Finished Making the Interactive UI Took a little while but in the end, totally worth it! What have I accomplished: Real-Time Telemetry Arrays: Dynamic Navigation Tools: Integrated a fully functional Compass Heading indicator, alongside precise Speed (m/s) and Depth trackers linked directly to the sub’s 3D transform and linear physics state. Not to mention there is also a compass, a progress tracker and a warning system Vital Resource Gauges: The console now cleanly maps out real-time Stamina and Exhaustion meters to handle high-speed maneuvering and sprint cooldowns smoothly. Smart Health & “Frame-Before” Velocity Systems: Implemented a custom predictive physics calculation that catches the sub’s exact velocity right before a collision occurs. This completely bypasses physics-engine quirks (like velocity instantly dropping to zero on impact frames), ensuring blunt collisions register perfectly every time. Dynamic Hull Integrity Status: The hull damage bar dynamically recalculates color states and screen readouts: Above 66%: Status reads STABLE with green theme aesthetics.25% to 66%: Automatically shifts to a warning state (DAMAGED) with an orange alert profile. Emergency Visual Alert System (Dynamic Warning Lights): When structural health drops below the 25% Critical Zone, a time-accumulating sine wave engine takes over the console mesh arrays. This triggers an aggressive, high-speed visual flashing sequence across the interior status plates to warn the player of if its gonna die. Terminal Polish & Hacking Decorations: To capture that retro, high-tech submarine atmosphere, the dashboard now features a multi-layered background Parallax Hacking Screen that slides continuously behind the telemetry values. Combined with sudden flickering screen effects, the terminal reacts heavily to impact forces, making the player feel every heavy rattle when diving too fast into rocky corridors. What’s next? I want to make my 3rd person camera a periscope with the cute little spyglass on top of the submarine and allow to have a 360 degree of motion Adding a death screen and animation, not so sure of seeing myself still being able to run Also doing something about this Collision Warning alert in the bottom left corner. Definitely add some visual juice (screen shake, glass crack) but that’s low priority Also some audio! See you guys later!"}, {"post_id": 27098, "ts": "2026-07-12T11:19:19Z", "hours": 2.7919, "text": "Devlog 5 : Actual progress coming in about UI! By carefully placing each and every word, section, icon and evaluating every single number… the top screen of the submarine is officially done! What’s on the screen right now: Hull Integrity: A functioning system variable. Custom Healthbar: A sick-looking visual health layout. Rings / Checkpoint tracking: Keeps tabs on your current objectives. Status Alarms: Two red dots on the wings (which will flash for critical signs or dangers once I code the triggers). I got so excited that I even found a cool hacking matrix background and threw a Parallax2D on it so it looks like the sub is constantly processing code in the background On top of that, I added a custom shader flicker effect so it feels like a real, raw electronic monitor. As you can see in the screenshot, I just slapped a ColorRect2D added some code (with the help of AI as shader code is way beyond my coding capabilities. The big game-changer: I just switched the viewport texture configuration from the default Albedo slot over to the Emission channel so the cockpit doesn’t look so dull. Because the display now literally emits its own light into the dark, I was able to delete the temporary OmniLight3D from the scene entirely. The cockpit lighting looks way more natural now. Next Up: Now that the formula is down, I’m moving on to complete the other two viewports: the primary speedometer display right on the steering wheel, and the auxiliary bottom viewport sitting behind it."}, {"post_id": 14954, "ts": "2026-06-24T09:13:03Z", "hours": 3.8142, "text": "Fixing the Submarine Screen Layout Spent some time wrestling with Godot’s SubViewport system today to get the submarine’s overhead display screen actually working. What went down: The Layout Battle: Setting up the UI scene with clean container nodes ( CenterContainer and VBoxContainer ) so the labels stay organized and readable. The UV Stretch Crisis: For a while, the text was completely giant and blown out across the entire 3D mesh. Turns out the mesh’s UV unwrapping stretched the texture out like crazy. After a lot of tweaking, setting a custom UV1 scale of -2.0 on the material ended up being the magic number to force everything to shrink down and fit right onto the screen arch. Viewport Quirks: Dealt with some classic Godot issues where the texture kept disappearing or turning bright purple when making edits, but finally got the paths reconnected and running. Next Steps: I have to now fix and test these screens and to make sure they display the text flawlessly. Next up is prettying it up to make the text layouts look nice and crisp and then getting the rest of the cockpit dashboard screens mapped out."}, {"post_id": 13059, "ts": "2026-06-21T11:14:31Z", "hours": 1.9336, "text": "Submarine Devlog Update: Polishing the Pilot Experience! What’s New? I have decided to shelf the torpedoes and missiles for a bit. The absolute priority right now is making the submarine movement feel completely seamless before adding combat mechanics! Here is what just went live: ** Dynamic Camera Sway:** Added procedural camera sway that reacts directly to the submarine’s velocity and turn angles, making the underwater physics feel incredibly weighty! ** Dual-Perspective Toggle:** Implemented a first-person cockpit view. Players can now seamlessly toggle between 3rd-person and 1st-person perspectives by tapping the V key! Current Roadblocks & Design Hurdles 1. Overwhelming Cockpit Screens I am starting to build out the internal monitors and pilot UI. However, in my opinion, the current setup of these screens covers the view a bit too much. The player can’t really see the outside environment! 2. Camera Clipping Through Walls Also, something I am discovering is that despite using a standard SpringArm3D node for my third-person view, the camera is still clipping into the walls. I have been banging my head for so long trying to stop it from clipping! What’s Next? Over the next few days, my primary focus will be making the cockpit interior more lively: ** Adding Submarine UI:** Actively building and designing the interface systems for the dashboard. Filling Empty Screens: Populating those blank monitors with live text, data feeds, and telemetry. Some questions I have been asking my friends regarding my issues. How should I handle the screen layout? What are your favorite tricks for keeping a cockpit UI highly functional without completely blocking the player’s view of the outside world? How can I fix the camera clipping? If you have experience with SpringArm3D or collision detection in this engine, what am I missing to keep the camera outside the cave walls? How can I make the screens look properly sci-fi? What kind of design elements, color palettes, or visual details should I add to give the terminal text that high-tech, futuristic submarine vibe?"}, {"post_id": 12471, "ts": "2026-06-20T11:15:19Z", "hours": 1.0014, "text": "Devlog 2 : Added some visual juice and added full direction movement logic What have I accomplished? Finished submarine movement as well as bubble particles Realistic Bubbles : I created a sphere and slapped on a realistic transparent bubble shader that I had spent hours looking over the internet on how to code in shader text and finally got something working. Dynamic Trails : I duplicated a few of the GPU particles and put them on all sides of the submarine. Full Directional Logic : Then with a few lines of code, I got them to dynamically emit bubbles wherever I go. It works for the strafing side-to-side as well as climbing and diving. Overall, a good start to the movement of the submarine. What’s next? I will start working on UI for the submarine, maybe add a few monitors inside it for the player to see"}, {"post_id": 12321, "ts": "2026-06-20T03:16:57Z", "hours": 4.3461, "text": "Making Movement for the Submarine"}]...
|
Title: Underwater Submarine Adventure by @NC | Sta Title: Underwater Submarine Adventure by @NC | Stardance
Devlogs:
Making Movement for the Submarine
Devlog 2 : Added some visual juice and added full direction movement logic What have I accomplished? Finished submarine movement as well as bubble particles Realistic Bubbles : I created a sphere and slapped on a realistic transparent bubble shader that I had spent hours looking over the internet on how to code in shader text and finally got something working. Dynamic Trails : I duplicated a few of the GPU particles and put them on all sides of the submarine. Full Directional Logic : Then with a few lines of code, I got them to dynamically emit bubbles wherever I go. It works for the strafing side-to-side as well as climbing and diving. Overall, a good start to the movement of the submarine. What’s next? I will start working on UI for the submarine, maybe add a few monitors inside it for the player to see
Submarine Devlog Update: Polishing the Pilot Experience! What’s New? I have decided to shelf the torpedoes and missiles for a bit. The absolute priority right now is making the submarine movement feel completely seamless before adding combat mechanics! Here is what just went live: ** Dynamic Camera Sway:** Added procedural camera sway that reacts directly to the submarine’s velocity and turn angles, making the underwater physics feel incredibly weighty! ** Dual-Perspective Toggle:** Implemented a first-person cockpit view. Players can now seamlessly toggle between 3rd-person and 1st-person perspectives by tapping the V key! Current Roadblocks & Design Hurdles 1. Overwhelming Cockpit Screens I am starting to build out the internal monitors and pilot UI. However, in my opinion, the current setup of these screens covers the view a bit too much. The player can’t really see the outside environment! 2. Camera Clipping Through Walls Also, something I am discovering is that despite using a standard SpringArm3D node for my third-person view, the camera is still clipping into the walls. I have been banging my head for so long trying to stop it from clipping! What’s Next? Over the next few days, my primary focus will be making the cockpit interior more lively: ** Adding Submarine UI:** Actively building and designing the interface systems for the dashboard. Filling Empty Screens: Populating those blank monitors with live text, data feeds, and telemetry. Some questions I have been asking my friends regarding my issues. How should I handle the screen layout? What are your favorite tricks for keeping a cockpit UI highly functional without completely blocking the player’s view of the outside world? How can I fix the camera clipping? If you have experience with SpringArm3D or collision detection in this engine, what am I missing to keep the camera outside the cave walls? How can I make the screens look properly sci-fi? What kind of design elements, color palettes, or visual details should I add to give the terminal text that high-tech, futuristic submarine vibe?
Fixing the Submarine Screen Layout Spent some time wrestling with Godot’s SubViewport system today to get the submarine’s overhead display screen actually working. What went down: The Layout Battle: Setting up the UI scene with clean container nodes ( CenterContainer and VBoxContainer ) so the labels stay organized and readable. The UV Stretch Crisis: For a while, the text was completely giant and blown out across the entire 3D mesh. Turns out the mesh’s UV unwrapping stretched the texture out like crazy. After a lot of tweaking, setting a custom UV1 scale of -2.0 on the material ended up being the magic number to force everything to shrink down and fit right onto the screen arch. Viewport Quirks: Dealt with some classic Godot issues where the texture kept disappearing or turning bright purple when making edits, but finally got the paths reconnected and running. Next Steps: I have to now fix and test these screens and to make sure they display the text flawlessly. Next up is prettying it up to make the text layouts look nice and crisp and then getting the rest of the cockpit dashboard screens mapped out.
Devlog 5 : Actual progress coming in about UI! By carefully placing each and every word, section, icon and evaluating every single number… the top screen of the submarine is officially done! What’s on the screen right now: Hull Integrity: A functioning system variable. Custom Healthbar: A sick-looking visual health layout. Rings / Checkpoint tracking: Keeps tabs on your current objectives. Status Alarms: Two red dots on the wings (which will flash for critical signs or dangers once I code the triggers). I got so excited that I even found a cool hacking matrix background and threw a Parallax2D on it so it looks like the sub is constantly processing code in the background On top of that, I added a custom shader flicker effect so it feels like a real, raw electronic monitor. As you can see in the screenshot, I just slapped a ColorRect2D added some code (with the help of AI as shader code is way beyond my coding capabilities. The big game-changer: I just switched the viewport texture configuration from the default Albedo slot over to the Emission channel so the cockpit doesn’t look so dull. Because the display now literally emits its own light into the dark, I was able to delete the temporary OmniLight3D from the scene entirely. The cockpit lighting looks way more natural now. Next Up: Now that the formula is down, I’m moving on to complete the other two viewports: the primary speedometer display right on the steering wheel, and the auxiliary bottom viewport sitting behind it.
Devlog 6 Finished Making the Interactive UI Took a little while but in the end, totally worth it! What have I accomplished: Real-Time Telemetry Arrays: Dynamic Navigation Tools: Integrated a fully functional Compass Heading indicator, alongside precise Speed (m/s) and Depth trackers linked directly to the sub’s 3D transform and linear physics state. Not to mention there is also a compass, a progress tracker and a warning system Vital Resource Gauges: The console now cleanly maps out real-time Stamina and Exhaustion meters to handle high-speed maneuvering and sprint cooldowns smoothly. Smart Health & “Frame-Before” Velocity Systems: Implemented a custom predictive physics calculation that catches the sub’s exact velocity right before a collision occurs. This completely bypasses physics-engine quirks (like velocity instantly dropping to zero on impact frames), ensuring blunt collisions register perfectly every time. Dynamic Hull Integrity Status: The hull damage bar dynamically recalculates color states and screen readouts: Above 66%: Status reads STABLE with green theme aesthetics.25% to 66%: Automatically shifts to a warning state (DAMAGED) with an orange alert profile. Emergency Visual Alert System (Dynamic Warning Lights): When structural health drops below the 25% Critical Zone, a time-accumulating sine wave engine takes over the console mesh arrays. This triggers an aggressive, high-speed visual flashing sequence across the interior status plates to warn the player of if its gonna die. Terminal Polish & Hacking Decorations: To capture that retro, high-tech submarine atmosphere, the dashboard now features a multi-layered background Parallax Hacking Screen that slides continuously behind the telemetry values. Combined with sudden flickering screen effects, the terminal reacts heavily to impact forces, making the player feel every heavy rattle when diving too fast into rocky corridors. What’s next? I want to make my 3rd person camera a periscope with the cute little spyglass on top of the submarine and allow to have a 360 degree of motion Adding a death screen and animation, not so sure of seeing myself still being able to run Also doing something about this Collision Warning alert in the bottom left corner. Definitely add some visual juice (screen shake, glass crack) but that’s low priority Also some audio! See you guys later!
Devlog 7: Finished Adding Submarine Polish and started working on building an environment Submarine Controls: Fixed and Polished During further testing of the submarine on new features, I felt like steering the submarine felt awkward as it was locked on a flat horizontal plane. Pitching up and down required extra key binds. So I decided to change/improve the physics and input methods of the submarine so driving it feels much more smoother. From Third person Camera to Periscope: I decided to change my third person camera into a periscope to give my game a more ‘claustrophobic’ feel hoping to get the element to show how small you are in such a big ocean. Well, the periscope has a open and shut animation and well as audio polish. The player can see through a small circle and see their surroundings. (Also for visual polish when the submarine is at low health the glass will even appear cracked!) Full Axis mouse control: Moving the mouse left and right handles the Yaw (left and right) but now I made it so that it can handle the pitch (up and down) so the player can point the sub’s nose up when ascending. Keyboard Axis controls: The player does have the direct keys for vertical changes like diving and climbing still giving players all the options when using the submarine. Full Audio Response: I have added dynamics pitch scaling so the background engine hum will go change when in different states. Quiet for idle. Loud for moving. I added hiss and bubble effects just like how real submarine use their ballasts to rise and fall, hull breach alarms, collision thuds, warning sounds as well deep pressure creaking of the hull. Death Animation and Warning Collision: When the player reaches 0(Zero) health, the sub will like spin out of control and ‘crash land’ in the water. The screens will show errors and soon fade away. The scene then reloads. Also using a Shapecast3D , I managed to make a collisions system. The bottom left text will say ‘COLLISION : FINE’ if there are no objects in the enlarged ShapeCast but if there are objects in that shape the text will go red and say ‘COLLISION : WARNING’ Responsive Steering Controls: I also added a script to the steering wheel so it would turn as the player is moving the mouse to give it more responsiveness. Much better than a static wheel in the front. Marine Particles: Additionally, to give that immersive feel I made simple marine particles. These are like your pieces of plankton or dust in the ocean. They just float around the screen and even rush by appropriate to the sub’s velocity. Upgrading the Ocean: Boujie Water Shader After the player features and movement was locked in. It was time for environmental visuals. I realised that my basic volumetric fog wasn’t quite cutting it for an immersive ocean. After some research, I stumbled upon the fantastic Boujie Water Shader created by Cory Petkovsek (GodotNite / Boujie) I love this addon. It really brings the ocean to life using Gerstner waves this is really good for optimization in the future! What’s Next? With Submarine movement, UI and audio out of the way, the focus is now entirely towards Level Design and Gameplay loops. Here is my todo list: Mapping out ocean zones: I will have 3 zones and each zone has 4 artifacts. Each zone will get darker, and more scarier. Relic Retrieval: Now that I am changing my placeholder of ‘RINGS : 0/12’ to Relics I am thinking of making 12 ancient, artifacts scattered across the map waiting for the player to collect them. Potential Underwater Hazards: By placing environmental obstacles, tight squeeze caverns, minefields or even patrolling enemies this will make the gameplay much more exciting! See you in the next devlog where we explore level design!
Devlog 8: Imported Environmental Assets and Hazards What I have accomplished: Using Blender 5.0 I hand modelled all the 3D assets. RUINS For some ruins where the relic might be, I have added some crumbled pillars, ruined archways, cracked stone slabs and an altar for the relic to rest on. I did some basic extruding to get the original shape down, then just pulled and twitched with the vertexes to give it the run down effect Sea mines! Additionally, the sea mine was fairly easy to make, a sphere, cylinders and a chain. Making the chain to the base was by far was the most satisfying part of the build as you just copy, paste, rotate and within seconds you get a neat, professional looking chain. Relics The relics were pretty easy, a glowing orb with unique patterns drawn across it and a shield. The plan is to just change the colour of the hues so the player has a common sense of what an orb looks like. Colours can be blue, violet, pink, red, yellow, gold, orange, and vice versa for the shield. Underwater Predator Now, the main event, the shark. I spent 6 hours and 32 minutes, modelling, texturing, rigging and animating this thing. This is by far the most complex project I have ever done (maybe even the most successful in terms of rigging!) Below is the link of all my lapses for the shark only https://lapse.hackclub.com/user/@NCGAMEMAKING I’ve set the basic environment up, just a big square with rocks as barriers. What’s next? Using all of these assets to make the environment. I have to layout the relics, ruins, sea mines, sharks. I have to code out the sea mine so it explodes with explosion graphics (not that hard) Code the shark so it like swims in its patrol area and so if the player’s flashlight is shining on the shark it will start chasing the player, hurt the player and move on with its basic patrol.
Devlog 9: Major Change of Plans and Coded Assets What have I accomplished: Started Making the environment Made a scanner for the periscope to detect objects Coded the sea mine Added explosion Particles The part that took the longest was the environment, taking in the lengths, finding hidden collision gaps, setting each zone up and placing obstacles. The sea mine code was fairly simple, I also added some explosion particles when it exploded. That was really fun. Additionally, I made a periscope scanner that can scan the ocean for any relics/mines/sharks in sight. The most aesthetic addition to the submarine and it gives the periscope a proper purpose rather than just a fun extra. I was heavily inspired by Call of Duty with their MMS (Milimeter scanner). This scanner can see through walls and highlight enemies! Major change in plans : Before we would have relics being the prized possession to retrieve. However, after realising how vast the map was and the extreme likelihood of players not being able to find all relics was too high to ignore. So instead of the player collecting relics, I have decided that they will go on an extremely difficult mission to retrieve some nuclear warheads/missiles on a U.S. nuclear submarine. The abandoned submarine will lie at the very bottom of 300m. The player must dodge sea mines, explore the other shipwrecks/submarines all before some rivals get their hands on it. Something like that for the briefing screen The player will deploy buoys/parachutes on the missiles, and they will float to the surface. A boat will come and collect them. Mission Complete! What’s Next? I will be using a similar layout but with a different set of decorations, more submarines/shipwrecks, signs of naval warfare, mines and the warhead finally.
Devlog 10: Finished map layout and small tweaks to submarine started working on story and UI What have I accomplished: Finished making the environment Coded the sharks to move around the map Added clues for the player Started the story, the lore, the introduction Finished the environment: Making the environment definitely took the longest but it wasn’t the hardest task, just a lot of copy and paste of walls. However finding any gaps or holes in which the player can creep down into was annoying. After a few hours of looking around, banging into walls, I did find and patch up a few but am not sure if that is all of them. Hopefully, to discourage/guide the player away from the corners and edges, I put huge sharks guarding the walls as well as rows of sea mines to tell the player to look somewhere else, not here. Also, I added a couple of underwater ruins, like a wrecked ship and a submarine. The actual warhead retrieval process is working now, when the submarine touches it, a parachute will come up and lift the warhead to the surface, where hopefully the boat will collect. Coding the sharks! Coding the sharks was fairly easy (Literally 2 lines of code) as I used a Path3D and a PathFollow3D node to just map out the path in the inspector. func _process(delta): progress += 20*delta That is all the code, the progress, is how far the shark is along the track and the integer determines how fast the shark moves. I could’ve used an AnimationTree node but with my prior experience to that, just thinking of the whole coding part, setting the animations up, the chase player code made me cringe a lot, also there’s not enough time. Giving the player clues So in addition to the current features of the MMS scanner, it can also track the ‘SOS beacon’ of the abandoned target submarine by taking its position and comparing it to the player’s and using ranges of signal strength with distance to see how ‘strong’ the signal is. Additionally, it does the exact same for angle, so the scanner can tell player which direction the submarine was found. Started the introduction The plan in mind is like some cool visual graphics telling you, your objective, a brief map layout telling you of hazards, some lore, like ‘Secret weapon’s mission gone wrong, must retrieve warheads before enemies do so’ the submarine is on a tugboat sailing on the sea, the crane will pick it up and dump it in the water Full lapse of tugboat here : https://lapse.hackclub.com/timelapse/lsYzC1wA-xLH What’s next? Adding UI to the game, pause menu, main menu, death screen Finishing lore of game, animations, mission objective, win scene.
Devlog 11: Working on UI as well as Prologue/Epilogue animations What have I accomplished: Made a main menu Made a mission de/briefing scene Made a pause menu Finished with the Prologue/Epilogue animations Added a bonus cutscene during the retrieval of the warheads Made a main menu I went for an extreme horror vibe, dark environment, low light, eerie background noises and single sonar ping. I also animated the camera so that it ‘floats’ around as well as a nearly invisible figure moving in the background to give that eerie feeling that you are not safe and something is watching you. This was done in response to my research on what makes a horror game so scary from the menu only. Mission de/briefing scene Using the visible characters setting in the Label node, I made this niche typewriter/coding briefing scene. With a single ‘ACCEPT’ button. Upon clicking it, player gets sent to the play scene. Pause screen I made a fairly simple pause screen. Nothing fancy, but vital at the same time. Press ‘Escape’, game paused. I am considering reusing the pause menu, change the text with code to use it as a death screen The intro/outro animations The animations are just the player being transported on the tugboat. The same one I modelled in the previous devlog. Intro takes the player to the site. Outro has 5/6 warheads on it and taking the player away from the site. This is to add cohesion so the player doesn’t get confused between scene transitions. However, I realised during the animations, the sky in the environment goes MAD. It starts rapidly flashing between white and blue, similar to lightning, but I am not a fan of it, must remove. BONUS scene! I decided to spice things up by adding a little bit of drama at the end. The player will collect the 6th warhead, uh-oh it’s jammed AND at the SAME time, the ceiling’s going to collapse! The player ram their hull with the warhead to trigger the ignition. The warhead will launch itself at the wall creating a huge hole for the player to escape through, they rise up to the surface and the epilogue cutscene plays. What’s Next? Making a death screen (Should be easy) Making a tutorial on the submarine functionality. Doing the README document
Devlog 12 : Finished Death screen as well as added help features What have I accomplished: Added a death screen Added a ‘help’ feature and hints in the submarine Made a death screen The death screen was fairly easy, I just repurposed the pause screen to become the death screen when the player dies. Added a help feature Put a help option on the home screen. If you hover your mouse over the help button, the hints will appear on the side, similar to FNAF. Additionally, I added a scrolling bar that goes from right to left on the submarine UI. I didn’t want to add another button to the pause menu because it would look too cluttered. This new addition looks pretty neat. What’s Next? Making the README document Getting people to test my game Implement some of their feedback
Devlog 13 : Recieved Tester Feedback and implemented it What have I accomplished: I have asked a tester (Dad) to test my game. He started playing the game and gave me a sheet of feedback. Upon deciphering the handwriting I made a list of main list of what needs to be improved. Here is the list Give more screen-space for player to see ocean Do something about the radio messages being sent as they are very annoying when the player is exploring and they just appear and block the player’s screen Also the radio messages go away too quickly The flashlight isn’t crisp. It like bleeds into the ocean and doesn’t look nice The ocean environment is too dark, make it brigher What/How did I implement the feedback? As a result, I merged the top panel into the bottom panel while replacing the top section with the radio messages. This time the player has much more screen-space to play in while the radio messages just briefly appear on the screen, not blocking the player’s view. As for the flashlight, I used a MeshInstance3D equipped with an emission Material so the flashlight looks much “crisper”. I also increased the show time for the radio messages from 3 seconds to 5 seconds so player will realise that a message has popped and has sufficient time to read it. As for the ocean environment, I just boosted the emission of the volumetric fog while make the background color slightly lighter rather than leaving it pitch black (Made it like a really dark navy blue). Bonus bug patch! While testing the game, I also found a bug with the Restart button in the pause screen. The bug was that when the player pressed restart, the scene tree was still paused, so the intro animation wouldn’t start until you unpaused it. So in order to fix this I just added another single line of code. func _on_restart_button_pressed(): get_tree().paused = false#This was the line of code needed get_tree().reload_current_scene() That is it so far, definitely getting more people to test it (Family, friends etc…) and implementing more feedback!
Devlog 14: Received 2nd Round of Feedback and Implemented it. What have I accomplished: I went to my coding club and asked fellow Godot/Unity enthusiasts to test my game! Here’s basically what they said… They couldn’t find the tunnel entrances The Radio Messages don’t stand out enough Make the Flashlight brighter (again…) Add some sort of Sonar Scan circle thingy on the periscope - make it more useful rather than a wall of text Make the main menu brighter, can’t see the submarine Do not exactly know the initial objective of the game/where to go Make Arrows or hints to show player what to do in Finale sequence When the player escapes through the tunnel, add some decorations make it less boring. Additionally, I got a 2nd round of feedback from my Dad… He said the UI is much better, less cluttered and the flashlight is better as well as the other features, but he has some more feedback. He wants a minimap, so he can see where to go because he is lost and does not understand the compass heading. He wants a clearer font for the submarine UI as the current one is too blurry for him He wants me to put radioactive trifoils on the missiles So onto how I implemented their feedback I made some vines on blender, I did it fairly quicky i didn’t bother putting it on Lapse. So, I implemented the vines with a glowing green shader, so it is easily visible to the player. I placed them in paths leading to the entrance and tunnels, so player knows where to go. As for the radio messages I added a yellow flashing border around them to attract player attention. As for the flashlight, I just cranked the energy up to like 50+, did the job pretty well. I added a sonar scan because the testers believe that the beacon signal is too generic and not really helpful, thus making the periscope itself not useful. In order to improve this, I added a sonar scan, the circular map that actual submarines use. After looking at some tutorials, checking documentation and reddit posts, I realized that I just have to somehow convert my prior knowledge of polar coordinates and convert them into game code. After a while, I got the red dots (sea mines) to appear on the map when the player presses the scan button (x). Additionally, using groups, I got the warheads to come up as yellow dots on the sonar map. The main menu was an easy fix, just had to increase the energy of the light. As for the initial objective, I made an animation where the camera shows the player where the warheads are located and the journey they have to take, it like shows the whole path so the player has some knowledge of knowing if they are going on the right path. Also just added another hint telling the player of the direction (80-90° East.) As for the Finale sequence, I just added a spinning arrow that points to the warhead signalling that the player has to ram it with their hull. Additionally, there are radio messages telling the player what to do. When the player escapes, I added a tall, enclosed tunnel with hanging vines for the player to escape through. Makes the game design much more intentional and doesn’t confuse players into thinking they just broke through the map. For the minimap, I used a SubViewportContainer with a camera being referenced to the actual SubViewport Node. The camera is in Orthogonal mode, and just facing down on the player 30metres away. The input is being displayed on the SubViewport. For the submarine font, I changed some of the colors so the font stands out more and becomes more CRISP and changed the font so the player can easily understand what’s on the dashboard. Another quick and easy fix was the radioactive logos. Just got a MeshInstance3D and slapped the texture on there and stuck it on the side of the warhead. This is probably the last devlog until submission.
Devlog 15: Exported Game & Ready for Submission! This is the last devlog until submissions, I was just getting the export templates and etc. I also finished with the README No actual progress…
Ships:
I built Abysmal Echo. This is by far my most comprehensive project I have EVER made using the Godot Engine. I put a lot of effort into it and I hope you enjoy playing it This game is about recovering some nuclear warheads at the bottom of the sea while navigating fields of sea mines, cavernous tunnels and mutated sharks. Good Luck! P.S. Please read the controls on how to play the game. PLEEASE...
|
1793004485.1695528
|
1793090885.1695528
|
|
2719
|
My first slack bot! by @Hugehouseforest | Stardanc My first slack bot! by @Hugehouseforest | Stardance...
|
Hugehouseforest
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Hugehouseforest | S Title: My first slack bot! by @Hugehouseforest | Stardance...
|
1792687930.7502475
|
1793292730.7502475
|
|
2720
|
Pixodoro by @electric_gobyfish | Stardance
|
electric_gobyfish
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Pixodoro by @electric_gobyfish | Stardance
|
1792619726.6497118
|
1793224526.6497118
|
|
2721
|
Untitled by @ishowspeed | Stardance
|
ishowspeed
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @ishowspeed | Stardance
|
1792947047.7526455
|
1793811047.7526455
|
|
2722
|
My awesome macropad! by @shopia | Stardance
|
shopia
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @shopia | Stardance
|
1792777789.4772363
|
1793382589.4772363
|
|
2723
|
Untitled by @hirwapie | Stardance
|
hirwapie
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @hirwapie | Stardance
|
1792677081.131812
|
1793281881.131812
|
|
2724
|
My awesome macropad! by @shreem | Stardance
|
shreem
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @shreem | Stardance
|
1792748995.5726876
|
1793353795.5726876
|
|
2725
|
Untitled by @opal | Stardance
|
opal
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @opal | Stardance
|
1792522281.5734842
|
1793127081.5734842
|
|
2726
|
Untitled by @mia_rose_wilson | Stardance
|
mia_rose_wilson
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @mia_rose_wilson | Stardance
|
1792803028.1233354
|
1793407828.1233354
|
|
2727
|
My first slack bot! by @mia_rose_wilson | Stardanc My first slack bot! by @mia_rose_wilson | Stardance...
|
mia_rose_wilson
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @mia_rose_wilson | S Title: My first slack bot! by @mia_rose_wilson | Stardance...
|
1792795875.3326013
|
1793400675.3326013
|
|
2728
|
Cosmic bird flop by @ghelanmarc | Stardance
|
ghelanmarc
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Cosmic bird flop by @ghelanmarc | Stardance
|
1792723974.16274
|
1793328774.16274
|
|
2729
|
My awesome macropad! by @jaivishmaa | Stardance
|
jaivishmaa
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @jaivishmaa | Stard Title: My awesome macropad! by @jaivishmaa | Stardance...
|
1792770613.6756442
|
1793375413.6756442
|
|
2730
|
My awesome macropad! by @AyyDubb | Stardance
|
AyyDubb
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @AyyDubb | Stardanc Title: My awesome macropad! by @AyyDubb | Stardance...
|
1792799551.6188147
|
1793404351.6188147
|
|
2731
|
My awesome macropad! by @sakshyamupadhayay | Stard My awesome macropad! by @sakshyamupadhayay | Stardance...
|
sakshyamupadhayay
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @sakshyamupadhayay Title: My awesome macropad! by @sakshyamupadhayay | Stardance...
|
1792806687.8525138
|
1793411487.8525138
|
|
2732
|
Untitled project by @sillySstrawberry | Stardance
|
sillySstrawberry
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @sillySstrawberry | Sta Title: Untitled project by @sillySstrawberry | Stardance...
|
1792637496.3731165
|
1793242296.3731165
|
|
2733
|
BulletScape by @chaitanya | Stardance
|
chaitanya
|
0
|
0.51
|
0
|
[]
|
[{"post_id": 1766, "ts": "2026 [{"post_id": 1766, "ts": "2026-06-03T23:17:08Z", "hours": 0.5125, "text": "Started project Wrote a simple animation setup a intro and menu"}]...
|
Title: BulletScape by @chaitanya | Stardance
Devl Title: BulletScape by @chaitanya | Stardance
Devlogs:
Started project Wrote a simple animation setup a intro and menu...
|
1792612128.1459296
|
1793216928.1459296
|
|
2734
|
Robotics Game Center by @Stellar | Stardance
|
Stellar
|
1
|
67.0
|
359
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-13T04:36:34Z", "hours": 67.0, "multiplier": 5.38, "payout": 359, "blessing": "neutral", "text": "This is a robotics game website built specifically for the FIRST Robotics Competition (FRC) community. It has three games: FRCdle (wordle), FRC trivia, and FRC clicker. FRCdle lets you choose the region and difficulty of the team you want to guess. FRC trivia is a trivia game that lets you filter questions based on a core category, time period, difficulty, and question type. Trivia will be getting more and more questions over time. FRC clicker is like any other clicker game out there (the most famous being Cookie Clicker): buy upgrades that scale exponentially in price in return for linear gains. This project took me a lot longer than I expected it to, so I really hope you enjoy this project!", "repo": "https://github.com/Ansh2021/Flux_Robotics", "demo": "https://fluxrobotics.vercel.app"}]...
|
[{"post_id": 25943, "ts": "202 [{"post_id": 25943, "ts": "2026-07-10T13:38:25Z", "hours": 4.9681, "text": "I’m Promise I’m Done Now Devlog #12 I know I said I was done with this project in the last devlog, but I lied (I’m sorry). Why I Wasn’t Actually Finished The short answer is that I didn’t properly check my website (rookie mistake). The long answer is much more long-winded (obviously). After I fixed the issue of my static assets not showing up, I forgot to check whether FRCdle and FRC Trivia were working. Spoiler alert, they weren’t. Every time I tried fetching data from my backend, the request would always bounce back with a 404 server not found error because my backend wasn’t actually running. I eventually found that Vercel Services was a thing and tried using that to have both my Next.js frontend and Express backend run on the same project. Another spoiler alert, it didn’t work. I tried basically everything to get Vercel Services to work, but to no avail. Like before, my backend was never started by Vercel which caused requests to bounce back with a 404 error. Sometimes, I’d even have my frontend code not show up at all because Vercel would occasionally show a 404 no code error. After all this trial and error, I eventually decided to ditch Vercel Services in favor of hosting my backend on Render, a dedicated backend hosting service (my frontend is still on Vercel). Getting Render to work was so much easier than getting Vercel Services to work. It took me around half an hour to get up and running compared to probably over five hours to try and get Vercel Services running. The only potential issue with Render is that after 15 minutes of inactivity, the server “spins down” (becomes inactive) and takes around one minute to reactivate. Last Steps Get this project finally shipped! I still need to add more trivia questions (I haven’t added any since I found out that my backend fetches didn’t work). Feel free to check it out at fluxrobotics.vercel.app !"}, {"post_id": 24631, "ts": "2026-07-08T11:01:14Z", "hours": 9.4203, "text": "Done and Dusted Devlog #11 I’m finally done with this project (technically speaking). I hosted this project on Vercel which wasn’t as smooth as it should have been. The Hosting Process I ran into so many errors while hosting. WAY TOO MANY. Connecting my GitHub repository to Vercel was straightforward but everything else wasn’t at all. I first ran into build errors when pushing code to GitHub which would then get deployed to my Vercel project. If I remember correctly, the fix was to make sure Vercel tracked the correct root folder (my frontend folder in this case because that’s what it serves to the client side/frontend). After that, my website couldn’t access my Express backend. The fix to that was to have different URL fetch paths depending on whether I was running my code in my development environment or on Vercel. I believe I also had to change where my backend controller was mounted in Express (I had to add “/api” to the front of the path). My last issue was my static assets not loading while in production (they loaded just fine in development). The solution was found in my vercel.json file. I originally had a global catch all path that Vercel used to catch all frontend requests. This global path, however, caught requests that asked for my static assets, thereby not letting them appear on the frontend. Removing the global path and only having my backend redirect path solved this issue. That’s it! I will ship this project as soon as I get more questions into FRC Trivia!"}, {"post_id": 21341, "ts": "2026-07-03T07:05:44Z", "hours": 7.87, "text": "FRCdle Again Devlog #10 THE STATBOTICS API IS BACK UP AGAIN (we’re so back). This means I can finally polish up FRCdle again. Big Improvement I finally got to implement Supabase into FRCdle just like I said I would do for a while now. I’d say this makes FRCdle more fault tolerant since Supabase acts as a backup for whenever either the Blue Alliance or Statbotics API is down (or both). Essentially what I’ve done is have the user fetch data from the two APIs whenever they want area and/or team data. If one or both of these requests fail, the request(s) will fall back to the Supabase backup where a version of the data is stored. This data updates every six hours only when a user actually requests for it. This has proven to be very beneficial as large area requests such as the request for all FRC team data or regional FRC team data tend to bounce back with API error codes. What about FRC Clicker? There’s not much to say about this for this devlog. I added a few more upgrades and items, but that’s really it. Next Steps Finish up FRC Clicker Get the last items done Get their corresponding one-time upgrades done"}, {"post_id": 17394, "ts": "2026-06-28T04:46:15Z", "hours": 10.1503, "text": "I’ve Been Busy Devlog #9 It’s been way too long since my last devlog, but I’ve gotten a pretty decent amount of progress on my FRC clicker game! Progress I’ve modeled my game off of popular idle clicker games, with Cookie Clicker being my main inspiration. My game, just like Cookie Clicker, allows you to buy items such as motors and cameras (just like cursors and grandmas in Cookie Clicker) in return for more game pieces (the default is currently fuel and I plan on letting the user change which game piece from previous years they want). The prices for these items, like all clicker games, increases exponentially (around 1.2 to 1.3 times so far) while only promising linear gains. Cookie Clicker also has one-time upgrades that give permanent boosts to either your items or overall production. I have this too (though not many of them right now)! Annoying Little Thing Tooltips. They provide little bits of additional information as a sort of clarifier for what is presented before you. Creating them seemed deceptively easy. Make the child tooltip absolutely positioned in relation to your relatively positioned parent container and you’re all set, right? Wrong. The way my side bar/container is set up has the tooltip nested so far within divs that even if I were to apply the relative and absolute structure, the tooltip would be cut off by one of the ancestor divs. Literally all I had to do to fix this was not make the tooltip’s parent container relative (the tooltip is still absolute). I don’t fully know why this works, but I’m not complaining. Next Steps Get the next upgrades into FRC clicker. Also revisit FRCdle to get Supabase implemented for it (really only will happen once the Statbotics API is back up again)."}, {"post_id": 13808, "ts": "2026-06-22T17:02:35Z", "hours": 4.2469, "text": "Finished FRC Trivia Devlog #8 It has been a while since my last devlog and I haven’t gotten too much done hours wise on this project (I’ve been busy with life). I did just finish FRC Trivia though! The Game FRC Trivia is exactly what it sounds like: the user is prompted with an FRC themed trivia question that they must attempt to answer correctly. Before the questions start rolling in, the user is prompted to select items from four different categories that will affect the questions they receive: the core category (general FIRST knowledge, events, awards, team), era/time period (historical, current, upcoming), difficulty (easy, medium, hard), and answer type (MCQ, FRQ, true or false). After selecting their preferred question categories, the correct questions will be fetched from Supabase and shown on the user’s screen. I haven’t added many questions yet (I have a grand total of 53) and most of them are Hall of Fame questions that I barely know anything about. Next Steps I really want to make sure FRCdle is working, but with the Statbotics API down, there’s not much I can really do with that. I could add modes to FRC Trivia (like lightning round) but that is a low priority. I will probably shift my attention to another FRC game."}, {"post_id": 11603, "ts": "2026-06-18T21:50:23Z", "hours": 6.3392, "text": "Rough Implementation of Supabase Devlog #7 I decided to implement Supabase due to how frequently the Statbotics API has been down recently. It also doubles as a place to store hundreds of trivia questions (I currently only have 40). Since Supabase is an SQL database, data within it is stored in tables, making it much more structured compared to No-SQL databases such as Firestore. Issue (and Solution) It took me much longer than it should have to get question filtering properly implemented for FRC trivia. Each question has a core category, era (time period), difficulty (easy, medium, or hard), and answer type (multiple choice, true or false, free response). Using the Supabase typescript .in() operator (used with the WHERE function in an SQL Editor), I can filter questions by their properties using .in() as a sort of shorthand for the logical OR operator. The issue with this is that .in() only accepts a string parameter (which is easy enough) and a parameter with the type (string | readonly | null)[] (which is the issue here). Since I’m getting my second parameter from req.query, my Express backend will automatically group duplicate queries into a string array. However, any queries that are not duplicated will be saved as a string instead of a string array (even if I try forcing it to be a string array by using as string[] ). This causes .in() to break since the second parameter has to be a string array. The fix here, which took me way too long to figure out, was to create a new variable for each query requirement and assign it a value depending on if the original requirement is an array or not. If the original requirement was an array, then the new variable will just be the exact same as the original requirement (since we need a string array anyways). On the other hand, if the original requirement wasn’t a string array already, we can just wrap the original requirement in brackets. To make sure the types of this new variable and the second parameter for .in() sufficiently overlap, we get the new variable as (string | null)[] . For example, const eras = (Array.isArray(era) ? era : [era]) as (string | null)[] . This ensures that eras will be a string array (or potentially null) and lets us use it within .in() . And now I can finally fetch questions from Supabase! Next Steps Get questions to show up on the frontend (that’s really it)."}, {"post_id": 9567, "ts": "2026-06-15T22:52:17Z", "hours": 2.8628, "text": "Done With FRCdle (technically) Devlog #6 I’m finally finished with FRCdle (it took me way too long). Statbotics broke again so I’ve only been able to test with hardcoded data. I will go back and retest FRCdle once Statbotics is back up. Issues I really only faced one problem and that was my use effect refusing to fire again when I clicked on a button in the parent element. This use effect was supposed to reset FRCdle to its starting state and I fixed it by adding another use effect (fighting fire with fire here). Accomplishments The obvious one is that I finished FRCdle! The background colors for each cell in the table update based on how close the guess was to the randomly selected team. The text in each cell also indicates whether the guess was too high or too low where applicable. Next Steps I will be working on the robotics trivia portion of the app now. I’ll eventually come back and retest FRCdle when the Statbotics API is fixed (I hope it happens soon). edit : I just realized that if I wanted to circumvent the issue of Statbotics (or maybe even the Blue Alliance) API down, I could have new, changed data be pushed to a database, that way if either API goes down, the user will still be able to play albeit with potentially outdated data. My only issue with this is how annoying it was to host one of my past projects that used Firestore/Firebase (it took me around two weeks of constant debugging to get my backend properly hosted). This might be too big of an improvement to ignore though, so I might add a database. Should I stick with Firebase/Firestore or should I switch to another database like MongoDB or Supabase?"}, {"post_id": 9027, "ts": "2026-06-15T01:55:56Z", "hours": 6.4381, "text": "Mostly Done With FRCdle Devlog #5 I am nearly done with FRCdle (finally). While Statbotics was down (it’s finally back up!), I essentially had to create “pseudodata” in order to properly test adding teams to the table. Issues I had a lot of trouble with async function timings. The async function I had fetching the data for a random team tried running at the same time as the async function that fetched the data for teams in an area. This caused an error in the former function since it was trying to fetch a team before it even knew what area to fetch it from. The fix was really simple: I added another useEffect that ran whenever the area data was fully pushed to its useState or whenever the difficulty changed. Accomplishments The difficulty calculation works. It takes the EPA rank and area (points) rank for each team in an area, scales them in reverse order (in an area with 75 teams, 1st place gets 75 points all the way down to 75th place which gets 1 point), and averages the two new point values with a higher score making a team easier to guess. For example, if the user selects California in easy difficulty, the randomly selected team might be 4414 or 254 since their scores are much higher than most of the teams in their district. Next Steps I can finally get the actual guessing portion of FRCdle done (I know I’ve been saying this for several devlogs, but I will actually do it now)."}, {"post_id": 7519, "ts": "2026-06-12T15:39:29Z", "hours": 3.6486, "text": "Major Roadblock Devlog #4 Development was going pretty smoothly with my request for every single FRC team being implemented. The Roadblock As I was about to start getting the guessing part of FRCdle actually implemented, I got hit with a 500 from Statbotics. I tried again and again and again but I just couldn’t get the API data no matter how hard I tried. I tried clearing my cache and restarting my development environment to no avail. I eventually went to the REST API documentation on Statbotics and tried fetching data directly from there, but I was hit with an error where Statbotics asked me for an API key. I don’t have an API key. I asked a few other people about this issue and they were facing it as well. So now, I think that Statbotics itself is down which means I’ll have to stop backend development for who knows how long. Next Steps There isn’t much I can do. I can work more on the frontend but as long as Statbotics is down, I won’t be getting much progress."}, {"post_id": 6599, "ts": "2026-06-11T02:28:16Z", "hours": 6.015, "text": "FRC Wordle Clone Almost Complete Devlog #3 I am (finally) almost done with the data fetching portion of “FRCdle.” I’ve been fetching data from both the Blue Alliance API and Statbotics API. Annoying Issues (and Odd Solution) I had to figure out how to fetch data for teams in the regional system from the Statbotics API. This API, unlike the Blue Alliance API, doesn’t have a designated method for fetching teams in this system (as compared to the district system which it does let you directly fetch data for). To circumvent this, I used the same endpoint the API uses to send district data. However, I kept the district parameter empty, thereby (mostly) forcing the API to return regional teams. Since this particular API request can only return 1000 teams at once, I had to fetch several times, increasing the offset by 1000 each time until the length of the returned data was less than 1000. This may not be the best development practice, but it is one of, if not the only way to get regional data from Statbotics (luckily it is much easier to get regional data from the Blue Alliance API). Next Steps I have to finish the API request for fetching all FRC teams. Next, I have to finish my difficulty calculations by taking in a team’s EPA rank within the user-chosen area and their area rank (points rank), scaling them from 1-10 (the higher the rank, the higher the number from 1-10), and then taking the average of the two new values. Lastly, I have to implement the wordle part of this game (guessing teams along with color indicators for how close a player is to the correct team)."}, {"post_id": 4649, "ts": "2026-06-08T01:44:12Z", "hours": 3.8564, "text": "Beginnings of a Wordle Clone Devlog #2 I started making lots of progress on the wordle page (specifically FRC wordle). It took me way longer than I’d admit to (even though I can’t hide how much time I’ve logged on this one devlog). Big Accomplishment I finally got my backend up and running! It took me way too long mostly in part due to nodemon and express acting up. I spent way too long trying to figure out why my fetch statement on the frontend wasn’t actually fetching anything from the backend (it was basically a one line fix too). Next Steps I need to add a user input that lets the user dictate where their game of wordle goes. Right now, the only way to change the data on the table is to change the hardcoded team number (users can’t do that). Then I need to add the colors (green, yellow, and grey) for guesses and actually have new rows add onto the table (styling the table is also a priority)."}, {"post_id": 4313, "ts": "2026-06-07T15:57:01Z", "hours": 1.2669, "text": "Landing Page Devlog #1 I’m still kind of new to all of this so please bear with me! (How does one format a devlog? Is it like a READme?) This project (as the project title somewhat suggests) houses several robotics (specifically FIRST Robotics) themed games. I guess you can think of it as a neal.fun knockoff for robotics (but maybe not as fun). I did start this project before Stardance, but I didn’t get too much done with it before. The majority of the time I have spent thus far (after the start of Stardance) was spent familiarizing myself with Next JS and Tailwind as I have really only used React JS and Native along with straight CSS files before. I tried going for the effect that large companies (mainly Google from what I’ve seen) have done with their buttons and other parts of their UI with a gradient effect with their border. I think it’s coming along pretty nicely but Tailwind has a lot of constraints that make replicating it nicely very annoying (either that or I’m just not good at Tailwind). I’ve also created four buttons so far with the same border gradient effect with each button leading the user to a different game page (none of them are set up yet and each one might take a bit). You do have to scroll down to see the buttons so they aren’t included in the screenshot of the landing page. (Please name suggestions please. Flux is just an arbitrary name I chose.)"}]...
|
Title: Robotics Game Center by @Stellar | Stardanc Title: Robotics Game Center by @Stellar | Stardance
Devlogs:
Landing Page Devlog #1 I’m still kind of new to all of this so please bear with me! (How does one format a devlog? Is it like a READme?) This project (as the project title somewhat suggests) houses several robotics (specifically FIRST Robotics) themed games. I guess you can think of it as a neal.fun knockoff for robotics (but maybe not as fun). I did start this project before Stardance, but I didn’t get too much done with it before. The majority of the time I have spent thus far (after the start of Stardance) was spent familiarizing myself with Next JS and Tailwind as I have really only used React JS and Native along with straight CSS files before. I tried going for the effect that large companies (mainly Google from what I’ve seen) have done with their buttons and other parts of their UI with a gradient effect with their border. I think it’s coming along pretty nicely but Tailwind has a lot of constraints that make replicating it nicely very annoying (either that or I’m just not good at Tailwind). I’ve also created four buttons so far with the same border gradient effect with each button leading the user to a different game page (none of them are set up yet and each one might take a bit). You do have to scroll down to see the buttons so they aren’t included in the screenshot of the landing page. (Please name suggestions please. Flux is just an arbitrary name I chose.)
Beginnings of a Wordle Clone Devlog #2 I started making lots of progress on the wordle page (specifically FRC wordle). It took me way longer than I’d admit to (even though I can’t hide how much time I’ve logged on this one devlog). Big Accomplishment I finally got my backend up and running! It took me way too long mostly in part due to nodemon and express acting up. I spent way too long trying to figure out why my fetch statement on the frontend wasn’t actually fetching anything from the backend (it was basically a one line fix too). Next Steps I need to add a user input that lets the user dictate where their game of wordle goes. Right now, the only way to change the data on the table is to change the hardcoded team number (users can’t do that). Then I need to add the colors (green, yellow, and grey) for guesses and actually have new rows add onto the table (styling the table is also a priority).
FRC Wordle Clone Almost Complete Devlog #3 I am (finally) almost done with the data fetching portion of “FRCdle.” I’ve been fetching data from both the Blue Alliance API and Statbotics API. Annoying Issues (and Odd Solution) I had to figure out how to fetch data for teams in the regional system from the Statbotics API. This API, unlike the Blue Alliance API, doesn’t have a designated method for fetching teams in this system (as compared to the district system which it does let you directly fetch data for). To circumvent this, I used the same endpoint the API uses to send district data. However, I kept the district parameter empty, thereby (mostly) forcing the API to return regional teams. Since this particular API request can only return 1000 teams at once, I had to fetch several times, increasing the offset by 1000 each time until the length of the returned data was less than 1000. This may not be the best development practice, but it is one of, if not the only way to get regional data from Statbotics (luckily it is much easier to get regional data from the Blue Alliance API). Next Steps I have to finish the API request for fetching all FRC teams. Next, I have to finish my difficulty calculations by taking in a team’s EPA rank within the user-chosen area and their area rank (points rank), scaling them from 1-10 (the higher the rank, the higher the number from 1-10), and then taking the average of the two new values. Lastly, I have to implement the wordle part of this game (guessing teams along with color indicators for how close a player is to the correct team).
Major Roadblock Devlog #4 Development was going pretty smoothly with my request for every single FRC team being implemented. The Roadblock As I was about to start getting the guessing part of FRCdle actually implemented, I got hit with a 500 from Statbotics. I tried again and again and again but I just couldn’t get the API data no matter how hard I tried. I tried clearing my cache and restarting my development environment to no avail. I eventually went to the REST API documentation on Statbotics and tried fetching data directly from there, but I was hit with an error where Statbotics asked me for an API key. I don’t have an API key. I asked a few other people about this issue and they were facing it as well. So now, I think that Statbotics itself is down which means I’ll have to stop backend development for who knows how long. Next Steps There isn’t much I can do. I can work more on the frontend but as long as Statbotics is down, I won’t be getting much progress.
Mostly Done With FRCdle Devlog #5 I am nearly done with FRCdle (finally). While Statbotics was down (it’s finally back up!), I essentially had to create “pseudodata” in order to properly test adding teams to the table. Issues I had a lot of trouble with async function timings. The async function I had fetching the data for a random team tried running at the same time as the async function that fetched the data for teams in an area. This caused an error in the former function since it was trying to fetch a team before it even knew what area to fetch it from. The fix was really simple: I added another useEffect that ran whenever the area data was fully pushed to its useState or whenever the difficulty changed. Accomplishments The difficulty calculation works. It takes the EPA rank and area (points) rank for each team in an area, scales them in reverse order (in an area with 75 teams, 1st place gets 75 points all the way down to 75th place which gets 1 point), and averages the two new point values with a higher score making a team easier to guess. For example, if the user selects California in easy difficulty, the randomly selected team might be 4414 or 254 since their scores are much higher than most of the teams in their district. Next Steps I can finally get the actual guessing portion of FRCdle done (I know I’ve been saying this for several devlogs, but I will actually do it now).
Done With FRCdle (technically) Devlog #6 I’m finally finished with FRCdle (it took me way too long). Statbotics broke again so I’ve only been able to test with hardcoded data. I will go back and retest FRCdle once Statbotics is back up. Issues I really only faced one problem and that was my use effect refusing to fire again when I clicked on a button in the parent element. This use effect was supposed to reset FRCdle to its starting state and I fixed it by adding another use effect (fighting fire with fire here). Accomplishments The obvious one is that I finished FRCdle! The background colors for each cell in the table update based on how close the guess was to the randomly selected team. The text in each cell also indicates whether the guess was too high or too low where applicable. Next Steps I will be working on the robotics trivia portion of the app now. I’ll eventually come back and retest FRCdle when the Statbotics API is fixed (I hope it happens soon). edit : I just realized that if I wanted to circumvent the issue of Statbotics (or maybe even the Blue Alliance) API down, I could have new, changed data be pushed to a database, that way if either API goes down, the user will still be able to play albeit with potentially outdated data. My only issue with this is how annoying it was to host one of my past projects that used Firestore/Firebase (it took me around two weeks of constant debugging to get my backend properly hosted). This might be too big of an improvement to ignore though, so I might add a database. Should I stick with Firebase/Firestore or should I switch to another database like MongoDB or Supabase?
Rough Implementation of Supabase Devlog #7 I decided to implement Supabase due to how frequently the Statbotics API has been down recently. It also doubles as a place to store hundreds of trivia questions (I currently only have 40). Since Supabase is an SQL database, data within it is stored in tables, making it much more structured compared to No-SQL databases such as Firestore. Issue (and Solution) It took me much longer than it should have to get question filtering properly implemented for FRC trivia. Each question has a core category, era (time period), difficulty (easy, medium, or hard), and answer type (multiple choice, true or false, free response). Using the Supabase typescript .in() operator (used with the WHERE function in an SQL Editor), I can filter questions by their properties using .in() as a sort of shorthand for the logical OR operator. The issue with this is that .in() only accepts a string parameter (which is easy enough) and a parameter with the type (string | readonly | null)[] (which is the issue here). Since I’m getting my second parameter from req.query, my Express backend will automatically group duplicate queries into a string array. However, any queries that are not duplicated will be saved as a string instead of a string array (even if I try forcing it to be a string array by using as string[] ). This causes .in() to break since the second parameter has to be a string array. The fix here, which took me way too long to figure out, was to create a new variable for each query requirement and assign it a value depending on if the original requirement is an array or not. If the original requirement was an array, then the new variable will just be the exact same as the original requirement (since we need a string array anyways). On the other hand, if the original requirement wasn’t a string array already, we can just wrap the original requirement in brackets. To make sure the types of this new variable and the second parameter for .in() sufficiently overlap, we get the new variable as (string | null)[] . For example, const eras = (Array.isArray(era) ? era : [era]) as (string | null)[] . This ensures that eras will be a string array (or potentially null) and lets us use it within .in() . And now I can finally fetch questions from Supabase! Next Steps Get questions to show up on the frontend (that’s really it).
Finished FRC Trivia Devlog #8 It has been a while since my last devlog and I haven’t gotten too much done hours wise on this project (I’ve been busy with life). I did just finish FRC Trivia though! The Game FRC Trivia is exactly what it sounds like: the user is prompted with an FRC themed trivia question that they must attempt to answer correctly. Before the questions start rolling in, the user is prompted to select items from four different categories that will affect the questions they receive: the core category (general FIRST knowledge, events, awards, team), era/time period (historical, current, upcoming), difficulty (easy, medium, hard), and answer type (MCQ, FRQ, true or false). After selecting their preferred question categories, the correct questions will be fetched from Supabase and shown on the user’s screen. I haven’t added many questions yet (I have a grand total of 53) and most of them are Hall of Fame questions that I barely know anything about. Next Steps I really want to make sure FRCdle is working, but with the Statbotics API down, there’s not much I can really do with that. I could add modes to FRC Trivia (like lightning round) but that is a low priority. I will probably shift my attention to another FRC game.
I’ve Been Busy Devlog #9 It’s been way too long since my last devlog, but I’ve gotten a pretty decent amount of progress on my FRC clicker game! Progress I’ve modeled my game off of popular idle clicker games, with Cookie Clicker being my main inspiration. My game, just like Cookie Clicker, allows you to buy items such as motors and cameras (just like cursors and grandmas in Cookie Clicker) in return for more game pieces (the default is currently fuel and I plan on letting the user change which game piece from previous years they want). The prices for these items, like all clicker games, increases exponentially (around 1.2 to 1.3 times so far) while only promising linear gains. Cookie Clicker also has one-time upgrades that give permanent boosts to either your items or overall production. I have this too (though not many of them right now)! Annoying Little Thing Tooltips. They provide little bits of additional information as a sort of clarifier for what is presented before you. Creating them seemed deceptively easy. Make the child tooltip absolutely positioned in relation to your relatively positioned parent container and you’re all set, right? Wrong. The way my side bar/container is set up has the tooltip nested so far within divs that even if I were to apply the relative and absolute structure, the tooltip would be cut off by one of the ancestor divs. Literally all I had to do to fix this was not make the tooltip’s parent container relative (the tooltip is still absolute). I don’t fully know why this works, but I’m not complaining. Next Steps Get the next upgrades into FRC clicker. Also revisit FRCdle to get Supabase implemented for it (really only will happen once the Statbotics API is back up again).
FRCdle Again Devlog #10 THE STATBOTICS API IS BACK UP AGAIN (we’re so back). This means I can finally polish up FRCdle again. Big Improvement I finally got to implement Supabase into FRCdle just like I said I would do for a while now. I’d say this makes FRCdle more fault tolerant since Supabase acts as a backup for whenever either the Blue Alliance or Statbotics API is down (or both). Essentially what I’ve done is have the user fetch data from the two APIs whenever they want area and/or team data. If one or both of these requests fail, the request(s) will fall back to the Supabase backup where a version of the data is stored. This data updates every six hours only when a user actually requests for it. This has proven to be very beneficial as large area requests such as the request for all FRC team data or regional FRC team data tend to bounce back with API error codes. What about FRC Clicker? There’s not much to say about this for this devlog. I added a few more upgrades and items, but that’s really it. Next Steps Finish up FRC Clicker Get the last items done Get their corresponding one-time upgrades done
Done and Dusted Devlog #11 I’m finally done with this project (technically speaking). I hosted this project on Vercel which wasn’t as smooth as it should have been. The Hosting Process I ran into so many errors while hosting. WAY TOO MANY. Connecting my GitHub repository to Vercel was straightforward but everything else wasn’t at all. I first ran into build errors when pushing code to GitHub which would then get deployed to my Vercel project. If I remember correctly, the fix was to make sure Vercel tracked the correct root folder (my frontend folder in this case because that’s what it serves to the client side/frontend). After that, my website couldn’t access my Express backend. The fix to that was to have different URL fetch paths depending on whether I was running my code in my development environment or on Vercel. I believe I also had to change where my backend controller was mounted in Express (I had to add “/api” to the front of the path). My last issue was my static assets not loading while in production (they loaded just fine in development). The solution was found in my vercel.json file. I originally had a global catch all path that Vercel used to catch all frontend requests. This global path, however, caught requests that asked for my static assets, thereby not letting them appear on the frontend. Removing the global path and only having my backend redirect path solved this issue. That’s it! I will ship this project as soon as I get more questions into FRC Trivia!
I’m Promise I’m Done Now Devlog #12 I know I said I was done with this project in the last devlog, but I lied (I’m sorry). Why I Wasn’t Actually Finished The short answer is that I didn’t properly check my website (rookie mistake). The long answer is much more long-winded (obviously). After I fixed the issue of my static assets not showing up, I forgot to check whether FRCdle and FRC Trivia were working. Spoiler alert, they weren’t. Every time I tried fetching data from my backend, the request would always bounce back with a 404 server not found error because my backend wasn’t actually running. I eventually found that Vercel Services was a thing and tried using that to have both my Next.js frontend and Express backend run on the same project. Another spoiler alert, it didn’t work. I tried basically everything to get Vercel Services to work, but to no avail. Like before, my backend was never started by Vercel which caused requests to bounce back with a 404 error. Sometimes, I’d even have my frontend code not show up at all because Vercel would occasionally show a 404 no code error. After all this trial and error, I eventually decided to ditch Vercel Services in favor of hosting my backend on Render, a dedicated backend hosting service (my frontend is still on Vercel). Getting Render to work was so much easier than getting Vercel Services to work. It took me around half an hour to get up and running compared to probably over five hours to try and get Vercel Services running. The only potential issue with Render is that after 15 minutes of inactivity, the server “spins down” (becomes inactive) and takes around one minute to reactivate. Last Steps Get this project finally shipped! I still need to add more trivia questions (I haven’t added any since I found out that my backend fetches didn’t work). Feel free to check it out at fluxrobotics.vercel.app !
Ships:
This is a robotics game website built specifically for the FIRST Robotics Competition (FRC) community. It has three games: FRCdle (wordle), FRC trivia, and FRC clicker. FRCdle lets you choose the region and difficulty of the team you want to guess. FRC trivia is a trivia game that lets you filter questions based on a core category, time period, difficulty, and question type. Trivia will be getting more and more questions over time. FRC clicker is like any other clicker game out there (the most famous being Cookie Clicker): buy upgrades that scale exponentially in price in return for linear gains. This project took me a lot longer than I expected it to, so I really hope you enjoy this project!...
|
1792993693.0771954
|
1793080093.0771954
|
|
2735
|
Rocket by @pulsar_space | Stardance
|
pulsar_space
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Rocket by @pulsar_space | Stardance
|
1792727384.298851
|
1793332184.298851
|
|
2736
|
My first slack bot! by @Kuzey | Stardance
|
Kuzey
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Kuzey | Stardance
|
1792922035.7232554
|
1793786035.7232554
|
|
2737
|
Neural Network from Scratch by @stockifab | Starda Neural Network from Scratch by @stockifab | Stardance...
|
stockifab
|
1
|
12.0
|
135
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-14T13:47:27Z", "hours": 12.0, "multiplier": 13.41, "payout": 135, "blessing": "neutral", "text": "Neural Network from Scratch A fully functional neural network built using nothing but NumPy, capable of classifying MNIST handwritten digits with 90% test accuracy. My goal was actually understanding what happens under the hood. My implementation includes backpropagation from scratch, sigmoid and softmax activations, binary and categorical cross-entropy loss functions and mini-batch gradient descent. I wrapped all of this in an easy to use API: network = Network ( [ Layer ( 64 , activation = \" input \" ), Layer ( 50 ), Layer ( 30 ), Layer ( 10 , activation = \" softmax \" ), ], loss = \" categorical_crossentropy \" , ) network . fit ( X_train , y_train , epochs = 8000 , learning_rate = 1 , batch_size = 0.1 ) The math and backpropagation were the hardest parts, I derived the gradients of the cost function by hand and backpropagation didn’t really make sense to me at first. I started with mean squared error, and the gradients exploded quickly. Switching to cross-entropy fixed it. I’m really proud that I now understand why these networks are able to learn, seeing your own network learn feels amazing. You can try it out on MNIST yourself and play with the parameters in your browser without installing anything at https://neural-network-from-scratch-stockifab.streamlit.app .", "repo": "https://github.com/stockifab/Neural-Network", "demo": "https://neural-network-from-scratch-stockifab.streamlit.app/"}]...
|
[{"post_id": 8669, "ts": "2026 [{"post_id": 8669, "ts": "2026-06-14T12:24:56Z", "hours": 1.3572, "text": "Demo + Readme The network is fully working, however its difficult to see it in action. That’s why (with the help of Claude) I created a Streamlit app, so that you can try different parameters for the network in the browser. Without having to install anything locally. I also spent some time making the readme prettier and more informative."}, {"post_id": 8610, "ts": "2026-06-14T09:48:35Z", "hours": 1.2111, "text": "Training API + OneHotEncoder Cleaned up a lot of the boilerplate inside main.py . The training loop is now inside the network itself and can be called with a single fit() call handling batching, epochs, and logging: network . fit ( X_train , y_train , learning_rate = 0.1 , batch_size = 0.1 ) I also renamed a few things that were always named imprecisely. run() is now forward() , and the old fit() (which only did a single gradient step) became epoch() . This made the code much easier to read. The one-hot encoding is now its own class instead of a one-liner scattered in main.py. This was necessary because you need to decode predictions back to the original labels afterwards: encoder = OneHotEncoder () y = encoder . encode ( digits . target ) encoder . decode ( network . forward ( X_test )) I also added a train_test_split utility so I don’t have to manually slice arrays anymore."}, {"post_id": 8260, "ts": "2026-06-13T18:59:49Z", "hours": 4.2894, "text": "Softmax Activation and Digits I modified the API so that cost and activation functions can easily be changed. After opting for softmax activation at the output layer and changing the cost function to categorical cross-entropy, the model classified the numbers with 85.59% accuracy after 10.000 epochs. I’m surprised it works this well despite the small network and no regularization or tuning at all. While interesting, the math is getting really complicated now, especially deriving the softmax function is still a mystery to me, i had to look up its derivative online. I want to spend some more time understanding how the cost and the activation function “influence” each other before implementing an API to more easily train the network."}, {"post_id": 2211, "ts": "2026-06-04T16:20:36Z", "hours": 3.3214, "text": "Backpropagation It’s learning! I tried the network with a small synthetic dataset and it learned the pattern flawlessly, at least when you don’t let it run for too long: Below you can see the network’s performance (cost) at each epoch, it starts out strong - reducing the cost and getting better and better - until all of a sudden there is a massive spike and the cost goes way up again. I have no idea why this is happening, but overall I’m extremely happy that the network is learning. Next I’m going to fix this issue and then I want it to predict numbers from the MNIST dataset."}, {"post_id": 1579, "ts": "2026-06-03T18:00:35Z", "hours": 1.8164, "text": "Network Architecture + Forward Pass Wrote a basic API for modelling the network. When untrained it initializes weights and biases random. With these random values it is already capable of running a forward pass with some input data. Next I want to implement backpropagation so that the network can actually learn patterns in data."}]...
|
Title: Neural Network from Scratch by @stockifab | Title: Neural Network from Scratch by @stockifab | Stardance
Devlogs:
Network Architecture + Forward Pass Wrote a basic API for modelling the network. When untrained it initializes weights and biases random. With these random values it is already capable of running a forward pass with some input data. Next I want to implement backpropagation so that the network can actually learn patterns in data.
Backpropagation It’s learning! I tried the network with a small synthetic dataset and it learned the pattern flawlessly, at least when you don’t let it run for too long: Below you can see the network’s performance (cost) at each epoch, it starts out strong - reducing the cost and getting better and better - until all of a sudden there is a massive spike and the cost goes way up again. I have no idea why this is happening, but overall I’m extremely happy that the network is learning. Next I’m going to fix this issue and then I want it to predict numbers from the MNIST dataset.
Softmax Activation and Digits I modified the API so that cost and activation functions can easily be changed. After opting for softmax activation at the output layer and changing the cost function to categorical cross-entropy, the model classified the numbers with 85.59% accuracy after 10.000 epochs. I’m surprised it works this well despite the small network and no regularization or tuning at all. While interesting, the math is getting really complicated now, especially deriving the softmax function is still a mystery to me, i had to look up its derivative online. I want to spend some more time understanding how the cost and the activation function “influence” each other before implementing an API to more easily train the network.
Training API + OneHotEncoder Cleaned up a lot of the boilerplate inside main.py . The training loop is now inside the network itself and can be called with a single fit() call handling batching, epochs, and logging: network . fit ( X_train , y_train , learning_rate = 0.1 , batch_size = 0.1 ) I also renamed a few things that were always named imprecisely. run() is now forward() , and the old fit() (which only did a single gradient step) became epoch() . This made the code much easier to read. The one-hot encoding is now its own class instead of a one-liner scattered in main.py. This was necessary because you need to decode predictions back to the original labels afterwards: encoder = OneHotEncoder () y = encoder . encode ( digits . target ) encoder . decode ( network . forward ( X_test )) I also added a train_test_split utility so I don’t have to manually slice arrays anymore.
Demo + Readme The network is fully working, however its difficult to see it in action. That’s why (with the help of Claude) I created a Streamlit app, so that you can try different parameters for the network in the browser. Without having to install anything locally. I also spent some time making the readme prettier and more informative.
Ships:
Neural Network from Scratch A fully functional neural network built using nothing but NumPy, capable of classifying MNIST handwritten digits with 90% test accuracy. My goal was actually understanding what happens under the hood. My implementation includes backpropagation from scratch, sigmoid and softmax activations, binary and categorical cross-entropy loss functions and mini-batch gradient descent. I wrapped all of this in an easy to use API: network = Network ( [ Layer ( 64 , activation = " input " ), Layer ( 50 ), Layer ( 30 ), Layer ( 10 , activation = " softmax " ), ], loss = " categorical_crossentropy " , ) network . fit ( X_train , y_train , epochs = 8000 , learning_rate = 1 , batch_size = 0.1 ) The math and backpropagation were the hardest parts, I derived the gradients of the cost function by hand and backpropagation didn’t really make sense to me at first. I started with mean squared error, and the gradients exploded quickly. Switching to cross-entropy fixed it. I’m really proud that I now understand why these networks are able to learn, seeing your own network learn feels amazing. You can try it out on MNIST yourself and play with the parameters in your browser without installing anything at https://neural-network-from-scratch-stockifab.streamlit.app ....
|
1792975926.0631745
|
1793062326.0631745
|
|
2738
|
WireSurf by @Kanashimo | Stardance
|
Kanashimo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WireSurf by @Kanashimo | Stardance
|
1792640955.2884848
|
1793245755.2884848
|
|
2739
|
Open Source 3D Renderer by @Celia | Stardance
|
Celia
|
0
|
21.92
|
0
|
[]
|
[{"post_id": 63864, "ts": "202 [{"post_id": 63864, "ts": "2026-09-07T21:05:57Z", "hours": 2.4639, "text": "Currently trying to add model classes progress has been super slow cus school has started for me and I also have a job now so I don’t often have time to work on this project, but hopefully I can in the future."}, {"post_id": 53457, "ts": "2026-08-24T00:56:19Z", "hours": 3.0883, "text": "Added some juicy quake style lighting I added gourand style lighting because I think it looks nicer but this one took quiet a long time get finished because of irl things happening"}, {"post_id": 44945, "ts": "2026-08-11T01:28:53Z", "hours": 1.1569, "text": "I added some lighting setup I added the framework for a lighting system, and I am going to work on the rest tomorrow"}, {"post_id": 41091, "ts": "2026-08-05T01:50:36Z", "hours": 2.0303, "text": "Refactor + Code Cleanup I cleaned up the code quiet a bit and made it less redundant and readable I also added a camera class and refactor camera implementation"}, {"post_id": 39106, "ts": "2026-08-01T20:20:23Z", "hours": 0.3511, "text": "added full camera movement added full camera movement, but the code is very disorganised and I need to make it nice to read."}, {"post_id": 38649, "ts": "2026-08-01T04:47:56Z", "hours": 1.3956, "text": "added camera movement I haven’t been able to work too much on the project because I have work but I also have been working where I can"}, {"post_id": 38020, "ts": "2026-07-31T05:02:27Z", "hours": 0.4886, "text": "fixed the textures I messed up the way the vertex shader was reading the vertex data so it failed to load textures correctly"}, {"post_id": 37438, "ts": "2026-07-30T05:45:02Z", "hours": 1.9931, "text": "I made it 3d I broke the textures in the process but it is nearly 1am and I am wayyyy to tired to bug fix rn so that’s tomorrows issue I also finished the texture class in a way I like"}, {"post_id": 36175, "ts": "2026-07-28T02:57:29Z", "hours": 2.2789, "text": "Added Incomplete Texture Class I learned how to do textures and load them, I added an incomplete texture class so I don’t need to manually do it every time, but I still need to finish it"}, {"post_id": 34782, "ts": "2026-07-25T19:29:19Z", "hours": 2.4519, "text": "Split the shaders into their own class and gave them their own files This one took quiet a while because I hadn’t fully understood where my project was being built, eventually I figured out that it was being made in the /build folder so I had to adapt that into the absolute file path that I wanted"}, {"post_id": 34429, "ts": "2026-07-25T04:05:57Z", "hours": 0.4339, "text": "Added EBO’s I honestly didn’t much done today because I was busy and came home very very tired"}, {"post_id": 33839, "ts": "2026-07-24T02:36:25Z", "hours": 1.4542, "text": "I just setup VBO VAO and Shaders this one took quiet a lot longer than I was expecting, after this I plan on figuring out how to scale it"}, {"post_id": 33335, "ts": "2026-07-23T04:48:49Z", "hours": 2.3353, "text": "Just Finished the basic setup I setup a basic opengl window, and also setup my development environment (that one took so long I had no clue what I was doing omg 😭) but progress should look much more visual going forward which I am excited for"}]...
|
Title: Open Source 3D Renderer by @Celia | Stardan Title: Open Source 3D Renderer by @Celia | Stardance
Devlogs:
Just Finished the basic setup I setup a basic opengl window, and also setup my development environment (that one took so long I had no clue what I was doing omg 😭) but progress should look much more visual going forward which I am excited for
I just setup VBO VAO and Shaders this one took quiet a lot longer than I was expecting, after this I plan on figuring out how to scale it
Added EBO’s I honestly didn’t much done today because I was busy and came home very very tired
Split the shaders into their own class and gave them their own files This one took quiet a while because I hadn’t fully understood where my project was being built, eventually I figured out that it was being made in the /build folder so I had to adapt that into the absolute file path that I wanted
Added Incomplete Texture Class I learned how to do textures and load them, I added an incomplete texture class so I don’t need to manually do it every time, but I still need to finish it
I made it 3d I broke the textures in the process but it is nearly 1am and I am wayyyy to tired to bug fix rn so that’s tomorrows issue I also finished the texture class in a way I like
fixed the textures I messed up the way the vertex shader was reading the vertex data so it failed to load textures correctly
added camera movement I haven’t been able to work too much on the project because I have work but I also have been working where I can
added full camera movement added full camera movement, but the code is very disorganised and I need to make it nice to read.
Refactor + Code Cleanup I cleaned up the code quiet a bit and made it less redundant and readable I also added a camera class and refactor camera implementation
I added some lighting setup I added the framework for a lighting system, and I am going to work on the rest tomorrow
Added some juicy quake style lighting I added gourand style lighting because I think it looks nicer but this one took quiet a long time get finished because of irl things happening
Currently trying to add model classes progress has been super slow cus school has started for me and I also have a job now so I don’t often have time to work on this project, but hopefully I can in the future....
|
1792597960.8315089
|
1793202760.8315089
|
|
2740
|
My awesome macropad! by @ImNotIvy | Stardance
|
ImNotIvy
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @ImNotIvy | Stardan Title: My awesome macropad! by @ImNotIvy | Stardance...
|
1792659087.0621727
|
1793263887.0621727
|
|
2741
|
Beginners guide to developing a robot by @chloeell Beginners guide to developing a robot by @chloeellithorpe | Stardance...
|
chloeellithorpe
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Beginners guide to developing a robot by @c Title: Beginners guide to developing a robot by @chloeellithorpe | Stardance...
|
1792727403.7346723
|
1793332203.7346723
|
|
2742
|
Untitled by @chaitanya | Stardance
|
chaitanya
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @chaitanya | Stardance
|
1792655680.306945
|
1793260480.306945
|
|
2743
|
My awesome macropad! by @Brianna | Stardance
|
Brianna
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Brianna | Stardanc Title: My awesome macropad! by @Brianna | Stardance...
|
1792522268.219956
|
1793127068.219956
|
|
2744
|
My awesome macropad! by @itstartswithananya | Star My awesome macropad! by @itstartswithananya | Stardance...
|
itstartswithananya
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @itstartswithananya Title: My awesome macropad! by @itstartswithananya | Stardance...
|
1792511642.6887357
|
1793116442.6887357
|
|
2745
|
Bombom by @Rayane | Stardance
|
Rayane
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Bombom by @Rayane | Stardance
|
1792666475.039107
|
1793271275.039107
|
|
2746
|
Untitled project by @tobfd | Stardance
|
tobfd
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @tobfd | Stardance
|
1792666227.8240123
|
1793271027.8240123
|
|
2747
|
Untitled project by @itstartswithananya | Stardanc Untitled project by @itstartswithananya | Stardance...
|
itstartswithananya
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @itstartswithananya | S Title: Untitled project by @itstartswithananya | Stardance...
|
1792601259.3332994
|
1793206059.3332994
|
|
2748
|
My awesome macropad! by @BreadBoy | Stardance
|
BreadBoy
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @BreadBoy | Stardan Title: My awesome macropad! by @BreadBoy | Stardance...
|
1792785184.5951467
|
1793389984.5951467
|
|
2749
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792925649.1083171
|
1793789649.1083171
|
|
2750
|
My first slack bot! by @itstartswithananya | Stard My first slack bot! by @itstartswithananya | Stardance...
|
itstartswithananya
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @itstartswithananya Title: My first slack bot! by @itstartswithananya | Stardance...
|
1792738091.35777
|
1793342891.35777
|