|
65044
|
NASA APOD Viewer by @Coding-AN | Stardance
|
Coding-AN
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T01:11:20Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This site is a viewer for NASA’s Astronomy Picture of the Day. It features a clean interface that shows the picture, along with its title and explanation, as well as an animated background and sidebars. It’s lightweight by design, and also marks the first time I’ve made an API call for a web project.", "repo": "https://github.com/Coding-AN/NASA-APOD-Viewer", "demo": "https://coding-an.github.io/NASA-APOD-Viewer/"}]...
|
[{"post_id": 72909, "ts": "202 [{"post_id": 72909, "ts": "2026-09-24T00:40:11Z", "hours": 1.2261, "text": "I added all the CSS, so the site looks really good now. One touch I added at the end that I really liked was an animated background. The stars subtly twinkle, and I think it looks really cool. Although I was originally planning to expand this into a full new tab page after this, I’ve decided to finish this project here, since I don’t think it would look that good if I took what I have now and delegate it to a corner of the page. Since this site is now complete, I will now be shipping it soon."}, {"post_id": 72873, "ts": "2026-09-23T22:21:22Z", "hours": 0.9253, "text": "I finally got the API call to work, and the image is finally displaying. The reason it took so long to work was because I gave my env file a name, which meant that vite couldn’t recognize it and the API call failed. Luckily, I was finally able to figure it out, which means that I’m now moving on to css styling."}, {"post_id": 72615, "ts": "2026-09-23T11:02:30Z", "hours": 0.4786, "text": "I started the Custom New Tab mission, and got all of the setup finished. It took way longer than expected because the .env file kept showing up in the repo even though it was in the gitignore. I finally fixed it after adding *.env to the gitignore, but it took me a while to figure that out."}]...
|
Title: NASA APOD Viewer by @Coding-AN | Stardance
Title: NASA APOD Viewer by @Coding-AN | Stardance
Devlogs:
I started the Custom New Tab mission, and got all of the setup finished. It took way longer than expected because the .env file kept showing up in the repo even though it was in the gitignore. I finally fixed it after adding *.env to the gitignore, but it took me a while to figure that out.
I finally got the API call to work, and the image is finally displaying. The reason it took so long to work was because I gave my env file a name, which meant that vite couldn’t recognize it and the API call failed. Luckily, I was finally able to figure it out, which means that I’m now moving on to css styling.
I added all the CSS, so the site looks really good now. One touch I added at the end that I really liked was an animated background. The stars subtly twinkle, and I think it looks really cool. Although I was originally planning to expand this into a full new tab page after this, I’ve decided to finish this project here, since I don’t think it would look that good if I took what I have now and delegate it to a corner of the page. Since this site is now complete, I will now be shipping it soon.
Ships:
This site is a viewer for NASA’s Astronomy Picture of the Day. It features a clean interface that shows the picture, along with its title and explanation, as well as an animated background and sidebars. It’s lightweight by design, and also marks the first time I’ve made an API call for a web project....
|
1793213682.1053329
|
1793300082.1053329
|
|
64627
|
Calculator for space missions by @navilan_nataraj Calculator for space missions by @navilan_nataraj | Stardance...
|
navilan_nataraj
|
0
|
0.29
|
0
|
[]
|
[{"post_id": 72920, "ts": "202 [{"post_id": 72920, "ts": "2026-09-24T01:33:37Z", "hours": 0.2925, "text": "Just wrote the first few lines of code, this would serve as a outline for when I actually put in the logic in the coming days"}]...
|
Title: Calculator for space missions by @navilan_n Title: Calculator for space missions by @navilan_nataraj | Stardance
Devlogs:
Just wrote the first few lines of code, this would serve as a outline for when I actually put in the logic in the coming days...
|
1793065830.499505
|
1793670630.499505
|
|
62653
|
cute usagi game by @RobbieMa | Stardance
|
RobbieMa
|
1
|
12.0
|
76
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T05:01:59Z", "hours": 12.0, "multiplier": 6.3, "payout": 76, "blessing": "neutral", "text": "I made a softbody playground for Usagi the bunny. This is NOT a game!! It is purely a physics demo showing what can be done in Unity3D. It made me learn a lot about physics based movement in unity as well as setting up softbodies and ragdolls in a 3D space. The most challenging part was probably getting the player to reset the softbody without breaking the whole thing. Enjoy!", "repo": "https://github.com/Hello-Grow/usagi-softbody/", "demo": "https://github.com/Hello-Grow/usagi-softbody/releases/tag/1.0"}]...
|
[{"post_id": 72930, "ts": "202 [{"post_id": 72930, "ts": "2026-09-24T01:57:13Z", "hours": 1.1022, "text": "worked on a time slow feature where players can slow down time by scrolling, and adding some awesome destruction test like smashing blocks, block hit into wall, and more!"}, {"post_id": 72094, "ts": "2026-09-22T04:54:19Z", "hours": 1.6667, "text": "adding sounds for usagi and adding more graphical elements like bushes and a giant blender. Sounds are all one-shot audio from usagi episodes with background music and noise removed."}, {"post_id": 71427, "ts": "2026-09-20T20:00:29Z", "hours": 1.5667, "text": "Worked on more softbody functions, using custom scripts that works along with my softbody player controller, Usagi will now seamlessly ragdoll when player presses R and also ragdolls when touching certain objects. Players can also squish other Usagi’s too, maybe multiplayer in the future?? There is one problem though with the ragdoll script, i can’t seem to make it seamlessly go into player controlled mode and out of ragdoll mode… it keeps clipping into the ground"}, {"post_id": 70432, "ts": "2026-09-19T05:48:27Z", "hours": 0.9, "text": "Usagi can now WALK!! using standard third person controls and physics based steps, players can control usagi using WASD and mouse to look around. Hardest part here wasn’t the movement itself, it was the player rotating with the camera, since the gameobject doesnt rotate, the softbody points do."}, {"post_id": 70310, "ts": "2026-09-18T22:22:32Z", "hours": 4.2667, "text": "Added a softbody system using a crazy amount of points that makes a network that impacts the player mesh. Editing the mesh and getting the body structure right took up the majority of the time, tweaking various settings, very boring. Though the reward is great! It is really satisfying to squish and deform."}, {"post_id": 69520, "ts": "2026-09-17T07:12:55Z", "hours": 0.4, "text": "Using unity’s toon shader to make it actually feel like it’s drawn and not rendered in a traditional sense. The outlines look a bit wonky at the ears though because the normals are just positioned weird"}, {"post_id": 69454, "ts": "2026-09-17T02:49:04Z", "hours": 1.2667, "text": "Made it a ragdoll in unity, had to figure out what counted as a hip and spines, but got it working! it is very satisfying to play with."}, {"post_id": 69010, "ts": "2026-09-16T06:44:15Z", "hours": 0.9333, "text": "Rigged Usagi in blender for unity and fixed material/texturing"}]...
|
Title: cute usagi game by @RobbieMa | Stardance
D Title: cute usagi game by @RobbieMa | Stardance
Devlogs:
Rigged Usagi in blender for unity and fixed material/texturing
Made it a ragdoll in unity, had to figure out what counted as a hip and spines, but got it working! it is very satisfying to play with.
Using unity’s toon shader to make it actually feel like it’s drawn and not rendered in a traditional sense. The outlines look a bit wonky at the ears though because the normals are just positioned weird
Added a softbody system using a crazy amount of points that makes a network that impacts the player mesh. Editing the mesh and getting the body structure right took up the majority of the time, tweaking various settings, very boring. Though the reward is great! It is really satisfying to squish and deform.
Usagi can now WALK!! using standard third person controls and physics based steps, players can control usagi using WASD and mouse to look around. Hardest part here wasn’t the movement itself, it was the player rotating with the camera, since the gameobject doesnt rotate, the softbody points do.
Worked on more softbody functions, using custom scripts that works along with my softbody player controller, Usagi will now seamlessly ragdoll when player presses R and also ragdolls when touching certain objects. Players can also squish other Usagi’s too, maybe multiplayer in the future?? There is one problem though with the ragdoll script, i can’t seem to make it seamlessly go into player controlled mode and out of ragdoll mode… it keeps clipping into the ground
adding sounds for usagi and adding more graphical elements like bushes and a giant blender. Sounds are all one-shot audio from usagi episodes with background music and noise removed.
worked on a time slow feature where players can slow down time by scrolling, and adding some awesome destruction test like smashing blocks, block hit into wall, and more!
Ships:
I made a softbody playground for Usagi the bunny. This is NOT a game!! It is purely a physics demo showing what can be done in Unity3D. It made me learn a lot about physics based movement in unity as well as setting up softbodies and ragdolls in a 3D space. The most challenging part was probably getting the player to reset the softbody without breaking the whole thing. Enjoy!...
|
1793210061.5863717
|
1793296461.5863717
|
|
43024
|
nwwm by @pinetree182 | Stardance
|
pinetree182
|
1
|
30.0
|
496
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T02:18:12Z", "hours": 30.0, "multiplier": 16.48, "payout": 496, "blessing": "neutral", "text": "I made nwwm, a simple tiling window manager for the X windowing system, a popular display server for Linux. Its job is basically to decide where windows go on the screen and how they should look, as well as listen to keypresses and decide what should happen. I ran into quite a few issues since I was using Rust which is not a language I’m 100% familiar with, and this was also my first proper systems-level project, but I managed to pull through and I’m really happy with where nwwm has gotten. Some features include: Tiling Multiple workspaces Support for docked windows, like statusbars Config loading from ~/.config/nwwm/config.toml Configurable keybinds (Barebones) EWMH support Since this is a Linux project, I know that most people won’t be able to test it so I’ve made a small video showing off some of the core features. You can view this video on the website, just scroll down to the “Demo” section and play the video.", "repo": "https://github.com/annaxiomm/nwwm", "demo": "https://annaxiomm.github.io/nwwm"}]...
|
[{"post_id": 72932, "ts": "202 [{"post_id": 72932, "ts": "2026-09-24T02:13:03Z", "hours": 5.9592, "text": "devlog #8 - the end is near stardance is coming to a close, the school holidays are nearing, and I’m running out of things to add to nwwm so I think I’m going to ship it here. I’m really happy with how far I’ve come in this project and I’ve learned a ton about X11, Rust, and myself. GAPS!! every good modern tiling window manager has gaps, so naturally I added them to nwwm. you can configure them in the config.toml through the gaps_inner and gaps_outer rules. gaps_inner controls the gaps between the windows themselves, and gaps_outer controls the gaps between the windows and the outer edge of the screen. other essentials I also added the ability to move windows between two workspaces. you can now set keybinds with the movetoworkspace <workspace> action to move the currently focused window to <workspace> . this was fairly easy to implement but I did run into a bug where the wm wasn’t correctly selecting a new window to focus after the focused window was moved to another workspace. I also finally added the ability to move focus backwards instead of just forwards, which you can do with the focus last action. promotional material I also sunk a few hours into making a cool little website for nwwm. it’s pretty generic but it gets the job done, and has a demo, config, screenshot, project description, and an example config file. you can see the website at annaxiomm.github.io/nwwm . finally, I made a simple logo in the form of a compass (because nwwm stands for N orth W est W indow M anager ) next steps ship it cash in my loot"}, {"post_id": 67018, "ts": "2026-09-13T01:49:32Z", "hours": 1.0403, "text": "devlog #7 - sanity check a bit of a short devlog here, but I decided to take a break from programming to make the repo look a bit more presentable (I’m planning to ship soon so it needs to look good for the camera!) README changes the existing README was quite barebones so I fully fleshed it out with a bunch of new stuff, including a proper testing tutorial, configuration help, and an entire section dedicated to what’s wrong with the project and what I’m going to fix when I decide to try and rewrite this bowl of spaghetti at some point next steps cleaning up the project, writting code comments, etc polishing up the project with some final features, like vanity gaps making a landing page for the wm because I know that when it comes time to ship, most people won’t be able to try out nwwm for themselves so I want to make a little showcase (so I don’t get a bad grade for usability!)"}, {"post_id": 66302, "ts": "2026-09-12T02:00:06Z", "hours": 3.9894, "text": "devlog #6 - CONFIGURATION!!! adding a config file has been in the next steps of just about every devlog i’ve made, and i finally got around to doing it! config.toml nwwm wouldn’t be a cliche rust project without a config.toml . but in all seriousness, i really like toml as a configuration language and it integrates really cleanly with rust anyway. so far, you can set parameters like window border, mod key, and default layout in $HOME/.config/nwwm/config.toml and nwwm will read those and apply them at runtime. unfortunately, config isn’t reloadable at the moment (next step?). you can also configure keybinds and even startup commands! i would really have liked to have lua scripting as a config but it’s just a bit too hard for a first wm project. the error handling is pretty hairy at the moment but i’ll fix that soon i promise other stuff i’ve changed not much else happened, but i added a feature where debug logging only happens if you run nwwm with -v or --verbose . next steps better error handling in config loading config re loading at runtime better documentation (maybe a website?)"}, {"post_id": 64645, "ts": "2026-09-09T06:37:27Z", "hours": 6.4375, "text": "devlog #5 - self hosted? ok it’s been quite a while since my last devlog but i’ve added a ton of new stuff - to the point where nwwm might become my main window manager soon! docks n’ struts “what even are those?” i hear you ask, and fear not because i am here to answer. a docked window is any kind of window that isn’t tiled, doesn’t belong to any workspace, and reserves space on the screen that other windows can’t take up. a really common example is a status bar: it persists between desktops, and reserves space on the screen. a strut is basically the space on the screen that it reserves. i implemented support for this so you can now use your favourite status bar with nwwm! i also spent like 3 hours debugging an error that happened sometimes when you closed a docked window, and ended up fixing it by complete accident workspaces 🧰 a window manager is basically useless without workspaces, so naturally i’ve added them to nwwm. they were actually quite easy to implement since i’ve technically supported them since day 1 i just never added workspace switching. basically when you switch a workspace it checks to see if the workspace exists, then it unfocuses the current window, unmaps (hides) all the windows in the current workspace, switches to the new workspace, maps (shows) all the windows in the new workspace, and focuses the first window in the new workspace. phew, try saying that in one breath! status bar compatibility as i mentioned earlier, i added struts and docks so that status bars can reserve space on the screen, but i also added some ewmh hints that allow status bars to see and change the current desktop. this was really easy, i just had to add some atoms and listen for ClientMessage events, and then connect those to my existing code next steps config file loading more ewmh 😭"}, {"post_id": 46047, "ts": "2026-08-12T23:48:13Z", "hours": 3.6097, "text": "devlog #4 - +10 usability! we’re now shifting from the realm of “experimental” to “experimental but usable ”. i’ve added a ton of new features recently and i’m really happy with how nwwm is coming together. actually good tiling i’ve added 2 new tiling layouts: monocle, and master/stack. monocle is the easiest to understand: all windows are the same size as the screen, and the currently focused window is brought to the front. master/stack is the traditional layout you see in wms like dwm, where there is a “master” window that takes up half of the screen and the rest split vertically (or “stack”) on the other half of the screen. i also added keybinds that switch between layouts revamped keybind system previously, the keybind system was just using raw x11 keycodes which were really annoying because they don’t match up with any other system (25 = w??) and are keymap-dependant. so, i switched to using xkbcommon and now keybinds are defined with more human-readable keysyms like KEY_w or KEY_Return . i also implemented a small command runner system so now you can launch commands with keybinds. so far i’ve set Mod+Enter to launch kitty and ofc these will all be configurable through the config file mysterious bugs i spent ages trying to debug some weird behaviour where bound keys wouldn’t register as keypresses if no windows had been opened in nwwm yet. after a lot of trial and error, and a few ChatGPT therapy sessions, i discovered that my error was one letter: i had keyboard_mode in the global mouse grab (which i need for click to focus) set to GrabMode::Sync instead of GrabMode::Async (fml) next steps more usability (moving windows, closing windows) better EWMH compliance support for temporary and permanent floating windows (i.e. tiled windows that you make float, and windows that only float like rofi) config file when?"}, {"post_id": 42968, "ts": "2026-08-07T23:32:08Z", "hours": 3.5736, "text": "devlog #3 - wow! visuals! how many times can i call conn.send_request() in one program?? config file i made a struct called Config which the wm owns, and it has values like border width, color, and keybinds. eventually it will read from a config.toml file but for now it’s all hard coded in the source code. window borders windows now have borders with color and width deriving from the Config (meaning they’ll be configurable through a config file at some point!). also, the currently focused window has a different border color (also configurable!) modular keybinds instead of hard-coding keybinds, i gave Config a child called Keybinds , which are hard coded in the source code… but eventually they’ll be part of the config file. when each keybind is called, it calls an Action which is linked to a function call in the wm. later there’ll be plenty of actions for anything you can think of, but for now theres only FocusNext which… focuses the next window! next steps config.toml loading better tiling (again) gaps EWMH compliance"}, {"post_id": 42307, "ts": "2026-08-06T23:15:26Z", "hours": 2.8794, "text": "devlog #2 - an actual window manager x11 is an ancient beast, full of mismatched types (screen height is a u16, window height is a u32, window position is an i32, etc), difficult protocols, and more double colons than you can shake a stick at, but i’m working through it. a (tiling) window manager i started off by storing a list of open workspaces in the main wm struct, and each workspace has a list of open windows (and a tiling layout). then, i made the wm listen for DestroyNotify events and remove them from their respective workspaces. soon after marvelling at my creation i realised that i could only see one window at a time, so i worked on implementing a basic tiling algorithm. so far, all i have is columns ( window_width = screen_width / num_of_windows ) but i’m working on adding master-stack tiling (what dwm uses) focus! i also realised that it’s no use having multiple windows if you can only use type on one, so i made each window grab the left click, and then listen for ButtonPress events, focusing the clicked window. next steps more tiling layouts cosmetic stuff (borders, gaps) keyboard shortcuts"}, {"post_id": 40452, "ts": "2026-08-03T23:38:06Z", "hours": 2.6114, "text": "devlog #1 - getting things started after working on tundra I decided that I wanted to make a window manager for an actual os instead, so I loaded arch onto an old macbook and got started. xlib woes I initially started by loosely following a tutorial that uses xlib for rust, but I soon realised that any direct mapping to C from rust is going to be an absolute horror to use (literally every function call had to be unsafe), so I switched to xcb. it has a slightly different API but it’s cleaner and i3 uses it so it must be good. current features: it runs it doesn’t crash you can open a window (by externally injecting it from a command prompt next steps: storing open windows in a struct / list basic tiling"}]...
|
Title: nwwm by @pinetree182 | Stardance
Devlogs:
Title: nwwm by @pinetree182 | Stardance
Devlogs:
devlog #1 - getting things started after working on tundra I decided that I wanted to make a window manager for an actual os instead, so I loaded arch onto an old macbook and got started. xlib woes I initially started by loosely following a tutorial that uses xlib for rust, but I soon realised that any direct mapping to C from rust is going to be an absolute horror to use (literally every function call had to be unsafe), so I switched to xcb. it has a slightly different API but it’s cleaner and i3 uses it so it must be good. current features: it runs it doesn’t crash you can open a window (by externally injecting it from a command prompt next steps: storing open windows in a struct / list basic tiling
devlog #2 - an actual window manager x11 is an ancient beast, full of mismatched types (screen height is a u16, window height is a u32, window position is an i32, etc), difficult protocols, and more double colons than you can shake a stick at, but i’m working through it. a (tiling) window manager i started off by storing a list of open workspaces in the main wm struct, and each workspace has a list of open windows (and a tiling layout). then, i made the wm listen for DestroyNotify events and remove them from their respective workspaces. soon after marvelling at my creation i realised that i could only see one window at a time, so i worked on implementing a basic tiling algorithm. so far, all i have is columns ( window_width = screen_width / num_of_windows ) but i’m working on adding master-stack tiling (what dwm uses) focus! i also realised that it’s no use having multiple windows if you can only use type on one, so i made each window grab the left click, and then listen for ButtonPress events, focusing the clicked window. next steps more tiling layouts cosmetic stuff (borders, gaps) keyboard shortcuts
devlog #3 - wow! visuals! how many times can i call conn.send_request() in one program?? config file i made a struct called Config which the wm owns, and it has values like border width, color, and keybinds. eventually it will read from a config.toml file but for now it’s all hard coded in the source code. window borders windows now have borders with color and width deriving from the Config (meaning they’ll be configurable through a config file at some point!). also, the currently focused window has a different border color (also configurable!) modular keybinds instead of hard-coding keybinds, i gave Config a child called Keybinds , which are hard coded in the source code… but eventually they’ll be part of the config file. when each keybind is called, it calls an Action which is linked to a function call in the wm. later there’ll be plenty of actions for anything you can think of, but for now theres only FocusNext which… focuses the next window! next steps config.toml loading better tiling (again) gaps EWMH compliance
devlog #4 - +10 usability! we’re now shifting from the realm of “experimental” to “experimental but usable ”. i’ve added a ton of new features recently and i’m really happy with how nwwm is coming together. actually good tiling i’ve added 2 new tiling layouts: monocle, and master/stack. monocle is the easiest to understand: all windows are the same size as the screen, and the currently focused window is brought to the front. master/stack is the traditional layout you see in wms like dwm, where there is a “master” window that takes up half of the screen and the rest split vertically (or “stack”) on the other half of the screen. i also added keybinds that switch between layouts revamped keybind system previously, the keybind system was just using raw x11 keycodes which were really annoying because they don’t match up with any other system (25 = w??) and are keymap-dependant. so, i switched to using xkbcommon and now keybinds are defined with more human-readable keysyms like KEY_w or KEY_Return . i also implemented a small command runner system so now you can launch commands with keybinds. so far i’ve set Mod+Enter to launch kitty and ofc these will all be configurable through the config file mysterious bugs i spent ages trying to debug some weird behaviour where bound keys wouldn’t register as keypresses if no windows had been opened in nwwm yet. after a lot of trial and error, and a few ChatGPT therapy sessions, i discovered that my error was one letter: i had keyboard_mode in the global mouse grab (which i need for click to focus) set to GrabMode::Sync instead of GrabMode::Async (fml) next steps more usability (moving windows, closing windows) better EWMH compliance support for temporary and permanent floating windows (i.e. tiled windows that you make float, and windows that only float like rofi) config file when?
devlog #5 - self hosted? ok it’s been quite a while since my last devlog but i’ve added a ton of new stuff - to the point where nwwm might become my main window manager soon! docks n’ struts “what even are those?” i hear you ask, and fear not because i am here to answer. a docked window is any kind of window that isn’t tiled, doesn’t belong to any workspace, and reserves space on the screen that other windows can’t take up. a really common example is a status bar: it persists between desktops, and reserves space on the screen. a strut is basically the space on the screen that it reserves. i implemented support for this so you can now use your favourite status bar with nwwm! i also spent like 3 hours debugging an error that happened sometimes when you closed a docked window, and ended up fixing it by complete accident workspaces 🧰 a window manager is basically useless without workspaces, so naturally i’ve added them to nwwm. they were actually quite easy to implement since i’ve technically supported them since day 1 i just never added workspace switching. basically when you switch a workspace it checks to see if the workspace exists, then it unfocuses the current window, unmaps (hides) all the windows in the current workspace, switches to the new workspace, maps (shows) all the windows in the new workspace, and focuses the first window in the new workspace. phew, try saying that in one breath! status bar compatibility as i mentioned earlier, i added struts and docks so that status bars can reserve space on the screen, but i also added some ewmh hints that allow status bars to see and change the current desktop. this was really easy, i just had to add some atoms and listen for ClientMessage events, and then connect those to my existing code next steps config file loading more ewmh 😭
devlog #6 - CONFIGURATION!!! adding a config file has been in the next steps of just about every devlog i’ve made, and i finally got around to doing it! config.toml nwwm wouldn’t be a cliche rust project without a config.toml . but in all seriousness, i really like toml as a configuration language and it integrates really cleanly with rust anyway. so far, you can set parameters like window border, mod key, and default layout in $HOME/.config/nwwm/config.toml and nwwm will read those and apply them at runtime. unfortunately, config isn’t reloadable at the moment (next step?). you can also configure keybinds and even startup commands! i would really have liked to have lua scripting as a config but it’s just a bit too hard for a first wm project. the error handling is pretty hairy at the moment but i’ll fix that soon i promise other stuff i’ve changed not much else happened, but i added a feature where debug logging only happens if you run nwwm with -v or --verbose . next steps better error handling in config loading config re loading at runtime better documentation (maybe a website?)
devlog #7 - sanity check a bit of a short devlog here, but I decided to take a break from programming to make the repo look a bit more presentable (I’m planning to ship soon so it needs to look good for the camera!) README changes the existing README was quite barebones so I fully fleshed it out with a bunch of new stuff, including a proper testing tutorial, configuration help, and an entire section dedicated to what’s wrong with the project and what I’m going to fix when I decide to try and rewrite this bowl of spaghetti at some point next steps cleaning up the project, writting code comments, etc polishing up the project with some final features, like vanity gaps making a landing page for the wm because I know that when it comes time to ship, most people won’t be able to try out nwwm for themselves so I want to make a little showcase (so I don’t get a bad grade for usability!)
devlog #8 - the end is near stardance is coming to a close, the school holidays are nearing, and I’m running out of things to add to nwwm so I think I’m going to ship it here. I’m really happy with how far I’ve come in this project and I’ve learned a ton about X11, Rust, and myself. GAPS!! every good modern tiling window manager has gaps, so naturally I added them to nwwm. you can configure them in the config.toml through the gaps_inner and gaps_outer rules. gaps_inner controls the gaps between the windows themselves, and gaps_outer controls the gaps between the windows and the outer edge of the screen. other essentials I also added the ability to move windows between two workspaces. you can now set keybinds with the movetoworkspace <workspace> action to move the currently focused window to <workspace> . this was fairly easy to implement but I did run into a bug where the wm wasn’t correctly selecting a new window to focus after the focused window was moved to another workspace. I also finally added the ability to move focus backwards instead of just forwards, which you can do with the focus last action. promotional material I also sunk a few hours into making a cool little website for nwwm. it’s pretty generic but it gets the job done, and has a demo, config, screenshot, project description, and an example config file. you can see the website at annaxiomm.github.io/nwwm . finally, I made a simple logo in the form of a compass (because nwwm stands for N orth W est W indow M anager ) next steps ship it cash in my loot
Ships:
I made nwwm, a simple tiling window manager for the X windowing system, a popular display server for Linux. Its job is basically to decide where windows go on the screen and how they should look, as well as listen to keypresses and decide what should happen. I ran into quite a few issues since I was using Rust which is not a language I’m 100% familiar with, and this was also my first proper systems-level project, but I managed to pull through and I’m really happy with where nwwm has gotten. Some features include: Tiling Multiple workspaces Support for docked windows, like statusbars Config loading from ~/.config/nwwm/config.toml Configurable keybinds (Barebones) EWMH support Since this is a Linux project, I know that most people won’t be able to test it so I’ve made a small video showing off some of the core features. You can view this video on the website, just scroll down to the “Demo” section and play the video....
|
1793339393.8759298
|
1793425793.8759298
|
|
58004
|
enote by @willexists | Stardance
|
willexists
|
0
|
1.43
|
0
|
[]
|
[{"post_id": 72933, "ts": "202 [{"post_id": 72933, "ts": "2026-09-24T02:15:35Z", "hours": 1.0375, "text": "i forgot to log this lol"}, {"post_id": 61250, "ts": "2026-09-04T02:51:24Z", "hours": 0.3922, "text": "i added like the main page and a page to put libraris and fonts i use"}]...
|
Title: enote by @willexists | Stardance
Devlogs:
Title: enote by @willexists | Stardance
Devlogs:
i added like the main page and a page to put libraris and fonts i use
i forgot to log this lol...
|
1793130927.5379596
|
1793735727.5379596
|
|
53586
|
Recurrent Neural Network by @crazydave | Stardance
|
|
1
|
32.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T02:26:15Z", "hours": 32.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a recurrent neural network from scratch in Python using numpy, which generates text one character at a time in the style of Shakespeare. Because it keeps a memory of what it has recently seen, it learnt capitalisation, line breaks, punctuation, character-name formatting and roughly what English words look like, starting from nothing but the raw text, which I think is super cool! The most challenging part of this project was getting it to produce good output, first through backpropagation through time, where off-by-one bugs in the hidden state indexing and a bias gradient I forgot to update meant it wasn’t training properly, and then after training it with more layers, the error was much lower but the output was terrible, which took me a very long time to figure out. It turned out the model had barely ever seen a blank memory during training, so I fixed it by building up its memory on some text before it starts generating. I also added command line arguments to the code so that people can generate text or train their own model in their terminal without editing the python file. To test it, follow the install instructions on the README, you can either download the python code and run that, or download the compiled versions in the releases page on Github.", "repo": "https://github.com/rufus-gh/recurrent-neural-network", "demo": "https://github.com/rufus-gh/recurrent-neural-network/releases"}]...
|
[{"post_id": 72936, "ts": "202 [{"post_id": 72936, "ts": "2026-09-24T02:19:48Z", "hours": 0.3175, "text": "Added some code so that users can pass in arguments. I also spent a while trying to set up the releases page using github actions, and I used claude to make the github actions script for me (none of this went towards logged hours as it wasn’t in the IDE), but I finally got the releases to work (ignore the 1.0.4, I was trying to get it to work). I had three problems. One of them was that I accidentally named the “github” folder “github” (without the dot) so it wasn’t correctly running as an action. Another problem was pyinstaller using relative paths but remembered the same thing happened to me on my last project so i just used the same fix. The final problem was that my model checkpoint file somehow got deleted and it was needed for the Github actions but I had another copy so I put it back into the project and committed it, and it finally worked. I also got Al to help me write the README as it is boring to do. It will be shipped shortly so please check it out. (also dont mind the screenshot below being a screenshot of stardance, when I tried to post this, the site froze, so I screenshotted it first to make sure I didn’t lose it, and then it broke so I did it again)."}, {"post_id": 60564, "ts": "2026-09-02T23:54:38Z", "hours": 6.5103, "text": "After training it with the updated code, the output was terrible although the error was much lower, so I was really confused. I wasn’t sure what went wrong, and it took me a very long time to figure it out. When training, I feed in the previous step’s memory back into it and in training the memory is never wiped each epoch. However, when testing the output, I initialised it with a memory of just zeros, which it had barely experienced training with so wasn’t able to output meaningful things. I was able to fix it by initialising its memory on the training text itself to give it a memory state it is used to and that fixed it. You can see an output from it below."}, {"post_id": 55079, "ts": "2026-08-26T14:56:00Z", "hours": 5.5619, "text": "I did multiple training sessions and tweaked the learning rate, as after training with more layers and complexity, the model ended up with a much worse rate. I tried decreasing the learning rate and that led to a much better result. I then implemented something which reduces the learning rate over time, so that hopefully it will not plateau. I am thinking that to get to more levels of complexity in terms of producing actual content i will need to turn it into a LSTM, which has long and short memory. I am going to train it for a while now with the update and see how it goes."}, {"post_id": 54376, "ts": "2026-08-25T10:53:01Z", "hours": 6.1772, "text": "I updated the rnn to support multiple hidden layers, as previously it had a single layer, so I had to update the forward and backwards passes as well as the adagrad to account for the multiple layers. I started off with two and tested it with a hidden size of 256, but I didn’t see any improvement, however I didn’t train it for as long. I am now in the process of implementing a variable number of layers from 1 to any number, so that the model can learn greater complexity, however this comes at the cost of much slower training. Currently the training on 2 layers is a decent slowdown compared to with 1 layer, as i also increased hidden size to 512. So far I have made the forward pass work for multiple layers (greater than 2) but the rest of it still only supports 2 layers."}, {"post_id": 54127, "ts": "2026-08-24T23:04:59Z", "hours": 13.3083, "text": "I am making a recurrent neural network from scratch in python using numpy, trained on Shakespeare text to generate character-by-character in his style.This is an improvement on the previous neural network that I made as it keeps a memory based on the things it has recently seen, so it’s next prediction depends on what it has previously seen which will hopefully make it be able to learn more advanced patterns.I added loading and chunking of data, so basically it takes in a text file, and then it splits it into chunks (I use 25 character long chunks) in pairs with one shifted across by one and saves it as input and targets.I wrote the forward pass, loops through each character in a chunk, updates a hidden state with tanh, then a softmax over the vocab to predict the next character.I implemented backprop through time, which was definitely the hardest part, had a few off-by-one bugs in the hidden state indexing that took a while to track down.I did a numerical gradient check to double-check the backward pass against finite differences before training it, and realised I forgot to update the bias gradient so it wasn’t training properly.I used adagrad as the matrix updater from the gradients which works by updating the gradients by a smaller and smaller amount each time (I looked it up and apparently it is a good way to do it).I wrote the output function where I give it an input function, and then the model predicts the next character, and then it feeds the output back into the model and repeats for as many characters as I want.I then trained it on Shakespeare text and ran 100k iterations at hidden size 100, took about 2 mins and started outputting vaguely word-shaped gibberish with correct capitalisation and character-name formatting.I then increased the hidden size from 100 to 256 and trained it more, and it still looks like gibberish but improved a bit, some of the output is what you can see in the screenshot."}]...
|
Title: Recurrent Neural Network by @crazydave | St Title: Recurrent Neural Network by @crazydave | Stardance
Devlogs:
I am making a recurrent neural network from scratch in python using numpy, trained on Shakespeare text to generate character-by-character in his style.This is an improvement on the previous neural network that I made as it keeps a memory based on the things it has recently seen, so it’s next prediction depends on what it has previously seen which will hopefully make it be able to learn more advanced patterns.I added loading and chunking of data, so basically it takes in a text file, and then it splits it into chunks (I use 25 character long chunks) in pairs with one shifted across by one and saves it as input and targets.I wrote the forward pass, loops through each character in a chunk, updates a hidden state with tanh, then a softmax over the vocab to predict the next character.I implemented backprop through time, which was definitely the hardest part, had a few off-by-one bugs in the hidden state indexing that took a while to track down.I did a numerical gradient check to double-check the backward pass against finite differences before training it, and realised I forgot to update the bias gradient so it wasn’t training properly.I used adagrad as the matrix updater from the gradients which works by updating the gradients by a smaller and smaller amount each time (I looked it up and apparently it is a good way to do it).I wrote the output function where I give it an input function, and then the model predicts the next character, and then it feeds the output back into the model and repeats for as many characters as I want.I then trained it on Shakespeare text and ran 100k iterations at hidden size 100, took about 2 mins and started outputting vaguely word-shaped gibberish with correct capitalisation and character-name formatting.I then increased the hidden size from 100 to 256 and trained it more, and it still looks like gibberish but improved a bit, some of the output is what you can see in the screenshot.
I updated the rnn to support multiple hidden layers, as previously it had a single layer, so I had to update the forward and backwards passes as well as the adagrad to account for the multiple layers. I started off with two and tested it with a hidden size of 256, but I didn’t see any improvement, however I didn’t train it for as long. I am now in the process of implementing a variable number of layers from 1 to any number, so that the model can learn greater complexity, however this comes at the cost of much slower training. Currently the training on 2 layers is a decent slowdown compared to with 1 layer, as i also increased hidden size to 512. So far I have made the forward pass work for multiple layers (greater than 2) but the rest of it still only supports 2 layers.
I did multiple training sessions and tweaked the learning rate, as after training with more layers and complexity, the model ended up with a much worse rate. I tried decreasing the learning rate and that led to a much better result. I then implemented something which reduces the learning rate over time, so that hopefully it will not plateau. I am thinking that to get to more levels of complexity in terms of producing actual content i will need to turn it into a LSTM, which has long and short memory. I am going to train it for a while now with the update and see how it goes.
After training it with the updated code, the output was terrible although the error was much lower, so I was really confused. I wasn’t sure what went wrong, and it took me a very long time to figure it out. When training, I feed in the previous step’s memory back into it and in training the memory is never wiped each epoch. However, when testing the output, I initialised it with a memory of just zeros, which it had barely experienced training with so wasn’t able to output meaningful things. I was able to fix it by initialising its memory on the training text itself to give it a memory state it is used to and that fixed it. You can see an output from it below.
Added some code so that users can pass in arguments. I also spent a while trying to set up the releases page using github actions, and I used claude to make the github actions script for me (none of this went towards logged hours as it wasn’t in the IDE), but I finally got the releases to work (ignore the 1.0.4, I was trying to get it to work). I had three problems. One of them was that I accidentally named the “github” folder “github” (without the dot) so it wasn’t correctly running as an action. Another problem was pyinstaller using relative paths but remembered the same thing happened to me on my last project so i just used the same fix. The final problem was that my model checkpoint file somehow got deleted and it was needed for the Github actions but I had another copy so I put it back into the project and committed it, and it finally worked. I also got Al to help me write the README as it is boring to do. It will be shipped shortly so please check it out. (also dont mind the screenshot below being a screenshot of stardance, when I tried to post this, the site froze, so I screenshotted it first to make sure I didn’t lose it, and then it broke so I did it again).
Ships:
I made a recurrent neural network from scratch in Python using numpy, which generates text one character at a time in the style of Shakespeare. Because it keeps a memory of what it has recently seen, it learnt capitalisation, line breaks, punctuation, character-name formatting and roughly what English words look like, starting from nothing but the raw text, which I think is super cool! The most challenging part of this project was getting it to produce good output, first through backpropagation through time, where off-by-one bugs in the hidden state indexing and a bias gradient I forgot to update meant it wasn’t training properly, and then after training it with more layers, the error was much lower but the output was terrible, which took me a very long time to figure out. It turned out the model had barely ever seen a blank memory during training, so I fixed it by building up its memory on some text before it starts generating. I also added command line arguments to the code so that people can generate text or train their own model in their terminal without editing the python file. To test it, follow the install instructions on the README, you can either download the python code and run that, or download the compiled versions in the releases page on Github....
|
1793170116.8198957
|
1793256516.8198957
|
|
54348
|
App made with flutter with python backend by @agam App made with flutter with python backend by @agamjot_sarao9797 | Stardance...
|
agamjot_sarao9797
|
1
|
48.32
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-13T03:48:16Z", "hours": 48.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an app with flutter and python API, This app gets a URL from the user and then scrapes the info from the website then the user gets the id to the block of info from a tab called Data Hub and then the user would enter the ID in the tabs where the app makes the excel sheet or presentation on that info. The mos challenging part of this project was the part where the app made a presentation because i did not know how to make a presentation with python or Python-pptx. The part I did use AI on as the .bat launcher because i do not know how to code bash", "repo": "https://github.com/CODER-MAN12/AI-webscraper-app", "demo": "https://github.com/CODER-MAN12/AI-webscraper-app/releases/tag/App"}]...
|
[{"post_id": 72940, "ts": "202 [{"post_id": 72940, "ts": "2026-09-24T02:34:16Z", "hours": 0.3172, "text": "Devlog#15: I have decided that I will keep working on the project to make it look better since I might keep working on it so i can put it on google play or PC app store because of this i have also started a 3 hour graphic design tutorial since my app looks hideous."}, {"post_id": 67052, "ts": "2026-09-13T03:01:00Z", "hours": 0.9414, "text": "I am done just about the ship my project"}, {"post_id": 65681, "ts": "2026-09-11T00:07:31Z", "hours": 1.7689, "text": "Devlog#13: I HAVE COMPLETED THE APP THE EXCEL SHEET MAKER ITS FUNCTIONAL SO IS THE PRESENTATION MAKER I JUST NEED TO MAKE A LAUNCHER !!!!"}, {"post_id": 65095, "ts": "2026-09-10T00:03:20Z", "hours": 8.2875, "text": "Devlog#12: I have been working on the last two files that make a excel file and a power point and I am done 70 percent on it but it is challenging"}, {"post_id": 62445, "ts": "2026-09-05T19:56:11Z", "hours": 5.8167, "text": "Devlog#11: I have finished the history feature for the app where it can access the previous scraped info by id and then it will enter the id in the power-point or spreadsheet maker so the AI knows what info to make it for."}, {"post_id": 60701, "ts": "2026-09-03T07:53:03Z", "hours": 2.6294, "text": "Devlog#10: The menu is fully functional and it can scrape info and save it in a python API server which then stores it into a JSON file"}, {"post_id": 60542, "ts": "2026-09-02T23:01:07Z", "hours": 6.6461, "text": "Devlog#9: I have made the python back-end scraper function which is ready to give info to the flutter UI but i have started to learn how to use HTTP in flutter"}, {"post_id": 59270, "ts": "2026-08-31T23:35:55Z", "hours": 2.0578, "text": "Devlog#8: I have learned how to web scrape with python and have started to work on the web scraping function"}, {"post_id": 58664, "ts": "2026-08-31T05:03:07Z", "hours": 2.2214, "text": "Devlog#7: I have added more error handling which checks if it can reach the HTTP link and i have added more pages to the app. The output terminal is also functioning but only outputs the HTTP body"}, {"post_id": 57946, "ts": "2026-08-30T08:58:29Z", "hours": 5.8464, "text": "Devlog#6: I have added a HTTP checker to the menu and have worked on the rest of the pages a bit. I have also switched from a android emulator to my phone since windows uses so much ram."}, {"post_id": 56939, "ts": "2026-08-28T23:27:18Z", "hours": 1.0114, "text": "Devlog#5: I have finished the UI of the menu and I have started the other pages for my app"}, {"post_id": 56482, "ts": "2026-08-28T08:12:24Z", "hours": 3.4047, "text": "Devlog#4: I have to add more to the menu"}, {"post_id": 56253, "ts": "2026-08-27T22:43:13Z", "hours": 3.0972, "text": "Devlog#3: I am finished learning the basics of Flutter and now i have started to work on a menu"}, {"post_id": 55271, "ts": "2026-08-26T23:32:31Z", "hours": 4.0222, "text": "Devlog#2: For my app i have started to learn Flutter"}, {"post_id": 54774, "ts": "2026-08-25T21:37:39Z", "hours": 0.3936, "text": "I am working on a Desktop app which where you can give the app a URL and it will scrape the website for info you specified and can make it into a PowerPoint, JSON, or a excel file. This is the first part of the back end python coding which uses FastApi and Pydantic to get requests from user"}]...
|
Title: App made with flutter with python backend b Title: App made with flutter with python backend by @agamjot_sarao9797 | Stardance
Devlogs:
I am working on a Desktop app which where you can give the app a URL and it will scrape the website for info you specified and can make it into a PowerPoint, JSON, or a excel file. This is the first part of the back end python coding which uses FastApi and Pydantic to get requests from user
Devlog#2: For my app i have started to learn Flutter
Devlog#3: I am finished learning the basics of Flutter and now i have started to work on a menu
Devlog#4: I have to add more to the menu
Devlog#5: I have finished the UI of the menu and I have started the other pages for my app
Devlog#6: I have added a HTTP checker to the menu and have worked on the rest of the pages a bit. I have also switched from a android emulator to my phone since windows uses so much ram.
Devlog#7: I have added more error handling which checks if it can reach the HTTP link and i have added more pages to the app. The output terminal is also functioning but only outputs the HTTP body
Devlog#8: I have learned how to web scrape with python and have started to work on the web scraping function
Devlog#9: I have made the python back-end scraper function which is ready to give info to the flutter UI but i have started to learn how to use HTTP in flutter
Devlog#10: The menu is fully functional and it can scrape info and save it in a python API server which then stores it into a JSON file
Devlog#11: I have finished the history feature for the app where it can access the previous scraped info by id and then it will enter the id in the power-point or spreadsheet maker so the AI knows what info to make it for.
Devlog#12: I have been working on the last two files that make a excel file and a power point and I am done 70 percent on it but it is challenging
Devlog#13: I HAVE COMPLETED THE APP THE EXCEL SHEET MAKER ITS FUNCTIONAL SO IS THE PRESENTATION MAKER I JUST NEED TO MAKE A LAUNCHER !!!!
I am done just about the ship my project
Devlog#15: I have decided that I will keep working on the project to make it look better since I might keep working on it so i can put it on google play or PC app store because of this i have also started a 3 hour graphic design tutorial since my app looks hideous.
Ships:
I made an app with flutter and python API, This app gets a URL from the user and then scrapes the info from the website then the user gets the id to the block of info from a tab called Data Hub and then the user would enter the ID in the tabs where the app makes the excel sheet or presentation on that info. The mos challenging part of this project was the part where the app made a presentation because i did not know how to make a presentation with python or Python-pptx. The part I did use AI on as the .bat launcher because i do not know how to code bash...
|
1793350687.1478817
|
1793437087.1478817
|
|
62010
|
Hex-2048 by @CadenO | Stardance
|
CadenO
|
1
|
4.0
|
23
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T02:57:15Z", "hours": 4.0, "multiplier": 5.24, "payout": 23, "blessing": "neutral", "text": "I made the classic 2048 number game, but in a hexagon instead of a square! I think that it looks mostly clean, and I find it pretty fun to play. It is a vanilla browser page, and can take input from a keyboard or a touchscreen.", "repo": "https://github.com/cesium72/Hex-2048", "demo": "https://cesium72.github.io/Hex-2048"}]...
|
[{"post_id": 72946, "ts": "202 [{"post_id": 72946, "ts": "2026-09-24T02:53:25Z", "hours": 0.7361, "text": "It’s finally actually done! The mobile input is now working and the game is pretty fun (in my opinion)"}, {"post_id": 71574, "ts": "2026-09-21T02:31:16Z", "hours": 0.63, "text": "I’ve basically finished my hexagonal 2048 game! The game itself, saving, help, and reset are all working, and the only thing left to add is a README (ugh). I think the game is pretty fun, though."}, {"post_id": 70985, "ts": "2026-09-20T04:58:55Z", "hours": 0.7875, "text": "I have made progress on my hexagonal 2048 game! 1) There is now a help screen, and 2) I got an 8192! Then, I decided that I have much better uses for my time. After I add the scoring, I’ll probably be about done, so I seem to be on track for my goal of a quick project."}, {"post_id": 69841, "ts": "2026-09-17T21:48:53Z", "hours": 2.1936, "text": "I’ve been making a hexagonal 2048 game! The game mechanics are working fine, and the logic is all in place. The only real things I have left to do are to add touchscreen input (swiping), scoring, and add functionality to reset and help buttons. (OK, fine, and write a README)."}]...
|
Title: Hex-2048 by @CadenO | Stardance
Devlogs:
I Title: Hex-2048 by @CadenO | Stardance
Devlogs:
I’ve been making a hexagonal 2048 game! The game mechanics are working fine, and the logic is all in place. The only real things I have left to do are to add touchscreen input (swiping), scoring, and add functionality to reset and help buttons. (OK, fine, and write a README).
I have made progress on my hexagonal 2048 game! 1) There is now a help screen, and 2) I got an 8192! Then, I decided that I have much better uses for my time. After I add the scoring, I’ll probably be about done, so I seem to be on track for my goal of a quick project.
I’ve basically finished my hexagonal 2048 game! The game itself, saving, help, and reset are all working, and the only thing left to add is a README (ugh). I think the game is pretty fun, though.
It’s finally actually done! The mobile input is now working and the game is pretty fun (in my opinion)
Ships:
I made the classic 2048 number game, but in a hexagon instead of a square! I think that it looks mostly clean, and I find it pretty fun to play. It is a vanilla browser page, and can take input from a keyboard or a touchscreen....
|
1793209884.3382666
|
1793296284.3382666
|
|
60498
|
Pluto_BLARE by @Eli_Mendez | Stardance
|
Eli_Mendez
|
0
|
11.73
|
0
|
[]
|
[{"post_id": 72947, "ts": "202 [{"post_id": 72947, "ts": "2026-09-24T02:55:46Z", "hours": 1.4939, "text": "I worked on some problems that I had with my case and am going to try to fix everything tomorrow"}, {"post_id": 69901, "ts": "2026-09-18T01:11:51Z", "hours": 4.35, "text": "Pluto_BLARE: I finished up my case and worked on my firmware. Lastly, I worked on getting all the files to submit this project. This alarm will be able to hold time, set five alarms, use a 4 digit combination, and allow the user to reset password."}, {"post_id": 68922, "ts": "2026-09-16T01:40:39Z", "hours": 3.2156, "text": "Pluto_BLARE: Today I worked on the CADing part of my BLARE alarm clock. Some of the instructions on the guide were a bit unclear how to do things. I like them using Onshape for easy access for a more users. However, I personally use fusion as it is provided to me via school so the adjustment was pretty difficult therefore, making me take longer on this portion but this was pretty fun to model. The picture is off what I was able to get done during this time"}, {"post_id": 68386, "ts": "2026-09-15T01:23:46Z", "hours": 2.6689, "text": "Pluto_BLARE: I was able to build the PCB for this alarm clock with in this time frame. The guide was well laid out so I was able to follow it pretty easily. However, I did run into a hiccup with the dimensions so I had to completely reconfigure the PCB again. It is a good thing I find making PCB fun. This was a pretty simple design for this alarm clock I will move onto CADing and Firmware tomorrow."}]...
|
Title: Pluto_BLARE by @Eli_Mendez | Stardance
Dev Title: Pluto_BLARE by @Eli_Mendez | Stardance
Devlogs:
Pluto_BLARE: I was able to build the PCB for this alarm clock with in this time frame. The guide was well laid out so I was able to follow it pretty easily. However, I did run into a hiccup with the dimensions so I had to completely reconfigure the PCB again. It is a good thing I find making PCB fun. This was a pretty simple design for this alarm clock I will move onto CADing and Firmware tomorrow.
Pluto_BLARE: Today I worked on the CADing part of my BLARE alarm clock. Some of the instructions on the guide were a bit unclear how to do things. I like them using Onshape for easy access for a more users. However, I personally use fusion as it is provided to me via school so the adjustment was pretty difficult therefore, making me take longer on this portion but this was pretty fun to model. The picture is off what I was able to get done during this time
Pluto_BLARE: I finished up my case and worked on my firmware. Lastly, I worked on getting all the files to submit this project. This alarm will be able to hold time, set five alarms, use a 4 digit combination, and allow the user to reset password.
I worked on some problems that I had with my case and am going to try to fix everything tomorrow...
|
1793033541.746211
|
1793638341.746211
|
|
63624
|
My 3d printer by @Eesh-A | Stardance
|
Eesh-A
|
0
|
3.08
|
0
|
[]
|
[{"post_id": 72948, "ts": "202 [{"post_id": 72948, "ts": "2026-09-24T02:56:10Z", "hours": 3.0783, "text": "Just finished CAD for my diy 3d printer. I couldnt get the mates just right but this was mainly to see how everything would fit anyway."}]...
|
Title: My 3d printer by @Eesh-A | Stardance
Devlo Title: My 3d printer by @Eesh-A | Stardance
Devlogs:
Just finished CAD for my diy 3d printer. I couldnt get the mates just right but this was mainly to see how everything would fit anyway....
|
1793051695.1048763
|
1793656495.1048763
|
|
60050
|
Kira Hackpad by @kira_iovenko | Stardance
|
kira_iovenko
|
0
|
31.85
|
0
|
[]
|
[{"post_id": 72957, "ts": "202 [{"post_id": 72957, "ts": "2026-09-24T03:27:53Z", "hours": 4.6078, "text": "I finished up my hackpad. I wrote the firmware in QMK with some help from ChatGPT for coding and debugging. Then I fixed a mounted point in PCB, organized my project files, and generated production files. Everything is now organized and ready for submission!"}, {"post_id": 71559, "ts": "2026-09-21T01:52:11Z", "hours": 8.3, "text": "I finally finished my new hackpad case. I added a hole for the USB port using orpheuspad as an example, then added mounting screw holes and an additional angled plate at the bottom. I also added M3 mounting hole to my PCB and matched it in the case so the PCB can be securely fastened now. The only thing left is the firmware."}, {"post_id": 70390, "ts": "2026-09-19T02:59:20Z", "hours": 4.9667, "text": "I added my new PCB to the Fusion project and aligned it with the components and sketches for the new case. I reworked the sketches several times to make sure everything lines up and fits correctly, then continued working on the case and assembling the components. The case is almost done, but I still need to add a hole for usb port and screws to hold pcb and case parts together."}, {"post_id": 68973, "ts": "2026-09-16T04:11:44Z", "hours": 6.8333, "text": "I updated my schematic and placed all new parts on the pcb to match the new case design. I spent a lot of time to route everything and making sure all the connections fit with the new layout but it’s finally finished. Next I will continue working on the case and assembly."}, {"post_id": 67775, "ts": "2026-09-14T00:53:23Z", "hours": 4.4544, "text": "I spent the last couple of days figuring out how to add 3D models into fusion 360. I had trouble finding downloadable models and I eventually exported them from orpheuspad example and added them to my project. Then I arranged the models and started working on a new case. I also need to update pcb to match the new design."}, {"post_id": 65206, "ts": "2026-09-10T05:22:06Z", "hours": 1.6667, "text": "Today I designed a case for my hackpad in Fusion 360. I followed the guide to create the base, sides, and lid with the switches holes. I also added a usb cutout. This was my first time using Fusion 360, so I had to figure out the tools I used and make a lot adjustments along the way."}, {"post_id": 64626, "ts": "2026-09-09T05:16:06Z", "hours": 1.0169, "text": "Today I started my first project in KiCad. I tried to follow the guide, but I ran into several issues because it is probably written for another version of KiCad. I had to google how to install the footprints and symbols, move the parts around, add the board outline, and so on. After figuring those out I finished my schematic and routed connections in PCB editor."}]...
|
Title: Kira Hackpad by @kira_iovenko | Stardance
Title: Kira Hackpad by @kira_iovenko | Stardance
Devlogs:
Today I started my first project in KiCad. I tried to follow the guide, but I ran into several issues because it is probably written for another version of KiCad. I had to google how to install the footprints and symbols, move the parts around, add the board outline, and so on. After figuring those out I finished my schematic and routed connections in PCB editor.
Today I designed a case for my hackpad in Fusion 360. I followed the guide to create the base, sides, and lid with the switches holes. I also added a usb cutout. This was my first time using Fusion 360, so I had to figure out the tools I used and make a lot adjustments along the way.
I spent the last couple of days figuring out how to add 3D models into fusion 360. I had trouble finding downloadable models and I eventually exported them from orpheuspad example and added them to my project. Then I arranged the models and started working on a new case. I also need to update pcb to match the new design.
I updated my schematic and placed all new parts on the pcb to match the new case design. I spent a lot of time to route everything and making sure all the connections fit with the new layout but it’s finally finished. Next I will continue working on the case and assembly.
I added my new PCB to the Fusion project and aligned it with the components and sketches for the new case. I reworked the sketches several times to make sure everything lines up and fits correctly, then continued working on the case and assembling the components. The case is almost done, but I still need to add a hole for usb port and screws to hold pcb and case parts together.
I finally finished my new hackpad case. I added a hole for the USB port using orpheuspad as an example, then added mounting screw holes and an additional angled plate at the bottom. I also added M3 mounting hole to my PCB and matched it in the case so the PCB can be securely fastened now. The only thing left is the firmware.
I finished up my hackpad. I wrote the firmware in QMK with some help from ChatGPT for coding and debugging. Then I fixed a mounted point in PCB, organized my project files, and generated production files. Everything is now organized and ready for submission!...
|
1793030074.69008
|
1793634874.69008
|
|
65279
|
personal website by @andraguoso | Stardance
|
andraguoso
|
0
|
7.01
|
0
|
[]
|
[{"post_id": 72958, "ts": "202 [{"post_id": 72958, "ts": "2026-09-24T03:28:24Z", "hours": 7.0086, "text": "finally done with my website! there were sooo many changes on the layout, i got a bit too greedy with the features and i ended up having to simplify a lot of my vision - but it was worth it! i think it ended up being much more practical and nicer on the eyes c: i had to re-do so much stuff for the documentation to be more organized, but i learned so much about tailwind & a bit of git c: here’s my projects zone!"}]...
|
Title: personal website by @andraguoso | Stardance Title: personal website by @andraguoso | Stardance
Devlogs:
finally done with my website! there were sooo many changes on the layout, i got a bit too greedy with the features and i ended up having to simplify a lot of my vision - but it was worth it! i think it ended up being much more practical and nicer on the eyes c: i had to re-do so much stuff for the documentation to be more organized, but i learned so much about tailwind & a bit of git c: here’s my projects zone!...
|
1793084227.5900862
|
1793689027.5900862
|
|
63765
|
Matbot (Do Maths)(Not IMO probs) by @YuviVerma | S Matbot (Do Maths)(Not IMO probs) by @YuviVerma | Stardance...
|
YuviVerma
|
0
|
1.43
|
0
|
[]
|
[{"post_id": 72965, "ts": "202 [{"post_id": 72965, "ts": "2026-09-24T03:55:38Z", "hours": 1.0808, "text": "Guys we have to fight bukus , assemble beans . Nevermind , I have added some maths doing capabilities in ma bot. It’s not live rn but it can solve - ‘+’ , ‘-‘, ‘x’, ‘/‘, sqrt , exponents.@beans"}, {"post_id": 71818, "ts": "2026-09-21T16:39:49Z", "hours": 0.35, "text": "I just made the base to built it , used slack to start my project."}]...
|
Title: Matbot (Do Maths)(Not IMO probs) by @YuviVe Title: Matbot (Do Maths)(Not IMO probs) by @YuviVerma | Stardance
Devlogs:
I just made the base to built it , used slack to start my project.
Guys we have to fight bukus , assemble beans . Nevermind , I have added some maths doing capabilities in ma bot. It’s not live rn but it can solve - ‘+’ , ‘-‘, ‘x’, ‘/‘, sqrt , exponents.@beans...
|
1792443147.1438797
|
1793307147.1438797
|
|
63123
|
Caption With Intention Automated by @Lokesh_Lal | Caption With Intention Automated by @Lokesh_Lal | Stardance...
|
Lokesh_Lal
|
0
|
33.57
|
0
|
[]
|
[{"post_id": 72970, "ts": "202 [{"post_id": 72970, "ts": "2026-09-24T04:11:24Z", "hours": 5.4189, "text": "Guys I am a bean! But i want the stardance to continue so what should i do? PLEASE HELPP. Its good thing that i wil fix the starship but i dont want it to end :( About the project currently a new Nemotron diarization Model just released so i am trying to set it up and give it a try."}, {"post_id": 72614, "ts": "2026-09-23T11:02:29Z", "hours": 5.4736, "text": "FRONTEND V2 i think its looking fine. AI helped in some part of this UI"}, {"post_id": 72247, "ts": "2026-09-22T15:01:58Z", "hours": 1.5683, "text": "Made the UI layout. Will be redesigning it later for UI v2 now just focussing on backend and functionality"}, {"post_id": 72201, "ts": "2026-09-22T13:24:50Z", "hours": 3.2917, "text": "Got the diarization and word level transcription to work. The custom diarization model is not that accurate but can be improved later"}, {"post_id": 71807, "ts": "2026-09-21T16:10:00Z", "hours": 0.5094, "text": "Deterministic CI Renderer is done. read-ahead layer, word-onset color sync, pop animation, type size/pitch/harmonics mapping, 90% black caption box, lower 20% work area, SFX/music rules, exception profiles. 256/256 tests passing. The architecture diagram shows the full pipeline from source video then CwiRenderer → sync engine → ASS export → FFmpeg burn-in."}, {"post_id": 71790, "ts": "2026-09-21T15:34:06Z", "hours": 1.4489, "text": "Guys pls help ,, How will i get this stardust points ? Guys i am new in this. Spent over 18 plus hours still didnt get a single stardust. Made my own Speaker diarization algorithm bcs the current one needs more resources. 4gb ram to 512mb ram."}, {"post_id": 71740, "ts": "2026-09-21T13:01:53Z", "hours": 14.1619, "text": "So created the whole project, tried different transcription models that should run offline and be accurate. Created the full pipeline and architecture. Thought of optimization and continuing along with the help of some yk"}, {"post_id": 71002, "ts": "2026-09-20T06:04:22Z", "hours": 1.2267, "text": "#Working on Caption with intention system to make it automated and come to life. iykyk. Its an oscar winning system"}, {"post_id": 70079, "ts": "2026-09-18T12:40:45Z", "hours": 0.4731, "text": "Just started working on it! Making a oscar winning system automated."}]...
|
Title: Caption With Intention Automated by @Lokesh Title: Caption With Intention Automated by @Lokesh_Lal | Stardance
Devlogs:
Just started working on it! Making a oscar winning system automated.
#Working on Caption with intention system to make it automated and come to life. iykyk. Its an oscar winning system
So created the whole project, tried different transcription models that should run offline and be accurate. Created the full pipeline and architecture. Thought of optimization and continuing along with the help of some yk
Guys pls help ,, How will i get this stardust points ? Guys i am new in this. Spent over 18 plus hours still didnt get a single stardust. Made my own Speaker diarization algorithm bcs the current one needs more resources. 4gb ram to 512mb ram.
Deterministic CI Renderer is done. read-ahead layer, word-onset color sync, pop animation, type size/pitch/harmonics mapping, 90% black caption box, lower 20% work area, SFX/music rules, exception profiles. 256/256 tests passing. The architecture diagram shows the full pipeline from source video then CwiRenderer → sync engine → ASS export → FFmpeg burn-in.
Got the diarization and word level transcription to work. The custom diarization model is not that accurate but can be improved later
Made the UI layout. Will be redesigning it later for UI v2 now just focussing on backend and functionality
FRONTEND V2 i think its looking fine. AI helped in some part of this UI
Guys I am a bean! But i want the stardance to continue so what should i do? PLEASE HELPP. Its good thing that i wil fix the starship but i dont want it to end :( About the project currently a new Nemotron diarization Model just released so i am trying to set it up and give it a try....
|
1793048066.5381606
|
1793652866.5381606
|
|
15129
|
Tempname: Engine by @pkncoder | Stardance
|
pkncoder
|
1
|
165.0
|
2930
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T12:06:16Z", "hours": 165.0, "multiplier": 19.97, "payout": 2930, "blessing": "neutral", "text": "—————– Ship #1 —————– - - Welcome - To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). 💚 The current state 💫 There is still no UI, all render control is based in a JSON file. The current only renderer is a custom Deferred Renderer. Note: As this is built for 3d rendering, a modern computer, with a GPU is recommended. Modern Macbooks will run it, however it will be slower as it is basically magic that it works on them. Thank you so much! I’ve spent a lot of time on this. It may not seem like that, however when building this, I decided to do it right (as this is my 3rd attempt). I split the development into phases: Get a window Get something rendering + a camera Get object/material/texture loaders + basic scene managers + basic concept of working Create full scale (professional) renderers/scene managers/resource managers/etc. Get a UI Currently, I’m in getting everything polished in the backend. I didn’t want to move on to the UI, as I didn’t want to rush that. Rushing a UI meant missing other things. So thank you, and I really hope you enjoy. If there are any issues, please report them to the issues page on the github, and message me on slack ( @pkncoder ). Github releases: https://github.com/pkncoder/Engine/releases Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine", "repo": "https://github.com/pkncoder/Engine/", "demo": "https://pkncoder.github.io/Engine/index.html"}]...
|
[{"post_id": 72971, "ts": "202 [{"post_id": 72971, "ts": "2026-09-24T04:20:28Z", "hours": 2.5239, "text": "—————– Devlog XXVII —————– - - Release is out testing time – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ Not too much has happened, mostly: Updated README (resources, gallery, installation & use) Updated the landing page (added a tech-stack) Created my first release under the 1.3.x alpha title That big 1.3.x “alpha” release is the big one, as I need some help. If you could just take a bit of time, and you aren’t on linux-arm or apple-intel, could you check out the github releases and try it out, that would be great! I plan to ship tmwr, but I want some testing done first. Thank You for Reading So close!! Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine"}, {"post_id": 72516, "ts": "2026-09-23T03:30:31Z", "hours": 9.9433, "text": "—————– Devlog XXVI —————– - - Almost… there – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ In order to show the capabilites, I’ve been setting up scenes for my engine to show off, and here are some of the results! It would be great to get your favorite render of these! For the full 9 renders , check out the scrapbook in the slack , as they will be there w/ a thread. Thank You for Reading Hopefully will actually ship tmwr! I’m actually getting kind of sad, I won’t be stopping development by any means, but this has been my summer (although I might not be able to get any stardance tokens, but that’s ok ig…). If you have any questions, feel free to DM me either here, or at @pkncoder on discord if that’s easier for you! Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine"}, {"post_id": 71565, "ts": "2026-09-21T02:05:45Z", "hours": 2.1433, "text": "—————– Devlog XXV —————– – New JSON scene file 📁 - SHIP TIMEEEEE – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ Not that much has happened tbh. All that has really happened… Updated the README a bit more Added a new json parser to spawn the scene from that Added hot reloading of the scene So yea, next should be the ship. When updating the README on the github, I was going through the Usage section, and added a new promise for how people could add their own meshes. In this I created the idea of activeScene.json , a JSON file that listed the scene data (crazy, right?). And so, after I updated the README , I added the new loader, and made the scene reload by pressing the “ r ” key. That’s kinda it… Thank You for Reading Before shipping, I need to… Do another update of the README Create the base Releases for Mac, Windows, and Linux And test these Do a pass through TODO.md Update the landing page Shouldn’t take too long Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine"}, {"post_id": 69952, "ts": "2026-09-18T03:52:09Z", "hours": 8.6456, "text": "—————– Devlog XXIV —————– – i HATE shadow maps!!! - Renderer? I hardly know her? – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ WOAH A lot has happened. Previously, I had just implemented a new entity system & a new camera system. So what’s new? I present: The Deferred Renderer !!! Basically, it’s just another way of rendering. HOWEVER , it has some funzies: Mostly together render graph, just a little smthin Shadow Pass G-Buffer Pass Lighting Pass New point lights (replacing the emmissive texture searching before) Looking to add SSAO (hemisphere sampling) in the future!! Now, along with this, I just tested creating a build for windows and testing it on a friends machine, and it worked (his laptop is crap, so it ran slow, but surprisingly fast) . Along with that, I also tried the current build on mac, and it also worked, so that’s also great (I’m supprised)!! However, the real prize, is the trypophobia horrors made along the way!! That’s right! When trying to get textures to work, I ran into a ton of problems (mostly related to the alpha map & image formats) that caused major headaches. Images and videos, where they are a bit compressed, can be found below. Thank You for Reading Almost there, I still need to change up the landing page, rewrite the readme, and merge the main branch, plus try to get a way to change the 3d models for users, but I’m getting there. Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine"}, {"post_id": 67656, "ts": "2026-09-13T20:09:19Z", "hours": 7.9958, "text": "—————– Devlog XXIII —————– – I NEED TO HURRY UP AAAA - EnTT - Table – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ In my previous devlog, I stated how I was working on the new RenderGraph . I’ve now realized, that I have like until the end of the week for when I need to ship. So instead , my goal is to get this looking impressive . To start, here is what I’ve done so far : Cleaned up system inits Changed how the UUID service works (now you just access it and call generate ) Implemented a new library, EnTT Did some cleanning up Added a PointLightComponent for future use (no dev. yet) Added and implemented the CameraComponent Here are the big things: EnTT EnTT is an open-source library that handles objects within games, editors, etc. It’s creator is: Michele Caini (skypjack on github) . EnTT is a library that exposes something called an Entity Component System (ECS). Basically, instead of saving a bunch of data directly inside of one struct or class, you define an entity (a unique id) and assign that entity components. The components are what actually gives the entity meaning. New Camera If you have ever ued Blender for a bit, you would know that your camera is on the same list as your meshes. This is since, to Blender, they are inherantly the same thing (don’t quote me on that) . Previously, my camera was seperate to all of the rest of the objects. This caused the data to be split, and handling the differences made my architecture a bit weird. Now that I’ve implemented EnTT , I’ve added a CameraComponent that defines things like rotation, FoV, etc - completely erasing the need for a separate camera, and opening the doors to more flexibility. Thank You for Reading New book is great! I won’t get to use too much of it for stardance, but I’m checking out this snowglobe thing that seems like it would be the next area!! Wish me luck on the ship. I want to get it out by the end of the week so I can hopefully still cache in some stardust. Probally won’t get the computer though (high hopes for a living or smthin idk) Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Change my Rasterizer to be a Defered Renderer & implement multiple point lights UI??"}, {"post_id": 61084, "ts": "2026-09-03T20:05:33Z", "hours": 3.7325, "text": "—————– Devlog XXII —————– – BrEaKiNg ChaNGeS - 📖 NEW BOOOKKKK – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ Sadly, I’ve done much coding Base list This is what I have done since the last devlog: Planned out a bit more on the inner workings from no Renderer->Rendered Image Created the new Shader & Program classes Updated the workings on RendererManager Started work on the new Renderer / IRenderer class Current commit is now broken (compiles, doesn’t run Overview In my new obsidian vault , I’ve been working on creating the new database on how it all works. Through this, I’ve been using excalidraw (Obsidian) to plan out pipelines & create visuals. Currently, I have 2 main drawings: Shader & Program pipeline Renderer Pipeline The Shader & Program pipeline explains the lifetime and usage of both the Shader and Program (OpenGL program) classes. A program gets created, has shaders attached to it (deleting the shader in the process) , and then the program gets linked & binded. The Renderer Pipeline explains the lifetime and usage of a renderer. Starting from the RendererManager, go through normal rendering stuff, and will end at shutting down the RendererManager. For the inner workings of the new renderer setup, I’ll leave that for (hopefully next devlog) when I get everything working start to finish of the RendererPipeline . Thank You for Reading As for the “ New Book I got, I have just purchased “ Game Engine Architecture Vol. I ” (Jason Gregory) to specialize the program more (most likely after Stardance ends). Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Plan out the RenderGraph Create the base RenderGraph class Create the BlitList Create the INodeInput & INodeOutput"}, {"post_id": 58866, "ts": "2026-08-31T13:21:49Z", "hours": 3.4211, "text": "—————– Devlog XXI —————– – My brain hurts 🧠 - Sharp like glass – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ Sadly, I haven’t done much coding Instead, I’ve been trying to figure out how I want my Render Graph to work. To start, what is a render graph? What I am interpreting the render graph as, issss: An API meant to simplify and provide structure to a final renderer. In the final application, the render graph will be an option for a more advanced final render editor. What I am working on now, is how it will be put together so I don’t have a mess in the future. Recently, I’ve been using Obsidian to mark everything down. This also starts a little docs. Using a mix of Obsidian and the excalidraw plugin, I’m able to write everything down and create visuals. Currently, I have a mix of nodes that are the main important ones. These nodes are just the interfaces , so they aren’t specified. They act as a blueprint for any of the full nodes. IRenderOutput - Add textures to a list of blitables IShaderInput - Base input interface IShaderOutput - Base output interface IShaderNode - Node representation of shaders IShaderPassNode - Base shader interface Thank You for Reading I haven’t been home enough to create the “big brain wall” which is sad, but at least my stuff is digital. Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Setup current program for Render Graph implementation Implement IShader, IGPUTexture, etc. Create IRenderGraph for the renderers"}, {"post_id": 53552, "ts": "2026-08-24T04:42:42Z", "hours": 3.7022, "text": "—————– Devlog XX —————– – 🌟I have the best one liners 🗿– 🥀 Now I have to be smart ??? 🧠 – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ For the quick overview: Fixed the shadow map issue ( so angry about this, see below ) Fixed an issue with textures not caching Got the very base implementation of Uniform Buffers To start off, in the previous devlog I mentioned I was re-writing the shadow mapping . Shadow Mapping - Rendering a 3d model with the light being the eye. Everything that it can see is not in shadow, everything else is. quick explanation I was having issues with getting the shadows to work correctly. I had ideas for issues, including: (the model matrix , the renderPackets being in a bad order , the far plane ). IT TURNS OUT It was none of these. Whenever I made the code to compile a geometry shader along the vertex & fragment shader, I just copied my old one and spliced in the code. Turns out I forgot to swap some variables, and I was putting code in places it should NOT be at. No idea why it didn’t crash, but it fixed my shadow issues very quick . As for UBOs, I’ll talk about them in a future devlog, when I have everything planned out. Thank You for Reading As I said with “Planning out” everything, I’m going to set up a whiteboard - I’ll have to move my 🏳️🌈 pride flags 🏳️⚧️ :( - Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Refactor Build the big brain wall Do some thinking 🥀 Git Commits🗿 Weird position issue Saving now, I am so angry about this. I was compiling and overwrigting the wrong code :( Made the testing for shadows a bit better, and changed the rendering a bit Fixed issue with textures and full models not actually caching Removed anoying debug line for shadow transform matricies Working on getting the ubos working’ Got it to push First test ubos"}, {"post_id": 52406, "ts": "2026-08-22T15:11:34Z", "hours": 4.0344, "text": "—————– Devlog XIX —————– - 🌲 Textuers 🧚♀️ - 👩💻 Shadoowwsss 💀- To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ To recap on what I did: Got the program to launch to black screen I needed to inject the Asset Manager to a class Got objects loading correctly without shadows Got textures to load Started work on fixing the shadow map Nothing too crazy has been changed, the texture issues were about some compatibility problems and not uploading to the same index. The shadow values are uploaded to a 3d texture, where to calculate if an object is in sight or not, we commit triangles based on their position. The problem now is about the far plane, and hitting triangles that weren’t in shadow. I’m not sure what the problem is, but I’m going to do a bit more looking into it. Thank You for Reading :3-blahaj-spinning I still have to fix the shadows issue (obviuosly) but then I can move onto formatting the data (putting it into buffers, creating wrappers, etc).!! Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Write the shadow cubemap geometry shader & ad it to the OpaquePass (temp main pass) Make and debug UBOs replacing base uniforms Refactor / clean Create the real Render Graph? 🥀 Git Commits (shortened)🗿 Commits: https://github.com/pkncoder/Engine/commits/Phase-IV/ Most Recent: Temporary Save"}, {"post_id": 50519, "ts": "2026-08-19T18:20:39Z", "hours": 5.6344, "text": "—————– Devlog XVIII —————– - 🌲 Trees 🧚♀️ - 👩💻 SO MUCH REWRITING 💀- To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ These last few days, I’ve been working on getting my Rasterizer (drawing triangles of a model on screen and coloring them) working. The big changes that I did include: Fixing an issue with textures not loading Updated the Interface for every Renderer. Implemented the extract / prepare / dispatch pipeline into the Rasterizer for real now. Started working on the base ideas of a “Shader Graph” The issue with textures was just moving a line like 3 lines lower . I was freeing the image data before saving it (oops) . The updated interface is the IRenderer class. Each Renderer bases off of the class, supplying it with a framework so each Renderer can be talked to the same way. Here are some of those functions: beginFrame - Clear previous frame data and prepare for a new frame extract - Take raw scene data ( camera , renderables ) and convert it into packets for the next step. prepare - Take each packet from extract and turn them into draw commands for dispatch. dispatch - Take each draw command and send a draw call, along the way binding any textures & uniforms. postProcess - Take the frame and post-process it. This may be removed. present - Take the rendered frame and show it to the screen ( blit it ). To do a quick review on what the Shader Graph is - it is a collection of “nodes,” each with their own inputs and outputs that connect together to render out a frame. I’m still a bit confused, but I’ve been watching presentations on the topic from companies like Unity & Activision . Thank You for Reading Yea, I know it’s been a while since my last devlog. I’ve been making some posts in slack about my Path Tracer, since I spent a little time on that. I’m looking at the timing for everything , the hope is to ship this at the end of Phase-IV and hope that I can get a UI working before too late. I’m hoping I can get enough stardust to pay for a new laptop, but idk that’s a long shot. I still have about 25 more hours if I get a 16x mult (which I can only hope for) before I would hit the mark for the FW 12, which isn’t crazy (the mult is tho). Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Stop the program from crashing to reach a black screen Rewrite shaders to allow for correct models wo/ shadows Write the shadow cubemap geometry shader & ad it to the OpaquePass (temp main pass) Make and debug UBOs replacing base uniforms 🥀 Git Commits (shortened)🗿 https://github.com/pkncoder/Engine/commits/Phase-IV/"}, {"post_id": 45347, "ts": "2026-08-11T18:54:11Z", "hours": 2.9381, "text": "—————– Devlog XVII —————– - Strange Hours - To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ To start off, I did not work directly on my application, but the online demo . It’s like working on the website, but through another editor sometimes. The goal of the Path Tracer is to eventaully get it clean & quick enough to be real-time. This is the first of the 5 renderers that I will be making. I was working on my online shadertoy DEMO for the Path Tracer, specifically the denoiser. The name of the denoiser I am using is the “Edge-Avoiding Á Trous Wavelet Transform” . As a quick overview: It applies a blur “ with holes ” to allow for less to no image distortion Fast enough for realtime Includes “ weights ” based on (in my code): Normal , Depth , and Color . The larger the difference between the center pixel and the scanned pixel * (kernel), the more weight is applied, lessening the amount of blur. This is amazing, however when the camera moves , the denoiser assumes that the current and previous pixel are in the same world postion (when it isn’t). This causes errors when trying to overlay the image and gather data. This is why we track the motion of the camera, creating a vector to get the same world position pixel. I got this wrong on one of the first attempts, the last attachment (videos are compressed) shows that fun video (warning for those who get motion sick). With this, I am able to blur the image, and with some more techniques, I can get rid of “ghosting.” Thank You for Reading In the videos, I rendered them in fullscreen 4k on my better laptop+GPU, don’t worry about your system being too slow, just don’t fullscreen it <3 (the development was done on my lower end mac). The hours logged are from refactoring the project after the last devlog, and editing the code when I didn’t do it in shadertoy’s editor. Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine 🥀 Git Commits 🗿 BREAKING CHANGE - Refactored Buffer & GPUResource managers + IRenderer - Code has been broken for a bit but womp womp Shadertoy shaders path tracer https://www.shadertoy.com/view/7fBSzR"}, {"post_id": 44514, "ts": "2026-08-10T10:13:23Z", "hours": 4.0428, "text": "—————– Devlog XVI —————– So long , gay Bowser ⭐️ – IRenderer, hardly know her? - To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ⭐️ BEFORE ANYTHING - Thanks so much to @AVD for the super star, wasn’t expecting it and I really appreciate it 👏 👏. Now, for what I did: Dealt with an issue in Obsidian, as apparently there was “minor rendering performance improvements.” This is FALSE :( - I just downgraded the version Created the new BufferManager to handle UBOs, SSBOs, VBOs, EBOs, etc. + Dynamic, Static, and Stream buffers. Integrated the RenderTarget & ShaderPass system from PathTracer straight into IRenderer + added base utilities to it. Did some formatting Overall the two big things that I did was the new Buffer system & the updated IRenderer interface. For the new Buffers, previously I had UBOs (dynamic values) & SSBOs (big mostly static information blocks) set up in seperate files, that BufferManager returned. Now, every buffer is a single struct called GPUBuffer , and GPUBuffer has a type, and a usage (see attached photo). Now everything is centralized on that. For the new IRenderer interface, now there are RenderTargets - textures that shaders write to as output - and ShaderPasses - A pass of a shader. These can be added to a registry, keyed by a UUID (big number, in this case). Thanks for reading Again, thanks so much to AVD for the super star! I’m excited for when I can finally start writing my shaders, it’s getting closer & closer!! The fancy Path Tracer will be cool and all, but I have big plans for the Ray Marcher!! Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine 🥀 Git Commits 🗿 Fixed an obsidian issue I ran into, “Minor rendering performance improvements.” was NOT true, broke almost the entire canvas. Fixed it though + new png Created the new buffer managegr system, I need to go through and make changes. Also, on launch there was more blacked out sections, different every launch :( New IRenderer setup for the render targets & render handles Refactor 1-6 Refactor 7-9 for BufferManager"}, {"post_id": 42396, "ts": "2026-08-07T02:46:23Z", "hours": 5.3317, "text": "—————– Devlog XV —————– – Temp code go brrrrr 🔋 - New term : “Far Landing” – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ I tried getting this out before 4 hours, but it just –wouldn’t__ happen. Weird errors kept popping up ( mostly being my fault) . Here’s a list of what I did: Figured out generally how I was going to deal with uploading and caching meshes + textures Put the new GPUResourceManager class into place to do the previously mentioned job Started reworking the renderer pipeline (NOT THE RENDER PIPELINE) on CPU side, and set up the interface class with that Patched together the old Rasterizer renderer to work with the new IRenderer pipeline Fixed errors throughout Split up normal & bump textures Planned out how I will deal with all the different textures on the shader side, cutting the checks out at shader compile time Yea, I know, it’s a lot . It just felt wrong to create a devlog in the middle of everything, since up until after fixing errors I had nothing to show for it. :( I ran into this errors when fixing those errors, where the entire model (I was using the Sponza scene, check the attached video ) was banded, where parts “didn’t exist” and the other bands did . This reminded me a lot of the “Minecraft Farlands” specifically the pocket edition ones. 🔥 What didn’t I do? 💥 To keep this brief: Fully split up the SSBO system in the BufferManager Reimplement good use cases of UBOs (although I did put in place double buffering) Add the more sophicticated data handling in the PathTracer (as I commented it’s existance out so I could complile). Figure out how shadow mapping is going to be cleaned up in the Rasterizer. ❤️ Thanks for reading! These devlogs have been getting more attention, and I’m getting closer to doing a rebrand to finally get my point and final ideas across! :3 Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine 🥀 Git commits 🗿 Patched in the “new” buffer system - Really just to get it to compile before I do anything big. Attempting to run the app to test resources & scene Well it compiles, runs, and renders. I still need to go through all the models, HOWEVER, I am having an issue with like 3 models in sponza and bump UGH Well, I checked Phase-III, and the issue with those models are there too, probally some texture coord issue or the bump map is messed up (I’ll check in blender), BUT THEN ON FIRST LOAD THE MODEL FRA LANDED????"}, {"post_id": 40154, "ts": "2026-08-03T15:39:36Z", "hours": 3.0697, "text": "—————– Devlog XIV —————– The Planning - The possible NEW NAME??? - The New Project!! To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ So What Happened? 📸 I haven’t done much pure coding, HOWEVER , I am getting ready for some large-scale rewrites and additions to the code. For what has happened: Fully sectioned the resource - disk - and scene - cpu/logic - directories (folders) so there wasn’t any GPU actions taken place. Refactored resource and scene directories Re-implemented Application into CMakeLists so I can compile and link that file. Did some planning for the huge renderer rewrite that is coming up. Along with all of that, I came up with a possible name for the application (since, surprisingly, Tempname: Engine is a temp name) I had it when when gazing at the sun through some clouds over a feild. Although it is super basic, so I’m going to have to play with it. ❤️ Thanks for Reading!!! I might have to take a bit of a break from progress on this project, as I have a website that I’m making for my local fire dept. (look out for a new stardance project)! I’m also planning on doing some re-marketing / re-branding (idk what to call it) to change the descriptions of the project (ex. the “To recap section on my devlogs, and the landing page). I’ve been getting more questions on it, and my current explanations are a bit too much. Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine 🗿 Commits 🥀 (top-oldest : bottom-newest) No more mention of buffer manager or any uploading to gpu in scene & assets. Meshes are now split up from models in the cache, models hold refrences to asset handles to meshes. Refactored and fixed errors in scene and resources. The program won’t work, as only scene and resources are being compiled & linked Added application back into the mix & fixed the scene loading section. Did some planning on how a model will go from spawn to render"}, {"post_id": 38683, "ts": "2026-08-01T06:03:47Z", "hours": 3.0264, "text": "—————– Devlog XIII —————– Spent some time off from working on this project, started the beginnings of another one. Finally ended up getting the interest to come back to this one To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). 💡 Overview Commit message for this devlog: BREAKING CHANGE - New asset system, new scene system, renamed SceneLoader to PrefabSpawner, still need to update rest of code with temp fix until reworking for new system. ✨ What did I do? Previously, the asset manager did still handle caching already loaded assets (models, materials, textures), however the implementation was not professional and temporary: Caching based on a string key (slow) Broke the “single responsibility principal” many times by uploading to the GPU & constructing Scene objects Now, I am using AssetHandles (UUIDs) for caching, and I no longer uploading to the GPU in AssetManager. ❌ What didn’t I do? This new system is a good start for realigning and separating the different parts of the program, but is only about a third of the work. For what I still need to do, this is what follows: Stop uploading to the GPU in the PrefabSpawner (scene) Fix the renderer and find where I will upload the mesh & texture data. Check for compilation and working across the whole project. Change every instance of AssetManager to using AssetHandles. Once I have these, I can move onto redoing the renderers and FINALLY start working on the “fun stuff” ❤️ Thanks for reading Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine"}, {"post_id": 36073, "ts": "2026-07-27T22:33:56Z", "hours": 1.5831, "text": "—————– Devlog XII —————– I haven’t done as much programing recently, but yesterday I wanted to finish what I needed to do quickly, as it wouldn’t take that long. To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). 🎯 UUIDs For a quick explanation of what a UUID is: UUID stands for Universally Unique Identifier. In practice it is a random alphanumeric (a-z,0-9) ID between 64-128 bits. For my project, I used an unsigned 64 bit integer (no negative numbers). It isn’t exactly what the standard for a UUID is, as it isn’t alphanumeric, but I think for now 18.4 quintillion ids are just fine. ⬆️ What Next?? Now that I’ve finished this, the next step is to gut & rewrite the entire asset managing system. I need to redo how files are found, how data is stored, how they are retrieved. Basically the CRUD (create, read, update, delete) line and more. ❤️ Thanks for reading Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine"}, {"post_id": 32890, "ts": "2026-07-22T10:48:43Z", "hours": 6.8567, "text": "—————– Devlog XI —————– I haven’t been programming as much, as marching band 🎺 has started, so I’ve had less time. But now I can do the really exiting stuff! To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). What did I Do? As I mentioned in the last devlog, I have been working on doing a full passthrough of the entire project to get ready for major rewrites. I have completed by refactor checklist, so I have gone through ever cpp file to: Fix warnings Check object method & attribute visibility Check const, static, and inline declarations Change the placement and formatting of method Going through every line of code to do minor logic changes & change formatting Rename methods, attributes, functions, and variables to better names & names w/ personal conventions. Add comments everywhere Change the placement of the #include statements (main header file, object interfaces, project files, project packages, extra C++ headers) Run a full clean, compile, and test of the application The LIE Technically I didn’t go through every file, as I left AssetManager & Rasterizer . Since these will be completely rewrote soon I felt like it was a waste. What next? Now that I have finished cleaning up the code base, the next projects are to: Move to using UUIDs instead of an entity index in scene Gut AssetManager and rewrite it Change to using metafiles instead of a preditermined path to assets Rework the scene class Extend IRenderer and get ready for the fun part! Thanks for reading! I tried to keep this one shorter for y’all. I don’t normally get too much attention to my devlogs, but I would be more than happy to answer any questions, as there is so much more to this project that even the landing page doesn’t cover (WIP). If you’re curious, feel free to reach out on slack (pkncoder), and here are some extra links about the project: Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine"}, {"post_id": 29073, "ts": "2026-07-15T18:41:40Z", "hours": 4.3689, "text": "—————– Devlog X —————– I’ve been working on refactoring my project for the last few hours. Part of how I code includes: Comments throughout to explain the code, strict formatting throughout, and trying to help the compiler with “const” and “inline” keywords. To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). The process My process of refactoring usually happens once I finish a new addition, however I haven’t been adding new things for a while. Now that I’ve added a new addition to the project (Event system & LayerStack), I want to go through the entire codebase under the src/ directory (not the glsl shaders). Project code stats (src/ directory) Running the command line utility “cloc” on my src/ directory to count code stats, I get these counts: ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- C++ 23 646 464 1930 C/C++ Header 47 506 205 1302 ------------------------------------------------------------------------------- SUM: 70 1152 669 3232 ------------------------------------------------------------------------------- Not very big yet, although that will be increased once I get to redoing the entire rendering engine. What I have done Now, back to my refactoring. I got through the basics: removing warnings, double checking the public/private attribute declarations on classes & structs, setting const on functions & params, setting inline on functions. The checklist This is my entire checklist for refactors, this is my first project using it, so it is still being worked on: ### Refactor Checklist (src/) 1. [x] Fix warnings 2. [x] Fix public vs. private 3. [x] Make functions const when needed 4. [x] Make function params const when needed 5. [x] Make functions inline when needed 6. [ ] Fix placement of functions 7. [ ] Refactor step by step in code 8. [ ] Rename things 9. [ ] Add comments 10. [ ] Place the \\#includes in the right spots 11. [ ] Fix file tree 12. [ ] Run ```./fullTest``` 13. [ ] Update the obsidian canvas & png 14. [ ] Update the website Eventually I will also need to make one for the shaders too, as they are sometimes more technical on the code side. Conclusion That’s all that I’ve been doing, thanks for reading. Here is my Github repo & landing page for this application: Source Code: https://github.com/pkncoder/Engine Landing Page: https://pkncoder.github.io/Engine"}, {"post_id": 27729, "ts": "2026-07-13T15:23:24Z", "hours": 8.2792, "text": "Devlog IX I have been working the past week to get the Event system working & trying to fix pointer / referance issues (there are still a few I haven’t figured out). But now I have a working event system. To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). LayerStack recap In my previous devlog, I explained the Layer Stack 🥞, a top-down structure for controlling object ownership and main loop execution. Every frame, the layer stack runs the first layer to poll camera movement inputs (temp), and then next layer is ran to render out the frame through the RendererManager. Events This is great, but where the layer stack really shines is the event system . Events are reactions to when anything happens, keys being pressed / released, the window resizing, etc. When an event is dispatched, the layerstack stops, loops through each layer running it’s “onEvent” function to let that layer react (ex. the final render needing it’s texture resized). If a layer doesn’t want below layers to react to the event, it can consume it, stopping the event dispatching and continuing execution. Struggle and Pointer Nonsense I struggled a ton with the event state not updating correctly, and the camera not giving the right values to render the triangles. It turned out to be objects/classes duplicating, and not being able to update. There is so many debug messages in the terminal 😭 Ends This was all front-end changes (no change in the render), but now there is a better system put in place (back end changes). Github repo: https://github.com/pkncoder/Engine/tree/Phase-IV Landing page / Website: https://pkncoder.github.io/Engine/"}, {"post_id": 23348, "ts": "2026-07-06T07:48:30Z", "hours": 11.7481, "text": "Tempname: Engine update. I am so tired To keep it all contained, since the last devlog I have: Merged Phase-III into main & created a Phase-IV branch Changed the landing page’s color palette Modified the target architecture 4 times (3 committed) Created a rudimentary SceneManager class Implemented an EngineContext class to distribute ownership & to help with data flow+containment Implemented a layer system to help cut down on application & to contain/host the events system. Finally put in the system directory (folder) in the architecture that will host any simulations, computations, and animations. Currently it is the planned details for the camera system. The biggest thing that I have done so far is the layer system & state/context creation. The context of the engine lets managers talk to each other so everything can work together, while keeping everything contained. The state is split up into two parts, state & settings (or state & configuration). The state is meant for information that is meant to change throughout runtime, and the engine depends on it to render the right final result (ex. camera state & position). The settings part is meant for variables that won’t change too much, but if they do it is something that is a large modification to the runtime (ex. window title, rendering engine). The layer system is like a regenerating stack of pancakes 🥞. Before you cast your pancake regeneration spell we all have, you have to prep the pancakes with butter and syrup. Each time you finish the pancakes, a new round starts and you eat them again. Then, once you are done, you have to disable the regeneration spell. The layer system acts the same, but computationally & layers instead of pancakes. Each layer goes through the lifecycle of onAttach -> onUpdate -> onDetach. By far the biggest reason for the layer system is the event system, but I’ll leave that for the next devlog. Here is the github page: https://github.com/pkncoder/Engine/tree/Phase-IV Here is the landing page: https://pkncoder.github.io/Engine/ I still have soooo much to do, especially with & after the event system. I’ve completed most of the easy stuff for Phase-IV. Here is the current architecture & a site screenshot."}, {"post_id": 19362, "ts": "2026-06-30T17:15:23Z", "hours": 5.5031, "text": "Changed my mind on shipping, however I do now have a landing page! I still have to do things like changing the color palette (it’s alright now, but I want something different I think), adding little details to really sell the “Rendering” aspect of Tempname: Engine, etc. etc. Here’s the landing page, please check it out & give any feedback! https://pkncoder.github.io/Engine/index.html Since I changed my mind on shipping, here are those images that I was going to use!"}, {"post_id": 18091, "ts": "2026-06-29T02:57:38Z", "hours": 8.6825, "text": "Just got done with some renders on the engine, been working all day on implementing the things needed. Along with the images, I added: Shadow Mapping for the Rasterizer (only 1 emitter) Tone mapping to the Rasterizer Fog to the Rasterizer A vignette effect to the Rasterizer Transparency maps to the Rasterizer Settings & presets for the renders A new “Queer Room” modeled by me in blender for the Path Tracer (going to post it on ship). I honestly have had so much fun with this. Currently working on a landing page to go in place of my “Online Demo” on stardance (since this isn’t that kind of application D: ). Here’s the github: https://github.com/pkncoder/Engine/tree/Phase-III ! At some point I’ll be redoing the README as well for more info. Also, these images aren’t even the best ones, I’ll leave that for the ship :3"}, {"post_id": 16960, "ts": "2026-06-27T15:16:34Z", "hours": 1.2764, "text": "I’ve done a bunch more Todos in my code, getting ready for shipping Phase-III. However, I realized I forgot in my planned Architechture about Acceleration structures (which are very important). So I planned that out! Currently just: BVH (Bounding Volume Heirarchy) for Ray & Path Tracing SVO (Sparse Voxel Octree) for Ray Marching (Hypothetically) These acceleration structures make rendering methods like Ray & Path Tracing, Ray Marching, Ray Casting, etc. feasible for real-time by “cutting out” data (objects) similar to how a Binary Tree works. Next is more clean up, then creating models for some renders I can use in the banner of this + the github Readme, and finally creating a landing page to put in place of the online demo! Then I can finally ship!!!! Here’s the github (ignore main branch): https://github.com/pkncoder/Engine/tree/Phase-III ."}, {"post_id": 16713, "ts": "2026-06-27T04:43:42Z", "hours": 17.5281, "text": "Working on finishing the current development phase, of my project, which also means finally shipping Tempname Engine: Phase-III. I wanted to plan out Phase IV a little bit more, which will focus on: Getting a structured scene management system Improving the Renderer (ability & architecture) + adding 2 new Renderers Adding scene loading & serialization (and “asset serialization” which is weird name) Here is the current & planned architectures of Phase III & Phase IV, at some point I need to redo Phase-III’s to match the style, but I’m tired of working in obsidian to not even get the hours logged."}, {"post_id": 11788, "ts": "2026-06-19T05:50:41Z", "hours": 7.56, "text": "I have finished getting albedo (basic color) textures loading! To get this working I had to redo how meshes were loaded completely, but I finally finished that. The backrooms model was an issue, as I needed to find one that would work, and then fix it in blender, but I’m glad it’s rendering! As for the promised model of the oiiaioooooiai cat 🐈 (Ethel), I did get the model & textures, but I will have to mess with it more, as the model & texture do not line up yet. If you would like to try for yourself, the github repo is here: https://github.com/pkncoder/Engine/tree/Phase-III . The repo is large currently, as I still need to compress the files, or remove them (gitignore). The path tracer is currently disabled , as I need to swap the textures to handles, and then modify the path tracer to work with the textures. It will look really good once I get that working though!"}, {"post_id": 10063, "ts": "2026-06-16T17:20:32Z", "hours": 2.4, "text": "I haven’t done much work on getting textures or anything, however I was able to re-do the shaders. Just some framework stuff like abstracting the shader models so each renderer can implement them to their need. I also spent some more time getting some generic formatting stuff like naming conventions (mostly naming conventions) I also made an “architecture” diagram, as I was requested for one (plus I needed one anyways). Anything purple (besides the background) is a temporary connection/file. Anything green needs re-worked The “Services” group contains files that are completely static in use, and are accessible globally. It’s still a bit messy, but that’s partly due to the temporary/need re-worked files. There’s a still some spaghetti code due to that. The shader files do look a lot like spaghetti as well, but that is mostly do to positioning. It’s pretty basic, as the ui/ and system/ dirs aren’t in there either (system/ is simulations + any computations that would need to be done (ex. translating data for one renderer to another)). I made the image in Obsidian’s canvas, sadly the wakatime add-on wasn’t working for me, so that time didn’t get counted, but oh well. And if the image is cut-off for you, the Services block has Input.cpp, Timer.cpp, and Logger.cpp. I still have a lot of shader work to redo, but I might try to get textures working soon for the Rasterizer, as I’m wanting them more & more."}, {"post_id": 9647, "ts": "2026-06-16T01:45:44Z", "hours": 19.2833, "text": "Hey everyone, I’m Kia! 👋 I’m currently building a custom 3D Engine from the ground up. While it’s definitely a fun passion project, it’s designed to be a genuinely powerful and useful tool. The scope of this project is pretty massive, but here are the main goals I’m chasing right now: 🎨 Multi-Style Rendering: I want this engine to render scenes in highly stylized ways using a variety of techniques. Currently planning support for: Rasterization Path Tracing Ray Marching Ray Casting (Voxels) Simple and easy: No one likes being thrown to the wolves. The engine will feature a clean, simple UI that scales in complexity as you learn how to use it, rather than overwhelming you right at the start. Accessible Animation: Built-in tools for animations and simulations that are actually easy to understand and use. 🛠️ Latest Update: Path Tracer Rewrite I recently did a complete rewrite of the Path Tracer! This was a massive step to future-proof the engine. It now supports multiple shader passes, debug textures, and is fully prepped for texture mapping. Why am I so excited about getting textures working? Because the second they drop, I am immediately rendering 1) The Backrooms 🟨 and 2) the spinning “Oiiaioooooiai” cat 🐈. Texture support should be ready very soon! Want to check it out (please do)? 💻 GitHub: Check out the code and the todo.md to see what I’m working on next: https://github.com/pkncoder/Engine/tree/Phase-III 🎮 Live Demo: Try out my almost real-time Path Tracer right in your browser (click and drag to look around): Shadertoy Path Tracer Demo: https://www.shadertoy.com/view/7fBSzR"}]...
|
Title: Tempname: Engine by @pkncoder | Stardance
Title: Tempname: Engine by @pkncoder | Stardance
Devlogs:
Hey everyone, I’m Kia! 👋 I’m currently building a custom 3D Engine from the ground up. While it’s definitely a fun passion project, it’s designed to be a genuinely powerful and useful tool. The scope of this project is pretty massive, but here are the main goals I’m chasing right now: 🎨 Multi-Style Rendering: I want this engine to render scenes in highly stylized ways using a variety of techniques. Currently planning support for: Rasterization Path Tracing Ray Marching Ray Casting (Voxels) Simple and easy: No one likes being thrown to the wolves. The engine will feature a clean, simple UI that scales in complexity as you learn how to use it, rather than overwhelming you right at the start. Accessible Animation: Built-in tools for animations and simulations that are actually easy to understand and use. 🛠️ Latest Update: Path Tracer Rewrite I recently did a complete rewrite of the Path Tracer! This was a massive step to future-proof the engine. It now supports multiple shader passes, debug textures, and is fully prepped for texture mapping. Why am I so excited about getting textures working? Because the second they drop, I am immediately rendering 1) The Backrooms 🟨 and 2) the spinning “Oiiaioooooiai” cat 🐈. Texture support should be ready very soon! Want to check it out (please do)? 💻 GitHub: Check out the code and the todo.md to see what I’m working on next: https://github.com/pkncoder/Engine/tree/Phase-III 🎮 Live Demo: Try out my almost real-time Path Tracer right in your browser (click and drag to look around): Shadertoy Path Tracer Demo: https://www.shadertoy.com/view/7fBSzR
I haven’t done much work on getting textures or anything, however I was able to re-do the shaders. Just some framework stuff like abstracting the shader models so each renderer can implement them to their need. I also spent some more time getting some generic formatting stuff like naming conventions (mostly naming conventions) I also made an “architecture” diagram, as I was requested for one (plus I needed one anyways). Anything purple (besides the background) is a temporary connection/file. Anything green needs re-worked The “Services” group contains files that are completely static in use, and are accessible globally. It’s still a bit messy, but that’s partly due to the temporary/need re-worked files. There’s a still some spaghetti code due to that. The shader files do look a lot like spaghetti as well, but that is mostly do to positioning. It’s pretty basic, as the ui/ and system/ dirs aren’t in there either (system/ is simulations + any computations that would need to be done (ex. translating data for one renderer to another)). I made the image in Obsidian’s canvas, sadly the wakatime add-on wasn’t working for me, so that time didn’t get counted, but oh well. And if the image is cut-off for you, the Services block has Input.cpp, Timer.cpp, and Logger.cpp. I still have a lot of shader work to redo, but I might try to get textures working soon for the Rasterizer, as I’m wanting them more & more.
I have finished getting albedo (basic color) textures loading! To get this working I had to redo how meshes were loaded completely, but I finally finished that. The backrooms model was an issue, as I needed to find one that would work, and then fix it in blender, but I’m glad it’s rendering! As for the promised model of the oiiaioooooiai cat 🐈 (Ethel), I did get the model & textures, but I will have to mess with it more, as the model & texture do not line up yet. If you would like to try for yourself, the github repo is here: https://github.com/pkncoder/Engine/tree/Phase-III . The repo is large currently, as I still need to compress the files, or remove them (gitignore). The path tracer is currently disabled , as I need to swap the textures to handles, and then modify the path tracer to work with the textures. It will look really good once I get that working though!
Working on finishing the current development phase, of my project, which also means finally shipping Tempname Engine: Phase-III. I wanted to plan out Phase IV a little bit more, which will focus on: Getting a structured scene management system Improving the Renderer (ability & architecture) + adding 2 new Renderers Adding scene loading & serialization (and “asset serialization” which is weird name) Here is the current & planned architectures of Phase III & Phase IV, at some point I need to redo Phase-III’s to match the style, but I’m tired of working in obsidian to not even get the hours logged.
I’ve done a bunch more Todos in my code, getting ready for shipping Phase-III. However, I realized I forgot in my planned Architechture about Acceleration structures (which are very important). So I planned that out! Currently just: BVH (Bounding Volume Heirarchy) for Ray & Path Tracing SVO (Sparse Voxel Octree) for Ray Marching (Hypothetically) These acceleration structures make rendering methods like Ray & Path Tracing, Ray Marching, Ray Casting, etc. feasible for real-time by “cutting out” data (objects) similar to how a Binary Tree works. Next is more clean up, then creating models for some renders I can use in the banner of this + the github Readme, and finally creating a landing page to put in place of the online demo! Then I can finally ship!!!! Here’s the github (ignore main branch): https://github.com/pkncoder/Engine/tree/Phase-III .
Just got done with some renders on the engine, been working all day on implementing the things needed. Along with the images, I added: Shadow Mapping for the Rasterizer (only 1 emitter) Tone mapping to the Rasterizer Fog to the Rasterizer A vignette effect to the Rasterizer Transparency maps to the Rasterizer Settings & presets for the renders A new “Queer Room” modeled by me in blender for the Path Tracer (going to post it on ship). I honestly have had so much fun with this. Currently working on a landing page to go in place of my “Online Demo” on stardance (since this isn’t that kind of application D: ). Here’s the github: https://github.com/pkncoder/Engine/tree/Phase-III ! At some point I’ll be redoing the README as well for more info. Also, these images aren’t even the best ones, I’ll leave that for the ship :3
Changed my mind on shipping, however I do now have a landing page! I still have to do things like changing the color palette (it’s alright now, but I want something different I think), adding little details to really sell the “Rendering” aspect of Tempname: Engine, etc. etc. Here’s the landing page, please check it out & give any feedback! https://pkncoder.github.io/Engine/index.html Since I changed my mind on shipping, here are those images that I was going to use!
Tempname: Engine update. I am so tired To keep it all contained, since the last devlog I have: Merged Phase-III into main & created a Phase-IV branch Changed the landing page’s color palette Modified the target architecture 4 times (3 committed) Created a rudimentary SceneManager class Implemented an EngineContext class to distribute ownership & to help with data flow+containment Implemented a layer system to help cut down on application & to contain/host the events system. Finally put in the system directory (folder) in the architecture that will host any simulations, computations, and animations. Currently it is the planned details for the camera system. The biggest thing that I have done so far is the layer system & state/context creation. The context of the engine lets managers talk to each other so everything can work together, while keeping everything contained. The state is split up into two parts, state & settings (or state & configuration). The state is meant for information that is meant to change throughout runtime, and the engine depends on it to render the right final result (ex. camera state & position). The settings part is meant for variables that won’t change too much, but if they do it is something that is a large modification to the runtime (ex. window title, rendering engine). The layer system is like a regenerating stack of pancakes 🥞. Before you cast your pancake regeneration spell we all have, you have to prep the pancakes with butter and syrup. Each time you finish the pancakes, a new round starts and you eat them again. Then, once you are done, you have to disable the regeneration spell. The layer system acts the same, but computationally & layers instead of pancakes. Each layer goes through the lifecycle of onAttach -> onUpdate -> onDetach. By far the biggest reason for the layer system is the event system, but I’ll leave that for the next devlog. Here is the github page: https://github.com/pkncoder/Engine/tree/Phase-IV Here is the landing page: https://pkncoder.github.io/Engine/ I still have soooo much to do, especially with & after the event system. I’ve completed most of the easy stuff for Phase-IV. Here is the current architecture & a site screenshot.
Devlog IX I have been working the past week to get the Event system working & trying to fix pointer / referance issues (there are still a few I haven’t figured out). But now I have a working event system. To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). LayerStack recap In my previous devlog, I explained the Layer Stack 🥞, a top-down structure for controlling object ownership and main loop execution. Every frame, the layer stack runs the first layer to poll camera movement inputs (temp), and then next layer is ran to render out the frame through the RendererManager. Events This is great, but where the layer stack really shines is the event system . Events are reactions to when anything happens, keys being pressed / released, the window resizing, etc. When an event is dispatched, the layerstack stops, loops through each layer running it’s “onEvent” function to let that layer react (ex. the final render needing it’s texture resized). If a layer doesn’t want below layers to react to the event, it can consume it, stopping the event dispatching and continuing execution. Struggle and Pointer Nonsense I struggled a ton with the event state not updating correctly, and the camera not giving the right values to render the triangles. It turned out to be objects/classes duplicating, and not being able to update. There is so many debug messages in the terminal 😭 Ends This was all front-end changes (no change in the render), but now there is a better system put in place (back end changes). Github repo: https://github.com/pkncoder/Engine/tree/Phase-IV Landing page / Website: https://pkncoder.github.io/Engine/
—————– Devlog X —————– I’ve been working on refactoring my project for the last few hours. Part of how I code includes: Comments throughout to explain the code, strict formatting throughout, and trying to help the compiler with “const” and “inline” keywords. To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). The process My process of refactoring usually happens once I finish a new addition, however I haven’t been adding new things for a while. Now that I’ve added a new addition to the project (Event system & LayerStack), I want to go through the entire codebase under the src/ directory (not the glsl shaders). Project code stats (src/ directory) Running the command line utility “cloc” on my src/ directory to count code stats, I get these counts: ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- C++ 23 646 464 1930 C/C++ Header 47 506 205 1302 ------------------------------------------------------------------------------- SUM: 70 1152 669 3232 ------------------------------------------------------------------------------- Not very big yet, although that will be increased once I get to redoing the entire rendering engine. What I have done Now, back to my refactoring. I got through the basics: removing warnings, double checking the public/private attribute declarations on classes & structs, setting const on functions & params, setting inline on functions. The checklist This is my entire checklist for refactors, this is my first project using it, so it is still being worked on: ### Refactor Checklist (src/) 1. [x] Fix warnings 2. [x] Fix public vs. private 3. [x] Make functions const when needed 4. [x] Make function params const when needed 5. [x] Make functions inline when needed 6. [ ] Fix placement of functions 7. [ ] Refactor step by step in code 8. [ ] Rename things 9. [ ] Add comments 10. [ ] Place the \#includes in the right spots 11. [ ] Fix file tree 12. [ ] Run ```./fullTest``` 13. [ ] Update the obsidian canvas & png 14. [ ] Update the website Eventually I will also need to make one for the shaders too, as they are sometimes more technical on the code side. Conclusion That’s all that I’ve been doing, thanks for reading. Here is my Github repo & landing page for this application: Source Code: https://github.com/pkncoder/Engine Landing Page: https://pkncoder.github.io/Engine
—————– Devlog XI —————– I haven’t been programming as much, as marching band 🎺 has started, so I’ve had less time. But now I can do the really exiting stuff! To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). What did I Do? As I mentioned in the last devlog, I have been working on doing a full passthrough of the entire project to get ready for major rewrites. I have completed by refactor checklist, so I have gone through ever cpp file to: Fix warnings Check object method & attribute visibility Check const, static, and inline declarations Change the placement and formatting of method Going through every line of code to do minor logic changes & change formatting Rename methods, attributes, functions, and variables to better names & names w/ personal conventions. Add comments everywhere Change the placement of the #include statements (main header file, object interfaces, project files, project packages, extra C++ headers) Run a full clean, compile, and test of the application The LIE Technically I didn’t go through every file, as I left AssetManager & Rasterizer . Since these will be completely rewrote soon I felt like it was a waste. What next? Now that I have finished cleaning up the code base, the next projects are to: Move to using UUIDs instead of an entity index in scene Gut AssetManager and rewrite it Change to using metafiles instead of a preditermined path to assets Rework the scene class Extend IRenderer and get ready for the fun part! Thanks for reading! I tried to keep this one shorter for y’all. I don’t normally get too much attention to my devlogs, but I would be more than happy to answer any questions, as there is so much more to this project that even the landing page doesn’t cover (WIP). If you’re curious, feel free to reach out on slack (pkncoder), and here are some extra links about the project: Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine
—————– Devlog XII —————– I haven’t done as much programing recently, but yesterday I wanted to finish what I needed to do quickly, as it wouldn’t take that long. To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). 🎯 UUIDs For a quick explanation of what a UUID is: UUID stands for Universally Unique Identifier. In practice it is a random alphanumeric (a-z,0-9) ID between 64-128 bits. For my project, I used an unsigned 64 bit integer (no negative numbers). It isn’t exactly what the standard for a UUID is, as it isn’t alphanumeric, but I think for now 18.4 quintillion ids are just fine. ⬆️ What Next?? Now that I’ve finished this, the next step is to gut & rewrite the entire asset managing system. I need to redo how files are found, how data is stored, how they are retrieved. Basically the CRUD (create, read, update, delete) line and more. ❤️ Thanks for reading Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine
—————– Devlog XIII —————– Spent some time off from working on this project, started the beginnings of another one. Finally ended up getting the interest to come back to this one To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). 💡 Overview Commit message for this devlog: BREAKING CHANGE - New asset system, new scene system, renamed SceneLoader to PrefabSpawner, still need to update rest of code with temp fix until reworking for new system. ✨ What did I do? Previously, the asset manager did still handle caching already loaded assets (models, materials, textures), however the implementation was not professional and temporary: Caching based on a string key (slow) Broke the “single responsibility principal” many times by uploading to the GPU & constructing Scene objects Now, I am using AssetHandles (UUIDs) for caching, and I no longer uploading to the GPU in AssetManager. ❌ What didn’t I do? This new system is a good start for realigning and separating the different parts of the program, but is only about a third of the work. For what I still need to do, this is what follows: Stop uploading to the GPU in the PrefabSpawner (scene) Fix the renderer and find where I will upload the mesh & texture data. Check for compilation and working across the whole project. Change every instance of AssetManager to using AssetHandles. Once I have these, I can move onto redoing the renderers and FINALLY start working on the “fun stuff” ❤️ Thanks for reading Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine
—————– Devlog XIV —————– The Planning - The possible NEW NAME??? - The New Project!! To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ So What Happened? 📸 I haven’t done much pure coding, HOWEVER , I am getting ready for some large-scale rewrites and additions to the code. For what has happened: Fully sectioned the resource - disk - and scene - cpu/logic - directories (folders) so there wasn’t any GPU actions taken place. Refactored resource and scene directories Re-implemented Application into CMakeLists so I can compile and link that file. Did some planning for the huge renderer rewrite that is coming up. Along with all of that, I came up with a possible name for the application (since, surprisingly, Tempname: Engine is a temp name) I had it when when gazing at the sun through some clouds over a feild. Although it is super basic, so I’m going to have to play with it. ❤️ Thanks for Reading!!! I might have to take a bit of a break from progress on this project, as I have a website that I’m making for my local fire dept. (look out for a new stardance project)! I’m also planning on doing some re-marketing / re-branding (idk what to call it) to change the descriptions of the project (ex. the “To recap section on my devlogs, and the landing page). I’ve been getting more questions on it, and my current explanations are a bit too much. Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine 🗿 Commits 🥀 (top-oldest : bottom-newest) No more mention of buffer manager or any uploading to gpu in scene & assets. Meshes are now split up from models in the cache, models hold refrences to asset handles to meshes. Refactored and fixed errors in scene and resources. The program won’t work, as only scene and resources are being compiled & linked Added application back into the mix & fixed the scene loading section. Did some planning on how a model will go from spawn to render
—————– Devlog XV —————– – Temp code go brrrrr 🔋 - New term : “Far Landing” – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ I tried getting this out before 4 hours, but it just –wouldn’t__ happen. Weird errors kept popping up ( mostly being my fault) . Here’s a list of what I did: Figured out generally how I was going to deal with uploading and caching meshes + textures Put the new GPUResourceManager class into place to do the previously mentioned job Started reworking the renderer pipeline (NOT THE RENDER PIPELINE) on CPU side, and set up the interface class with that Patched together the old Rasterizer renderer to work with the new IRenderer pipeline Fixed errors throughout Split up normal & bump textures Planned out how I will deal with all the different textures on the shader side, cutting the checks out at shader compile time Yea, I know, it’s a lot . It just felt wrong to create a devlog in the middle of everything, since up until after fixing errors I had nothing to show for it. :( I ran into this errors when fixing those errors, where the entire model (I was using the Sponza scene, check the attached video ) was banded, where parts “didn’t exist” and the other bands did . This reminded me a lot of the “Minecraft Farlands” specifically the pocket edition ones. 🔥 What didn’t I do? 💥 To keep this brief: Fully split up the SSBO system in the BufferManager Reimplement good use cases of UBOs (although I did put in place double buffering) Add the more sophicticated data handling in the PathTracer (as I commented it’s existance out so I could complile). Figure out how shadow mapping is going to be cleaned up in the Rasterizer. ❤️ Thanks for reading! These devlogs have been getting more attention, and I’m getting closer to doing a rebrand to finally get my point and final ideas across! :3 Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine 🥀 Git commits 🗿 Patched in the “new” buffer system - Really just to get it to compile before I do anything big. Attempting to run the app to test resources & scene Well it compiles, runs, and renders. I still need to go through all the models, HOWEVER, I am having an issue with like 3 models in sponza and bump UGH Well, I checked Phase-III, and the issue with those models are there too, probally some texture coord issue or the bump map is messed up (I’ll check in blender), BUT THEN ON FIRST LOAD THE MODEL FRA LANDED????
—————– Devlog XVI —————– So long , gay Bowser ⭐️ – IRenderer, hardly know her? - To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ⭐️ BEFORE ANYTHING - Thanks so much to @AVD for the super star, wasn’t expecting it and I really appreciate it 👏 👏. Now, for what I did: Dealt with an issue in Obsidian, as apparently there was “minor rendering performance improvements.” This is FALSE :( - I just downgraded the version Created the new BufferManager to handle UBOs, SSBOs, VBOs, EBOs, etc. + Dynamic, Static, and Stream buffers. Integrated the RenderTarget & ShaderPass system from PathTracer straight into IRenderer + added base utilities to it. Did some formatting Overall the two big things that I did was the new Buffer system & the updated IRenderer interface. For the new Buffers, previously I had UBOs (dynamic values) & SSBOs (big mostly static information blocks) set up in seperate files, that BufferManager returned. Now, every buffer is a single struct called GPUBuffer , and GPUBuffer has a type, and a usage (see attached photo). Now everything is centralized on that. For the new IRenderer interface, now there are RenderTargets - textures that shaders write to as output - and ShaderPasses - A pass of a shader. These can be added to a registry, keyed by a UUID (big number, in this case). Thanks for reading Again, thanks so much to AVD for the super star! I’m excited for when I can finally start writing my shaders, it’s getting closer & closer!! The fancy Path Tracer will be cool and all, but I have big plans for the Ray Marcher!! Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine 🥀 Git Commits 🗿 Fixed an obsidian issue I ran into, “Minor rendering performance improvements.” was NOT true, broke almost the entire canvas. Fixed it though + new png Created the new buffer managegr system, I need to go through and make changes. Also, on launch there was more blacked out sections, different every launch :( New IRenderer setup for the render targets & render handles Refactor 1-6 Refactor 7-9 for BufferManager
—————– Devlog XVII —————– - Strange Hours - To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ To start off, I did not work directly on my application, but the online demo . It’s like working on the website, but through another editor sometimes. The goal of the Path Tracer is to eventaully get it clean & quick enough to be real-time. This is the first of the 5 renderers that I will be making. I was working on my online shadertoy DEMO for the Path Tracer, specifically the denoiser. The name of the denoiser I am using is the “Edge-Avoiding Á Trous Wavelet Transform” . As a quick overview: It applies a blur “ with holes ” to allow for less to no image distortion Fast enough for realtime Includes “ weights ” based on (in my code): Normal , Depth , and Color . The larger the difference between the center pixel and the scanned pixel * (kernel), the more weight is applied, lessening the amount of blur. This is amazing, however when the camera moves , the denoiser assumes that the current and previous pixel are in the same world postion (when it isn’t). This causes errors when trying to overlay the image and gather data. This is why we track the motion of the camera, creating a vector to get the same world position pixel. I got this wrong on one of the first attempts, the last attachment (videos are compressed) shows that fun video (warning for those who get motion sick). With this, I am able to blur the image, and with some more techniques, I can get rid of “ghosting.” Thank You for Reading In the videos, I rendered them in fullscreen 4k on my better laptop+GPU, don’t worry about your system being too slow, just don’t fullscreen it <3 (the development was done on my lower end mac). The hours logged are from refactoring the project after the last devlog, and editing the code when I didn’t do it in shadertoy’s editor. Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine 🥀 Git Commits 🗿 BREAKING CHANGE - Refactored Buffer & GPUResource managers + IRenderer - Code has been broken for a bit but womp womp Shadertoy shaders path tracer https://www.shadertoy.com/view/7fBSzR
—————– Devlog XVIII —————– - 🌲 Trees 🧚♀️ - 👩💻 SO MUCH REWRITING 💀- To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ These last few days, I’ve been working on getting my Rasterizer (drawing triangles of a model on screen and coloring them) working. The big changes that I did include: Fixing an issue with textures not loading Updated the Interface for every Renderer. Implemented the extract / prepare / dispatch pipeline into the Rasterizer for real now. Started working on the base ideas of a “Shader Graph” The issue with textures was just moving a line like 3 lines lower . I was freeing the image data before saving it (oops) . The updated interface is the IRenderer class. Each Renderer bases off of the class, supplying it with a framework so each Renderer can be talked to the same way. Here are some of those functions: beginFrame - Clear previous frame data and prepare for a new frame extract - Take raw scene data ( camera , renderables ) and convert it into packets for the next step. prepare - Take each packet from extract and turn them into draw commands for dispatch. dispatch - Take each draw command and send a draw call, along the way binding any textures & uniforms. postProcess - Take the frame and post-process it. This may be removed. present - Take the rendered frame and show it to the screen ( blit it ). To do a quick review on what the Shader Graph is - it is a collection of “nodes,” each with their own inputs and outputs that connect together to render out a frame. I’m still a bit confused, but I’ve been watching presentations on the topic from companies like Unity & Activision . Thank You for Reading Yea, I know it’s been a while since my last devlog. I’ve been making some posts in slack about my Path Tracer, since I spent a little time on that. I’m looking at the timing for everything , the hope is to ship this at the end of Phase-IV and hope that I can get a UI working before too late. I’m hoping I can get enough stardust to pay for a new laptop, but idk that’s a long shot. I still have about 25 more hours if I get a 16x mult (which I can only hope for) before I would hit the mark for the FW 12, which isn’t crazy (the mult is tho). Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Stop the program from crashing to reach a black screen Rewrite shaders to allow for correct models wo/ shadows Write the shadow cubemap geometry shader & ad it to the OpaquePass (temp main pass) Make and debug UBOs replacing base uniforms 🥀 Git Commits (shortened)🗿 https://github.com/pkncoder/Engine/commits/Phase-IV/
—————– Devlog XIX —————– - 🌲 Textuers 🧚♀️ - 👩💻 Shadoowwsss 💀- To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ To recap on what I did: Got the program to launch to black screen I needed to inject the Asset Manager to a class Got objects loading correctly without shadows Got textures to load Started work on fixing the shadow map Nothing too crazy has been changed, the texture issues were about some compatibility problems and not uploading to the same index. The shadow values are uploaded to a 3d texture, where to calculate if an object is in sight or not, we commit triangles based on their position. The problem now is about the far plane, and hitting triangles that weren’t in shadow. I’m not sure what the problem is, but I’m going to do a bit more looking into it. Thank You for Reading :3-blahaj-spinning I still have to fix the shadows issue (obviuosly) but then I can move onto formatting the data (putting it into buffers, creating wrappers, etc).!! Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Write the shadow cubemap geometry shader & ad it to the OpaquePass (temp main pass) Make and debug UBOs replacing base uniforms Refactor / clean Create the real Render Graph? 🥀 Git Commits (shortened)🗿 Commits: https://github.com/pkncoder/Engine/commits/Phase-IV/ Most Recent: Temporary Save
—————– Devlog XX —————– – 🌟I have the best one liners 🗿– 🥀 Now I have to be smart ??? 🧠 – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ For the quick overview: Fixed the shadow map issue ( so angry about this, see below ) Fixed an issue with textures not caching Got the very base implementation of Uniform Buffers To start off, in the previous devlog I mentioned I was re-writing the shadow mapping . Shadow Mapping - Rendering a 3d model with the light being the eye. Everything that it can see is not in shadow, everything else is. quick explanation I was having issues with getting the shadows to work correctly. I had ideas for issues, including: (the model matrix , the renderPackets being in a bad order , the far plane ). IT TURNS OUT It was none of these. Whenever I made the code to compile a geometry shader along the vertex & fragment shader, I just copied my old one and spliced in the code. Turns out I forgot to swap some variables, and I was putting code in places it should NOT be at. No idea why it didn’t crash, but it fixed my shadow issues very quick . As for UBOs, I’ll talk about them in a future devlog, when I have everything planned out. Thank You for Reading As I said with “Planning out” everything, I’m going to set up a whiteboard - I’ll have to move my 🏳️🌈 pride flags 🏳️⚧️ :( - Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Refactor Build the big brain wall Do some thinking 🥀 Git Commits🗿 Weird position issue Saving now, I am so angry about this. I was compiling and overwrigting the wrong code :( Made the testing for shadows a bit better, and changed the rendering a bit Fixed issue with textures and full models not actually caching Removed anoying debug line for shadow transform matricies Working on getting the ubos working’ Got it to push First test ubos
—————– Devlog XXI —————– – My brain hurts 🧠 - Sharp like glass – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ Sadly, I haven’t done much coding Instead, I’ve been trying to figure out how I want my Render Graph to work. To start, what is a render graph? What I am interpreting the render graph as, issss: An API meant to simplify and provide structure to a final renderer. In the final application, the render graph will be an option for a more advanced final render editor. What I am working on now, is how it will be put together so I don’t have a mess in the future. Recently, I’ve been using Obsidian to mark everything down. This also starts a little docs. Using a mix of Obsidian and the excalidraw plugin, I’m able to write everything down and create visuals. Currently, I have a mix of nodes that are the main important ones. These nodes are just the interfaces , so they aren’t specified. They act as a blueprint for any of the full nodes. IRenderOutput - Add textures to a list of blitables IShaderInput - Base input interface IShaderOutput - Base output interface IShaderNode - Node representation of shaders IShaderPassNode - Base shader interface Thank You for Reading I haven’t been home enough to create the “big brain wall” which is sad, but at least my stuff is digital. Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Setup current program for Render Graph implementation Implement IShader, IGPUTexture, etc. Create IRenderGraph for the renderers
—————– Devlog XXII —————– – BrEaKiNg ChaNGeS - 📖 NEW BOOOKKKK – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ Sadly, I’ve done much coding Base list This is what I have done since the last devlog: Planned out a bit more on the inner workings from no Renderer->Rendered Image Created the new Shader & Program classes Updated the workings on RendererManager Started work on the new Renderer / IRenderer class Current commit is now broken (compiles, doesn’t run Overview In my new obsidian vault , I’ve been working on creating the new database on how it all works. Through this, I’ve been using excalidraw (Obsidian) to plan out pipelines & create visuals. Currently, I have 2 main drawings: Shader & Program pipeline Renderer Pipeline The Shader & Program pipeline explains the lifetime and usage of both the Shader and Program (OpenGL program) classes. A program gets created, has shaders attached to it (deleting the shader in the process) , and then the program gets linked & binded. The Renderer Pipeline explains the lifetime and usage of a renderer. Starting from the RendererManager, go through normal rendering stuff, and will end at shutting down the RendererManager. For the inner workings of the new renderer setup, I’ll leave that for (hopefully next devlog) when I get everything working start to finish of the RendererPipeline . Thank You for Reading As for the “ New Book I got, I have just purchased “ Game Engine Architecture Vol. I ” (Jason Gregory) to specialize the program more (most likely after Stardance ends). Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Plan out the RenderGraph Create the base RenderGraph class Create the BlitList Create the INodeInput & INodeOutput
—————– Devlog XXIII —————– – I NEED TO HURRY UP AAAA - EnTT - Table – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ In my previous devlog, I stated how I was working on the new RenderGraph . I’ve now realized, that I have like until the end of the week for when I need to ship. So instead , my goal is to get this looking impressive . To start, here is what I’ve done so far : Cleaned up system inits Changed how the UUID service works (now you just access it and call generate ) Implemented a new library, EnTT Did some cleanning up Added a PointLightComponent for future use (no dev. yet) Added and implemented the CameraComponent Here are the big things: EnTT EnTT is an open-source library that handles objects within games, editors, etc. It’s creator is: Michele Caini (skypjack on github) . EnTT is a library that exposes something called an Entity Component System (ECS). Basically, instead of saving a bunch of data directly inside of one struct or class, you define an entity (a unique id) and assign that entity components. The components are what actually gives the entity meaning. New Camera If you have ever ued Blender for a bit, you would know that your camera is on the same list as your meshes. This is since, to Blender, they are inherantly the same thing (don’t quote me on that) . Previously, my camera was seperate to all of the rest of the objects. This caused the data to be split, and handling the differences made my architecture a bit weird. Now that I’ve implemented EnTT , I’ve added a CameraComponent that defines things like rotation, FoV, etc - completely erasing the need for a separate camera, and opening the doors to more flexibility. Thank You for Reading New book is great! I won’t get to use too much of it for stardance, but I’m checking out this snowglobe thing that seems like it would be the next area!! Wish me luck on the ship. I want to get it out by the end of the week so I can hopefully still cache in some stardust. Probally won’t get the computer though (high hopes for a living or smthin idk) Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine ❓ What’s next? 🛑 Change my Rasterizer to be a Defered Renderer & implement multiple point lights UI??
—————– Devlog XXIV —————– – i HATE shadow maps!!! - Renderer? I hardly know her? – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ WOAH A lot has happened. Previously, I had just implemented a new entity system & a new camera system. So what’s new? I present: The Deferred Renderer !!! Basically, it’s just another way of rendering. HOWEVER , it has some funzies: Mostly together render graph, just a little smthin Shadow Pass G-Buffer Pass Lighting Pass New point lights (replacing the emmissive texture searching before) Looking to add SSAO (hemisphere sampling) in the future!! Now, along with this, I just tested creating a build for windows and testing it on a friends machine, and it worked (his laptop is crap, so it ran slow, but surprisingly fast) . Along with that, I also tried the current build on mac, and it also worked, so that’s also great (I’m supprised)!! However, the real prize, is the trypophobia horrors made along the way!! That’s right! When trying to get textures to work, I ran into a ton of problems (mostly related to the alpha map & image formats) that caused major headaches. Images and videos, where they are a bit compressed, can be found below. Thank You for Reading Almost there, I still need to change up the landing page, rewrite the readme, and merge the main branch, plus try to get a way to change the 3d models for users, but I’m getting there. Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine
—————– Devlog XXV —————– – New JSON scene file 📁 - SHIP TIMEEEEE – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ Not that much has happened tbh. All that has really happened… Updated the README a bit more Added a new json parser to spawn the scene from that Added hot reloading of the scene So yea, next should be the ship. When updating the README on the github, I was going through the Usage section, and added a new promise for how people could add their own meshes. In this I created the idea of activeScene.json , a JSON file that listed the scene data (crazy, right?). And so, after I updated the README , I added the new loader, and made the scene reload by pressing the “ r ” key. That’s kinda it… Thank You for Reading Before shipping, I need to… Do another update of the README Create the base Releases for Mac, Windows, and Linux And test these Do a pass through TODO.md Update the landing page Shouldn’t take too long Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine
—————– Devlog XXVI —————– - - Almost… there – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ In order to show the capabilites, I’ve been setting up scenes for my engine to show off, and here are some of the results! It would be great to get your favorite render of these! For the full 9 renders , check out the scrapbook in the slack , as they will be there w/ a thread. Thank You for Reading Hopefully will actually ship tmwr! I’m actually getting kind of sad, I won’t be stopping development by any means, but this has been my summer (although I might not be able to get any stardance tokens, but that’s ok ig…). If you have any questions, feel free to DM me either here, or at @pkncoder on discord if that’s easier for you! Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine
—————– Devlog XXVII —————– - - Release is out testing time – To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). ✨ What did I do? ☀️ Not too much has happened, mostly: Updated README (resources, gallery, installation & use) Updated the landing page (added a tech-stack) Created my first release under the 1.3.x alpha title That big 1.3.x “alpha” release is the big one, as I need some help. If you could just take a bit of time, and you aren’t on linux-arm or apple-intel, could you check out the github releases and try it out, that would be great! I plan to ship tmwr, but I want some testing done first. Thank You for Reading So close!! Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine
Ships:
—————– Ship #1 —————– - - Welcome - To recap, my project is a custom made rendering engine that focuses on diverse rendering options along with high stylistic control (very high-level explanation). 💚 The current state 💫 There is still no UI, all render control is based in a JSON file. The current only renderer is a custom Deferred Renderer. Note: As this is built for 3d rendering, a modern computer, with a GPU is recommended. Modern Macbooks will run it, however it will be slower as it is basically magic that it works on them. Thank you so much! I’ve spent a lot of time on this. It may not seem like that, however when building this, I decided to do it right (as this is my 3rd attempt). I split the development into phases: Get a window Get something rendering + a camera Get object/material/texture loaders + basic scene managers + basic concept of working Create full scale (professional) renderers/scene managers/resource managers/etc. Get a UI Currently, I’m in getting everything polished in the backend. I didn’t want to move on to the UI, as I didn’t want to rush that. Rushing a UI meant missing other things. So thank you, and I really hope you enjoy. If there are any issues, please report them to the issues page on the github, and message me on slack ( @pkncoder ). Github releases: https://github.com/pkncoder/Engine/releases Github repo: https://github.com/pkncoder/Engine Project landing page: https://pkncoder.github.io/Engine...
|
1793346886.994793
|
1793433286.994793
|
|
39444
|
Flappy Rocket by @brandon | Stardance
|
brandon
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T04:34:09Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my official first game without fully relying on AI. I did use videos to help me code, as I am still a beginner when it comes to that, especially using c#. I learned a lot off this one project. For example, how to add a scrolling background. And even if they aren’t perfect, I think it is enough for a very simple game that was completed in a somewhat short amount of coding time. There was a moment where I gave up on the project because I couldn’t figure it out. Since I was trying my absolute best to not use AI once, I drained myself out and left this alone for about a month or so. I ended up using AI to fix this one problem, and although I don’t remember the exact problem off the top of my head, I did remember how small of a problem it was. I only needed to change one thing. Even though this challenge is ending very soon, and I have very little hours. I will try my best to make one last project that I will focus on for the next week and few days. I hope you all enjoy this game and hopefully stick around to see my new project! (might be 3D :0 )", "repo": "https://github.com/Br4ndon-aero/Flappy-Rocket", "demo": "https://github.com/Br4ndon-aero/Flappy-Rocket/releases/tag/v1.0.0"}]...
|
[{"post_id": 72972, "ts": "202 [{"post_id": 72972, "ts": "2026-09-24T04:21:29Z", "hours": 0.2808, "text": "I completed my satellites!! I believe that is all I will work on for this game, for now. I will try to make another game and get my hours up starting tonight!!"}, {"post_id": 72100, "ts": "2026-09-22T05:18:09Z", "hours": 0.7136, "text": "I completed adding the background. I am now currently working on adding a satellite that spawns here and there that the rocket can collide with and lose. Next up, levels?"}, {"post_id": 69925, "ts": "2026-09-18T02:25:22Z", "hours": 0.8772, "text": "Slowed down for a minute because I was trying to figure out how to move my project into a laptop (had me stressing even though it was so easy). Now that I am able to work from my laptop, hopefully I can get more hours into my work! Apart from that, I am currently working on figuring out how to make a scrolling background that continues endlessly. Next up, adding levels and increasing speed per every 5-10 points!"}, {"post_id": 67119, "ts": "2026-09-13T05:35:49Z", "hours": 0.7344, "text": "I think because I have been inactive for about a month, my hours that were logged were reset. But anyway, I leanred how to remove the rockets from spawning in and never deleting, I finished making a “game over” overlay after the rocket hits the asteroid, and included a “try again” button that resets the whole game. I had a huge issue with the reset button that made me give up this game for a moment since I was trying my very best to not use AI and simply figure it out through other methods. I was able to fix it now, but unfortunately, had to use AI :(. Now that I am done with that, I will try to make the background a outer space background, with stars and everything that might be a image from google, I dont know yet though. Any ideas? leave them in the comments!"}, {"post_id": 42441, "ts": "2026-08-07T05:04:44Z", "hours": 1.1867, "text": "What I have been working on is making the rocket move up and down (basically jump with the spacebar), I added asteroids as a way to lose the game if you collide with them, I made the asteroids move from left to right, and right now, I am trying to add a score using UI. I struggle here and there to make this game fun by changing the speed and stuff but so far no AI! (Still a LOT to fix)"}, {"post_id": 34453, "ts": "2026-07-25T05:40:45Z", "hours": 0.4136, "text": "So far, on my new project I am trying to figure out basic steps on Unity. As a start, I am planning on making this game into a Flappy bird type of game, but instead of a bird, its a rocket. So far, NO AI, just youtube!"}]...
|
Title: Flappy Rocket by @brandon | Stardance
Devl Title: Flappy Rocket by @brandon | Stardance
Devlogs:
So far, on my new project I am trying to figure out basic steps on Unity. As a start, I am planning on making this game into a Flappy bird type of game, but instead of a bird, its a rocket. So far, NO AI, just youtube!
What I have been working on is making the rocket move up and down (basically jump with the spacebar), I added asteroids as a way to lose the game if you collide with them, I made the asteroids move from left to right, and right now, I am trying to add a score using UI. I struggle here and there to make this game fun by changing the speed and stuff but so far no AI! (Still a LOT to fix)
I think because I have been inactive for about a month, my hours that were logged were reset. But anyway, I leanred how to remove the rockets from spawning in and never deleting, I finished making a “game over” overlay after the rocket hits the asteroid, and included a “try again” button that resets the whole game. I had a huge issue with the reset button that made me give up this game for a moment since I was trying my very best to not use AI and simply figure it out through other methods. I was able to fix it now, but unfortunately, had to use AI :(. Now that I am done with that, I will try to make the background a outer space background, with stars and everything that might be a image from google, I dont know yet though. Any ideas? leave them in the comments!
Slowed down for a minute because I was trying to figure out how to move my project into a laptop (had me stressing even though it was so easy). Now that I am able to work from my laptop, hopefully I can get more hours into my work! Apart from that, I am currently working on figuring out how to make a scrolling background that continues endlessly. Next up, adding levels and increasing speed per every 5-10 points!
I completed adding the background. I am now currently working on adding a satellite that spawns here and there that the rocket can collide with and lose. Next up, levels?
I completed my satellites!! I believe that is all I will work on for this game, for now. I will try to make another game and get my hours up starting tonight!!
Ships:
I made my official first game without fully relying on AI. I did use videos to help me code, as I am still a beginner when it comes to that, especially using c#. I learned a lot off this one project. For example, how to add a scrolling background. And even if they aren’t perfect, I think it is enough for a very simple game that was completed in a somewhat short amount of coding time. There was a moment where I gave up on the project because I couldn’t figure it out. Since I was trying my absolute best to not use AI once, I drained myself out and left this alone for about a month or so. I ended up using AI to fix this one problem, and although I don’t remember the exact problem off the top of my head, I did remember how small of a problem it was. I only needed to change one thing. Even though this challenge is ending very soon, and I have very little hours. I will try my best to make one last project that I will focus on for the next week and few days. I hope you all enjoy this game and hopefully stick around to see my new project! (might be 3D :0 )...
|
1793339716.7808197
|
1793426116.7808197
|
|
10
|
Arcade Mania by @ryankruger008 | Stardance
|
ryankruger008
|
0
|
36.97
|
0
|
[]
|
[{"post_id": 72978, "ts": "202 [{"post_id": 72978, "ts": "2026-09-24T04:47:41Z", "hours": 6.605, "text": "I have made Space Invaders successfully!, building it around a formation-based alien system with a CharacterBody2D player, grouped collision detection, and a Formation node that spawns rows of aliens, moves them as one unit, and steps them down and speeds them up as more get killed. Aliens fire back at random intervals, the player has lives with a brief invulnerability window after getting hit, and there are destructible shield blocks and a bonus UFO for extra points. I have integrated this with my original machine manager, so the game runs on the same flow as the pong game from before, attract mode when idle, countdown on start, and a continue system that spends a credit to keep a match going after a game over. Score, lives, and a persistent high score are all tracked and saved to disk. I am now going to move onto a simple snake game and then maybe even breakout? please leave suggestions."}, {"post_id": 69926, "ts": "2026-09-18T02:30:49Z", "hours": 1.6756, "text": "Today i have created a test space invaders game, it has a little bit of functionality and it works!"}, {"post_id": 68357, "ts": "2026-09-15T00:30:50Z", "hours": 6.4394, "text": "i have begun writing my devlogs per day in word but i forgot to give my last one so heres both in one. Today I have implemented the backend for a racing game for the arcade, I have utilized the characterbody3d controller with spherecast3d for the wheels to simulate suspension realistically (if it worked) I have had many issues with handling and stability so looking forward this concept will stay in the files if I have an idea how to improve but I am now going to move onto recreating space invaders. Today I have spent some time creating a spacewar remake with not much success with a few glitches. It has the ability to shoot bullets from both ends in the code but none of the actually shoot. The aliens then end up falling out of the world for some reason. I have cleaned up the code for the arcade machine manager to make it extendable to many other use cases using export variables to be able to easily adapt it."}, {"post_id": 61305, "ts": "2026-09-04T04:50:59Z", "hours": 2.0833, "text": "I have begun working on some of the main mechanics for the game and the game map itself, the game now has a credits ssytem that saves to your local system, by having this i can implement achievements and stuff down the road. I have fixed the pong game a bit and made it a lot more stable to play and made the ai work. It also has attract mode! i am doing all of this so i can easily replicate the systems throughout many machines using the same base scripts. I have added textures and made the graphics better also adding mountains. My next steps are finishing the first game and the mechanics to do with it and then moving onto the next game, please give me recommendations on slack or here :)"}, {"post_id": 54340, "ts": "2026-08-25T09:25:21Z", "hours": 4.9264, "text": "I have begun working on the arcade machine side of things it is very buggy at this stage but it works, there will be a lot of changes. 1. I have created a simple game of pong with a CPU character and one that you can control, it has scores, high scores (saved locally) and a countdown system. 2. The machine has a manager, this handles things such as the inputting of credits (currency for the machines that you can earn by doing things like high scores and stuff) and it handles the area3d node that detects that you are trying to play the machine (and insert credits), It also handles a simple attract mode with a blinking INSERT CREDIT text that is very horribly optimised but it works!. I have added in a wallet system that saves your credits and i have modelled a cool arcade machine. The next things i am going to work on is perfecting the game of pong, making the machine art for it, and then moving onto creating another game (possibly a racing game but not confirmed!)"}, {"post_id": 49287, "ts": "2026-08-18T00:24:45Z", "hours": 2.3928, "text": "I have begun transforming the aim and genre of the game, it is now going to be a game where you play arcade machines and stuff (using all the original maps and code i had already) i have created a simple area and optimised the player controller, the original protocol-z will also be a game in the arcade!"}, {"post_id": 11715, "ts": "2026-06-19T02:25:53Z", "hours": 1.3586, "text": "Today I worked on a few small issues and implemented a few things What I worked on: Fixed the player killing system, the player now effectively takes damageImplemented controller input and rumble supportFixed a AI performance issuebegan creating the base script for the inventory – you can now pick up and put items in your inventory What needs doing/fixing A usable UI for the inventoryImplement a death screen and a way to eat and drink to healbackend for the inventory"}, {"post_id": 10420, "ts": "2026-06-17T03:45:59Z", "hours": 8.5253, "text": "I have been working on the 3D modelling side of things to populate the game world for a few weeks now, I have modeled and rigged a zombie and a human using Rigify and i have modeled a town for the game as well. I also modeled a van that will be driveable within the game. There is a lot of room for improvement that will definitely be happening but i am now going to focus on the coding side of things before i finish the game map and stuff. I have no idea why it will only let me attach one image so i added in a image of my very “detailed” car"}, {"post_id": 655, "ts": "2026-06-02T05:27:56Z", "hours": 1.7719, "text": "I have begun making hoyuses for the map, i had no idea what i was doing so thats why it took me so long"}, {"post_id": 522, "ts": "2026-06-02T00:15:33Z", "hours": 1.1917, "text": "Began working on a map for the game! to be improved though, it is going to be in a city!"}]...
|
Title: Arcade Mania by @ryankruger008 | Stardance
Title: Arcade Mania by @ryankruger008 | Stardance
Devlogs:
Began working on a map for the game! to be improved though, it is going to be in a city!
I have begun making hoyuses for the map, i had no idea what i was doing so thats why it took me so long
I have been working on the 3D modelling side of things to populate the game world for a few weeks now, I have modeled and rigged a zombie and a human using Rigify and i have modeled a town for the game as well. I also modeled a van that will be driveable within the game. There is a lot of room for improvement that will definitely be happening but i am now going to focus on the coding side of things before i finish the game map and stuff. I have no idea why it will only let me attach one image so i added in a image of my very “detailed” car
Today I worked on a few small issues and implemented a few things What I worked on: Fixed the player killing system, the player now effectively takes damageImplemented controller input and rumble supportFixed a AI performance issuebegan creating the base script for the inventory – you can now pick up and put items in your inventory What needs doing/fixing A usable UI for the inventoryImplement a death screen and a way to eat and drink to healbackend for the inventory
I have begun transforming the aim and genre of the game, it is now going to be a game where you play arcade machines and stuff (using all the original maps and code i had already) i have created a simple area and optimised the player controller, the original protocol-z will also be a game in the arcade!
I have begun working on the arcade machine side of things it is very buggy at this stage but it works, there will be a lot of changes. 1. I have created a simple game of pong with a CPU character and one that you can control, it has scores, high scores (saved locally) and a countdown system. 2. The machine has a manager, this handles things such as the inputting of credits (currency for the machines that you can earn by doing things like high scores and stuff) and it handles the area3d node that detects that you are trying to play the machine (and insert credits), It also handles a simple attract mode with a blinking INSERT CREDIT text that is very horribly optimised but it works!. I have added in a wallet system that saves your credits and i have modelled a cool arcade machine. The next things i am going to work on is perfecting the game of pong, making the machine art for it, and then moving onto creating another game (possibly a racing game but not confirmed!)
I have begun working on some of the main mechanics for the game and the game map itself, the game now has a credits ssytem that saves to your local system, by having this i can implement achievements and stuff down the road. I have fixed the pong game a bit and made it a lot more stable to play and made the ai work. It also has attract mode! i am doing all of this so i can easily replicate the systems throughout many machines using the same base scripts. I have added textures and made the graphics better also adding mountains. My next steps are finishing the first game and the mechanics to do with it and then moving onto the next game, please give me recommendations on slack or here :)
i have begun writing my devlogs per day in word but i forgot to give my last one so heres both in one. Today I have implemented the backend for a racing game for the arcade, I have utilized the characterbody3d controller with spherecast3d for the wheels to simulate suspension realistically (if it worked) I have had many issues with handling and stability so looking forward this concept will stay in the files if I have an idea how to improve but I am now going to move onto recreating space invaders. Today I have spent some time creating a spacewar remake with not much success with a few glitches. It has the ability to shoot bullets from both ends in the code but none of the actually shoot. The aliens then end up falling out of the world for some reason. I have cleaned up the code for the arcade machine manager to make it extendable to many other use cases using export variables to be able to easily adapt it.
Today i have created a test space invaders game, it has a little bit of functionality and it works!
I have made Space Invaders successfully!, building it around a formation-based alien system with a CharacterBody2D player, grouped collision detection, and a Formation node that spawns rows of aliens, moves them as one unit, and steps them down and speeds them up as more get killed. Aliens fire back at random intervals, the player has lives with a brief invulnerability window after getting hit, and there are destructible shield blocks and a bonus UFO for extra points. I have integrated this with my original machine manager, so the game runs on the same flow as the pong game from before, attract mode when idle, countdown on start, and a continue system that spends a credit to keep a match going after a game over. Score, lives, and a persistent high score are all tracked and saved to disk. I am now going to move onto a simple snake game and then maybe even breakout? please leave suggestions....
|
1792709627.8621466
|
1793314427.8621466
|
|
65030
|
Custom Geopolitical Tab by @Lokesh_Lal | Stardance
|
Lokesh_Lal
|
1
|
7.7
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-23T13:11:18Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Custom New Tab — a JARVIS-flavored browser home base What I built A completely custom new-tab experience — think glass UI, a greeting that shifts with the time of day, a centered search bar, a side dock of shortcuts that magnifies its neighbors when you hover, a Super Menu packed with clock, weather, todos, notes, themes, and wallpaper controls, plus an optional geopolitical live map (World Monitor) and animated anime wallpapers you can toggle off when you want focus. It’s not a theme slapped on Chrome’s defaults. Every surface — the glass panels, the background rays and particles, the hero type, the dock behavior — was hand-built and borrowed spirit from JARVIS-style interfaces, then wired into something that actually feels like my dashboard. Live: https://anonymouscoderartist.github.io/custom-new-tab/ What was challenging The map fights you back. World Monitor blocks being iframed, so I had to fetch their HTML client-side, inject a tag, rewrite root-relative assets, and smuggle it in via srcdoc — with a graceful fallback when that fails. Neighbor magnify is fiddly CSS. Getting ±1 and ±2 dock icons to scale in a wave (1.35 / 1.18 / 1.08) without clipping or fighting the scroll container took real iteration — :has(), padding reserves, mobile overrides. The search bar went through an identity crisis. Square? Too tall. Bottom-anchored? Not JARVIS enough. Final answer: centered at 54%, pill-sized, chips tucked inside the orb directly under the input. Deploy trust. Every push means polling GitHub Pages until the build is genuinely built and the live bytes match local — CDN caches love to lie to you for a minute. What I’m proud of Honestly? The details that don’t announce themselves: Hover the dock and watch the ripple of scale — it feels alive. The Super Menu has no tacky white sheen; the title still shimmers. Fonts are fully local — nothing phones home. It ships with a real default dashboard URL, not a placeholder. State lives in localStorage only. Your todos and notes never leave the browser. I didn’t just assemble widgets. I made a UI with a point of view. How to test it (please do) Open it: https://anonymouscoderartist.github.io/custom-new-tab/ — or locally: npm run dev → http://localhost:3000 Watch the greeting — reload at different times of day; it changes. Search bar — dead center. Type and hit Enter (Google by default). Change the engine in Super Menu → Search. Dock hover test — mouse across the shortcut icons. Nearest neighbors should scale up in a wave. Click × to delete one, add your own from Super Menu. Super Menu (top right) — poke everything: clock, weather, todos, notes, theme dots (bottom-right: blue/purple/mixed/minimal), wallpaper on/off, JARVIS effects toggle, custom dashboard URL. Map chip — hit Show Map. Should load the exact World Monitor view (conflicts, sanctions, weather, satellites, the works). If it ever blanks, you’ll see a fallback instead of a dead frame. Wallpaper — flip through live anime videos and photo presets; try it with effects off for a clean, quiet version. Credits where due: JARVIS for the visual soul, World Monitor for the dashboard, Pixabay & Unsplash for wallpapers, Oxanium/Maven Pro/Geist for type, Google’s favicon service for shortcut icons. Go break it. 🛠️", "repo": "https://github.com/AnonymousCoderArtist/custom-new-tab", "demo": "https://anonymouscoderartist.github.io/custom-new-tab/"}]...
|
[{"post_id": 72979, "ts": "202 [{"post_id": 72979, "ts": "2026-09-24T04:49:20Z", "hours": 3.7031, "text": "As soon as I saw the feedback I got into god mode and started coding — no delay, no overthinking. Here’s everything I did: README — rewrote it myself Took README_OUTLINE.md as a checklist and wrote every sentence in my own voice. Cut the AI marketing fluff. It’s ~65 lines now: what it is, features, default dashboard URL, how to run, credits, AI Usage, notes. Mine. AI Usage — honest and specific Added ## AI Usage to the README. Full version in AI_USAGE_DRAFT.md. Most of this codebase is mine. I wrote the structure, features, and UI logic. AI helped with: early scaffolding, CSS debugging, the World Monitor embed, earlier README drafts, and this pass (keyboard shortcuts, todos/focus/clock rewrites, README polish). I picked the product direction, features, and defaults. Tested everything in the browser. Reviewed before it shipped. Wrote the final README and disclosure myself. Not claiming AI wrote zero. Also not claiming it wrote the project. Ask me about any part of the code. Keyboard shortcuts — Feature A, built that same burst / focuses search (skipped while typing in a field) Esc closes Super Menu / map, blurs the field 1–9 opens that dock shortcut T opens themes Hint card under Super Menu → Tools Search input has title=“Press / to jump here” Extended the existing keydown path instead of duplicating it. Ignore shortcuts when you’re in an input/textarea/contentEditable (except Esc). preventDefault only when I actually handle the key. Also rewrote renderTodos, the focus timer, and tick/clock in a plainer style — same behavior, no comments, easier to explain line by line. Codebase — I know how it works Boot: loadState → theme/wallpaper → render → bind → tick → optional map. State: localStorage newtab_state_v6. Map: World Monitor blocks iframes, so fetch HTML → inject → rewrite assets → srcdoc → fallback link. Keyboard: handleKeys at the end of bind(). Cleanup Dropped planning docs, unused images/fonts/brand files, and a dead answer-card UI. Kept AI_USAGE_DRAFT.md. Zero broken asset refs. Pushed Latest: 96ce241 Live matches: https://anonymouscoderartist.github.io/custom-new-tab/ If a judge asks “did AI write this?” the answer matches the AI Usage section. Throw any file at me and I’ll walk through it."}, {"post_id": 72650, "ts": "2026-09-23T12:46:02Z", "hours": 2.3111, "text": "Finally Complete my own New Tab. It has a animated background that is customizable. There are shortcuts of ai on the side bar you can customize it yourself. There are multiple aura themes as u can see in the bottom anad in Super Menu there are more options like Time Todo etc. GO GIVE IT A TRY. Pls tell me if u liked it"}, {"post_id": 72606, "ts": "2026-09-23T10:21:53Z", "hours": 1.8281, "text": "V1 of WebOS"}]...
|
Title: Custom Geopolitical Tab by @Lokesh_Lal | St Title: Custom Geopolitical Tab by @Lokesh_Lal | Stardance
Devlogs:
V1 of WebOS
Finally Complete my own New Tab. It has a animated background that is customizable. There are shortcuts of ai on the side bar you can customize it yourself. There are multiple aura themes as u can see in the bottom anad in Super Menu there are more options like Time Todo etc. GO GIVE IT A TRY. Pls tell me if u liked it
As soon as I saw the feedback I got into god mode and started coding — no delay, no overthinking. Here’s everything I did: README — rewrote it myself Took README_OUTLINE.md as a checklist and wrote every sentence in my own voice. Cut the AI marketing fluff. It’s ~65 lines now: what it is, features, default dashboard URL, how to run, credits, AI Usage, notes. Mine. AI Usage — honest and specific Added ## AI Usage to the README. Full version in AI_USAGE_DRAFT.md. Most of this codebase is mine. I wrote the structure, features, and UI logic. AI helped with: early scaffolding, CSS debugging, the World Monitor embed, earlier README drafts, and this pass (keyboard shortcuts, todos/focus/clock rewrites, README polish). I picked the product direction, features, and defaults. Tested everything in the browser. Reviewed before it shipped. Wrote the final README and disclosure myself. Not claiming AI wrote zero. Also not claiming it wrote the project. Ask me about any part of the code. Keyboard shortcuts — Feature A, built that same burst / focuses search (skipped while typing in a field) Esc closes Super Menu / map, blurs the field 1–9 opens that dock shortcut T opens themes Hint card under Super Menu → Tools Search input has title=“Press / to jump here” Extended the existing keydown path instead of duplicating it. Ignore shortcuts when you’re in an input/textarea/contentEditable (except Esc). preventDefault only when I actually handle the key. Also rewrote renderTodos, the focus timer, and tick/clock in a plainer style — same behavior, no comments, easier to explain line by line. Codebase — I know how it works Boot: loadState → theme/wallpaper → render → bind → tick → optional map. State: localStorage newtab_state_v6. Map: World Monitor blocks iframes, so fetch HTML → inject → rewrite assets → srcdoc → fallback link. Keyboard: handleKeys at the end of bind(). Cleanup Dropped planning docs, unused images/fonts/brand files, and a dead answer-card UI. Kept AI_USAGE_DRAFT.md. Zero broken asset refs. Pushed Latest: 96ce241 Live matches: https://anonymouscoderartist.github.io/custom-new-tab/ If a judge asks “did AI write this?” the answer matches the AI Usage section. Throw any file at me and I’ll walk through it.
Ships:
Custom New Tab — a JARVIS-flavored browser home base What I built A completely custom new-tab experience — think glass UI, a greeting that shifts with the time of day, a centered search bar, a side dock of shortcuts that magnifies its neighbors when you hover, a Super Menu packed with clock, weather, todos, notes, themes, and wallpaper controls, plus an optional geopolitical live map (World Monitor) and animated anime wallpapers you can toggle off when you want focus. It’s not a theme slapped on Chrome’s defaults. Every surface — the glass panels, the background rays and particles, the hero type, the dock behavior — was hand-built and borrowed spirit from JARVIS-style interfaces, then wired into something that actually feels like my dashboard. Live: https://anonymouscoderartist.github.io/custom-new-tab/ What was challenging The map fights you back. World Monitor blocks being iframed, so I had to fetch their HTML client-side, inject a tag, rewrite root-relative assets, and smuggle it in via srcdoc — with a graceful fallback when that fails. Neighbor magnify is fiddly CSS. Getting ±1 and ±2 dock icons to scale in a wave (1.35 / 1.18 / 1.08) without clipping or fighting the scroll container took real iteration — :has(), padding reserves, mobile overrides. The search bar went through an identity crisis. Square? Too tall. Bottom-anchored? Not JARVIS enough. Final answer: centered at 54%, pill-sized, chips tucked inside the orb directly under the input. Deploy trust. Every push means polling GitHub Pages until the build is genuinely built and the live bytes match local — CDN caches love to lie to you for a minute. What I’m proud of Honestly? The details that don’t announce themselves: Hover the dock and watch the ripple of scale — it feels alive. The Super Menu has no tacky white sheen; the title still shimmers. Fonts are fully local — nothing phones home. It ships with a real default dashboard URL, not a placeholder. State lives in localStorage only. Your todos and notes never leave the browser. I didn’t just assemble widgets. I made a UI with a point of view. How to test it (please do) Open it: https://anonymouscoderartist.github.io/custom-new-tab/ — or locally: npm run dev → http://localhost:3000 Watch the greeting — reload at different times of day; it changes. Search bar — dead center. Type and hit Enter (Google by default). Change the engine in Super Menu → Search. Dock hover test — mouse across the shortcut icons. Nearest neighbors should scale up in a wave. Click × to delete one, add your own from Super Menu. Super Menu (top right) — poke everything: clock, weather, todos, notes, theme dots (bottom-right: blue/purple/mixed/minimal), wallpaper on/off, JARVIS effects toggle, custom dashboard URL. Map chip — hit Show Map. Should load the exact World Monitor view (conflicts, sanctions, weather, satellites, the works). If it ever blanks, you’ll see a fallback instead of a dead frame. Wallpaper — flip through live anime videos and photo presets; try it with effects off for a clean, quiet version. Credits where due: JARVIS for the visual soul, World Monitor for the dashboard, Pixabay & Unsplash for wallpapers, Oxanium/Maven Pro/Geist for type, Google’s favicon service for shortcut icons. Go break it. 🛠️...
|
1793213678.144587
|
1793300078.144587
|
|
7792
|
Undertakes Chess Engine by @shreeyans_vichare | St Undertakes Chess Engine by @shreeyans_vichare | Stardance...
|
shreeyans_vichare
|
0
|
0.52
|
0
|
[]
|
[{"post_id": 7298, "ts": "2026 [{"post_id": 7298, "ts": "2026-06-12T05:11:05Z", "hours": 0.5175, "text": "Finally got a basic chess board representation using Bitboards. Understanding bitboards has been challenging and it’s a little difficult. No matter what it’s kinda intuitive so I hope I can implement piece movement soon!! Wish me luck because this seems insanely difficult to implement. Thank you for your time!!"}]...
|
Title: Undertakes Chess Engine by @shreeyans_vicha Title: Undertakes Chess Engine by @shreeyans_vichare | Stardance
Devlogs:
Finally got a basic chess board representation using Bitboards. Understanding bitboards has been challenging and it’s a little difficult. No matter what it’s kinda intuitive so I hope I can implement piece movement soon!! Wish me luck because this seems insanely difficult to implement. Thank you for your time!!...
|
1793350627.1678338
|
1793955427.1678338
|
|
60042
|
A Game by @1kehuynh | Stardance
|
1kehuynh
|
0
|
27.38
|
0
|
[]
|
[{"post_id": 72981, "ts": "202 [{"post_id": 72981, "ts": "2026-09-24T04:54:44Z", "hours": 7.5389, "text": "I added a mute button and now you can move the camera."}, {"post_id": 71001, "ts": "2026-09-20T05:54:47Z", "hours": 2.04, "text": "now tung tung tung sahur can move now. the whip also has audio."}, {"post_id": 70784, "ts": "2026-09-19T19:17:49Z", "hours": 11.1281, "text": "I added tung tung tung sahur and a whip animation i guess. I don’t really know how to record it on a mac so it doesn’t really look like I accomplished much in the screenshot, but I did do stuff."}, {"post_id": 67130, "ts": "2026-09-13T06:02:22Z", "hours": 3.1556, "text": "I think I acomplished something. Am just not fully sure what I’m doing. Still haven’t decided what the actual gameplay loop would be but I’m getting there."}, {"post_id": 65808, "ts": "2026-09-11T06:03:21Z", "hours": 3.5206, "text": "I think I finished my menu. IDK"}]...
|
Title: A Game by @1kehuynh | Stardance
Devlogs:
I Title: A Game by @1kehuynh | Stardance
Devlogs:
I think I finished my menu. IDK
I think I acomplished something. Am just not fully sure what I’m doing. Still haven’t decided what the actual gameplay loop would be but I’m getting there.
I added tung tung tung sahur and a whip animation i guess. I don’t really know how to record it on a mac so it doesn’t really look like I accomplished much in the screenshot, but I did do stuff.
now tung tung tung sahur can move now. the whip also has audio.
I added a mute button and now you can move the camera....
|
1793030068.577121
|
1793634868.577121
|
|
63343
|
Niro's Clock by @Nurazkhan | Stardance
|
Nurazkhan
|
0
|
7.35
|
0
|
[]
|
[{"post_id": 72982, "ts": "202 [{"post_id": 72982, "ts": "2026-09-24T04:59:47Z", "hours": 2.8294, "text": "The firmware is done! NiroClock design completed. The only thing remaining to actually build it. For that i need help of stardance. Lets write how making firmware went. Actually, i thing it was harder than routing or 3d modelling but in some state very interesting. Again instructions are not enought to make good alarm, as they stop only on how to use display. Yet, i had experience with arduino ide and c++ so was able to make my own system. To learn i read through githubs of other projects in the same mission and build my own unique one with 5 pages, with secondmeter, with different display modes and I liked how i though about every second literally. it was about time conversion, storing. Also, i applied my previous experience from making macropads on how to handle button press. But there was multiple syntax error as i really get confused java and c++ sometimes. Some parts became repetitive and that was boring, making the similar button control to other pages with similar time conversion. At then though I saw what huge task i have done and I am happy for that. it actually works and happy to build it. I will organize everything in correct repo structure and wait it to be approved."}, {"post_id": 72174, "ts": "2026-09-22T11:40:24Z", "hours": 3.1169, "text": "#NiroClock completed by 2/3. 3D Done. It looks more like a dumb terminal or an old computer. It was done intentionally. I believe it has its own vibe. So the total time spent was a little more than 3h. Time passed so fast I didn’t notice. Yet it was interesting, so I don’t regret. Firstly, I imported the display and the pcb that i designed. and the instruction had some new information for me. I fastened them with offset and put angle as i wanted. (But in future, this angle led to some frustration). I learned about assembly context for the first time. It was new and helpful for me. I first made bottom case went straight forward until I changed angle of display and updated context and everything shifted. So, I spent some time trying to return. Nevertheless, I just again counter shifted it so it seems to solve situation. My case consist of 4 parts and I though about fasteners for each. I liked my design. But I tried to foresee printing problems but I suppose there is still going to be some printing problems due to the angled display. I also worry about keycaps if they are going to fit. in theory and by my calculations they should fit, but hope it will work in reality too. I created type C port; I have no worries about it. I liked the process and excited to make it in real life"}, {"post_id": 71711, "ts": "2026-09-21T11:08:19Z", "hours": 1.4003, "text": "NiroClock V0.333 well 1/3 of the project is done. PCB part is completed and let me go through the process. Currently, it doesn’t seem unique and in most similar with project from instructions. Though, without much variety of components It seems ok. This layout is just necessary for my idea, and at the end it won’t be similar to the project done in the instruction. I am currently thinking about design that would look like old computer, but not sure if i can make it with my CAD skills. It definitely worth trying though. Schematics and routing was pretty easy to be honest. As there isn’t much components to get confused by. So, things went pretty straightforward. Yet, one thing frustrated me. I went from kiCad 9.0 to 10.0 and this update went with loss of some previous data including 3d models of Switches. And I dont know why i couldn’t update them all at once, so had to change the d model of each switch manually. That was most boring part. I liked again adding silk art. I love my logo so I put it everywhere. I also used Poppins font it seems more modern to me. I could have added more images, but i am out of ideas. So, I kept only essential part. I hope in the CAD part I can express more of my personality and uniqueness in this misson."}]...
|
Title: Niro's Clock by @Nurazkhan | Stardance
Title: Niro's Clock by @Nurazkhan | Stardance
Devlogs:
NiroClock V0.333 well 1/3 of the project is done. PCB part is completed and let me go through the process. Currently, it doesn’t seem unique and in most similar with project from instructions. Though, without much variety of components It seems ok. This layout is just necessary for my idea, and at the end it won’t be similar to the project done in the instruction. I am currently thinking about design that would look like old computer, but not sure if i can make it with my CAD skills. It definitely worth trying though. Schematics and routing was pretty easy to be honest. As there isn’t much components to get confused by. So, things went pretty straightforward. Yet, one thing frustrated me. I went from kiCad 9.0 to 10.0 and this update went with loss of some previous data including 3d models of Switches. And I dont know why i couldn’t update them all at once, so had to change the d model of each switch manually. That was most boring part. I liked again adding silk art. I love my logo so I put it everywhere. I also used Poppins font it seems more modern to me. I could have added more images, but i am out of ideas. So, I kept only essential part. I hope in the CAD part I can express more of my personality and uniqueness in this misson.
#NiroClock completed by 2/3. 3D Done. It looks more like a dumb terminal or an old computer. It was done intentionally. I believe it has its own vibe. So the total time spent was a little more than 3h. Time passed so fast I didn’t notice. Yet it was interesting, so I don’t regret. Firstly, I imported the display and the pcb that i designed. and the instruction had some new information for me. I fastened them with offset and put angle as i wanted. (But in future, this angle led to some frustration). I learned about assembly context for the first time. It was new and helpful for me. I first made bottom case went straight forward until I changed angle of display and updated context and everything shifted. So, I spent some time trying to return. Nevertheless, I just again counter shifted it so it seems to solve situation. My case consist of 4 parts and I though about fasteners for each. I liked my design. But I tried to foresee printing problems but I suppose there is still going to be some printing problems due to the angled display. I also worry about keycaps if they are going to fit. in theory and by my calculations they should fit, but hope it will work in reality too. I created type C port; I have no worries about it. I liked the process and excited to make it in real life
The firmware is done! NiroClock design completed. The only thing remaining to actually build it. For that i need help of stardance. Lets write how making firmware went. Actually, i thing it was harder than routing or 3d modelling but in some state very interesting. Again instructions are not enought to make good alarm, as they stop only on how to use display. Yet, i had experience with arduino ide and c++ so was able to make my own system. To learn i read through githubs of other projects in the same mission and build my own unique one with 5 pages, with secondmeter, with different display modes and I liked how i though about every second literally. it was about time conversion, storing. Also, i applied my previous experience from making macropads on how to handle button press. But there was multiple syntax error as i really get confused java and c++ sometimes. Some parts became repetitive and that was boring, making the similar button control to other pages with similar time conversion. At then though I saw what huge task i have done and I am happy for that. it actually works and happy to build it. I will organize everything in correct repo structure and wait it to be approved....
|
1793051364.8392658
|
1793656164.8392658
|
|
33729
|
CloudNext Dashboard by @Samuel-Dingle | Stardance
|
Samuel-Dingle
|
0
|
7.36
|
0
|
[]
|
[{"post_id": 72984, "ts": "202 [{"post_id": 72984, "ts": "2026-09-24T05:09:26Z", "hours": 0.455, "text": "Devlog 4 - Categorisation! So in the previous devlog I added the DNS page and made it show records. I decided to add some categorisation tools to help you find important records, such as Mail, Tunnels, and Workers. I’ll soon work on a search bar and showing details in the dashboard. After that, I’ll finish the other pages and add an onboarding flow. As I worked on creating lots of elements at the start that follow a consistent design style, I am able to work a lot faster!"}, {"post_id": 72002, "ts": "2026-09-21T23:45:41Z", "hours": 2.1867, "text": "Devlog 3 - Showing Data! So after doing a bit of research and playing around with Cloudflare, I was able to set up my API key and have it correctly show data when I pulled DNS records. I also decided to migrate the app over to Electron. I primarily chose this because I was running out of time to complete the project, and didn’t want to add the stress of a database to hold API keys, login systems, and web hosting with so little time before the end of Stardance. However, unlike some of my other projects, this will work across macOS and Windows! Because the whole point of the dashboard is to display data easily, I decided to show just the Type, Name, TTL and Proxy Status and the content. I used my existing table element I wrote previously and just set up the app so that the data is pulled when you go to the DNS page, and it will auto populate. I also decided to make the sidebar collapsible to give more space to view things, and the next step I will be working on is building a small view for the DNS details on the dashboard. I’m planning to show how many records you have, the types of records, and have a small dropdown to see the different zones. After that, I will just be displaying SSL status, Analytics, if available, and hopefully Cloudflare Tunnel details, such as uptime, if they are up or down, and their IPs."}, {"post_id": 39884, "ts": "2026-08-03T05:06:00Z", "hours": 3.3364, "text": "# Devlog 1 - Design and Components Over the last few weeks, I’ve been working on designing some custom components for CloudNext, so that I can use them later and save myself some time. I added the following: Sidebar - This component is the bar at the side with options to view the specific data pulled from API endpoints. Top Bar - This component is at the top, where you can see your authentication status (I added Auth, read more below on that!) and you can switch zones. Badge - This component is designed for small little notes, like whether something is active, has an error or another issue. It will also be used for what each DNS Record is for, as well as the type (MX, TXT, Tunnel, A, CNAME, etc.) Status Dot - This component is similar to the badge, but is just a small colored dot for lower priority events. Card/ZoneCard - This component is a card for details on analytics, and details on zone statuses. Table - This component is for DNS Records, so you can see them at a glance. Authentication So because it is of the utmost importance to keep your API keys safe, especially as I want to add DNS editing later, I decided to go with Clerk for handling authentication for the app. rather than designing my own system using Firebase, I wanted something used by large companies that I can trust is secure, and isn’t susceptible to issues I haven’t patched or noticed while configuring the app. I’m planning on using Prisma ORM and PostgreSQL with RLS to handle storing the keys, and I will obviously be hashing them so that they are highly secure. I also implemented access control, so you can’t type in certain dashboard details and automatically be into their dash, as you will be redirected to the login page. I’ve decided to also integrate the clerk account details into the top bar of the app itself to keep the UI clean, and I’m hoping to adjust the account settings page and recode it to fit the existing design of the app. I attached a simple image of the elements I made so that you can see the design I am going for (kinda similar to Cloudflare and Linear.app)."}, {"post_id": 27024, "ts": "2026-07-12T05:39:54Z", "hours": 1.38, "text": "Devlog 1 - API Building! Hey! This is my first devlog for CloudNext , a Next.js-based dashboard using the Cloudflare API. I’m building this because I wanted something simple to check my Cloudflare stats without having to dig through all the menus. Most of my time was spent creating and debugging the four API endpoints I’ve made so far. The debugging took much longer than expected because, in my infinite wisdom, I created the wrong type of API token (an Account Token instead of a User Token ). No matter what I tried, every request was blocked. (I know… I’m so smart.) The four endpoints I have working at the moment are: Zones Endpoint – Shows information about your Cloudflare-managed domains. DNS Endpoint – Lists all of your DNS records, and maybe in the future I’ll add the ability to create or edit records. Analytics Endpoint – Displays information like DNS query counts and other traffic analytics for your domains. SSL Endpoint – Shows your current SSL/TLS encryption mode and whether your certificates are active or valid. Now that I have a working API, the next step is to build a nice-looking dashboard using placeholder data. Once the UI is finished, I’ll hook everything up to the live Cloudflare data. The logic itself is actually pretty simple. Each endpoint just makes a request to the Cloudflare API and returns the response as JSON. I tested everything in Insomnia first because it gives really nice output for debugging. Here’s the Zones endpoint: import { NextResponse } from \" next/server \" ; import cf from \" @/lib/cloudflare/client \" ; // This just imports the Cloudflare API Client export async function GET () { try { const zones = await cf . zones . list (); return NextResponse . json ( zones ); } catch ( error ) { return NextResponse . json ( { error : \" Failed to fetch zones \" }, { status : 500 } ); } } Anyway, thanks for reading this Devlog! Maybe the next one will be a bit shorter lol"}]...
|
Title: CloudNext Dashboard by @Samuel-Dingle | Sta Title: CloudNext Dashboard by @Samuel-Dingle | Stardance
Devlogs:
Devlog 1 - API Building! Hey! This is my first devlog for CloudNext , a Next.js-based dashboard using the Cloudflare API. I’m building this because I wanted something simple to check my Cloudflare stats without having to dig through all the menus. Most of my time was spent creating and debugging the four API endpoints I’ve made so far. The debugging took much longer than expected because, in my infinite wisdom, I created the wrong type of API token (an Account Token instead of a User Token ). No matter what I tried, every request was blocked. (I know… I’m so smart.) The four endpoints I have working at the moment are: Zones Endpoint – Shows information about your Cloudflare-managed domains. DNS Endpoint – Lists all of your DNS records, and maybe in the future I’ll add the ability to create or edit records. Analytics Endpoint – Displays information like DNS query counts and other traffic analytics for your domains. SSL Endpoint – Shows your current SSL/TLS encryption mode and whether your certificates are active or valid. Now that I have a working API, the next step is to build a nice-looking dashboard using placeholder data. Once the UI is finished, I’ll hook everything up to the live Cloudflare data. The logic itself is actually pretty simple. Each endpoint just makes a request to the Cloudflare API and returns the response as JSON. I tested everything in Insomnia first because it gives really nice output for debugging. Here’s the Zones endpoint: import { NextResponse } from " next/server " ; import cf from " @/lib/cloudflare/client " ; // This just imports the Cloudflare API Client export async function GET () { try { const zones = await cf . zones . list (); return NextResponse . json ( zones ); } catch ( error ) { return NextResponse . json ( { error : " Failed to fetch zones " }, { status : 500 } ); } } Anyway, thanks for reading this Devlog! Maybe the next one will be a bit shorter lol
# Devlog 1 - Design and Components Over the last few weeks, I’ve been working on designing some custom components for CloudNext, so that I can use them later and save myself some time. I added the following: Sidebar - This component is the bar at the side with options to view the specific data pulled from API endpoints. Top Bar - This component is at the top, where you can see your authentication status (I added Auth, read more below on that!) and you can switch zones. Badge - This component is designed for small little notes, like whether something is active, has an error or another issue. It will also be used for what each DNS Record is for, as well as the type (MX, TXT, Tunnel, A, CNAME, etc.) Status Dot - This component is similar to the badge, but is just a small colored dot for lower priority events. Card/ZoneCard - This component is a card for details on analytics, and details on zone statuses. Table - This component is for DNS Records, so you can see them at a glance. Authentication So because it is of the utmost importance to keep your API keys safe, especially as I want to add DNS editing later, I decided to go with Clerk for handling authentication for the app. rather than designing my own system using Firebase, I wanted something used by large companies that I can trust is secure, and isn’t susceptible to issues I haven’t patched or noticed while configuring the app. I’m planning on using Prisma ORM and PostgreSQL with RLS to handle storing the keys, and I will obviously be hashing them so that they are highly secure. I also implemented access control, so you can’t type in certain dashboard details and automatically be into their dash, as you will be redirected to the login page. I’ve decided to also integrate the clerk account details into the top bar of the app itself to keep the UI clean, and I’m hoping to adjust the account settings page and recode it to fit the existing design of the app. I attached a simple image of the elements I made so that you can see the design I am going for (kinda similar to Cloudflare and Linear.app).
Devlog 3 - Showing Data! So after doing a bit of research and playing around with Cloudflare, I was able to set up my API key and have it correctly show data when I pulled DNS records. I also decided to migrate the app over to Electron. I primarily chose this because I was running out of time to complete the project, and didn’t want to add the stress of a database to hold API keys, login systems, and web hosting with so little time before the end of Stardance. However, unlike some of my other projects, this will work across macOS and Windows! Because the whole point of the dashboard is to display data easily, I decided to show just the Type, Name, TTL and Proxy Status and the content. I used my existing table element I wrote previously and just set up the app so that the data is pulled when you go to the DNS page, and it will auto populate. I also decided to make the sidebar collapsible to give more space to view things, and the next step I will be working on is building a small view for the DNS details on the dashboard. I’m planning to show how many records you have, the types of records, and have a small dropdown to see the different zones. After that, I will just be displaying SSL status, Analytics, if available, and hopefully Cloudflare Tunnel details, such as uptime, if they are up or down, and their IPs.
Devlog 4 - Categorisation! So in the previous devlog I added the DNS page and made it show records. I decided to add some categorisation tools to help you find important records, such as Mail, Tunnels, and Workers. I’ll soon work on a search bar and showing details in the dashboard. After that, I’ll finish the other pages and add an onboarding flow. As I worked on creating lots of elements at the start that follow a consistent design style, I am able to work a lot faster!...
|
1793278233.392872
|
1793883033.392872
|
|
64415
|
My very own WebOS by @shyamks1828 | Stardance
|
shyamks1828
|
1
|
1.41
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-22T15:58:48Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "halloo guys. so i am shipping this for webos mission. heres to summarise what ive done Built a basic WebOS by following the guide Added a recognizable bg Included a working clock added two of my own games. no they were not coded during hrs logged for this proj. but i welocme feedbakc pls do comment abt it Added a notes app,the terminal is currently a placeholder Used little AI during development, but is actively learning and improving will add more features in the future do watch out!!", "repo": "https://github.com/coderrcboy/My-own-webos", "demo": "https://coderrcboy.github.io/My-own-webos/"}]...
|
[{"post_id": 72988, "ts": "202 [{"post_id": 72988, "ts": "2026-09-24T05:30:27Z", "hours": 0.4144, "text": "halloo guys, i added a small clock widget on the top right of the os. i also a dded a login option. just eneter a username you like and play. pls i insist yall check out flappy bird but mainly FPS game i want your review on it i might upload devlog with changes i made on that. i also made the explorer working u can open or rename saved files. as usual disclaimer Ai was used."}, {"post_id": 72278, "ts": "2026-09-22T15:55:00Z", "hours": 0.8436, "text": "hi guyss. followed th guide and made os pretty generic. did add tha well known bg tho. it looks sick. will add more features in the future. also added two video games. feel free to give feedback abt that too. also i used a bit much ai. ye hate to admit but im improving. features to summarise include multiple windows time and 2 games and notes app stuff like terminal still placeholders. anyway c yall later"}, {"post_id": 71760, "ts": "2026-09-21T13:49:17Z", "hours": 0.2725, "text": "halloo guyss. I know it looks very crude but beleive me when i say there is somethingcooking. i have agreat vision i think. it should hopefully workout great. i have added a icon for an about page. a notepad and a terminal. terminals just a place holder:). c yall next devlog."}, {"post_id": 71721, "ts": "2026-09-21T11:39:38Z", "hours": 0.2761, "text": "Heloo guyss. I am making a webOS for gaming relaated stuff and games. I have just now started. this is pilot devlog. also i will be open about this I am using ai to a certain extent. mainly to get one aesthetic colour combination. however following devlogs you will see theres a more human touch to this☺️☺️"}]...
|
Title: My very own WebOS by @shyamks1828 | Stardan Title: My very own WebOS by @shyamks1828 | Stardance
Devlogs:
Heloo guyss. I am making a webOS for gaming relaated stuff and games. I have just now started. this is pilot devlog. also i will be open about this I am using ai to a certain extent. mainly to get one aesthetic colour combination. however following devlogs you will see theres a more human touch to this☺️☺️
halloo guyss. I know it looks very crude but beleive me when i say there is somethingcooking. i have agreat vision i think. it should hopefully workout great. i have added a icon for an about page. a notepad and a terminal. terminals just a place holder:). c yall next devlog.
hi guyss. followed th guide and made os pretty generic. did add tha well known bg tho. it looks sick. will add more features in the future. also added two video games. feel free to give feedback abt that too. also i used a bit much ai. ye hate to admit but im improving. features to summarise include multiple windows time and 2 games and notes app stuff like terminal still placeholders. anyway c yall later
halloo guys, i added a small clock widget on the top right of the os. i also a dded a login option. just eneter a username you like and play. pls i insist yall check out flappy bird but mainly FPS game i want your review on it i might upload devlog with changes i made on that. i also made the explorer working u can open or rename saved files. as usual disclaimer Ai was used.
Ships:
halloo guys. so i am shipping this for webos mission. heres to summarise what ive done Built a basic WebOS by following the guide Added a recognizable bg Included a working clock added two of my own games. no they were not coded during hrs logged for this proj. but i welocme feedbakc pls do comment abt it Added a notes app,the terminal is currently a placeholder Used little AI during development, but is actively learning and improving will add more features in the future do watch out!!...
|
1793213583.3676798
|
1793299983.3676798
|
|
3763
|
Hacka-Plat by @Powerblock | Stardance
|
Powerblock
|
1
|
13.0
|
220
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-12T05:14:48Z", "hours": 13.0, "multiplier": 17.56, "payout": 220, "blessing": "neutral", "text": "I made a 2D platformer where you solve the levels by “hacking” (moving) the platforms in game.", "repo": "https://github.com/Powerblock2000/hacka-plat/", "demo": "https://hacka-plat.netlify.app/"}]...
|
[{"post_id": 7299, "ts": "2026 [{"post_id": 7299, "ts": "2026-06-12T05:13:08Z", "hours": 0.7533, "text": "Finally fixed web exports with git LFS"}, {"post_id": 7145, "ts": "2026-06-11T22:43:15Z", "hours": 4.9644, "text": "Finished level 3 and credits scene; ALL DONE!!!!"}, {"post_id": 2346, "ts": "2026-06-04T19:50:53Z", "hours": 1.2392, "text": "Finished tutorial"}, {"post_id": 1133, "ts": "2026-06-02T23:38:37Z", "hours": 3.0217, "text": "Working on tutorial"}, {"post_id": 888, "ts": "2026-06-02T16:41:25Z", "hours": 1.9089, "text": "Finished Main Menu"}, {"post_id": 600, "ts": "2026-06-02T03:01:48Z", "hours": 0.9722, "text": "Almost finished with main menu"}, {"post_id": 566, "ts": "2026-06-02T01:52:02Z", "hours": 0.4747, "text": "Just finished character controller"}]...
|
Title: Hacka-Plat by @Powerblock | Stardance
Devl Title: Hacka-Plat by @Powerblock | Stardance
Devlogs:
Just finished character controller
Almost finished with main menu
Finished Main Menu
Working on tutorial
Finished tutorial
Finished level 3 and credits scene; ALL DONE!!!!
Finally fixed web exports with git LFS
Ships:
I made a 2D platformer where you solve the levels by “hacking” (moving) the platforms in game....
|
1793267479.9547482
|
1793353879.9547482
|
|
65314
|
vector by @itzprodhosh | Stardance
|
itzprodhosh
|
1
|
7.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T05:54:03Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "soo vector is a student task management app this is a really coool ui and minimalist app that i did it only has the essential features a student needs of course we can do lot of integrations, more pages etc but i feel we dont do it consistently in such apps made using nextjs, typescript, zustand, resend, supabase lemme know ur thoughts", "repo": "https://github.com/prodhosh/vector", "demo": "https://vector.prodhosh.me"}]...
|
[{"post_id": 72993, "ts": "202 [{"post_id": 72993, "ts": "2026-09-24T05:51:03Z", "hours": 7.1556, "text": "ive built the dashboard, initialzed the components etc and worked on these 3 pages again my main goal is to keep these app as mimalistic and only the essential features only in here"}]...
|
Title: vector by @itzprodhosh | Stardance
Devlogs Title: vector by @itzprodhosh | Stardance
Devlogs:
ive built the dashboard, initialzed the components etc and worked on these 3 pages again my main goal is to keep these app as mimalistic and only the essential features only in here
Ships:
soo vector is a student task management app this is a really coool ui and minimalist app that i did it only has the essential features a student needs of course we can do lot of integrations, more pages etc but i feel we dont do it consistently in such apps made using nextjs, typescript, zustand, resend, supabase lemme know ur thoughts...
|
1793213743.4293258
|
1793300143.4293258
|
|
23982
|
OSSfolio by @itzprodhosh | Stardance
|
itzprodhosh
|
1
|
3.6
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-30T04:35:53Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What is OSSfolio? GitHub shows your repos. OSSfolio shows you. OSSfolio is a free, open-source platform where every contributor gets a public profile page at https://ossfolio.qzz.io//username — showcasing the full picture of their open-source journey. The PRs you merged into other projects, the issues you filed, the orgs you contributed to, the programs you participated in like GSoC or GSSoC — all in one shareable link. No manual input. Just sign in with GitHub and your profile is ready. Why does this exist? GitHub profiles are built around repositories — stars, forks, and commit graphs tell only part of the story. If you have spent months reviewing PRs, triaging issues, contributing to other people’s projects, or participating in GSoC/GSSoC — none of that shows up clearly on your GitHub profile. Recruiters miss it. Maintainers miss it. You cannot share it. OSSfolio is built to fix that — for students applying to GSoC, for developers sharing their work with recruiters, and for anyone who wants their contributions to actually be seen.", "repo": "https://github.com/PRODHOSH/ossfolio", "demo": "https://ossfolio.qzz.io/"}]...
|
[{"post_id": 72998, "ts": "202 [{"post_id": 72998, "ts": "2026-09-24T05:59:15Z", "hours": 2.5961, "text": "new version out now"}, {"post_id": 18972, "ts": "2026-06-30T04:35:13Z", "hours": 1.3169, "text": "Checkout ossfolio! What is ossfolio? GitHub shows your repos. OSSfolio shows you.OSSfolio is a free, open-source platform where every contributor gets a public profile page at https://ossfolio.qzz.io//username — showcasing the full picture of their open-source journey. The PRs you merged into other projects, the issues you filed, the orgs you contributed to, the programs you participated in like GSoC or GSSoC — all in one shareable link. Its a really cool project"}]...
|
Title: OSSfolio by @itzprodhosh | Stardance
Devlo Title: OSSfolio by @itzprodhosh | Stardance
Devlogs:
Checkout ossfolio! What is ossfolio? GitHub shows your repos. OSSfolio shows you.OSSfolio is a free, open-source platform where every contributor gets a public profile page at https://ossfolio.qzz.io//username — showcasing the full picture of their open-source journey. The PRs you merged into other projects, the issues you filed, the orgs you contributed to, the programs you participated in like GSoC or GSSoC — all in one shareable link. Its a really cool project
new version out now
Ships:
What is OSSfolio? GitHub shows your repos. OSSfolio shows you. OSSfolio is a free, open-source platform where every contributor gets a public profile page at https://ossfolio.qzz.io//username — showcasing the full picture of their open-source journey. The PRs you merged into other projects, the issues you filed, the orgs you contributed to, the programs you participated in like GSoC or GSSoC — all in one shareable link. No manual input. Just sign in with GitHub and your profile is ready. Why does this exist? GitHub profiles are built around repositories — stars, forks, and commit graphs tell only part of the story. If you have spent months reviewing PRs, triaging issues, contributing to other people’s projects, or participating in GSoC/GSSoC — none of that shows up clearly on your GitHub profile. Recruiters miss it. Maintainers miss it. You cannot share it. OSSfolio is built to fix that — for students applying to GSoC, for developers sharing their work with recruiters, and for anyone who wants their contributions to actually be seen....
|
1793310959.7768497
|
1793397359.7768497
|
|
62673
|
Your own Nasaland by @airinazaria_h_putri | Starda Your own Nasaland by @airinazaria_h_putri | Stardance...
|
airinazaria_h_putri
|
0
|
1.12
|
0
|
[]
|
[{"post_id": 73002, "ts": "202 [{"post_id": 73002, "ts": "2026-09-24T06:12:11Z", "hours": 1.1186, "text": "Just finished the basic HTML, JS, and API! Now it’s time for the fun part, making it feel more me! I’m thinking of going with a fantasy theme this time.."}]...
|
Title: Your own Nasaland by @airinazaria_h_putri | Title: Your own Nasaland by @airinazaria_h_putri | Stardance
Devlogs:
Just finished the basic HTML, JS, and API! Now it’s time for the fun part, making it feel more me! I’m thinking of going with a fantasy theme this time.....
|
1793047719.3983562
|
1793652519.3983562
|
|
63913
|
ESP LED Driver by @OakTree | Stardance
|
OakTree
|
0
|
13.41
|
0
|
[]
|
[{"post_id": 73005, "ts": "202 [{"post_id": 73005, "ts": "2026-09-24T06:22:40Z", "hours": 2.1272, "text": "submitted for funding already. my bom had a lot of holes for some reason (i think i know who to blame), but i fixed it and finally got to submit it for review. now gotta wait. and also make new projects bc i CANNOT lose that sticky streak. also made a really basic interference fit case that just exposes the terminals so ye."}, {"post_id": 72111, "ts": "2026-09-22T06:01:13Z", "hours": 1.3336, "text": "Exported the gerbers, got the quote, did most of the BOM, made the readme better, blah blah blah. Next step now is to make a proper case for this thing in CAD. Lwk also procrastinated on my hw for this but like who cares right?"}, {"post_id": 72056, "ts": "2026-09-22T02:57:59Z", "hours": 4.3339, "text": "The PCB is finally done. Sorta got confused, a lot, especially with just the capacitors required to filter and smooth out stuff. But I did it, and now I just have to worry if the buck converter is gonna work at all. Other than that though, all I have to do now is pretty much just setup the github, design a case, and submit it for review! I personally also really enjoy how this looks for some reason, as its the first proper non-3d printed PCB project that uses an esp32, which I am excited to get to learn more about."}, {"post_id": 71021, "ts": "2026-09-20T06:52:43Z", "hours": 2.3003, "text": "I mostly just did basic cleanup, but upon verifying my schematic I realized that what I thought were mosfets (TIP41C) were actually not, causing them to produce much more heat than a mosfet would. Currently, I am in the process of determining a replacement, and retrofitting it into my current schematic/board."}, {"post_id": 70952, "ts": "2026-09-20T03:04:15Z", "hours": 3.3194, "text": "Home Assistant Compatible LED Driver Board I’ve been wanting something like this for a bit now, as I’ve just fallen into the world of Home Assistant, and ESPHome, and doing something like this seems like a much better way to control my lights than using a crappy 3d printed pcb with a buck converter hot glued to it. For my microcontroller, I chose the ESP32-C3-WROOM, because 1. the c3 is pretty cheap and abundant, 2. the WROOM version has castellated pads, which make it much easier to hand-solder, and 3. it is SMD mounted, compared to using a through hole esp uc. I’ve designed this PCB to have screw terminals for all power related I/O’s, and I’ve exposed every IO pin from the ESP32 to female headers for other miscellaneous dev projects. Due to complexities with installing a USB port, programming this board does require a UART to USB adapter, however it shouldn’t be that big of a problem due to ESPHome’s very convenient OTA updating feature. I’ve added 4 mosfets to drive 4 non-addressable led channels, and another terminal has outputs for addressable leds. I plan on the final product being powered over USB PD with a cheap trigger board."}]...
|
Title: ESP LED Driver by @OakTree | Stardance
Dev Title: ESP LED Driver by @OakTree | Stardance
Devlogs:
Home Assistant Compatible LED Driver Board I’ve been wanting something like this for a bit now, as I’ve just fallen into the world of Home Assistant, and ESPHome, and doing something like this seems like a much better way to control my lights than using a crappy 3d printed pcb with a buck converter hot glued to it. For my microcontroller, I chose the ESP32-C3-WROOM, because 1. the c3 is pretty cheap and abundant, 2. the WROOM version has castellated pads, which make it much easier to hand-solder, and 3. it is SMD mounted, compared to using a through hole esp uc. I’ve designed this PCB to have screw terminals for all power related I/O’s, and I’ve exposed every IO pin from the ESP32 to female headers for other miscellaneous dev projects. Due to complexities with installing a USB port, programming this board does require a UART to USB adapter, however it shouldn’t be that big of a problem due to ESPHome’s very convenient OTA updating feature. I’ve added 4 mosfets to drive 4 non-addressable led channels, and another terminal has outputs for addressable leds. I plan on the final product being powered over USB PD with a cheap trigger board.
I mostly just did basic cleanup, but upon verifying my schematic I realized that what I thought were mosfets (TIP41C) were actually not, causing them to produce much more heat than a mosfet would. Currently, I am in the process of determining a replacement, and retrofitting it into my current schematic/board.
The PCB is finally done. Sorta got confused, a lot, especially with just the capacitors required to filter and smooth out stuff. But I did it, and now I just have to worry if the buck converter is gonna work at all. Other than that though, all I have to do now is pretty much just setup the github, design a case, and submit it for review! I personally also really enjoy how this looks for some reason, as its the first proper non-3d printed PCB project that uses an esp32, which I am excited to get to learn more about.
Exported the gerbers, got the quote, did most of the BOM, made the readme better, blah blah blah. Next step now is to make a proper case for this thing in CAD. Lwk also procrastinated on my hw for this but like who cares right?
submitted for funding already. my bom had a lot of holes for some reason (i think i know who to blame), but i fixed it and finally got to submit it for review. now gotta wait. and also make new projects bc i CANNOT lose that sticky streak. also made a really basic interference fit case that just exposes the terminals so ye....
|
1793055184.0539155
|
1793659984.0539155
|
|
64539
|
Pacousty by @HarvyLiu | Stardance
|
HarvyLiu
|
0
|
3.63
|
0
|
[]
|
[{"post_id": 73006, "ts": "202 [{"post_id": 73006, "ts": "2026-09-24T06:24:20Z", "hours": 1.0056, "text": "YES guys I’m a buku buku btw I finished some tools and the speech to text part, these are all simple code for now, I will extend and polish it after the whole picture is roughly done"}, {"post_id": 71832, "ts": "2026-09-21T16:53:13Z", "hours": 2.6261, "text": "Just learned how Needle 2 by cactus-compute works, and still testing if source and sink (input output)works perfectly on laptop (CachyOS) This voice assistant project uses needle 2 as the main AI model. Will only link to an LLM if needed."}]...
|
Title: Pacousty by @HarvyLiu | Stardance
Devlogs: Title: Pacousty by @HarvyLiu | Stardance
Devlogs:
Just learned how Needle 2 by cactus-compute works, and still testing if source and sink (input output)works perfectly on laptop (CachyOS) This voice assistant project uses needle 2 as the main AI model. Will only link to an LLM if needed.
YES guys I’m a buku buku btw I finished some tools and the speech to text part, these are all simple code for now, I will extend and polish it after the whole picture is roughly done...
|
1793065697.2319906
|
1793670497.2319906
|
|
65318
|
Real Estate Portfolio Website by @ctanmay334 | Sta Real Estate Portfolio Website by @ctanmay334 | Stardance...
|
ctanmay334
|
1
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T07:25:13Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Just a basic website. But really put up all my effort to build it from basic, evrything from basic to adcvanced is built by me. All the animations were a hefty task to d but i did it.", "repo": "https://github.com/tanmayybuilds/realty-blueprint", "demo": "https://vipinchoudhary.com/"}]...
|
[{"post_id": 73007, "ts": "202 [{"post_id": 73007, "ts": "2026-09-24T06:31:52Z", "hours": 8.0814, "text": "IT was awesome and a whoel new experince to build a production grade website"}]...
|
Title: Real Estate Portfolio Website by @ctanmay33 Title: Real Estate Portfolio Website by @ctanmay334 | Stardance
Devlogs:
IT was awesome and a whoel new experince to build a production grade website
Ships:
Just a basic website. But really put up all my effort to build it from basic, evrything from basic to adcvanced is built by me. All the animations were a hefty task to d but i did it....
|
1793213745.3747563
|
1793300145.3747563
|
|
55015
|
the AlwaysWake clock by @thaimin01 | Stardance
|
thaimin01
|
0
|
8.41
|
0
|
[]
|
[{"post_id": 73009, "ts": "202 [{"post_id": 73009, "ts": "2026-09-24T06:36:24Z", "hours": 0.8667, "text": "STARDANCE IS EXTENDED So i spend sometimes fixing my mistake for shipping and this is like the 5th times, 6th times maybe ?"}, {"post_id": 62614, "ts": "2026-09-06T02:36:53Z", "hours": 1.1667, "text": "SUPER HOT TAKE: PINEAPPLE ACTUALLY TASTE GOOD ON A PIZZA, YALL ARE JUST LARPING ITALIAN So today, i finished my 3d mode and went on a find for electric simulation, that has rp2040, C++ to code the rp2040 (ik ik i am weird). But apparently, they are either a client that only god khows how to use and a payed software on steam"}, {"post_id": 62064, "ts": "2026-09-05T09:21:28Z", "hours": 2.5, "text": "Cad So today, i started on the 3d modeling, and you expect to be something creative or cool. But since my creativity is being held back by some reasons… And i just mad a boring grey box. Yes, it’s a box, with 4 insert hole for head insert, ye thats it. not finished yet, maybe tomorrow. Looking at the grey box you wouldnt even think its a alarm clock"}, {"post_id": 60569, "ts": "2026-09-03T00:21:25Z", "hours": 0.8833, "text": "My horrible attemp at redisigning the PCB So. I thought to myself that “Oooh, i think the dip footprint is better” So I went on and redisgned it, But OMG theres just a bunch of errors so i just revert all the way to the og. Horrible anyway CAT"}, {"post_id": 56423, "ts": "2026-08-28T05:57:45Z", "hours": 1.3667, "text": "Devlog 2: Finished the pcb, write the read me and finished the project info"}, {"post_id": 55563, "ts": "2026-08-27T14:29:22Z", "hours": 1.6294, "text": "Devlog 1: New day, New project Finish the schematic Ye, that’s it"}]...
|
Title: the AlwaysWake clock by @thaimin01 | Starda Title: the AlwaysWake clock by @thaimin01 | Stardance
Devlogs:
Devlog 1: New day, New project Finish the schematic Ye, that’s it
Devlog 2: Finished the pcb, write the read me and finished the project info
My horrible attemp at redisigning the PCB So. I thought to myself that “Oooh, i think the dip footprint is better” So I went on and redisgned it, But OMG theres just a bunch of errors so i just revert all the way to the og. Horrible anyway CAT
Cad So today, i started on the 3d modeling, and you expect to be something creative or cool. But since my creativity is being held back by some reasons… And i just mad a boring grey box. Yes, it’s a box, with 4 insert hole for head insert, ye thats it. not finished yet, maybe tomorrow. Looking at the grey box you wouldnt even think its a alarm clock
SUPER HOT TAKE: PINEAPPLE ACTUALLY TASTE GOOD ON A PIZZA, YALL ARE JUST LARPING ITALIAN So today, i finished my 3d mode and went on a find for electric simulation, that has rp2040, C++ to code the rp2040 (ik ik i am weird). But apparently, they are either a client that only god khows how to use and a payed software on steam
STARDANCE IS EXTENDED So i spend sometimes fixing my mistake for shipping and this is like the 5th times, 6th times maybe ?...
|
1793137679.8821056
|
1793742479.8821056
|
|
63307
|
smart garden/farm model. by @ocynno | Stardance
|
ocynno
|
0
|
5.97
|
0
|
[]
|
[{"post_id": 73017, "ts": "202 [{"post_id": 73017, "ts": "2026-09-24T07:09:35Z", "hours": 1.5453, "text": "finally built. every component works almost finished."}, {"post_id": 72469, "ts": "2026-09-23T01:06:15Z", "hours": 2.2481, "text": "finnaly tested the real components i bought a week ago. they work perfectly and the code works, also cut some sensors i deemed to be too much, made the features less so its more simple and streamlined"}, {"post_id": 71623, "ts": "2026-09-21T05:59:46Z", "hours": 2.1742, "text": "Coding it to access Blynk and wifi, tested on the board not yet attached to all sensors and outputs. made a dashboard first time doing anything, spent 2 hours troubleshooting, forgot to record a timelapse"}]...
|
Title: smart garden/farm model. by @ocynno | Stard Title: smart garden/farm model. by @ocynno | Stardance
Devlogs:
Coding it to access Blynk and wifi, tested on the board not yet attached to all sensors and outputs. made a dashboard first time doing anything, spent 2 hours troubleshooting, forgot to record a timelapse
finnaly tested the real components i bought a week ago. they work perfectly and the code works, also cut some sensors i deemed to be too much, made the features less so its more simple and streamlined
finally built. every component works almost finished....
|
1793051322.6518183
|
1793656122.6518183
|
|
55343
|
Refracted by @mayoinasu | Stardance
|
mayoinasu
|
1
|
27.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T07:58:04Z", "hours": 27.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is my first puzzle game named Refracted! This is also the first time I have made a game with sprites created by my friend, so I get really excited and want to make it perfect. The hardest challenge when making this game is basically the box. TBH, at first I wanted to make the box able to rotate in 8 directions, while the tutorials that I found on YouTube only do 4 directions. At first, I thought I could change it easily, but it turns out impossible to do. I have to admit that for doing the box thing, I have to ask Claude AI to help me make it into 8 directions, and after I changed a lot of it, it still hasn’t worked. I finally gave up on making it 8 directions, which makes it harder for me to design the level. Another things that hard for me is making the hint. I’m actually having some story in my head about the lore, but when I made it into a hint, it just got blurred. Also, to make the player have to open all the hints in the corridor before doing the next level, I have to make a lot of conditionals, which I know. I think there are better options for doing this, but I’m still a beginner. I’m still using conditionals too much, but I finally made everything work! Also, by adding the BGM, sound effects, making the checkpoints thing, etc. There are many things that I just tried in this game! If you want to play this game, all you need to do is rotate the boxes to refract the light into another box until it reaches the sensor. But, you also need to do it fast! because there’s a hunger bar. Since our character is a human, she needs food to keep going. So, rotate the box, eat, and find the hint about what’s going on!", "repo": "https://github.com/mayoinasu/refracted", "demo": "https://mayoinasu.itch.io/refracted"}]...
|
[{"post_id": 73020, "ts": "202 [{"post_id": 73020, "ts": "2026-09-24T07:11:46Z", "hours": 2.8347, "text": "I’m finally able to make the fading and checkpoint! So, after player’s hungerbar is empty, the screen will faded and player will be revived on their last checkpoint!"}, {"post_id": 71228, "ts": "2026-09-20T14:18:13Z", "hours": 2.1244, "text": "So, I just finished making the hunger bar recover after the player eats food in the game. It’s still a bit delayed, but I hope I can fix it. At least, it works."}, {"post_id": 66638, "ts": "2026-09-12T14:22:26Z", "hours": 1.6164, "text": "I’m adding a hunger bar that decreases over time and also affects the player’s speed. Not only that, but I’m also fixing some of the bugs that appear (failing to change scenes). But for now, it works! I’ll add the audio after this, hoping that it will work well!"}, {"post_id": 61632, "ts": "2026-09-04T16:56:29Z", "hours": 5.3703, "text": "Atp, I just learned that making a level is hard, especially when your game is heavily focused on puzzles. I also confused with how I can make variety of level with a same mechanic"}, {"post_id": 61399, "ts": "2026-09-04T09:13:03Z", "hours": 3.815, "text": "I just realized my typo in this project: “censor” was supposed to be “sensor”, but at least I’m consistent, so it works nicely. 2. I’m finished making the first corridor! So, in my game, each level will be separated by a corridor, which will give a bit of a hint about the mystery. And I still have 4 other corridors to make!"}, {"post_id": 61240, "ts": "2026-09-04T02:28:41Z", "hours": 3.755, "text": "I’m finished making a censor in my game, so after the light is detected by the censor, it will open the door"}, {"post_id": 60819, "ts": "2026-09-03T13:21:38Z", "hours": 7.6197, "text": "For the main focus of my game (puzzle), I am finally able to create this mechanic! So you have to rotate the box to control the light"}]...
|
Title: Refracted by @mayoinasu | Stardance
Devlog Title: Refracted by @mayoinasu | Stardance
Devlogs:
For the main focus of my game (puzzle), I am finally able to create this mechanic! So you have to rotate the box to control the light
I’m finished making a censor in my game, so after the light is detected by the censor, it will open the door
I just realized my typo in this project: “censor” was supposed to be “sensor”, but at least I’m consistent, so it works nicely. 2. I’m finished making the first corridor! So, in my game, each level will be separated by a corridor, which will give a bit of a hint about the mystery. And I still have 4 other corridors to make!
Atp, I just learned that making a level is hard, especially when your game is heavily focused on puzzles. I also confused with how I can make variety of level with a same mechanic
I’m adding a hunger bar that decreases over time and also affects the player’s speed. Not only that, but I’m also fixing some of the bugs that appear (failing to change scenes). But for now, it works! I’ll add the audio after this, hoping that it will work well!
So, I just finished making the hunger bar recover after the player eats food in the game. It’s still a bit delayed, but I hope I can fix it. At least, it works.
I’m finally able to make the fading and checkpoint! So, after player’s hungerbar is empty, the screen will faded and player will be revived on their last checkpoint!
Ships:
This is my first puzzle game named Refracted! This is also the first time I have made a game with sprites created by my friend, so I get really excited and want to make it perfect. The hardest challenge when making this game is basically the box. TBH, at first I wanted to make the box able to rotate in 8 directions, while the tutorials that I found on YouTube only do 4 directions. At first, I thought I could change it easily, but it turns out impossible to do. I have to admit that for doing the box thing, I have to ask Claude AI to help me make it into 8 directions, and after I changed a lot of it, it still hasn’t worked. I finally gave up on making it 8 directions, which makes it harder for me to design the level. Another things that hard for me is making the hint. I’m actually having some story in my head about the lore, but when I made it into a hint, it just got blurred. Also, to make the player have to open all the hints in the corridor before doing the next level, I have to make a lot of conditionals, which I know. I think there are better options for doing this, but I’m still a beginner. I’m still using conditionals too much, but I finally made everything work! Also, by adding the BGM, sound effects, making the checkpoints thing, etc. There are many things that I just tried in this game! If you want to play this game, all you need to do is rotate the boxes to refract the light into another box until it reaches the sensor. But, you also need to do it fast! because there’s a hunger bar. Since our character is a human, she needs food to keep going. So, rotate the box, eat, and find the hint about what’s going on!...
|
1793336037.7002716
|
1793422437.7002716
|
|
51360
|
The "I Don't even Know (IDeK) Game" by The "I Don't even Know (IDeK) Game" by @Synxed | Stardance...
|
Synxed
|
1
|
28.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T07:54:49Z", "hours": 28.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I guess this game is ready for its first ship! While it’s not quite in Ship -Shape, It has plenty of cool features that I have spent a LOT of time working on (T^T I hate CSV files SOB). I greatly appreciate feedback, so please leave any issues or suggestions you find in the comments please. I also ask that anyone testing out this project ensure that they have read my README.MD file and have python 3 installed on their laptop/device (I tried running it on a new laptop and got very confused when it didn’t work T^T… Stupid me!). Anyway, thank you for taking the time to read this! (BongoCat is still absent D: Perhaps we will see his return soon… ) -Ta!", "repo": "https://github.com/toosynxed/I-Don-t-even-Know--IDeK--Game", "demo": "https://github.com/toosynxed/I-Don-t-even-Know--IDeK--Game/releases/tag/v1.0"}]...
|
[{"post_id": 73022, "ts": "202 [{"post_id": 73022, "ts": "2026-09-24T07:17:26Z", "hours": 1.0525, "text": "Final Work Before First Ship! Not a lot of work done, mostly just documentation fix-ups and explanations. I did fix up the login/account creation issues between the menu and main files (found when I actually tried to run the entire process instead of just the menu files). So yeah, If you are reading this, please feel free to head to my GitHub project page and download the Pre-Alpha release and follow the instructions in my README.MD file on how to get it working! (BongoCat still not here D: ) -Ta!"}, {"post_id": 71608, "ts": "2026-09-21T04:51:41Z", "hours": 4.9222, "text": "Achievements and Inventory! So, a bit of work has been done, and I might end up just shipping this off as Stardance is coming to a close soon. But here is what has been done! Implemented Bit-wise values/functions for both inventory and achievements for players. Also created a Bit-wise value that tracks if a player has viewed an achievement just yet, not displaying the “NEW” tag after the player has viewed it once. Some more work to come hopefully, but I think I mainly just need to get the central system working so that there is actually a game to play, and not just a whole bunch of features that must manually be toggled inside CSV files to operate anything! Anyways, thanks for reading! (Sorry, ): BongoCat has unfortunately been lost to the ages of storage caps D: ) -Ta !"}, {"post_id": 61162, "ts": "2026-09-03T23:02:04Z", "hours": 10.5028, "text": "I Guess I Fixed It???? IDeK Tbh… What has been done? Created a sorting function that iterates throughout a csv-list using a “shell sorting” (nesting) method (inspired by the YouTube short: https://youtu.be/RDFGkBE2O50?si=yXnJloCW18_o94bB ). Created the visual display of the leaderboard for the terminal game (using the body_text() helper function that I made earlier. Started to try to create a function that takes the integer values that are to be displayed on the leaderboard, and inserts in commas where appropriate: def format_numbers_2(orig): string = str(orig) split_curr = list(string) split_check = list(string) while len(split_curr) > 3: split_curr = split_curr[:-3] split_check.insert(-3,\",\") return \"\".join(split_check) Which only works some of the time… (It still needs a lot of work…) Honestly, I have been strugling with this function, but I think the issue with why I have been unable to get it to work correctly, is because I have not been planning enough around the logic beforehand (Which is my aim going forward). So, what’s next? Pretty much just getting this comma function working, so that the leaderboard display doesn’t look like this! ----------- Welcome, Test User ----------- Cash Leaderboard: 1. four - $21212314.0 2. hill - $5040.0 3. ardangeorge - $5000.0 4. test - $2323.0 5. Ardan George - $502.06 ------------------------------------------ Anyway, thanks for reading! (And don’t forget to say Hi to BongoCat! ) -Ta!"}, {"post_id": 56572, "ts": "2026-08-28T11:51:37Z", "hours": 5.0236, "text": "Brain Implosion Score: 8/10 Honestly, I have not been having much fun lately… Lots of errors for a single function that should be relatively simple! All it needs to do is read each row from a CSV file and order the rows in a list by ascending value for a specific column in the rows. Easy? Right? NO. IT. IS. NOT! This has taken me around 5 hours already! Just to get to a stage where I have finally given up, and have given my AI agent the function and asked it to locate each area that is not working. So, how many areas were there? LIKE 50 MILLION LINES I honestly do not have the brain -width to handle this right now, so I am just going to log my progress and go and vegetate while watching some YouTube now 😭 … Please send some coding help… I need it… (You can check out the menu_terminal.py files on my GitHub under the terminal branch, function: open_leaderboard() ). Don’t forget to say hi to BongoCat! -Ta!"}, {"post_id": 55498, "ts": "2026-08-27T11:53:27Z", "hours": 0.7961, "text": "Bit of an update again! I have ended up switching from just a python Tkinter window version of the command-line game, and instead have switched to a website HTML based version. This will also make it much easier for me to be able to write a lot of the code myself compared to Tkinter. What is my plan going forward? What I think will work best with my coding experience is for me to continue to write in the new features for my game as if they were still in terminal-format, and have AI transform it into the HTML version. This way, I still preserve my originality of ideas and code, but significantly widens the opportunities for further interactivity for my game! Don’t forget to say hi to BongoCat! -Ta! Here is a little snek-pek on the first iteration of the HTML version:"}, {"post_id": 55466, "ts": "2026-08-27T10:21:33Z", "hours": 0.27, "text": "I am beginning to question my sanity… Given the nature of a “stock” market mini-game such as the one in my game, I am beginning to think that perhaps the command-line is not the best place to be interacting with this in. Soooo… I think I’ve gone mad! I am going to start (attempt to at least, might need a bit of AI help ) to port everything across into something like Tkinter… This might go terribly… Say hi to BongoCat! !"}, {"post_id": 55456, "ts": "2026-08-27T09:55:41Z", "hours": 1.0306, "text": "The “Stock” Market Please note that any values or labels in this game are in no way representative of any real-life item, market or currency, and are purely theoretical and random numerical values generated for the sole purpose to be used for this game Creation of the base system: So far, (And it’s been a bit of a struggle), I have begun to lay out the foundations of the “stock” market system for my game, where players can invest in 3 different “risk levels” with differing characteristics to gain (or lose) currency (not yet implemented). I have spent a bit of time on GoodNotes on my iPad, writing out a plan and description of the features and characteristics of the “stock” market, as well as I have begun coding the “market.py” file that will handle the market functions that can be referenced from “main.py”. This has not gone very well , and my progress has slowed. Just the basic functions of the market system are beginning to seem very complex, with a lot of csv retrieval based off conditional statements and checks, calculations performed off specific rows, and logic statements that are making my head hurt! What I have right now: Pretty much, I have created the functions to initialise the 3 different “risk levels” with random values (using random.uniform for float values for cents), and begun the function that causes market changes (will be executing every 3 seconds or so) by calculating changes based off conditions surrounding the previous few market values for each “risk level”. Whilst this may seem simple enough, the need to keep searching the csv file for “risk”-specific rows, is causing my brain to begin imploding I think it is coming along well, but I fear that this will take a decent amount of time to complete just this one function (and then I have to do purchasing and selling ). So please wish me luck D: I hope my brain doesn’t decide to spontaneously combust! Say hi to BongoCat! -Ta!"}, {"post_id": 55393, "ts": "2026-08-27T06:08:37Z", "hours": 0.6569, "text": "Just a quick update on the game: I have just fixed a small bug with the “get” type of the “csv_actions” function that was not accurately looping through all entries to locate the correct row. But that has now been fixed luckily. Also just touched up the “body_text” function (which is the main handler for all the text printing) to accept an option parameter “timing” that can be used in the typewriting effect type to change alter the speed for debug and testing purposes. The function has a default value of 0.5 seconds so that the code will still run as normal if a valid value is not entered into the terminal. (Say hi to BongoCat !) Much more to come! And hopefully some actual game content (maybe a mini simulated stock-market !). -Ta!"}, {"post_id": 54876, "ts": "2026-08-26T02:40:58Z", "hours": 1.0692, "text": "So far, I have now completed the user account creation process for new users, and also added log-in capabilities for users that enter a pre-existing username into the game (uses .lower( ) when checking to minimise accidental account duplication accidents). I have also increased the csv function capabilities, with a new “check” and “get” branch, that supports checking an input to see if it exists in a specific column in any csv, as well as returning a row that has a matching column value that is inputted (is flexible and allows you to modify the input when the function is called to change the scope or target of the location and retrieval) A lot of my functions and processes for my game are now soft-coded, and are very versatile and malleable for different uses going forward with the project, which will continue to be a great benefit for both my coding experience and code readability! Additionally, I have also begun to use ANSI escape sequences in my print statements so that I can utilise font styles. Also, really cool thing this! I found online a python function snippet that actually allowed you to replace your inputted text with hashes or any other character instantly as you type it, allowing me to recreate a sort of privacy guard when users are inputting their passwords to log-in! 🔥 Thanks for reading!"}, {"post_id": 50230, "ts": "2026-08-19T11:38:37Z", "hours": 2.8489, "text": "Initialisation of IDeK! Hmm… It is interesting how the mind works, you begin with one idea… and suddenly find yourself a hour later working on something completely different… This has been me! What began as a project to create a mod for the Steam game: “BongoCat” for a friend turned into a terminal python-based game project! So far, I have started creating the introduction phase/stage of the game, beginning by asking for the user to enter a name, and then has some animations. Initially I was just going to hardcode everything in, including the print statements, but then I thought: “Hey! Why not turn this mini project into a learning experience and try out writing function files that I can use throughout the project by softcoding them!” And I did! What Do I Have Right Now? Aside from “main.py” , there are currently a few other notable files: “functions.py” - which holds the python functions that are used in main, “gen_pass.py” - Which was an AI generated python script to quickly generate 50 random “passwords” from merging a list of words, creating the file: “pass_list.csv” , and lastly, “user_pass.csv” - which serves as a temporary CSV file for storing some user data for the game. Something Really Cool! I ended up falling down into a little bit of a “rabbit-hole” sort of situation here. And spent some time working on expanding my main print function to include a really cool print effect that mimics a typewriter-animation. To do this, I ended up using two nested “ for i in range() ”’s, and a function that runs “os.system(‘clear’)” . The final product? A softcoded function that can be parsed any string or line of text to display with that printing animation! Really cool stuff ngl! And I shall continue to expand the content (hopefully I will actually have something for players to do by next dev-log, but tbh… “I Don’t even Know”"}]...
|
Title: The "I Don't even Know (IDeK) Game& Title: The "I Don't even Know (IDeK) Game" by @Synxed | Stardance
Devlogs:
Initialisation of IDeK! Hmm… It is interesting how the mind works, you begin with one idea… and suddenly find yourself a hour later working on something completely different… This has been me! What began as a project to create a mod for the Steam game: “BongoCat” for a friend turned into a terminal python-based game project! So far, I have started creating the introduction phase/stage of the game, beginning by asking for the user to enter a name, and then has some animations. Initially I was just going to hardcode everything in, including the print statements, but then I thought: “Hey! Why not turn this mini project into a learning experience and try out writing function files that I can use throughout the project by softcoding them!” And I did! What Do I Have Right Now? Aside from “main.py” , there are currently a few other notable files: “functions.py” - which holds the python functions that are used in main, “gen_pass.py” - Which was an AI generated python script to quickly generate 50 random “passwords” from merging a list of words, creating the file: “pass_list.csv” , and lastly, “user_pass.csv” - which serves as a temporary CSV file for storing some user data for the game. Something Really Cool! I ended up falling down into a little bit of a “rabbit-hole” sort of situation here. And spent some time working on expanding my main print function to include a really cool print effect that mimics a typewriter-animation. To do this, I ended up using two nested “ for i in range() ”’s, and a function that runs “os.system(‘clear’)” . The final product? A softcoded function that can be parsed any string or line of text to display with that printing animation! Really cool stuff ngl! And I shall continue to expand the content (hopefully I will actually have something for players to do by next dev-log, but tbh… “I Don’t even Know”
So far, I have now completed the user account creation process for new users, and also added log-in capabilities for users that enter a pre-existing username into the game (uses .lower( ) when checking to minimise accidental account duplication accidents). I have also increased the csv function capabilities, with a new “check” and “get” branch, that supports checking an input to see if it exists in a specific column in any csv, as well as returning a row that has a matching column value that is inputted (is flexible and allows you to modify the input when the function is called to change the scope or target of the location and retrieval) A lot of my functions and processes for my game are now soft-coded, and are very versatile and malleable for different uses going forward with the project, which will continue to be a great benefit for both my coding experience and code readability! Additionally, I have also begun to use ANSI escape sequences in my print statements so that I can utilise font styles. Also, really cool thing this! I found online a python function snippet that actually allowed you to replace your inputted text with hashes or any other character instantly as you type it, allowing me to recreate a sort of privacy guard when users are inputting their passwords to log-in! 🔥 Thanks for reading!
Just a quick update on the game: I have just fixed a small bug with the “get” type of the “csv_actions” function that was not accurately looping through all entries to locate the correct row. But that has now been fixed luckily. Also just touched up the “body_text” function (which is the main handler for all the text printing) to accept an option parameter “timing” that can be used in the typewriting effect type to change alter the speed for debug and testing purposes. The function has a default value of 0.5 seconds so that the code will still run as normal if a valid value is not entered into the terminal. (Say hi to BongoCat !) Much more to come! And hopefully some actual game content (maybe a mini simulated stock-market !). -Ta!
The “Stock” Market Please note that any values or labels in this game are in no way representative of any real-life item, market or currency, and are purely theoretical and random numerical values generated for the sole purpose to be used for this game Creation of the base system: So far, (And it’s been a bit of a struggle), I have begun to lay out the foundations of the “stock” market system for my game, where players can invest in 3 different “risk levels” with differing characteristics to gain (or lose) currency (not yet implemented). I have spent a bit of time on GoodNotes on my iPad, writing out a plan and description of the features and characteristics of the “stock” market, as well as I have begun coding the “market.py” file that will handle the market functions that can be referenced from “main.py”. This has not gone very well , and my progress has slowed. Just the basic functions of the market system are beginning to seem very complex, with a lot of csv retrieval based off conditional statements and checks, calculations performed off specific rows, and logic statements that are making my head hurt! What I have right now: Pretty much, I have created the functions to initialise the 3 different “risk levels” with random values (using random.uniform for float values for cents), and begun the function that causes market changes (will be executing every 3 seconds or so) by calculating changes based off conditions surrounding the previous few market values for each “risk level”. Whilst this may seem simple enough, the need to keep searching the csv file for “risk”-specific rows, is causing my brain to begin imploding I think it is coming along well, but I fear that this will take a decent amount of time to complete just this one function (and then I have to do purchasing and selling ). So please wish me luck D: I hope my brain doesn’t decide to spontaneously combust! Say hi to BongoCat! -Ta!
I am beginning to question my sanity… Given the nature of a “stock” market mini-game such as the one in my game, I am beginning to think that perhaps the command-line is not the best place to be interacting with this in. Soooo… I think I’ve gone mad! I am going to start (attempt to at least, might need a bit of AI help ) to port everything across into something like Tkinter… This might go terribly… Say hi to BongoCat! !
Bit of an update again! I have ended up switching from just a python Tkinter window version of the command-line game, and instead have switched to a website HTML based version. This will also make it much easier for me to be able to write a lot of the code myself compared to Tkinter. What is my plan going forward? What I think will work best with my coding experience is for me to continue to write in the new features for my game as if they were still in terminal-format, and have AI transform it into the HTML version. This way, I still preserve my originality of ideas and code, but significantly widens the opportunities for further interactivity for my game! Don’t forget to say hi to BongoCat! -Ta! Here is a little snek-pek on the first iteration of the HTML version:
Brain Implosion Score: 8/10 Honestly, I have not been having much fun lately… Lots of errors for a single function that should be relatively simple! All it needs to do is read each row from a CSV file and order the rows in a list by ascending value for a specific column in the rows. Easy? Right? NO. IT. IS. NOT! This has taken me around 5 hours already! Just to get to a stage where I have finally given up, and have given my AI agent the function and asked it to locate each area that is not working. So, how many areas were there? LIKE 50 MILLION LINES I honestly do not have the brain -width to handle this right now, so I am just going to log my progress and go and vegetate while watching some YouTube now 😭 … Please send some coding help… I need it… (You can check out the menu_terminal.py files on my GitHub under the terminal branch, function: open_leaderboard() ). Don’t forget to say hi to BongoCat! -Ta!
I Guess I Fixed It???? IDeK Tbh… What has been done? Created a sorting function that iterates throughout a csv-list using a “shell sorting” (nesting) method (inspired by the YouTube short: https://youtu.be/RDFGkBE2O50?si=yXnJloCW18_o94bB ). Created the visual display of the leaderboard for the terminal game (using the body_text() helper function that I made earlier. Started to try to create a function that takes the integer values that are to be displayed on the leaderboard, and inserts in commas where appropriate: def format_numbers_2(orig): string = str(orig) split_curr = list(string) split_check = list(string) while len(split_curr) > 3: split_curr = split_curr[:-3] split_check.insert(-3,",") return "".join(split_check) Which only works some of the time… (It still needs a lot of work…) Honestly, I have been strugling with this function, but I think the issue with why I have been unable to get it to work correctly, is because I have not been planning enough around the logic beforehand (Which is my aim going forward). So, what’s next? Pretty much just getting this comma function working, so that the leaderboard display doesn’t look like this! ----------- Welcome, Test User ----------- Cash Leaderboard: 1. four - $21212314.0 2. hill - $5040.0 3. ardangeorge - $5000.0 4. test - $2323.0 5. Ardan George - $502.06 ------------------------------------------ Anyway, thanks for reading! (And don’t forget to say Hi to BongoCat! ) -Ta!
Achievements and Inventory! So, a bit of work has been done, and I might end up just shipping this off as Stardance is coming to a close soon. But here is what has been done! Implemented Bit-wise values/functions for both inventory and achievements for players. Also created a Bit-wise value that tracks if a player has viewed an achievement just yet, not displaying the “NEW” tag after the player has viewed it once. Some more work to come hopefully, but I think I mainly just need to get the central system working so that there is actually a game to play, and not just a whole bunch of features that must manually be toggled inside CSV files to operate anything! Anyways, thanks for reading! (Sorry, ): BongoCat has unfortunately been lost to the ages of storage caps D: ) -Ta !
Final Work Before First Ship! Not a lot of work done, mostly just documentation fix-ups and explanations. I did fix up the login/account creation issues between the menu and main files (found when I actually tried to run the entire process instead of just the menu files). So yeah, If you are reading this, please feel free to head to my GitHub project page and download the Pre-Alpha release and follow the instructions in my README.MD file on how to get it working! (BongoCat still not here D: ) -Ta!
Ships:
I guess this game is ready for its first ship! While it’s not quite in Ship -Shape, It has plenty of cool features that I have spent a LOT of time working on (T^T I hate CSV files SOB). I greatly appreciate feedback, so please leave any issues or suggestions you find in the comments please. I also ask that anyone testing out this project ensure that they have read my README.MD file and have python 3 installed on their laptop/device (I tried running it on a new laptop and got very confused when it didn’t work T^T… Stupid me!). Anyway, thank you for taking the time to read this! (BongoCat is still absent D: Perhaps we will see his return soon… ) -Ta!...
|
1793346870.0230439
|
1793433270.0230439
|
|
49260
|
SWAY by @akshnoorbawa2 | Stardance
|
akshnoorbawa2
|
1
|
23.15
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-18T17:49:26Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built SWAY because I wanted a better way to manage audio on Windows. The main idea was pretty simple: create an app that could automatically duck other applications when important audio was playing, instead of constantly having to adjust volumes manually. Actually building it was a completely different story. The hardest part was getting the audio system to behave the way I wanted. Managing individual application volumes, detecting changes, and making everything happen smoothly without constantly interfering with the user was definitely one of the more challenging parts of the project. The UI was another big part of it. I didn’t want SWAY to look like some old Windows utility with a bunch of sliders everywhere. I wanted it to feel modern, clean, and actually enjoyable to use. Getting the layout, animations, controls, and overall feel right took a lot of experimenting and tweaking.", "repo": "https://github.com/akshnoorbawa2-glitch/Sway-Audio", "demo": "https://sway-audio-web.vercel.app/"}]...
|
[{"post_id": 73025, "ts": "202 [{"post_id": 73025, "ts": "2026-09-24T07:20:35Z", "hours": 4.1269, "text": "new designn"}, {"post_id": 59054, "ts": "2026-08-31T17:22:03Z", "hours": 5.4189, "text": "Devlog 4 - i did a complete Ui redesign because my initial website was looking too vibe coded and had a bunch on junk in it the re-design is super clean and non - flashy. i hope this is good and this is prob the last devlog of my project. so yeah check out my project for urself if ur interested pleaseee"}, {"post_id": 50032, "ts": "2026-08-19T01:59:01Z", "hours": 4.6, "text": "SWAY- brup it was so fun building this app so basically what it does is like if u playing music on spotify or other apps and u start watching a vid on youtube the volume of the music will automatically decrease so u dont have to pause ur music when playing a vid and then start again when u finish"}, {"post_id": 49746, "ts": "2026-08-18T17:46:19Z", "hours": 6.5164, "text": "im working on a amazing desktop app. hope u guys will like it :3"}, {"post_id": 48125, "ts": "2026-08-16T12:44:50Z", "hours": 2.5064, "text": "Bleh im working on Sway my new app"}]...
|
Title: SWAY by @akshnoorbawa2 | Stardance
Devlogs Title: SWAY by @akshnoorbawa2 | Stardance
Devlogs:
Bleh im working on Sway my new app
im working on a amazing desktop app. hope u guys will like it :3
SWAY- brup it was so fun building this app so basically what it does is like if u playing music on spotify or other apps and u start watching a vid on youtube the volume of the music will automatically decrease so u dont have to pause ur music when playing a vid and then start again when u finish
Devlog 4 - i did a complete Ui redesign because my initial website was looking too vibe coded and had a bunch on junk in it the re-design is super clean and non - flashy. i hope this is good and this is prob the last devlog of my project. so yeah check out my project for urself if ur interested pleaseee
new designn
Ships:
I built SWAY because I wanted a better way to manage audio on Windows. The main idea was pretty simple: create an app that could automatically duck other applications when important audio was playing, instead of constantly having to adjust volumes manually. Actually building it was a completely different story. The hardest part was getting the audio system to behave the way I wanted. Managing individual application volumes, detecting changes, and making everything happen smoothly without constantly interfering with the user was definitely one of the more challenging parts of the project. The UI was another big part of it. I didn’t want SWAY to look like some old Windows utility with a bunch of sliders everywhere. I wanted it to feel modern, clean, and actually enjoyable to use. Getting the layout, animations, controls, and overall feel right took a lot of experimenting and tweaking....
|
1793307110.8105166
|
1793393510.8105166
|
|
29956
|
Barrel Roll Bullet by @ShinyMist | Stardance
|
ShinyMist
|
1
|
118.0
|
2120
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T07:55:16Z", "hours": 118.0, "multiplier": 17.91, "payout": 2120, "blessing": "neutral", "text": "Barrel Roll Bullet A recoil-based platformer where, instead of traditional jumping and movement, you shoot to propel yourself around each level. My game includes multiple abilities, unlockable gun skins and 50 levels. The biggest challenge I faced was developing an accurate and efficient collision system. Initially, I planned to use AABB collision, but because it relies on rectangular bounding boxes, I found that the gun barrel could appear to float when rotating or interacting with objects. I then experimented with mask collision to achieve pixel-perfect accuracy. However, using a large number of masks throughout a level caused noticeable drops in performance. I eventually settled on a middle ground using SAT (Separating Axis Theorem) polygon-based collision. This provided much more accurate collision detection for the rotating gun while being significantly more performant than mask collision, allowing me to maintain both responsive gameplay and consistent performance. I am proud of the persistence I have demonstrated throughout the project. During the early stages of development, I encountered significant gaps in my knowledge, particularly as I was new to object-oriented programming. At times, I struggled with seemingly simple tasks, such as correctly initialising a game window or positioning a rectangle where I intended it to be. Despite these difficulties, I continued to learn, troubleshoot and refine my approach rather than abandoning features when they became challenging.", "repo": "https://github.com/Oliver-Attoe/StarDanceProject_FLStudioGrind", "demo": "https://github.com/Oliver-Attoe/StarDanceProject_FLStudioGrind/releases/tag/v1.0.0"}]...
|
[{"post_id": 73026, "ts": "202 [{"post_id": 73026, "ts": "2026-09-24T07:21:08Z", "hours": 0.5231, "text": "Dev Log #39 . THE FINAL DEV LOG . I am finally ready to ship!!! . I did the following: Made a working read me Made a working exe file of my game Removed de-bugging features so game works as intended. Stopped music overlap from happening Removed all copyrighted music (may have mentioned this previously) I used pyinstaller tocreate my exe file. . Level buttons now only work if player max player level is less than or equal to the level you are selecting. . Stopped music overlap by puting stop music into every game state + in load room function . Its been a pleasure to take part in the stardance event. Lets have a look to see how far this project has come!!!"}, {"post_id": 71415, "ts": "2026-09-20T19:44:37Z", "hours": 2.6217, "text": "Dev Log #38 . DONE . I did the following: Added music that plays while in level Removed copyrighted music Finished all GUI Made code neat using ruff Will ship at some point soon. See you on ship day!!!!"}, {"post_id": 71257, "ts": "2026-09-20T15:13:48Z", "hours": 4.6078, "text": "Dev Log #37 . All code is 100% complete now, the only thing left to do is finish all of the UI and then I am ready to ship. . Today I: Fixed portals Added level skip button Displayed bonus objectives Made button rotation work when pressed also Made gun select display gun images Portal code issue was caused by object overlapping with tiles, cause tile collision resolution to push the player out of the tile, and at times out of the map. Fixed this by teleporting player slightly above the object (above being determined by orientation). . Level skip increases player level, restarts level and spawns player in next level. . Bonus objectives screen.blitted on win, text appears green when objective met, red when it hasn’t . Used updated rotated button rect rather then previous and changed screen.blit to use center of rect rather than topleft . For each button in gun group, i screen.blited that gun into the center of the select gun skin rect . Thats all, hope to ship by tonight."}, {"post_id": 69536, "ts": "2026-09-17T07:47:24Z", "hours": 5.2261, "text": "Dev Log #36 . I have done most of the updating of UI, having only a few assests left and one level left to edit. . In addition to this, I have also made it so that buttons now appear pressed when pressed, rather than disappearing. . My easter egg room also stops the music correctly on level complete. . The final objectives are as follows: Have gun select each have image of gun Waiver has displayed text Hint video made and linked correctly All button can only be pressed when on screen Finish misc Assets Add death, win, and coins/stars collected based on mission objectives complete Thats all, I think 20/09/2026 could still be the date for the books, but I’ve got to put the burners on to get this finsished to a level of polish I’m happy with."}, {"post_id": 66573, "ts": "2026-09-12T12:32:48Z", "hours": 1.6919, "text": "Dev Log #35 . Been a bit distracted from this project due to school starting but I’ve been able to get a few things done. . I have done the following: Finished dialogue texts Made it so that dialogue box only appears when there is text Given kill tiles rotatable counterparts Added muzzle flash Added ability pick up sounds Updated a few more assets My Git commits have started to get a bit sloppy as i do these little bits on during my free periods, but im getting back into the swing of things . The dialogue box will only appear if text != “” and will put the player in the start playing state, without requiring a mouse click like it did previously. . Adding sounds was pretty simple so I wil leave an example bellow if self.rect.colliderect(ability[\"rect\"]): if self.gravity_flip > 0: up_gravity_fx.play() else: down_gravity_fx.play() ability[\"collected\"] = True self.gravity_flip *= -1 That’s all, I think 20/09/2026 will be a date for the books as I’m confident I will be finished by then. ALSO, if anyone sees this before ship, could you let me know any ideas for what my 16x16 tile for regular tiles could look like? Many thanks if you respond"}, {"post_id": 64309, "ts": "2026-09-08T16:27:15Z", "hours": 5.7308, "text": "Dev Log #34. . Just cleaning some things up now, we are in the home stretch . I did the following: Updated assest Updated object display code fixed broken dialogue Most assets have a fresh new look created in photopea . Buttons can now be loaded at rotated orientations . Dialogue now does display and does not disapear on first level load. This is because the start playing state was being skipped, i fixed this by using a continue, which skipped the rest of the current loop iteration, preventing the start-state code from continuing to run after changing playing_state. . Thats all, most of my time when into design. See you next devlog"}, {"post_id": 57440, "ts": "2026-08-29T16:21:03Z", "hours": 9.3847, "text": "Dev Log #33 . As you can probably guess, I have done alot I have done the following: • Gave all levels the correct level variables • Made buttons work correctly when rotated • Made teleport bullets work as intended • Made gates and broken tiles allow bullets to pass through when collision is removed • Created an EXE file of my game for friends to use for playtesting • Made a stat tracker to use playtest information to improve my game • Corrected all file directories that had to be moved for PyInstaller to work properly • Fixed the Easter egg room so it now loads correctly • Added AI declaration comments That is a lots, so let me quick fire explain how i did them Painful repetition, change variables, restart level, change tiles, reset level, change ability position, reset. Repeat for level in levels (do this 50 times) . This was partially assisted by AI, but from what I understand the buttons’ Tiled rotation number is used to adjust the collision rectangle’s position so it matches the rotated button object in tiled. Collision check works as did previously. . Teleport bullets originally tp the player if a bullet fired priviously hit a way after pickup, despite no bullet being fired after pickup and also sometimes caused the player to shoot downwards through tiles. . I fixed the wrong bullet tp by using a self.variable rather than a global one as previously, allowing each bullet to know if they were teleport enabled, rather than all bullets being teleport enabled. . The tile collision isssue was fixed by by moving the player backwards along the bullet’s path until they are outside the tile, preventing the gun from passing through walls and being pulled down . This one will just explain itself (if tile in list, then ignore kill on contact): for tile in Tiles.tiles: if self.rect.colliderect(tile[\"rect\"]): tile_property = tile[\"property\"].get(\"type\") if tile_property in Tiles.open_gates: continue This used pyinstaller, not something i really code or anything so, I’ll just say i did it sucessfully . Stat tracker records bullet count, time and deaths/restarts that a level took on completion. Difficulty of a level can also be decided by a play tester by pressing any number button during a level. . This data is level specific, and on key press of /, will create a json file that holds all the data, which can then be sent for me for review of things like bullet max, time complete bonus time, ect. . Self explanatory, just changed things like “Image/buttn.png” to “Game/Image/button.png” . Restart all function was required in load room function as it contains map load, so the level map that was supposed to load is not displayed instead of the secret easter egg map. . 9.Should have declared AI usage earlier, but I have been checking my chat history and I have been able to determine what sections of my code are AI generated . That’s all, gotta try and keep my daily streak alive this time to score myself a free plush."}, {"post_id": 54686, "ts": "2026-08-25T19:01:58Z", "hours": 3.5433, "text": "Dev Log #32 . Made 50 levels today, that is all. . Every 3 levels, a new ability/feature is added. This allows the player to get used to the new thing added, making their later appearance managble as the player is now used to how they function. . I have not set the player and goal location co-ordinates for each level, or other variables like if mini stars are required. . That’s all for today."}, {"post_id": 54018, "ts": "2026-08-24T19:16:39Z", "hours": 2.2183, "text": "Dev Log #31 . I AM FINISHED!!! . Well, pretty much at least. . Today I: Completed the Waiver Made some more levels I made it so that the text box works with word wrap, enter key and backspace key. . I did this by splitting the text into words and lines, then checking each word’s width against the rect boundaries. . If the word exceeds the boundaries x, the texts’ x position is reset and the Y-coordinate is incremented, creating a new line. . The Enter key creates a new line by resetting x and incrementing y, while Backspace removes the last character from the text string, preventing it from being displayed. . The waiver now checks if all fields are filled and allows you to press a button that is connected to a hyperlink that will, in the future, take you to a video created my me showing how each level is complete. . Also made 12 levels today, each new feature is slowly implemented one at time. . That’s all for today."}, {"post_id": 53326, "ts": "2026-08-23T20:00:08Z", "hours": 2.7178, "text": "Dev Log #30 . The big 30!!! . Done quite a bit today, just last bit of polishing and then we move towards UI, music, level design, ect. . Today I: FINISHED THE DIALOGUE SYTEM Added a leave waiver button (was a softlock) Added a text box to waiver [WIP] Dialogue system works fully (minus sound but thats still a win in my books). Plays on level start and level completion and once dialogue is viewed by the player, it is not shown to them again. . Mouse can be clicked to remove dialogue from the screen, without triggering bullet fire. . Also fixed the issue of the text backround being displayed on re-entry and re-completion of the level, but fixed that easily with a variable, setting it to true or false if level had already been completed, then only displaying the text bg when it was true. . Waiver leave button pretty simple, basic pygame rect collidepoint detection. . Text box sets text_active to true on mouse click, mouse clicks anywhere else set it to false, meaning player can only type when they have clicked on it (when they want to). . I appened every event.unicode into a list on key press, meaning I had a list of the players key storkes, then screen.blitted each letter in the list. . Final touches are making all fields complete required to acess button that is a hyperlink to video of me completing stages with instuctions to help, and also backspace and enter and wordwrap working with the text_box. . Then I think I’m done for the most part on the coding side of things, and will move onto level creation. . The only thing I haven’t completed from my long list from a preious dev_log are: Level editor Upside down ability James bond level start Hint dialogue on multiple deaths Boss fight Not to say these aren’t going to be added but they are not simple things and will not really add to much to my game in all honesty. Given the deadline of end of this month I have given myself, I don’t know if I will have time to add these (except for the James bond level start thing as that is a UI thing that will require art, music ect so might work on that when not coding. . That’s all, thanks for reading (:"}, {"post_id": 52887, "ts": "2026-08-23T08:25:38Z", "hours": 2.2633, "text": "Dev Log #29 . I’m pretty close to finishing the code side of my game now, the rest of my efforts will soon be focous toward things like: Writing dialogue Making nicer looking UI Making tiles look good rather than coloured blocks Animations Music Today I did the following: Re made the dialogue system AGAIN Created a gun selection screen My dialogue system displays a word at a time and plays a short noise for each word shown, similarily to undertale voice blips. However, I think it sounds quite bad and I plan to replace it with a set dialogue sound that plays at the start, like animal crossing. . My dialogue system now plays on level start and level completion, and does not re-trigger on level repeat, using similar code used in my star tracking code. . Gun select code is similar to my level select code, using a different class but the same code, just changing the lock out code to only unlock once star count is >= button number - 1 * 6, so that each button is unlocked for each 6 stars earned, as well as having the default gun already unlocked. . That’s all for today, I hope to have a complete game by the end of the month so I can have this finished before the school year starts."}, {"post_id": 51905, "ts": "2026-08-21T20:16:23Z", "hours": 2.1786, "text": "Dev Log #28 . Didn’t do alot today, or for the 2 other days… . I finally made ghost bullets work correctly and have changed the dialogue sytem a bit . The ghost bullets working and not working previously was juts a matter of using variables inside the bullet class rather than global ones, making it work better for some reason, I had the assistance of a friend in fixing the issue, and safe to say it solved it . Dialogue sytem has only been changed slightly so not much point documenting the changes, spacing, timing of letters, ect. . Sorry for short devlog, I hope I have more tommorrow."}, {"post_id": 49659, "ts": "2026-08-18T15:26:51Z", "hours": 3.4011, "text": "Dev Log #27 . More things checked of the list today: . Today I did: Added gravity flip ability Added teleport bullets Added player mission objectives However, some other things i worked on today are still a work in progress, such as: Diologue system Ghost bullets (travel through walls) Gravity flip works similarily to how slow time works, settings the variable self.gravity_flip to -1 on contact, then multiplying graivty strenght by it, reversing the direction of gravity . This however made my realign function not work when on the ceiling, so i added to re-align that if gravity_flip was negative, to detect ceiling hit rather than grounded, allowing it to work why gravity was flipped. . Teleport bullets work by setting a can teleport function to True on contact, then when true, if bullet collidesrect with tile, self.rect of bullet is equal to self.rect of gun. the can tele[port function is then set to false, making the ability only work once as intended. . Player mission objects are as follows: Complete level Complete level in set ammount of time Complete level with less bullets than provided This uses lists in a way i have never used them before and looks like this total_stars = 0 level_stars = [[False, False, False] for _ in range(levels)] If player completes level, level_stars[Settings.player_level - 1][0] for current player level is set to True. . If player completes level quickly (complete_time < bonus_time), then …[1] is set to true . If player reaches has_won game state with a number of bullets lower than the bullet max, then then …[2] is set to True. . Total stars is incremented by one for each goal completed, and if level_stars[Settings.player_level - 1][1,2 or 3] is already set to true, then the increment is skipped, meaning you can only get 3 stars per level. . That’s all for now, hope to fix the issues I had today in tomorrows devlog!!"}, {"post_id": 49172, "ts": "2026-08-17T20:15:54Z", "hours": 2.1058, "text": "Dev Log #26 . Popped ULT today!!! . Today I added the following: Slow time ability Breakable surfaces Bullet pickup Fixed up dialogue system (Not fully complete) Slow time ability works by setting a time to a decimal then multplying the following by it: Velocity (Bullet + Player) Rotation speed Gravity strength Multiplying by a decimal reduces the numbers, emulating slowed time rather than reducing fps which is a bit of a cop-out . Breakable surfaces work similarly to the gate tiles, the tiles having a alpha value of 0 when bullet rect makes contact with tile of that class and adding that tile type to a list: broken_tiles. . All tiles in that list are then ignored by tile collision . Bullet pickup works by detecting rect collision between the player and the surface, when contact is made the players bullet count (representing bullets shot total) is reduced by one, increasing the number of shots available to the player by one. . Dialogue system now works with full words, voice blips are annoying but will fix late stage when adding polish. Will also make it that player has to click mouse to go to next dialogue screen to give them time to read the text. . That is 3 and a bit things of the list, very good progress, juggling summer work, this and most importantly my Minecraft duties has been an upward hill battle but I’m getting there. . See you next develop with more progress!!!"}, {"post_id": 48445, "ts": "2026-08-16T19:54:18Z", "hours": 0.6561, "text": "Dev Log #25 . My love for videojuegos has got the better of me. . Over theses 2 days all I have done is made some level maps and fixed the spawing positions of both win condition and the player based on the new maps. . But I have structure now, and rather than geting destracted, I have set myself some goals to complete hopefully by the end of the month, leaving me time to make the UI look nice. . I present to you. THE TOD0 LIST: . A - DIOLOGUE Fix dialogue system Add hint dialogue Add new level dialogue Add completed dialogue B - ABILITIES/TILES Bullet Pickup Ghost bullets Teleport bullets Time SLOW (not stop) Gravity flip ? Map flip ? Breakable tiles Level editor ? C - UI James bond level start animation Gun skin menu All menus with all required buttons D - Miscellaneous Mission objectives (Bad piggies esque) Determine gun skin unlock criteria A FINAL BOSS !?!?! I hope tomorrow if filled with WAY more advancements of the work kind rather than the Minecraft kind (;"}, {"post_id": 47115, "ts": "2026-08-14T19:25:06Z", "hours": 2.7211, "text": "Dev Log #24 . A progress full day today, but mabye not for the best?? . Today I done the following: Added a charcater diologue box Fixes re-align function so that it works when rotation direction is reversed Just doing little sidequests for now as I’m trying to hide from my enemy, level design. The things is I’m not very good at games, so i dont have the reaction time to create very punishing levels with little room for error. . So to combat this, I end up making really hard levels or super easy ones. . Additionally, I barley add any time to my total when creating levels as it uses a piece of software outside of visual studio. . My character text box is pretty much a recreation of the ones seen in undertale, even using the voice blip of toriel as a place holder. . This should allow me to add a small story that I will make sure to keep simple, like a mario esque plot. . The re-align function was fixed by using the variable rotation direction, then setting that to 1 or -1 depending on contact with reverse direction ability or not . Then multiplying rot_speed by that value reverse the direction that re-align moves. . I will have to knuckle down on level design tomorrow and make sure each level introduces the abilities and tiles one at a time, letting the player get used to them, allowing for levels that include a mix of multiple to be more approachable."}, {"post_id": 46505, "ts": "2026-08-13T19:34:14Z", "hours": 3.1664, "text": "Dev Log #23 . Very good day today, embracing the foddian likeness of my game, making sure that the player gets as angry as possible, just to make that feeling of victory feel so sweet. . Here’s what I did today: LOSER document created (must be filled in to reveal hints, which will be added later) Change rotation direction ability New map (Still a WIP) Document uses follow mouse function and draw line function. Starting the line at the mouses previous position and ending it at its new position. . This happens very fast, so the lines do not appear blocky and appear like real pencil drawing. . The change rotation ability uses the pbject layer like my previous time stop ability, and now that I understand how object layers work, i was easily able to make this ability by copying my clock abiltiy load and changing the result of contact. . The result being making rotation speed negative, reversing direction of rotation. . The new map uses a mix of many abilities and objects, but I have not added them in just yet. . I could quite easily I feel but I’ve reached my 3 hour brain capacity limit, because realisticly with the time spent making pngs, finding sounds, reading pygame documentation and waching tutorials, I’ve probably spent about 5. . But rewards are not for the weak or the lazy, and this little project of mine is helping me leaps and bounds for my future A-level comp sci journey. . See you next time, with some jucy new progress!!!!"}, {"post_id": 45899, "ts": "2026-08-12T17:26:00Z", "hours": 3.3278, "text": "Dev log #22 . Back to business!! . Today I added: Uncompleted level select lockout Separated tile load into own file Easter egg room added Level lockout works by calculating max_player_level, the furthest level a player can select based on if they have beat the previous levels. . This works buy using a function to check if current player_level is greater than max_player_level, if it is then max_player_level = player level. . Then for level select button with number greater than max_player_level, a red cross is screen.blited ontop,as well as not allowing mouse clicks of the rect from having any function. . Tile file separation helped me remove 150 lines from my main file, improving readability. . My easter egg has a 2% chance of happening and gives the player a custom gun appearance on discovery. . The code used to change the guns appearenece should let me, in future, make custom skins for the gun, skins that could be rewarded for levels complete, secondary level goals reached, ect… . I will not share how to reach my secret room, but I think it would be better for someone to stumble across it by accident. . Good day today, progress is picking up pace again, good job me!!! . Strange, it seems, there is a man here…."}, {"post_id": 45339, "ts": "2026-08-11T18:45:05Z", "hours": 2.1411, "text": "Dev Log #21 . Getting lazy now, saw hacktime was down and decided not to bother doing anything before 12, but I hope I will break this cycle. . Today I added working buttons that when pressed, remove gate blocking path. . Had to over hall all my tile loading and map loading and parts of my collision resolution to allow me to reduce the lag being caused in some levels and be able to remove collision selectively for tile types. . I learn how to use set today. I used a set to store the types of gates that have been opened because it prevents duplicates and allows me to quickly check whether a specific gate is open. . No animations for button presses yet as I want to leave that stuff for the end. . I’m feeling the time crunch now because I really want this to be finished before I get back to school and focus on my studies, but this still counts as practice so I’ll continue a little bit during school days. . I will do better tomorrow I promise, cause I’ve got this far, it would be a waste to stop now."}, {"post_id": 44821, "ts": "2026-08-10T20:55:15Z", "hours": 2.8053, "text": "Dev Log #20 . Sorry for the hiatus, not a lot done, but sure I will be soaring tomorrow. . Today I addded: Killable enemies New reset all function Killable enemies act as win conditions, similar to the mini stars, having to all be killed for the goal polygon to spawn. . The reset function made my code much more readable and allowed me to condense all of the restart events like lose velocity, set position here, screen.blit things again if needed. . I started working on 3 buttons that when pressed, open a gate but didn’t get to finishing it sadly. . I want each button to have different press conditions, one can be pressed by bullets only, one only on direct gun contact and the other working with either or. . In later stages, I will have to think how i will communicate this functionality to the player but I’m saving texturing and making the game look good for last. . Hope to have more progress tomorrow. Fingers crossed."}, {"post_id": 42861, "ts": "2026-08-07T20:19:50Z", "hours": 2.4408, "text": "Dev Log #19 . Getting lazy, need to lock in and get 3 hours tomorrow. . Today I added: Working portals Time stop ability Portals and time stop ability use object layers in tiles, a much easier solution compared to my use of polygons for complete goals, may change that but not sure. . Time stop ability is pretty simple, works like pause menu, but allows image rotation and enables follow mouse. . Portals work by on contact, moving player position centre to other portal centre. . The velocity changes with the exit direction using the following code: rotation_difference = entry_angle - exit_angle self.velocity.rotate_ip(rotation_difference) Overall, ok day, not sure what I’ll do tmr, but I’m sure theres something hiding on my checklist. . ALSO!!, Fix this horrible performance issue I had, see bellow for comparison"}, {"post_id": 42135, "ts": "2026-08-06T18:44:20Z", "hours": 2.5461, "text": "Dev Log #18 . Good day, but stopped early today beacuse, well, i’m afraid… . What I did today: Added mini_stars Added re-align option when grounded Added new map Mini stars are to be collected first, unlocking the finish goal. They are hard coded right now so cant be moved for new levels, but I can change that if need be. . Re-align was initially supposed to allow A to rotate the player one direction and D the other, but my game seemed to really not like decreasing the angle value when grounded. . So I’ve made it so rotation only happens one direction, but a full 360 range of motion is possible. . The new map that uses portals, but the portals are not actually functional yet so, thats a job for tomorrow . . Almost everything added from last devlogs check list, but decided against adding placeholder music during playing state as i think I would go insane from listening to it on loop, so that can wait till the end. . Hope to have a longer more prosperous dev log next time, see you then!!!"}, {"post_id": 41536, "ts": "2026-08-05T20:08:05Z", "hours": 3.6981, "text": "Dev Log #17 . Feel kinda stuck in-between, but once a pass my last hurdle, all of my efforts will be focused on new abilities, new tiles and art, but the basics are sooo close to being complete. . Today i did the following: Level stopwatch Level complete goal changed Edited map Complete goal had to be changed to make animation of win goal possible, like coin pick up in Mario. Uses polygon collision, freezes on contact currently but working on fix. . Level stopwatch works well, and works with pause menu by subtracting time passed in pause menu from counter total on continue button pressed. . Map needed editing as I feel my game is too hard and my muscle memory from 100’s of tries makes it feel easy, but really isn’t. . Tried making a new map that requires you to collect many little stars to reveal the goal but found it hard to find a map that works with wide range of movement. . This issue is caused by gun being useless most of the time on collision with floor as it is aimed the wrong way. . I plan to have the player be able to rotate the gun while its grounded using A or D, this re-ajusting stopping players getting stuck. That or a jump ability. . Next devlog hope to have: Mini stars working New map Rotate/jump when grounded Game in progress music See you next devlog, no 1 day hiatus next time (;"}, {"post_id": 40339, "ts": "2026-08-03T19:40:47Z", "hours": 2.6639, "text": "Dev Log #16 . Today was good. I was welmed. . I did the following today: Added working kill tile Fixed image lagging behind player polygon Switched over to match cases Kill tile works as intended, but doen’t ‘kill’ the player yet, it just freezes everything, plays a sound and propts you to restart. . Image lagging behind was a big issue, causing the kill tile to look as if it were killing without contact, but this was cause by the image lag behind. . I tried changing the order of functions in update() but that didn’t work, tried other stuff like changing how some functions work, in the end, it was because i called update after player_group.draw(). Silly me!! . Match case switch over was easy, just the indentation was at times a pain, but I’ve sorted it now, thank goodness! . Going to try and finish the loss screen that appears, adding a level select button and a return to start, but might not as its not strictly necessary, but does look nice. . Not sure what other stuff to add, maybe a new level? . Who knows, see you next Dev Log!!!!"}, {"post_id": 39640, "ts": "2026-08-02T19:23:20Z", "hours": 3.0406, "text": "#Dev Log 15 . Good day at the office. . Did the following today: Working level select Fixed Music Issue Fixed map loading issues (didn’t discover until today) Added tile classes to replace gid based system for tile specific collision My issues today were caused by my moving of code into separate files, but I’m getting there. I’m no longer using from ___ import * and I am instead using import ______. . The sound issue was caused by a variable in settings setting play music to False without my knowledge. . Map loading broke because my maps are only loaded once outside of the while loop, so I fixed that. . Tiles now have a class that can be checked, allowing for different interactions with tiles dependent on tile class. . Thinking about storing some of my variables into match statements for readability but I find using match cases in Settings.py to be really difficult so I will proceed with caution and immense fear!!! . Not sure what tomorrow holds, thinking about making the kill and win tiles do something rather than print win or killed, but might be held up by this switch from many elifs to match cases. . Staying determined, see you next dev log. . PS, a little hint to my little easter egg 📂︎🖮︎"}, {"post_id": 39080, "ts": "2026-08-01T19:29:51Z", "hours": 4.105, "text": "#Dev Log 14 . Ying ang Yang session today: . I did the following: 2 new maps - one I’m keeping a secret for the complete game >;] Level select rect load (not working YET) Kill tile (detection only) Separating code into files outside of main Music Broke…. Level select menu was a perfect mix of challenge and enjoyability. . I loaded the squares in this even patter by creating a rect at (360, 260), then after the first rectangle is created, add 120 to the x value, until x >= 960. . Then I added 120 to y to create a new line and set x back to 360. . The kill tile collision was done the same way as the win tile collision, using tile ID’s. . The only issue I’ve come across is the music suddenyl not working after moving it into its own seperate file, despite it working like an hour before. . I’ve left this issue for tomorrow as I’ve already got a lot of hours under my belt today. . Also the new level is not possible despite all my effort so will have to change that also. . Good progress today, I’ve made a lit of all I want to achieve in Barrel Roll Bullet before the dedline and one by one, I’m checking that list of. . See you next devlog. Maybe then I’ll reveal the space in-between 💣︎♋︎■︎📬︎□︎♑︎♑︎"}, {"post_id": 38447, "ts": "2026-07-31T20:17:36Z", "hours": 2.0106, "text": "Dev Log #13.Unlucky for some, but not for me! . Collision resolution finally working!!!! . Here’s how it works: . SAT algorithm returns the axis with the smallest overlap (this is the shortest distance to separate the player and the tile). . Correct normal line direction so that it points from the tile to the player. . Move player across MTV (Minimum Translation Vector), pushing player out of the tile. Note: MTV is calculated by choosing the smallest overlap in the direction that moves the two shapes apart. . Remove velocity that is parallel to the collision surface, allowing the object to glide across it without getting stuck. . That’s the jist of it. There are some other things I didn’t include, like how only polygons are made for tiles touching the player’s polygon/rect, but I discussed this in a past dev log. . In all honesty, I don’t fully understand the maths behind it, but I was still able to make my own SAT collision system, so I obviously know enough. . Also added some smaller things like a bullet limit and a restart caused by holding the R button down. . This is good progress and should allow me to add more easily things like level select, new Tiled maps, new tile variants that cause different effects, etc. . Next dev log is going to be packed with stuff!!!!.See you then (;"}, {"post_id": 37832, "ts": "2026-07-30T19:46:46Z", "hours": 2.4217, "text": "#Dev Log 12 . Good honest session today. . Changed my collision resolution as it seemed to be causing me alot of trouble and hurting preformance. . Now using polygon collision detection instead of mask collision as it greatly improves preformance and simplicty of colllision resolution. . Although that is still not perfect. . I had it working quite well to a point but once I tried to prevent wall riding through on ground variables set to True or False, everyhting seemed to go wibledy wobeldy from there. . My collision detection works as follow: Dictionary of tiles is made, each tile with a rect and id (needed to make certain tile types do different things). . From that list, add the tiles with rectangles that colide with the player into a new list . 3.With this list, I then draw a mask on the tile, setting the co-ordinates to the corners of the rect . Last step, use self.polygon_collision() to check for collision . This worked without a hitch, but my collision resolution sytem is not so flawless. . This has been a 3ish day long ordeal, but I want to get it solved now so that once I’ve got the basics done I can divert my attention to more fun things like gun abilities, kill tiles, moving platforms, ect. . Progress is not necessarily slow, just stuck on one convoluted thing. I hope I get things sorted soon, this is starting to be a real de-motervator. . But I got that frisk undertale in me so I’ll stay DETERMINED!!!"}, {"post_id": 37179, "ts": "2026-07-29T18:07:52Z", "hours": 3.7003, "text": "Dev Log #11 . Not Good. Very NOT Good. . What I achieved today Victory tile added Aiming reticle completely destroyed Fixed aiming reticle Mask detection not working as intended Gun no longer stopping rotation on collision complete loss of sanity OK, fun. How did this all happen? . My aiming reticle misangling issue was caused by setting initial rotation angle to 15. I did this to increse rotation speed. . The issue being this caused my gun image to also be rotated 15 degrees, causing the barrel not to point to my mouse. . I solved the issue by making initial rotation angle to 0, only += it to = 15 once first shot had been fired. . The next issue I have yet to solve is collision resolution. . It had been an underlying issue for some time, and i still don’t yet know how to fix it. But in my attempt to fix it, I then broke my stop_rotation function, meaning rotation now continues despite collision. . Hope to fix these issues by next devlog, then also give my recoil a bit of calibrating as each bullet seems to be weaker than the last, i think this is caused by my collision resolution setting velocity to 0. . Next devlog will hopefully be more fruitful!"}, {"post_id": 36456, "ts": "2026-07-28T16:14:07Z", "hours": 3.5108, "text": "Dev log #10 . DOUBLE DIGITS!! . What I did today: Added a working pause menu Fixed start screen size Spruced up mask collisions An issue im having with my new and improved collision sytem is that when i reduce player velocity on collision, as well as rotation speed, my player comes to a hault. . In real life, as im sure many of you know, a gun isnt likely to ballance on the barrel verticly, its handle will fall due to being heavier. . I do not yet know how to combat this issue, but I have brain stormed some ideas. . I was going to try and find a center of mass, but that wouldn’t work because that would cause my barrel to float at times due to being disproportionally lighter compared to the gun grip, meaning when gravity acted on it, it would be lob sided. . My other idea was to break the gun into 3 rectangles, barrel, handel and inbetween, then give these rectangles set weights. But i was unable to implement that. . I’m going to try some other solutions, but i think this is going to be some of my toughest challenges yet! . Still undesided on the goals for next devlog, we will see what my brain decided that faithfull day."}, {"post_id": 35966, "ts": "2026-07-27T19:09:25Z", "hours": 3.4547, "text": "Dev Log #9 . Not the best keyboard clacking session, but not the worst. Looking at you Dev Log #4 >:[ . Today I added pixel perfect collision. . First I got the players mask and a list of the rectangle tiles touching my player rectangle. I then listed these rectangles and was able to detect collision based on if they made contact with the players mask. . The next step was collision resolution. . After a detected collision, the location of collision is then increase the y co-ordinate of the player mask, effectivly keeping the player above the ground. This is how collision resolution works for all the other directions, just with varying positions. . With this I then attempted to add a feature that stopped rotation as a surface was hit, to prevent a constanly spinning gun that sits on the floor. . This is still a WIP, but I have been able to make the gun stop all movement once on contact on a wall, but this is unrealistic as in real life if an object makes contact with a wall it does not loose all its momentum. . I will try to combat this isse by adding a bounce effect that gradually reduces momentum on wall contact, rather than causing it to loose all of it. . Next devlog I hope to have a working wall bounce system and maybe a finish goal that, when entered, plays a victory noise and victory screen. . Holding out hope for the future!!"}, {"post_id": 35259, "ts": "2026-07-26T15:42:00Z", "hours": 2.6272, "text": "Dev Log #8 . I new it was too good to be true, progress has slowed yet again. ): . Today I added: ‘Working’ collisions While my collisions ‘work’, they only work when my player rectangle is unchanged. . The issue being when my gun rotates, its rectangle changes size. . This change of size is interpreted as a movement by my collision sytem, therefore once I come in contact with a tile, the bottom of the rectangle slowly becomes bigger and smaller. . this caused it to move to the tops of different tiles, eventually causing it to be flung out of the game window at rapid speed. . I plan to combat this issue with either of these methods: . OPTION A: Pixel perfect collision done through player masks. . This option is harder and can effect preformance if not implemented properly, but with give a smooth and finished collision effect . OPTION B: Set hitbox collision . This option creates a set region on the player, only that region (probably a rectangle shape to make collision detection easy) being able to collide with tiles. . This option will likely be easier, but will look less pollished as the gun barrel would not fall due to gravity, it would stay above the ground while the grip sits on the ground. . My goals for next dev-log are unclear, but for now I hope to have a working collision system at least!!!"}, {"post_id": 34808, "ts": "2026-07-25T20:07:27Z", "hours": 2.8481, "text": "Dev Log #7 . Another prosperous coding session today! . I have added the following features: Correct bullet orientation Sound effects Tiled surface (no collisions) I also had to change the screen size as its height and length needed to be divisible by 16 in order for my tiles to be used easily. . I added the pytmx python library to allow me to use Tiled, a software that makes level creation very simple and quickly repeatable. . It should significantly increase my workflow speed when I get far enough in development to actually be making levels. . I also did some fine tuning on the strength of recoil, making it stronger but controllable. . Additionally, I increased the speed at which the gun rotates in air to make aiming more difficult but still manageable. . Overall, 7/10 work day today. . By next devlog I hope to have some of the following complete: Working collision Finish goal that takes you to the next level Possible moving colidable tile Bullet limit and UI to show this I’m back in business now, regained most of the knowledge I lost from my 1 week hiatus. Wishing future me luck for the next devlog! . And all you others out there as well. STAY DETERMINED!!!!!"}, {"post_id": 34255, "ts": "2026-07-24T19:58:07Z", "hours": 3.2694, "text": "Dev Log #6 . I have made some absolute serious progress!! . I have added: . Working recoil In-air gun rotation Aiming phase and playing phase (turning aiming guide on and off) Dotted aiming guide This has by far been my best coding session as of late and had little to no complications… . Well there was one… Where my entire recoil system was built on mouse position, a mouse which only controls the direction of the bullet once and never again per level. . So that caused me some grief. But I was able to calculate recoil based on the bullet’s movement rather than the mouse’s position. . A bullet which would spawn and move forward from the barrel despite orientation, solving my problem and making the rest of the other features added much simpler to implement. . In the next few dev logs I hope to have added the following: . Make bullet orientation match barrel orientation Add a start menu soundtrack Bullet trail Sound effects (e.g. gunshot, start button pressed) Complete level (with collisions) I hope progress continues at the rate it is, because if so, I will be drowning in stardust."}, {"post_id": 33415, "ts": "2026-07-23T10:41:34Z", "hours": 1.5733, "text": "Dev Log #5 . I have redeemed myself 10 fold. I have finally added recoil to my game!!!! . This moment shows real progress. I have been trying to implement recoil for a while now, and I have finally done it. . I did this by using the velocity I calculated to determine what direction and what speed bullets are shot at from the gun: def __init__(self, barrel_pos, m_pos): super().__init__() self.image = pygame.image.load(\"Images/BULLET.png\").convert_alpha() self.rect = self.image.get_rect(center=barrel_pos) direction = pygame.Vector2( m_pos[0] - barrel_pos[0], m_pos[1] - barrel_pos[1] ) if direction.length() > 0: direction = direction.normalize() self.velocity = direction * 10 Passing the velocity into my player group and subtracting it from the player’s centre, effectively creating movement opposite to the direction of the bullets, aka recoil!!! def recoil(self, velocity): self.recoiled = velocity self.rect.x -= (self.recoiled.x * 10) self.rect.y -= (self.recoiled.y * 10) I also made it so that bullets despawn once off-screen, optimising performance. . Finally, I re-ordered my code, making debugging and overall readability much easier. . While my recoil is not fully complete, this is a large step in the right direction. . I hope by the next devlog I have a fully working recoil system and possibly a working level. Who knows! . Aim for the stars and you’ll at least reach the moon."}, {"post_id": 33031, "ts": "2026-07-22T16:18:00Z", "hours": 5.3169, "text": "Dev Log Number 4 . With the amount of time logged, you would think a lot has been achieved. But no… . After an almost 2 week long holiday induced hiatus, it seemed I had lost my confidence with pygame, and at some points, felt like i had lost my brain entirely. . My attempt to add shootable bullets should have been a simple task, yet it seemed to be impossible. And its not like I could have packed up shop and tried something else, a shootable bullet is esential for a game where the only playable charcater is, well, A GUN! . The first challenge was getting the bullet to spawn from the correct location. Initially, the bullets appeared from the centre of the gun rather than the barrel. Obviously that was not the intent. . I eventually solved the issue (casued by my own ignorance) and passed the barrel position calculated previously into my bullet class rather than re-calculating this (why would i do this, what on earth was I thinking 😩) . With that issue conquered, i then had to do the maths required to shoot a bullet from the barrel to the position of the mouse. Easy enough. NOT. . To cut a long story short, I used the code attatched to finally make my gun work. . My shootable bullets are far from perfect, they sometimes don’t shoot at all even when the mouse is pressed, their orientation does not match the direction the gun is facing and they are far too small. . I plan to fix this by: killing bullets as they go offscreen, adding some sort of rotation to the bullets and for the bullets not being shot when intended, i have no real plan on how I’m going to fix that. . I hope I come back to you in the next dev log with some actually real progress, because this is a sad excuse. . But with determination and grit and endless scrolling of the pygame documentation, I am sure progress will come as fast as a speeding train [or some sort of blue mammal with quills (^_~)]"}, {"post_id": 24165, "ts": "2026-07-07T15:40:34Z", "hours": 2.0261, "text": "Dev log #3 . Today I got a bit sidetracked and decided to move all of my code within a sprite class to reduce clutter. As a newbie, this was my greatest challenge (besides my arch enemy recoil physics). . This process was tedious and caused my entire code to break completely on multiple occasions. But the risk and complication was worth the reward. I reduced my codes line count by 15. . Due to the length of this process, very little was added. However, I did manage to add a aiming reticle for your first initial shot of the gun. . As seen in the images below, this feature came with its own plethora of annoyances. Annoyances such as multiplying rapidly and staying fixed on the gun trigger rather than the barrel. . I also created a new gun sprite that now faced the mouse correctly. . In the next dev log, I hope I come bearing more features. . I plan to add: .Basic bullet firing .Dotted aiming line instead of solid .Player start game (in which gravity will be applied) .NOT recoil, sadly that will have to wait . Went back to my roots today and used my beginner tutorial to help me learn how to apply the sprite class, video linked here: https://youtu.be/AY9MnQ4x3zk?si=9UtUnmyWYpsHZ6d5 . While the sprite class has acted as a roadblock to speed of development, I believe that by the next devlog, my progress will be sure to amaze (I say with confidence 🤞)"}, {"post_id": 23525, "ts": "2026-07-06T15:26:32Z", "hours": 2.0483, "text": "Dev Log #2 – Start and Turn . Now with the basics ingrained in my head, my game is beginning to take shape. While I wasn’t able to add the recoil mechanics I had hoped for, I was able to: .Create a functioning start screen. .Make my player sprite follow the mouse direction. . Today I used a different tutorial to assist me, linked here: https://youtu.be/WnIycS9Gf_c?si=UhNQQ8ekJLdPhRZO . While these are small achievements, they will help build a much greater finished product. Thanks to implementing these new features, I now understand the importance of game states and how to apply them, as well as how to track mouse movement and mouse input. . The reason I implemented sprite rotation based on mouse direction was to allow the player to aim their initial shot and determine their trajectory. . Later, the player will have to use well-timed shots to control their direction rather than relying on this simpler aiming system, making my game’s movement feel more unique and rewarding fast reaction times. . By the next dev log, I hope to create a new gun sprite that follows the mouse correctly, make a shootable bullet, and finally implement the recoil effect when the gun is fired, although this still seems to be my biggest hurdle. . Progress is picking up pace. Every new feature is another lesson learned, helping build the foundations of what I hope will become my magnum opus. See you in the next dev log. ;)"}, {"post_id": 22879, "ts": "2026-07-05T14:44:05Z", "hours": 2.0386, "text": "Dev Log #1 – Grasping the Basics of Pygame . Since I’m new to Pygame, my first goal has been learning the fundamentals and applying them to build the foundations of my game. . So far I’ve implemented: . .Basic gravity .Collision detection with the floor .Upward player movement using mouse input .Loading and displaying sprites and backgrounds . Building these simple features helped me understand how the game loop works, how collision is detected using rectangles, and how offsetting the player’s y-coordinate can be used to create gravity. . At the moment, the player is represented with a placeholder sprite, as my focus is on the code behind my game (and art has never been my strong suit). . I’ve been using the following tutorial, a learning resource that has helped me greatly: . https://youtu.be/AY9MnQ4x3zk?si=x9KrrOI12N1CwT29 . Now that I have an understanding of the basics, I’m going to start moving towards creating the mechanics required for the actual game. . My goal before the next dev log is to have a basic title screen completed and, if possible, implement the recoil mechanic for my player. . Progress is slow at the moment, but every feature I build teaches me something new. Hopefully, the next update will be bigger and come together more quickly (as long as all goes well 🤞)."}]...
|
Title: Barrel Roll Bullet by @ShinyMist | Stardanc Title: Barrel Roll Bullet by @ShinyMist | Stardance
Devlogs:
Dev Log #1 – Grasping the Basics of Pygame . Since I’m new to Pygame, my first goal has been learning the fundamentals and applying them to build the foundations of my game. . So far I’ve implemented: . .Basic gravity .Collision detection with the floor .Upward player movement using mouse input .Loading and displaying sprites and backgrounds . Building these simple features helped me understand how the game loop works, how collision is detected using rectangles, and how offsetting the player’s y-coordinate can be used to create gravity. . At the moment, the player is represented with a placeholder sprite, as my focus is on the code behind my game (and art has never been my strong suit). . I’ve been using the following tutorial, a learning resource that has helped me greatly: . https://youtu.be/AY9MnQ4x3zk?si=x9KrrOI12N1CwT29 . Now that I have an understanding of the basics, I’m going to start moving towards creating the mechanics required for the actual game. . My goal before the next dev log is to have a basic title screen completed and, if possible, implement the recoil mechanic for my player. . Progress is slow at the moment, but every feature I build teaches me something new. Hopefully, the next update will be bigger and come together more quickly (as long as all goes well 🤞).
Dev Log #2 – Start and Turn . Now with the basics ingrained in my head, my game is beginning to take shape. While I wasn’t able to add the recoil mechanics I had hoped for, I was able to: .Create a functioning start screen. .Make my player sprite follow the mouse direction. . Today I used a different tutorial to assist me, linked here: https://youtu.be/WnIycS9Gf_c?si=UhNQQ8ekJLdPhRZO . While these are small achievements, they will help build a much greater finished product. Thanks to implementing these new features, I now understand the importance of game states and how to apply them, as well as how to track mouse movement and mouse input. . The reason I implemented sprite rotation based on mouse direction was to allow the player to aim their initial shot and determine their trajectory. . Later, the player will have to use well-timed shots to control their direction rather than relying on this simpler aiming system, making my game’s movement feel more unique and rewarding fast reaction times. . By the next dev log, I hope to create a new gun sprite that follows the mouse correctly, make a shootable bullet, and finally implement the recoil effect when the gun is fired, although this still seems to be my biggest hurdle. . Progress is picking up pace. Every new feature is another lesson learned, helping build the foundations of what I hope will become my magnum opus. See you in the next dev log. ;)
Dev log #3 . Today I got a bit sidetracked and decided to move all of my code within a sprite class to reduce clutter. As a newbie, this was my greatest challenge (besides my arch enemy recoil physics). . This process was tedious and caused my entire code to break completely on multiple occasions. But the risk and complication was worth the reward. I reduced my codes line count by 15. . Due to the length of this process, very little was added. However, I did manage to add a aiming reticle for your first initial shot of the gun. . As seen in the images below, this feature came with its own plethora of annoyances. Annoyances such as multiplying rapidly and staying fixed on the gun trigger rather than the barrel. . I also created a new gun sprite that now faced the mouse correctly. . In the next dev log, I hope I come bearing more features. . I plan to add: .Basic bullet firing .Dotted aiming line instead of solid .Player start game (in which gravity will be applied) .NOT recoil, sadly that will have to wait . Went back to my roots today and used my beginner tutorial to help me learn how to apply the sprite class, video linked here: https://youtu.be/AY9MnQ4x3zk?si=9UtUnmyWYpsHZ6d5 . While the sprite class has acted as a roadblock to speed of development, I believe that by the next devlog, my progress will be sure to amaze (I say with confidence 🤞)
Dev Log Number 4 . With the amount of time logged, you would think a lot has been achieved. But no… . After an almost 2 week long holiday induced hiatus, it seemed I had lost my confidence with pygame, and at some points, felt like i had lost my brain entirely. . My attempt to add shootable bullets should have been a simple task, yet it seemed to be impossible. And its not like I could have packed up shop and tried something else, a shootable bullet is esential for a game where the only playable charcater is, well, A GUN! . The first challenge was getting the bullet to spawn from the correct location. Initially, the bullets appeared from the centre of the gun rather than the barrel. Obviously that was not the intent. . I eventually solved the issue (casued by my own ignorance) and passed the barrel position calculated previously into my bullet class rather than re-calculating this (why would i do this, what on earth was I thinking 😩) . With that issue conquered, i then had to do the maths required to shoot a bullet from the barrel to the position of the mouse. Easy enough. NOT. . To cut a long story short, I used the code attatched to finally make my gun work. . My shootable bullets are far from perfect, they sometimes don’t shoot at all even when the mouse is pressed, their orientation does not match the direction the gun is facing and they are far too small. . I plan to fix this by: killing bullets as they go offscreen, adding some sort of rotation to the bullets and for the bullets not being shot when intended, i have no real plan on how I’m going to fix that. . I hope I come back to you in the next dev log with some actually real progress, because this is a sad excuse. . But with determination and grit and endless scrolling of the pygame documentation, I am sure progress will come as fast as a speeding train [or some sort of blue mammal with quills (^_~)]
Dev Log #5 . I have redeemed myself 10 fold. I have finally added recoil to my game!!!! . This moment shows real progress. I have been trying to implement recoil for a while now, and I have finally done it. . I did this by using the velocity I calculated to determine what direction and what speed bullets are shot at from the gun: def __init__(self, barrel_pos, m_pos): super().__init__() self.image = pygame.image.load("Images/BULLET.png").convert_alpha() self.rect = self.image.get_rect(center=barrel_pos) direction = pygame.Vector2( m_pos[0] - barrel_pos[0], m_pos[1] - barrel_pos[1] ) if direction.length() > 0: direction = direction.normalize() self.velocity = direction * 10 Passing the velocity into my player group and subtracting it from the player’s centre, effectively creating movement opposite to the direction of the bullets, aka recoil!!! def recoil(self, velocity): self.recoiled = velocity self.rect.x -= (self.recoiled.x * 10) self.rect.y -= (self.recoiled.y * 10) I also made it so that bullets despawn once off-screen, optimising performance. . Finally, I re-ordered my code, making debugging and overall readability much easier. . While my recoil is not fully complete, this is a large step in the right direction. . I hope by the next devlog I have a fully working recoil system and possibly a working level. Who knows! . Aim for the stars and you’ll at least reach the moon.
Dev Log #6 . I have made some absolute serious progress!! . I have added: . Working recoil In-air gun rotation Aiming phase and playing phase (turning aiming guide on and off) Dotted aiming guide This has by far been my best coding session as of late and had little to no complications… . Well there was one… Where my entire recoil system was built on mouse position, a mouse which only controls the direction of the bullet once and never again per level. . So that caused me some grief. But I was able to calculate recoil based on the bullet’s movement rather than the mouse’s position. . A bullet which would spawn and move forward from the barrel despite orientation, solving my problem and making the rest of the other features added much simpler to implement. . In the next few dev logs I hope to have added the following: . Make bullet orientation match barrel orientation Add a start menu soundtrack Bullet trail Sound effects (e.g. gunshot, start button pressed) Complete level (with collisions) I hope progress continues at the rate it is, because if so, I will be drowning in stardust.
Dev Log #7 . Another prosperous coding session today! . I have added the following features: Correct bullet orientation Sound effects Tiled surface (no collisions) I also had to change the screen size as its height and length needed to be divisible by 16 in order for my tiles to be used easily. . I added the pytmx python library to allow me to use Tiled, a software that makes level creation very simple and quickly repeatable. . It should significantly increase my workflow speed when I get far enough in development to actually be making levels. . I also did some fine tuning on the strength of recoil, making it stronger but controllable. . Additionally, I increased the speed at which the gun rotates in air to make aiming more difficult but still manageable. . Overall, 7/10 work day today. . By next devlog I hope to have some of the following complete: Working collision Finish goal that takes you to the next level Possible moving colidable tile Bullet limit and UI to show this I’m back in business now, regained most of the knowledge I lost from my 1 week hiatus. Wishing future me luck for the next devlog! . And all you others out there as well. STAY DETERMINED!!!!!
Dev Log #8 . I new it was too good to be true, progress has slowed yet again. ): . Today I added: ‘Working’ collisions While my collisions ‘work’, they only work when my player rectangle is unchanged. . The issue being when my gun rotates, its rectangle changes size. . This change of size is interpreted as a movement by my collision sytem, therefore once I come in contact with a tile, the bottom of the rectangle slowly becomes bigger and smaller. . this caused it to move to the tops of different tiles, eventually causing it to be flung out of the game window at rapid speed. . I plan to combat this issue with either of these methods: . OPTION A: Pixel perfect collision done through player masks. . This option is harder and can effect preformance if not implemented properly, but with give a smooth and finished collision effect . OPTION B: Set hitbox collision . This option creates a set region on the player, only that region (probably a rectangle shape to make collision detection easy) being able to collide with tiles. . This option will likely be easier, but will look less pollished as the gun barrel would not fall due to gravity, it would stay above the ground while the grip sits on the ground. . My goals for next dev-log are unclear, but for now I hope to have a working collision system at least!!!
Dev Log #9 . Not the best keyboard clacking session, but not the worst. Looking at you Dev Log #4 >:[ . Today I added pixel perfect collision. . First I got the players mask and a list of the rectangle tiles touching my player rectangle. I then listed these rectangles and was able to detect collision based on if they made contact with the players mask. . The next step was collision resolution. . After a detected collision, the location of collision is then increase the y co-ordinate of the player mask, effectivly keeping the player above the ground. This is how collision resolution works for all the other directions, just with varying positions. . With this I then attempted to add a feature that stopped rotation as a surface was hit, to prevent a constanly spinning gun that sits on the floor. . This is still a WIP, but I have been able to make the gun stop all movement once on contact on a wall, but this is unrealistic as in real life if an object makes contact with a wall it does not loose all its momentum. . I will try to combat this isse by adding a bounce effect that gradually reduces momentum on wall contact, rather than causing it to loose all of it. . Next devlog I hope to have a working wall bounce system and maybe a finish goal that, when entered, plays a victory noise and victory screen. . Holding out hope for the future!!
Dev log #10 . DOUBLE DIGITS!! . What I did today: Added a working pause menu Fixed start screen size Spruced up mask collisions An issue im having with my new and improved collision sytem is that when i reduce player velocity on collision, as well as rotation speed, my player comes to a hault. . In real life, as im sure many of you know, a gun isnt likely to ballance on the barrel verticly, its handle will fall due to being heavier. . I do not yet know how to combat this issue, but I have brain stormed some ideas. . I was going to try and find a center of mass, but that wouldn’t work because that would cause my barrel to float at times due to being disproportionally lighter compared to the gun grip, meaning when gravity acted on it, it would be lob sided. . My other idea was to break the gun into 3 rectangles, barrel, handel and inbetween, then give these rectangles set weights. But i was unable to implement that. . I’m going to try some other solutions, but i think this is going to be some of my toughest challenges yet! . Still undesided on the goals for next devlog, we will see what my brain decided that faithfull day.
Dev Log #11 . Not Good. Very NOT Good. . What I achieved today Victory tile added Aiming reticle completely destroyed Fixed aiming reticle Mask detection not working as intended Gun no longer stopping rotation on collision complete loss of sanity OK, fun. How did this all happen? . My aiming reticle misangling issue was caused by setting initial rotation angle to 15. I did this to increse rotation speed. . The issue being this caused my gun image to also be rotated 15 degrees, causing the barrel not to point to my mouse. . I solved the issue by making initial rotation angle to 0, only += it to = 15 once first shot had been fired. . The next issue I have yet to solve is collision resolution. . It had been an underlying issue for some time, and i still don’t yet know how to fix it. But in my attempt to fix it, I then broke my stop_rotation function, meaning rotation now continues despite collision. . Hope to fix these issues by next devlog, then also give my recoil a bit of calibrating as each bullet seems to be weaker than the last, i think this is caused by my collision resolution setting velocity to 0. . Next devlog will hopefully be more fruitful!
#Dev Log 12 . Good honest session today. . Changed my collision resolution as it seemed to be causing me alot of trouble and hurting preformance. . Now using polygon collision detection instead of mask collision as it greatly improves preformance and simplicty of colllision resolution. . Although that is still not perfect. . I had it working quite well to a point but once I tried to prevent wall riding through on ground variables set to True or False, everyhting seemed to go wibledy wobeldy from there. . My collision detection works as follow: Dictionary of tiles is made, each tile with a rect and id (needed to make certain tile types do different things). . From that list, add the tiles with rectangles that colide with the player into a new list . 3.With this list, I then draw a mask on the tile, setting the co-ordinates to the corners of the rect . Last step, use self.polygon_collision() to check for collision . This worked without a hitch, but my collision resolution sytem is not so flawless. . This has been a 3ish day long ordeal, but I want to get it solved now so that once I’ve got the basics done I can divert my attention to more fun things like gun abilities, kill tiles, moving platforms, ect. . Progress is not necessarily slow, just stuck on one convoluted thing. I hope I get things sorted soon, this is starting to be a real de-motervator. . But I got that frisk undertale in me so I’ll stay DETERMINED!!!
Dev Log #13.Unlucky for some, but not for me! . Collision resolution finally working!!!! . Here’s how it works: . SAT algorithm returns the axis with the smallest overlap (this is the shortest distance to separate the player and the tile). . Correct normal line direction so that it points from the tile to the player. . Move player across MTV (Minimum Translation Vector), pushing player out of the tile. Note: MTV is calculated by choosing the smallest overlap in the direction that moves the two shapes apart. . Remove velocity that is parallel to the collision surface, allowing the object to glide across it without getting stuck. . That’s the jist of it. There are some other things I didn’t include, like how only polygons are made for tiles touching the player’s polygon/rect, but I discussed this in a past dev log. . In all honesty, I don’t fully understand the maths behind it, but I was still able to make my own SAT collision system, so I obviously know enough. . Also added some smaller things like a bullet limit and a restart caused by holding the R button down. . This is good progress and should allow me to add more easily things like level select, new Tiled maps, new tile variants that cause different effects, etc. . Next dev log is going to be packed with stuff!!!!.See you then (;
#Dev Log 14 . Ying ang Yang session today: . I did the following: 2 new maps - one I’m keeping a secret for the complete game >;] Level select rect load (not working YET) Kill tile (detection only) Separating code into files outside of main Music Broke…. Level select menu was a perfect mix of challenge and enjoyability. . I loaded the squares in this even patter by creating a rect at (360, 260), then after the first rectangle is created, add 120 to the x value, until x >= 960. . Then I added 120 to y to create a new line and set x back to 360. . The kill tile collision was done the same way as the win tile collision, using tile ID’s. . The only issue I’ve come across is the music suddenyl not working after moving it into its own seperate file, despite it working like an hour before. . I’ve left this issue for tomorrow as I’ve already got a lot of hours under my belt today. . Also the new level is not possible despite all my effort so will have to change that also. . Good progress today, I’ve made a lit of all I want to achieve in Barrel Roll Bullet before the dedline and one by one, I’m checking that list of. . See you next devlog. Maybe then I’ll reveal the space in-between 💣︎♋︎■︎📬︎□︎♑︎♑︎
#Dev Log 15 . Good day at the office. . Did the following today: Working level select Fixed Music Issue Fixed map loading issues (didn’t discover until today) Added tile classes to replace gid based system for tile specific collision My issues today were caused by my moving of code into separate files, but I’m getting there. I’m no longer using from ___ import * and I am instead using import ______. . The sound issue was caused by a variable in settings setting play music to False without my knowledge. . Map loading broke because my maps are only loaded once outside of the while loop, so I fixed that. . Tiles now have a class that can be checked, allowing for different interactions with tiles dependent on tile class. . Thinking about storing some of my variables into match statements for readability but I find using match cases in Settings.py to be really difficult so I will proceed with caution and immense fear!!! . Not sure what tomorrow holds, thinking about making the kill and win tiles do something rather than print win or killed, but might be held up by this switch from many elifs to match cases. . Staying determined, see you next dev log. . PS, a little hint to my little easter egg 📂︎🖮︎
Dev Log #16 . Today was good. I was welmed. . I did the following today: Added working kill tile Fixed image lagging behind player polygon Switched over to match cases Kill tile works as intended, but doen’t ‘kill’ the player yet, it just freezes everything, plays a sound and propts you to restart. . Image lagging behind was a big issue, causing the kill tile to look as if it were killing without contact, but this was cause by the image lag behind. . I tried changing the order of functions in update() but that didn’t work, tried other stuff like changing how some functions work, in the end, it was because i called update after player_group.draw(). Silly me!! . Match case switch over was easy, just the indentation was at times a pain, but I’ve sorted it now, thank goodness! . Going to try and finish the loss screen that appears, adding a level select button and a return to start, but might not as its not strictly necessary, but does look nice. . Not sure what other stuff to add, maybe a new level? . Who knows, see you next Dev Log!!!!
Dev Log #17 . Feel kinda stuck in-between, but once a pass my last hurdle, all of my efforts will be focused on new abilities, new tiles and art, but the basics are sooo close to being complete. . Today i did the following: Level stopwatch Level complete goal changed Edited map Complete goal had to be changed to make animation of win goal possible, like coin pick up in Mario. Uses polygon collision, freezes on contact currently but working on fix. . Level stopwatch works well, and works with pause menu by subtracting time passed in pause menu from counter total on continue button pressed. . Map needed editing as I feel my game is too hard and my muscle memory from 100’s of tries makes it feel easy, but really isn’t. . Tried making a new map that requires you to collect many little stars to reveal the goal but found it hard to find a map that works with wide range of movement. . This issue is caused by gun being useless most of the time on collision with floor as it is aimed the wrong way. . I plan to have the player be able to rotate the gun while its grounded using A or D, this re-ajusting stopping players getting stuck. That or a jump ability. . Next devlog hope to have: Mini stars working New map Rotate/jump when grounded Game in progress music See you next devlog, no 1 day hiatus next time (;
Dev Log #18 . Good day, but stopped early today beacuse, well, i’m afraid… . What I did today: Added mini_stars Added re-align option when grounded Added new map Mini stars are to be collected first, unlocking the finish goal. They are hard coded right now so cant be moved for new levels, but I can change that if need be. . Re-align was initially supposed to allow A to rotate the player one direction and D the other, but my game seemed to really not like decreasing the angle value when grounded. . So I’ve made it so rotation only happens one direction, but a full 360 range of motion is possible. . The new map that uses portals, but the portals are not actually functional yet so, thats a job for tomorrow . . Almost everything added from last devlogs check list, but decided against adding placeholder music during playing state as i think I would go insane from listening to it on loop, so that can wait till the end. . Hope to have a longer more prosperous dev log next time, see you then!!!
Dev Log #19 . Getting lazy, need to lock in and get 3 hours tomorrow. . Today I added: Working portals Time stop ability Portals and time stop ability use object layers in tiles, a much easier solution compared to my use of polygons for complete goals, may change that but not sure. . Time stop ability is pretty simple, works like pause menu, but allows image rotation and enables follow mouse. . Portals work by on contact, moving player position centre to other portal centre. . The velocity changes with the exit direction using the following code: rotation_difference = entry_angle - exit_angle self.velocity.rotate_ip(rotation_difference) Overall, ok day, not sure what I’ll do tmr, but I’m sure theres something hiding on my checklist. . ALSO!!, Fix this horrible performance issue I had, see bellow for comparison
Dev Log #20 . Sorry for the hiatus, not a lot done, but sure I will be soaring tomorrow. . Today I addded: Killable enemies New reset all function Killable enemies act as win conditions, similar to the mini stars, having to all be killed for the goal polygon to spawn. . The reset function made my code much more readable and allowed me to condense all of the restart events like lose velocity, set position here, screen.blit things again if needed. . I started working on 3 buttons that when pressed, open a gate but didn’t get to finishing it sadly. . I want each button to have different press conditions, one can be pressed by bullets only, one only on direct gun contact and the other working with either or. . In later stages, I will have to think how i will communicate this functionality to the player but I’m saving texturing and making the game look good for last. . Hope to have more progress tomorrow. Fingers crossed.
Dev Log #21 . Getting lazy now, saw hacktime was down and decided not to bother doing anything before 12, but I hope I will break this cycle. . Today I added working buttons that when pressed, remove gate blocking path. . Had to over hall all my tile loading and map loading and parts of my collision resolution to allow me to reduce the lag being caused in some levels and be able to remove collision selectively for tile types. . I learn how to use set today. I used a set to store the types of gates that have been opened because it prevents duplicates and allows me to quickly check whether a specific gate is open. . No animations for button presses yet as I want to leave that stuff for the end. . I’m feeling the time crunch now because I really want this to be finished before I get back to school and focus on my studies, but this still counts as practice so I’ll continue a little bit during school days. . I will do better tomorrow I promise, cause I’ve got this far, it would be a waste to stop now.
Dev log #22 . Back to business!! . Today I added: Uncompleted level select lockout Separated tile load into own file Easter egg room added Level lockout works by calculating max_player_level, the furthest level a player can select based on if they have beat the previous levels. . This works buy using a function to check if current player_level is greater than max_player_level, if it is then max_player_level = player level. . Then for level select button with number greater than max_player_level, a red cross is screen.blited ontop,as well as not allowing mouse clicks of the rect from having any function. . Tile file separation helped me remove 150 lines from my main file, improving readability. . My easter egg has a 2% chance of happening and gives the player a custom gun appearance on discovery. . The code used to change the guns appearenece should let me, in future, make custom skins for the gun, skins that could be rewarded for levels complete, secondary level goals reached, ect… . I will not share how to reach my secret room, but I think it would be better for someone to stumble across it by accident. . Good day today, progress is picking up pace again, good job me!!! . Strange, it seems, there is a man here….
Dev Log #23 . Very good day today, embracing the foddian likeness of my game, making sure that the player gets as angry as possible, just to make that feeling of victory feel so sweet. . Here’s what I did today: LOSER document created (must be filled in to reveal hints, which will be added later) Change rotation direction ability New map (Still a WIP) Document uses follow mouse function and draw line function. Starting the line at the mouses previous position and ending it at its new position. . This happens very fast, so the lines do not appear blocky and appear like real pencil drawing. . The change rotation ability uses the pbject layer like my previous time stop ability, and now that I understand how object layers work, i was easily able to make this ability by copying my clock abiltiy load and changing the result of contact. . The result being making rotation speed negative, reversing direction of rotation. . The new map uses a mix of many abilities and objects, but I have not added them in just yet. . I could quite easily I feel but I’ve reached my 3 hour brain capacity limit, because realisticly with the time spent making pngs, finding sounds, reading pygame documentation and waching tutorials, I’ve probably spent about 5. . But rewards are not for the weak or the lazy, and this little project of mine is helping me leaps and bounds for my future A-level comp sci journey. . See you next time, with some jucy new progress!!!!
Dev Log #24 . A progress full day today, but mabye not for the best?? . Today I done the following: Added a charcater diologue box Fixes re-align function so that it works when rotation direction is reversed Just doing little sidequests for now as I’m trying to hide from my enemy, level design. The things is I’m not very good at games, so i dont have the reaction time to create very punishing levels with little room for error. . So to combat this, I end up making really hard levels or super easy ones. . Additionally, I barley add any time to my total when creating levels as it uses a piece of software outside of visual studio. . My character text box is pretty much a recreation of the ones seen in undertale, even using the voice blip of toriel as a place holder. . This should allow me to add a small story that I will make sure to keep simple, like a mario esque plot. . The re-align function was fixed by using the variable rotation direction, then setting that to 1 or -1 depending on contact with reverse direction ability or not . Then multiplying rot_speed by that value reverse the direction that re-align moves. . I will have to knuckle down on level design tomorrow and make sure each level introduces the abilities and tiles one at a time, letting the player get used to them, allowing for levels that include a mix of multiple to be more approachable.
Dev Log #25 . My love for videojuegos has got the better of me. . Over theses 2 days all I have done is made some level maps and fixed the spawing positions of both win condition and the player based on the new maps. . But I have structure now, and rather than geting destracted, I have set myself some goals to complete hopefully by the end of the month, leaving me time to make the UI look nice. . I present to you. THE TOD0 LIST: . A - DIOLOGUE Fix dialogue system Add hint dialogue Add new level dialogue Add completed dialogue B - ABILITIES/TILES Bullet Pickup Ghost bullets Teleport bullets Time SLOW (not stop) Gravity flip ? Map flip ? Breakable tiles Level editor ? C - UI James bond level start animation Gun skin menu All menus with all required buttons D - Miscellaneous Mission objectives (Bad piggies esque) Determine gun skin unlock criteria A FINAL BOSS !?!?! I hope tomorrow if filled with WAY more advancements of the work kind rather than the Minecraft kind (;
Dev Log #26 . Popped ULT today!!! . Today I added the following: Slow time ability Breakable surfaces Bullet pickup Fixed up dialogue system (Not fully complete) Slow time ability works by setting a time to a decimal then multplying the following by it: Velocity (Bullet + Player) Rotation speed Gravity strength Multiplying by a decimal reduces the numbers, emulating slowed time rather than reducing fps which is a bit of a cop-out . Breakable surfaces work similarly to the gate tiles, the tiles having a alpha value of 0 when bullet rect makes contact with tile of that class and adding that tile type to a list: broken_tiles. . All tiles in that list are then ignored by tile collision . Bullet pickup works by detecting rect collision between the player and the surface, when contact is made the players bullet count (representing bullets shot total) is reduced by one, increasing the number of shots available to the player by one. . Dialogue system now works with full words, voice blips are annoying but will fix late stage when adding polish. Will also make it that player has to click mouse to go to next dialogue screen to give them time to read the text. . That is 3 and a bit things of the list, very good progress, juggling summer work, this and most importantly my Minecraft duties has been an upward hill battle but I’m getting there. . See you next develop with more progress!!!
Dev Log #27 . More things checked of the list today: . Today I did: Added gravity flip ability Added teleport bullets Added player mission objectives However, some other things i worked on today are still a work in progress, such as: Diologue system Ghost bullets (travel through walls) Gravity flip works similarily to how slow time works, settings the variable self.gravity_flip to -1 on contact, then multiplying graivty strenght by it, reversing the direction of gravity . This however made my realign function not work when on the ceiling, so i added to re-align that if gravity_flip was negative, to detect ceiling hit rather than grounded, allowing it to work why gravity was flipped. . Teleport bullets work by setting a can teleport function to True on contact, then when true, if bullet collidesrect with tile, self.rect of bullet is equal to self.rect of gun. the can tele[port function is then set to false, making the ability only work once as intended. . Player mission objects are as follows: Complete level Complete level in set ammount of time Complete level with less bullets than provided This uses lists in a way i have never used them before and looks like this total_stars = 0 level_stars = [[False, False, False] for _ in range(levels)] If player completes level, level_stars[Settings.player_level - 1][0] for current player level is set to True. . If player completes level quickly (complete_time < bonus_time), then …[1] is set to true . If player reaches has_won game state with a number of bullets lower than the bullet max, then then …[2] is set to True. . Total stars is incremented by one for each goal completed, and if level_stars[Settings.player_level - 1][1,2 or 3] is already set to true, then the increment is skipped, meaning you can only get 3 stars per level. . That’s all for now, hope to fix the issues I had today in tomorrows devlog!!
Dev Log #28 . Didn’t do alot today, or for the 2 other days… . I finally made ghost bullets work correctly and have changed the dialogue sytem a bit . The ghost bullets working and not working previously was juts a matter of using variables inside the bullet class rather than global ones, making it work better for some reason, I had the assistance of a friend in fixing the issue, and safe to say it solved it . Dialogue sytem has only been changed slightly so not much point documenting the changes, spacing, timing of letters, ect. . Sorry for short devlog, I hope I have more tommorrow.
Dev Log #29 . I’m pretty close to finishing the code side of my game now, the rest of my efforts will soon be focous toward things like: Writing dialogue Making nicer looking UI Making tiles look good rather than coloured blocks Animations Music Today I did the following: Re made the dialogue system AGAIN Created a gun selection screen My dialogue system displays a word at a time and plays a short noise for each word shown, similarily to undertale voice blips. However, I think it sounds quite bad and I plan to replace it with a set dialogue sound that plays at the start, like animal crossing. . My dialogue system now plays on level start and level completion, and does not re-trigger on level repeat, using similar code used in my star tracking code. . Gun select code is similar to my level select code, using a different class but the same code, just changing the lock out code to only unlock once star count is >= button number - 1 * 6, so that each button is unlocked for each 6 stars earned, as well as having the default gun already unlocked. . That’s all for today, I hope to have a complete game by the end of the month so I can have this finished before the school year starts.
Dev Log #30 . The big 30!!! . Done quite a bit today, just last bit of polishing and then we move towards UI, music, level design, ect. . Today I: FINISHED THE DIALOGUE SYTEM Added a leave waiver button (was a softlock) Added a text box to waiver [WIP] Dialogue system works fully (minus sound but thats still a win in my books). Plays on level start and level completion and once dialogue is viewed by the player, it is not shown to them again. . Mouse can be clicked to remove dialogue from the screen, without triggering bullet fire. . Also fixed the issue of the text backround being displayed on re-entry and re-completion of the level, but fixed that easily with a variable, setting it to true or false if level had already been completed, then only displaying the text bg when it was true. . Waiver leave button pretty simple, basic pygame rect collidepoint detection. . Text box sets text_active to true on mouse click, mouse clicks anywhere else set it to false, meaning player can only type when they have clicked on it (when they want to). . I appened every event.unicode into a list on key press, meaning I had a list of the players key storkes, then screen.blitted each letter in the list. . Final touches are making all fields complete required to acess button that is a hyperlink to video of me completing stages with instuctions to help, and also backspace and enter and wordwrap working with the text_box. . Then I think I’m done for the most part on the coding side of things, and will move onto level creation. . The only thing I haven’t completed from my long list from a preious dev_log are: Level editor Upside down ability James bond level start Hint dialogue on multiple deaths Boss fight Not to say these aren’t going to be added but they are not simple things and will not really add to much to my game in all honesty. Given the deadline of end of this month I have given myself, I don’t know if I will have time to add these (except for the James bond level start thing as that is a UI thing that will require art, music ect so might work on that when not coding. . That’s all, thanks for reading (:
Dev Log #31 . I AM FINISHED!!! . Well, pretty much at least. . Today I: Completed the Waiver Made some more levels I made it so that the text box works with word wrap, enter key and backspace key. . I did this by splitting the text into words and lines, then checking each word’s width against the rect boundaries. . If the word exceeds the boundaries x, the texts’ x position is reset and the Y-coordinate is incremented, creating a new line. . The Enter key creates a new line by resetting x and incrementing y, while Backspace removes the last character from the text string, preventing it from being displayed. . The waiver now checks if all fields are filled and allows you to press a button that is connected to a hyperlink that will, in the future, take you to a video created my me showing how each level is complete. . Also made 12 levels today, each new feature is slowly implemented one at time. . That’s all for today.
Dev Log #32 . Made 50 levels today, that is all. . Every 3 levels, a new ability/feature is added. This allows the player to get used to the new thing added, making their later appearance managble as the player is now used to how they function. . I have not set the player and goal location co-ordinates for each level, or other variables like if mini stars are required. . That’s all for today.
Dev Log #33 . As you can probably guess, I have done alot I have done the following: • Gave all levels the correct level variables • Made buttons work correctly when rotated • Made teleport bullets work as intended • Made gates and broken tiles allow bullets to pass through when collision is removed • Created an EXE file of my game for friends to use for playtesting • Made a stat tracker to use playtest information to improve my game • Corrected all file directories that had to be moved for PyInstaller to work properly • Fixed the Easter egg room so it now loads correctly • Added AI declaration comments That is a lots, so let me quick fire explain how i did them Painful repetition, change variables, restart level, change tiles, reset level, change ability position, reset. Repeat for level in levels (do this 50 times) . This was partially assisted by AI, but from what I understand the buttons’ Tiled rotation number is used to adjust the collision rectangle’s position so it matches the rotated button object in tiled. Collision check works as did previously. . Teleport bullets originally tp the player if a bullet fired priviously hit a way after pickup, despite no bullet being fired after pickup and also sometimes caused the player to shoot downwards through tiles. . I fixed the wrong bullet tp by using a self.variable rather than a global one as previously, allowing each bullet to know if they were teleport enabled, rather than all bullets being teleport enabled. . The tile collision isssue was fixed by by moving the player backwards along the bullet’s path until they are outside the tile, preventing the gun from passing through walls and being pulled down . This one will just explain itself (if tile in list, then ignore kill on contact): for tile in Tiles.tiles: if self.rect.colliderect(tile["rect"]): tile_property = tile["property"].get("type") if tile_property in Tiles.open_gates: continue This used pyinstaller, not something i really code or anything so, I’ll just say i did it sucessfully . Stat tracker records bullet count, time and deaths/restarts that a level took on completion. Difficulty of a level can also be decided by a play tester by pressing any number button during a level. . This data is level specific, and on key press of /, will create a json file that holds all the data, which can then be sent for me for review of things like bullet max, time complete bonus time, ect. . Self explanatory, just changed things like “Image/buttn.png” to “Game/Image/button.png” . Restart all function was required in load room function as it contains map load, so the level map that was supposed to load is not displayed instead of the secret easter egg map. . 9.Should have declared AI usage earlier, but I have been checking my chat history and I have been able to determine what sections of my code are AI generated . That’s all, gotta try and keep my daily streak alive this time to score myself a free plush.
Dev Log #34. . Just cleaning some things up now, we are in the home stretch . I did the following: Updated assest Updated object display code fixed broken dialogue Most assets have a fresh new look created in photopea . Buttons can now be loaded at rotated orientations . Dialogue now does display and does not disapear on first level load. This is because the start playing state was being skipped, i fixed this by using a continue, which skipped the rest of the current loop iteration, preventing the start-state code from continuing to run after changing playing_state. . Thats all, most of my time when into design. See you next devlog
Dev Log #35 . Been a bit distracted from this project due to school starting but I’ve been able to get a few things done. . I have done the following: Finished dialogue texts Made it so that dialogue box only appears when there is text Given kill tiles rotatable counterparts Added muzzle flash Added ability pick up sounds Updated a few more assets My Git commits have started to get a bit sloppy as i do these little bits on during my free periods, but im getting back into the swing of things . The dialogue box will only appear if text != “” and will put the player in the start playing state, without requiring a mouse click like it did previously. . Adding sounds was pretty simple so I wil leave an example bellow if self.rect.colliderect(ability["rect"]): if self.gravity_flip > 0: up_gravity_fx.play() else: down_gravity_fx.play() ability["collected"] = True self.gravity_flip *= -1 That’s all, I think 20/09/2026 will be a date for the books as I’m confident I will be finished by then. ALSO, if anyone sees this before ship, could you let me know any ideas for what my 16x16 tile for regular tiles could look like? Many thanks if you respond
Dev Log #36 . I have done most of the updating of UI, having only a few assests left and one level left to edit. . In addition to this, I have also made it so that buttons now appear pressed when pressed, rather than disappearing. . My easter egg room also stops the music correctly on level complete. . The final objectives are as follows: Have gun select each have image of gun Waiver has displayed text Hint video made and linked correctly All button can only be pressed when on screen Finish misc Assets Add death, win, and coins/stars collected based on mission objectives complete Thats all, I think 20/09/2026 could still be the date for the books, but I’ve got to put the burners on to get this finsished to a level of polish I’m happy with.
Dev Log #37 . All code is 100% complete now, the only thing left to do is finish all of the UI and then I am ready to ship. . Today I: Fixed portals Added level skip button Displayed bonus objectives Made button rotation work when pressed also Made gun select display gun images Portal code issue was caused by object overlapping with tiles, cause tile collision resolution to push the player out of the tile, and at times out of the map. Fixed this by teleporting player slightly above the object (above being determined by orientation). . Level skip increases player level, restarts level and spawns player in next level. . Bonus objectives screen.blitted on win, text appears green when objective met, red when it hasn’t . Used updated rotated button rect rather then previous and changed screen.blit to use center of rect rather than topleft . For each button in gun group, i screen.blited that gun into the center of the select gun skin rect . Thats all, hope to ship by tonight.
Dev Log #38 . DONE . I did the following: Added music that plays while in level Removed copyrighted music Finished all GUI Made code neat using ruff Will ship at some point soon. See you on ship day!!!!
Dev Log #39 . THE FINAL DEV LOG . I am finally ready to ship!!! . I did the following: Made a working read me Made a working exe file of my game Removed de-bugging features so game works as intended. Stopped music overlap from happening Removed all copyrighted music (may have mentioned this previously) I used pyinstaller tocreate my exe file. . Level buttons now only work if player max player level is less than or equal to the level you are selecting. . Stopped music overlap by puting stop music into every game state + in load room function . Its been a pleasure to take part in the stardance event. Lets have a look to see how far this project has come!!!
Ships:
Barrel Roll Bullet A recoil-based platformer where, instead of traditional jumping and movement, you shoot to propel yourself around each level. My game includes multiple abilities, unlockable gun skins and 50 levels. The biggest challenge I faced was developing an accurate and efficient collision system. Initially, I planned to use AABB collision, but because it relies on rectangular bounding boxes, I found that the gun barrel could appear to float when rotating or interacting with objects. I then experimented with mask collision to achieve pixel-perfect accuracy. However, using a large number of masks throughout a level caused noticeable drops in performance. I eventually settled on a middle ground using SAT (Separating Axis Theorem) polygon-based collision. This provided much more accurate collision detection for the rotating gun while being significantly more performant than mask collision, allowing me to maintain both responsive gameplay and consistent performance. I am proud of the persistence I have demonstrated throughout the project. During the early stages of development, I encountered significant gaps in my knowledge, particularly as I was new to object-oriented programming. At times, I struggled with seemingly simple tasks, such as correctly initialising a game window or positioning a rectangle where I intended it to be. Despite these difficulties, I continued to learn, troubleshoot and refine my approach rather than abandoning features when they became challenging....
|
1793342871.5543628
|
1793429271.5543628
|
|
16044
|
CSPBattery by @PriyanshuBiswal | Stardance
|
PriyanshuBiswal
|
0
|
1.92
|
0
|
[]
|
[{"post_id": 7303, "ts": "2026 [{"post_id": 7303, "ts": "2026-06-12T05:19:07Z", "hours": 1.9233, "text": "Created an Android APK for this FRC battery manager!"}]...
|
Title: CSPBattery by @PriyanshuBiswal | Stardance
Title: CSPBattery by @PriyanshuBiswal | Stardance
Devlogs:
Created an Android APK for this FRC battery manager!...
|
1793249594.9164371
|
1793854394.9164371
|
|
65207
|
Sticker bounce by @De | Stardance
|
De
|
0
|
2.22
|
0
|
[]
|
[{"post_id": 73038, "ts": "202 [{"post_id": 73038, "ts": "2026-09-24T07:57:32Z", "hours": 2.2194, "text": "The fudging thing doesn’t work"}]...
|
Title: Sticker bounce by @De | Stardance
Devlogs: Title: Sticker bounce by @De | Stardance
Devlogs:
The fudging thing doesn’t work...
|
1793084093.246721
|
1793688893.246721
|
|
16284
|
FileStream by @lazerkat | Stardance
|
lazerkat
|
0
|
1.78
|
0
|
[]
|
[{"post_id": 7304, "ts": "2026 [{"post_id": 7304, "ts": "2026-06-12T05:20:22Z", "hours": 0.3869, "text": "Devlog #4… weird css stuff done be happening. started working on the gallery kinda part tho!"}, {"post_id": 7293, "ts": "2026-06-12T04:54:06Z", "hours": 0.4853, "text": "Devlog #3! i genuinely just spent 30 minutes trying to figure out how to round corners :((("}, {"post_id": 7284, "ts": "2026-06-12T04:22:48Z", "hours": 0.5711, "text": "Devlog #2!!!!!! i finally got the videos to display!! took a bit of tiime to make the weird video source thing work but it does work now! ˢᵗᵃᶜᵏ ᵒᵛᵉʳᶠˡᵒʷ ᵐʸ ᵇᵉˢᵗⁱᵉ"}, {"post_id": 6714, "ts": "2026-06-11T07:46:40Z", "hours": 0.3406, "text": "DEVLOG #1 ok im using md now ig i got the server working and a simple test :) also got a pathlib showing me the files in a folder which is actually super cool lol! i spent a little too long on the path part tho.. i mean 19 minutes aint that much tbh"}]...
|
Title: FileStream by @lazerkat | Stardance
Devlog Title: FileStream by @lazerkat | Stardance
Devlogs:
DEVLOG #1 ok im using md now ig i got the server working and a simple test :) also got a pathlib showing me the files in a folder which is actually super cool lol! i spent a little too long on the path part tho.. i mean 19 minutes aint that much tbh
Devlog #2!!!!!! i finally got the videos to display!! took a bit of tiime to make the weird video source thing work but it does work now! ˢᵗᵃᶜᵏ ᵒᵛᵉʳᶠˡᵒʷ ᵐʸ ᵇᵉˢᵗⁱᵉ
Devlog #3! i genuinely just spent 30 minutes trying to figure out how to round corners :(((
Devlog #4… weird css stuff done be happening. started working on the gallery kinda part tho!...
|
1793260092.2825146
|
1793864892.2825146
|
|
13666
|
My very own WebOS by @starr | Stardance
|
starr
|
1
|
7.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T08:09:55Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I have finally made my first webOS with a welcome window, notes app and stopwatch app. The most challenging part of this project was learning to use JavaScript and trying to code some of the logic myself (and debugging it too!!).", "repo": "https://github.com/userr73/First-WebOS", "demo": "https://userr73.github.io/First-WebOS/"}]...
|
[{"post_id": 73042, "ts": "202 [{"post_id": 73042, "ts": "2026-09-24T08:07:12Z", "hours": 0.4772, "text": "Made some quick updates to the desktop apps so that is is structured into a grid and also changed some content in the welcome and notes window"}, {"post_id": 71708, "ts": "2026-09-21T10:59:57Z", "hours": 0.9417, "text": "Stopwatch App I found a video tutorial for making a stopwatch in JS. The original vid had three separate buttons for START, STOP and RESET, but I changed this so that the START and STOP button are combined together."}, {"post_id": 68034, "ts": "2026-09-14T12:33:41Z", "hours": 1.1922, "text": "idk - Notes app content update + element exceeding window bug?? I updated the HTML so that I can add content through JavaScript so it does not need to be hard coded into the HTML file. I spent of bit of time debugging this as I couldn’t figure out why some of the content I added to the Notes app was disappearing when I clicked it. Turns out there were a few issues like calling the same function twice, but I also realised I added an event listener that ran the wrong function which was why some of the content was disappearing. Also, I did the ‘additional challenges’ in the guide, mainly the 4th point about the bug where windows can exceed the screen width and height. I used a bit of Gemini here to figure out how to get max and min values from a set of numbers (Maths.min and Maths.max) and also used W3Schools to get the window height and width as well as the div element’s own height and width. Using this, I implemented my own logic (with an if statement) to contain the element within the viewport height and width. This took a tiny bit of trial and error coz I kept getting confused on when to use min and when to use max but I got there eventually"}, {"post_id": 65925, "ts": "2026-09-11T11:55:43Z", "hours": 0.9047, "text": "Update JS code file structure + Creating the Notes app functionality I spent some time updating the structure of my js file by reordering some code and also creating functions for any repeated tasks such as initialising windows. I also worked on my Notes app and played around with some border and outline properties to see what combination of styles would make it easier for users to edit in the app. I ended up with going for a left border indicator type of thing (the colours in the screenshot below aren’t final since I haven’t worked on the overall style of my OS yet so I just went with grey and black)"}, {"post_id": 64728, "ts": "2026-09-09T11:13:39Z", "hours": 0.6311, "text": "Working with z-index Continuing with the guide, I’ve added code that ensures that whenever a window clicks, it rises to the top using the z-index property. I did the same for the top bar. Bugs An issue I faced was when I tried to use the function addWindowTapHandling() for my notes screen but I forgot that I defined the notesScreen variable later on in js file so the notes app disappeared from my OS screen for a bit. I also got really stuck on why my top bar wasn’t rising above the windows so I put my js file into Gemini and I realised it was because I had two openWindow() functions and the second one was the old version that did not have the added lines of code."}, {"post_id": 63485, "ts": "2026-09-07T11:20:20Z", "hours": 1.1106, "text": "Adding my second window I have begun working on my second window which will be a notes app. I continued to follow the guide and created an icon for the app and also a new window for it. It’s mostly taken a while to sort out the js file since I got confused with why the window wasn’t popping up at first (I didn’t name the classes and ids for the divs correctly). Here’s the update:"}, {"post_id": 61460, "ts": "2026-09-04T12:05:06Z", "hours": 2.1317, "text": "Setting up the background, top bar, window So far, I have followed the guide and created the background page with a top bar and created my first welcome page window (the content is random right now - I’ll update this later). The window is also draggable at the handle. I’m still working on what kind of style I want to aim for in my OS… Also, this is kinda my first devlog because I thought my devlogs were broken (turns out I just couldn’t figure out how to use this 💀)"}]...
|
Title: My very own WebOS by @starr | Stardance
De Title: My very own WebOS by @starr | Stardance
Devlogs:
Setting up the background, top bar, window So far, I have followed the guide and created the background page with a top bar and created my first welcome page window (the content is random right now - I’ll update this later). The window is also draggable at the handle. I’m still working on what kind of style I want to aim for in my OS… Also, this is kinda my first devlog because I thought my devlogs were broken (turns out I just couldn’t figure out how to use this 💀)
Adding my second window I have begun working on my second window which will be a notes app. I continued to follow the guide and created an icon for the app and also a new window for it. It’s mostly taken a while to sort out the js file since I got confused with why the window wasn’t popping up at first (I didn’t name the classes and ids for the divs correctly). Here’s the update:
Working with z-index Continuing with the guide, I’ve added code that ensures that whenever a window clicks, it rises to the top using the z-index property. I did the same for the top bar. Bugs An issue I faced was when I tried to use the function addWindowTapHandling() for my notes screen but I forgot that I defined the notesScreen variable later on in js file so the notes app disappeared from my OS screen for a bit. I also got really stuck on why my top bar wasn’t rising above the windows so I put my js file into Gemini and I realised it was because I had two openWindow() functions and the second one was the old version that did not have the added lines of code.
Update JS code file structure + Creating the Notes app functionality I spent some time updating the structure of my js file by reordering some code and also creating functions for any repeated tasks such as initialising windows. I also worked on my Notes app and played around with some border and outline properties to see what combination of styles would make it easier for users to edit in the app. I ended up with going for a left border indicator type of thing (the colours in the screenshot below aren’t final since I haven’t worked on the overall style of my OS yet so I just went with grey and black)
idk - Notes app content update + element exceeding window bug?? I updated the HTML so that I can add content through JavaScript so it does not need to be hard coded into the HTML file. I spent of bit of time debugging this as I couldn’t figure out why some of the content I added to the Notes app was disappearing when I clicked it. Turns out there were a few issues like calling the same function twice, but I also realised I added an event listener that ran the wrong function which was why some of the content was disappearing. Also, I did the ‘additional challenges’ in the guide, mainly the 4th point about the bug where windows can exceed the screen width and height. I used a bit of Gemini here to figure out how to get max and min values from a set of numbers (Maths.min and Maths.max) and also used W3Schools to get the window height and width as well as the div element’s own height and width. Using this, I implemented my own logic (with an if statement) to contain the element within the viewport height and width. This took a tiny bit of trial and error coz I kept getting confused on when to use min and when to use max but I got there eventually
Stopwatch App I found a video tutorial for making a stopwatch in JS. The original vid had three separate buttons for START, STOP and RESET, but I changed this so that the START and STOP button are combined together.
Made some quick updates to the desktop apps so that is is structured into a grid and also changed some content in the welcome and notes window
Ships:
I have finally made my first webOS with a welcome window, notes app and stopwatch app. The most challenging part of this project was learning to use JavaScript and trying to code some of the logic myself (and debugging it too!!)....
|
1793342956.8858075
|
1793429356.8858075
|
|
58654
|
My awesome macropad! by @Alpja | Stardance
|
Alpja
|
0
|
6.86
|
0
|
[]
|
[{"post_id": 73045, "ts": "202 [{"post_id": 73045, "ts": "2026-09-24T08:26:30Z", "hours": 1.3597, "text": "I am entirely done with programming :D I removed the brightness encoder cause its a bit useless and i had to free out pins for the volume encoder After coding I finished the case ( i didnt record it because I dont want to suffer in camera) and uhh I will cross check all the files and submit it :D"}, {"post_id": 70169, "ts": "2026-09-18T16:48:45Z", "hours": 0.3169, "text": "Alr so I have applied color to the macropad ( I honestly dont know what else to add pls give me suggestions ) and uhh i went through 3-4 colors and i liked this one the most. I will be going with the coding tomorrow"}, {"post_id": 68736, "ts": "2026-09-15T17:24:53Z", "hours": 0.9172, "text": "ALRIGHTYYYYYY I completed the enclosure of the macropad, next step is to add some life to the enclosure by adding colors and after that I will be coding the firmware :D"}, {"post_id": 68192, "ts": "2026-09-14T17:58:12Z", "hours": 0.5003, "text": "Designed the base of the macropad and readjusted the PCB design because it did’nt fit the requirement, i also did’nt do much progress because i did late at night and i have an exam tomorrow. I will design the case and add the cutouts for the switches tomorrow"}, {"post_id": 67487, "ts": "2026-09-13T16:31:54Z", "hours": 2.4169, "text": "It took so long just to do this wiring waaa I had to restart doing the PCB 4-5 times cause i had some trouble wiring it all (I literally forgot what i had trouble with because i spent the whole day doing it). I will be doing the case next (yay)"}, {"post_id": 66703, "ts": "2026-09-12T16:09:18Z", "hours": 1.345, "text": "YAYYY I AM FINNALY DONE WITH SCHEMING I didn’t know what to wire to what so I used AI to explain how it works, and I had ALOT of difficulty with the errors cause I wired the DIN and DOUT of the RGBs and also with the footprints cause I hadn’t downloaded the resources before Next I’ll be doing the PCB of the macropad"}]...
|
Title: My awesome macropad! by @Alpja | Stardance
Title: My awesome macropad! by @Alpja | Stardance
Devlogs:
YAYYY I AM FINNALY DONE WITH SCHEMING I didn’t know what to wire to what so I used AI to explain how it works, and I had ALOT of difficulty with the errors cause I wired the DIN and DOUT of the RGBs and also with the footprints cause I hadn’t downloaded the resources before Next I’ll be doing the PCB of the macropad
It took so long just to do this wiring waaa I had to restart doing the PCB 4-5 times cause i had some trouble wiring it all (I literally forgot what i had trouble with because i spent the whole day doing it). I will be doing the case next (yay)
Designed the base of the macropad and readjusted the PCB design because it did’nt fit the requirement, i also did’nt do much progress because i did late at night and i have an exam tomorrow. I will design the case and add the cutouts for the switches tomorrow
ALRIGHTYYYYYY I completed the enclosure of the macropad, next step is to add some life to the enclosure by adding colors and after that I will be coding the firmware :D
Alr so I have applied color to the macropad ( I honestly dont know what else to add pls give me suggestions ) and uhh i went through 3-4 colors and i liked this one the most. I will be going with the coding tomorrow
I am entirely done with programming :D I removed the brightness encoder cause its a bit useless and i had to free out pins for the volume encoder After coding I finished the case ( i didnt record it because I dont want to suffer in camera) and uhh I will cross check all the files and submit it :D...
|
1792759990.965353
|
1793364790.965353
|
|
16838
|
AlpineOS by @ashish-raj-singh | Stardance
|
ashish-raj-singh
|
2
|
23.0
|
72
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T08:32:33Z", "hours": 11.0, "multiplier": 6.36, "payout": 72, "blessing": "neutral", "text": "This is AlpineOS 2 (WebOS-2) upgraded from the previous version of AlpineOS 1 (WebOS-2) UPss Window animations are now smoother and more responsive. Introduced Widgets and are draggable anywhere on the desktop screen Truly FullScreen mode is here, previously the fullscreen was still not using the space behind the dock and menu bar at top, now it does Menu Bar improvements, now it has calender, wifi and a brightness slider which actually workd A new Settings app, which now has the personalization settings, and a new Widgets section where you can add widgets to your desktop Auto hide dock is now working, it simply hides the dock and shows on hovering th bottom of the desktop and it can be toggled in the settings app The Challenge? The main hurdle for me was understanding the actual OS, and its working as i hve tried to keep this project as realistic as i could understand other then that, the animations and drag and drop functionality was a bit challenging, so right now drag and drop us not supported as i have my exams coming up ans stardance is also going to end 30 sep to i dont have that much time The Excitement? this project was particularly exiting for me not because of the web technologies like used react heavily i have been a web dev for like a year main thing was the OS part, i have never worked on an OS before and this was a new experience for me, and i really loved it i tried to understand the real Operating System i leanred about scheduling algorithms like FCFS, SJF, memory management,how kernel works and communicated, how things are separated and modularized so much more What can you do? just right click on desktop and try to add a widget try to hide dock from the settings app, and hover at the bottom of the desktop and see the dock appear back try to minimize and maximize the windows and see the animations try increasing and decreasing the brightness from the menu bar", "repo": "https://github.com/ashish757/AlpineOS", "demo": "https://alpine-os-eight.vercel.app"}, {"ship_num": 2, "ts": "2026-06-13T12:16:11Z", "hours": 12.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built AlpineOS, A fully functional, persistent, browser-based operating system, not just a CSS UI mockup it’s powered by a custom Redux “kernel” that actually manages background processes independently from the visual windows. live Activity Manager that tracks active PIDs and simulated CPU/Memory telemetry. It includes a persistent Virtual File System An draggable Window Manager Terminal engine that interacts with the File System Persistency , File and folders are persistennt and so it the state of the OS, you leave and come back just find that it has retained the state. The Challange? The architecture and state management were incredibly complex. Synchonizing the UI with the actual process mangement in the “kernal” Persistence, making the whole website persistence. Creatin an Task manager was fun and exciting, it felt like a real low level OS feature Excitement??? hell yeah my whole time I have been building, high-level websites and backend. I never tried a low level project, although this is not Low Level but it forced me to explore the architecture and concepts of hoow operating system works at Low level, how terminal connect with the file system. who doesn’t get excited by low level ?? Being able to selec multiple files and folder, not dragable yet, but soon will be What can i do? When you boot it up, don’t just click the icons and look and design and colors, stress test the ARCHITECTURE! Open the Terminal , use cd to change directory and try standard commands like mkdir, touch, ls, and interact with the file system Open the Activity Manager side-by-side with other apps to watch the active processes update and check the live charts (dummy) Right-click the desktop to open Personalization and change the wallpaper. Most importantly: Open a few windows, move them around the screen, and then hard refresh your browser or maybe just restart and Watch the persistence engine drop you right back where you left off.", "repo": "https://github.com/ashish757/AlpineOS", "demo": "https://alpine-os-eight.vercel.app"}]...
|
[{"post_id": 73046, "ts": "202 [{"post_id": 73046, "ts": "2026-09-24T08:31:29Z", "hours": 2.3342, "text": "Devlog 3 Launchpad as promised i have created the launchpad , but the serach functionlity is not working in it sorry i know its just s amll filter thing but i got my exmas this week, im in rush need to feactor the whole assets thing as i wasn initially importing the images but now i have moved it to the public and how just load them all updated the readme and added icon for the launchpad A lot can be done i think, but i am limited with this event ending 30 sep and also my exams are coming up SO BYE FOR NOWW, i really loved this project"}, {"post_id": 72817, "ts": "2026-09-23T19:47:31Z", "hours": 3.2872, "text": "Real OS true now this feels like a real operating system Widgets added widgets to the desktop, can be added from the settings right there are jsut widgets for clock and calander but same design can be used to simply add many more kinds of widgets Menu Bar menu bar now has the brightnes control slider and wifi options (obviously wifi are fake here) Dock can now be auto hidden from settings and only shows up when you hover in the bottom jsut like real macos Integrated the perosnalization in the settings app up next i will add a launch pad, some more little apps, fix a issue related to navigation in finder that i just found out"}, {"post_id": 71881, "ts": "2026-09-21T18:06:25Z", "hours": 1.4678, "text": "Devlog 2 i think i have laid a good foundation for process and window management i am now focusing on the UI and UX of the desktop environment and adding some more app, fetures, and more OS like fell Minimizing and maximizing windows implemented feature to minimize and maxiimize the windows maximizing feature existed but there were some bugs and it wasnt really fullscreen so i fixed that and now it works as expected improve Dock to open or focus the app by detecting wheter app is open or closed or minimized Started improving and adding animations used framer-motion to animate the appearance and disappearance of the windows later i will add transitions to other elements as well Created a settings app to handle the widgets , appearance and general setting all i one place also fixed an infinite render issue in ActivityManagerApp that was caused by the useEffect"}, {"post_id": 70213, "ts": "2026-09-18T18:31:33Z", "hours": 4.1772, "text": "Devlog 1 (after shipping webos1) so its been like 2 months since i last worked on this project so i just revised the whole codebase once Realism so when i decided to build this my main goal was to make it as realistic as possible by realistic i mean to make use of concepts that is used in real linux OS, not just UI but the actual inner workking What went down any application when opened in OS has two parts The window The process Like for notepad app, there is a wrapper window which has the close button and menu options and then there is the actual notepad process which handles things related to the creation and saving of the notes file what was the problem In real OS whenever we try to close a window, the window wrapper simply sends a closing signal to the actual process saying hey process user wants to close you for now. after this the process either saves logs, current changes or show user a confirmation dialog before closing but in my webOS i was jsut closign the process when user clicked the close button on the window wrapper, which is not realistic at all There are three kinds of closing signals that a process can receive SIGTERM SIGKILL SIGQUIT i will not get into the details of these signals but they mean different things , like SIGTERM is a request to terminate the process whereas SIGKILL forces the process to terminate. Solution so i basically added a new property to the window state to track if a window has requested to close the process process actively listen to such state change from the window and replies accordingly and closes the app performs tasks like askeing user to save changes, show warning dialog etc before closing the process there are still some bugs and a lot of things to improve in this thing but i will do that in the next devlog"}, {"post_id": 8020, "ts": "2026-06-13T11:46:24Z", "hours": 3.6642, "text": "#update number 0.0000033 The old man, Terminal Now terminal supports file system operations, can create and delete folders and files Textpad now it can open text files and edit those and save, can create new files as well Activity Manger , task manager Shows the currently running processes in the os, also gives and option to forcefully terminate any process, shows CPU and RAM usage (dummy but mindful of currently running processes) Menu bar menu bar now has specific and dynamic context menu options for each app although its not available yet for each app, but the logic is implemented, I just need to write json config for the ui to display Personalization Right click on desktop and click on Personalization to change wallpaper, will support more customization soon Boot added a cool mock up to mimic shutdown and booting process of OS,"}, {"post_id": 7578, "ts": "2026-06-12T17:50:11Z", "hours": 3.2947, "text": "DevLOG FOURRR What do we got this time well well I now have a complete basic file management system build, I can create text files, edit them, open them, save them in any specific location , delete it, terminal now can run more commands ‘’‘ls, mkdir, rm. touch, echo, clear, etc’’’’ context menus It was time taking and exhausting as every section of the operating system required different type of context menus. It was so much messed up. I ended up creating something central where a single config can decide and make a whole context menu, Desktop is ALIVE Long awaited something I wanted to do is to display what there is in the desktop directory directly onto the desktop after making the complete file system."}, {"post_id": 7422, "ts": "2026-06-12T11:20:38Z", "hours": 0.8694, "text": "Dev Log Threeeee Added a browser as of now only a few websites are accessible like wikipedia.org, other websites reject the connection in a iframe, I am looking for solution to this, I was thinking to maybe compile a rust model web browser using ecmascript and run a browser in browser, looks tough for limited time I have for this project , will definitely give it a shot ( if you guys got any idea let me know ) yayyyy File system is now persistent well despite coolest feature this was fairly easy redux-persistence saved the day, used indexDB as localstorage is synchronous and only allows 5MB of storage -> the files created in desktop folder now show up on the desktop on top of wallpaper NEXT GOAL add some more commands in terminal like ls, touch, mkdir, rm ability to create and save text files make files and folders drag-able (DREAMYYYY) personlization options"}, {"post_id": 7393, "ts": "2026-06-12T10:04:18Z", "hours": 0.6861, "text": "Dev Log 2 Implemented resizing and maximizing of windows (easypzy lemon squeeze) Added some dummy options in the menu bar (will soon make them functional too 😉) Improved UI of file manager (Finder)"}, {"post_id": 7245, "ts": "2026-06-12T02:47:35Z", "hours": 3.4803, "text": "AlpineOS, lightweight web os for study and space research(will be coming soon) The name inspiration come from the alpine images of docker “light weight” I am trying to build is os such that user can sort of study about space. as of now I have build some basic file system, dragable windows, I have setup basic architecture for applications, processes, and files and folders hope fully in my next DEVlog, I will have implemented /fixed resizable windows control panel file and folder persistence some cool apps on space theme preventing windows from going out of screen, will try to make terminal somewhat working improve the UI ability to minimize the windows drag and drop upload of files like text, pdf, word excel etc,"}]...
|
Title: AlpineOS by @ashish-raj-singh | Stardance
Title: AlpineOS by @ashish-raj-singh | Stardance
Devlogs:
AlpineOS, lightweight web os for study and space research(will be coming soon) The name inspiration come from the alpine images of docker “light weight” I am trying to build is os such that user can sort of study about space. as of now I have build some basic file system, dragable windows, I have setup basic architecture for applications, processes, and files and folders hope fully in my next DEVlog, I will have implemented /fixed resizable windows control panel file and folder persistence some cool apps on space theme preventing windows from going out of screen, will try to make terminal somewhat working improve the UI ability to minimize the windows drag and drop upload of files like text, pdf, word excel etc,
Dev Log 2 Implemented resizing and maximizing of windows (easypzy lemon squeeze) Added some dummy options in the menu bar (will soon make them functional too 😉) Improved UI of file manager (Finder)
Dev Log Threeeee Added a browser as of now only a few websites are accessible like wikipedia.org, other websites reject the connection in a iframe, I am looking for solution to this, I was thinking to maybe compile a rust model web browser using ecmascript and run a browser in browser, looks tough for limited time I have for this project , will definitely give it a shot ( if you guys got any idea let me know ) yayyyy File system is now persistent well despite coolest feature this was fairly easy redux-persistence saved the day, used indexDB as localstorage is synchronous and only allows 5MB of storage -> the files created in desktop folder now show up on the desktop on top of wallpaper NEXT GOAL add some more commands in terminal like ls, touch, mkdir, rm ability to create and save text files make files and folders drag-able (DREAMYYYY) personlization options
DevLOG FOURRR What do we got this time well well I now have a complete basic file management system build, I can create text files, edit them, open them, save them in any specific location , delete it, terminal now can run more commands ‘’‘ls, mkdir, rm. touch, echo, clear, etc’’’’ context menus It was time taking and exhausting as every section of the operating system required different type of context menus. It was so much messed up. I ended up creating something central where a single config can decide and make a whole context menu, Desktop is ALIVE Long awaited something I wanted to do is to display what there is in the desktop directory directly onto the desktop after making the complete file system.
#update number 0.0000033 The old man, Terminal Now terminal supports file system operations, can create and delete folders and files Textpad now it can open text files and edit those and save, can create new files as well Activity Manger , task manager Shows the currently running processes in the os, also gives and option to forcefully terminate any process, shows CPU and RAM usage (dummy but mindful of currently running processes) Menu bar menu bar now has specific and dynamic context menu options for each app although its not available yet for each app, but the logic is implemented, I just need to write json config for the ui to display Personalization Right click on desktop and click on Personalization to change wallpaper, will support more customization soon Boot added a cool mock up to mimic shutdown and booting process of OS,
Devlog 1 (after shipping webos1) so its been like 2 months since i last worked on this project so i just revised the whole codebase once Realism so when i decided to build this my main goal was to make it as realistic as possible by realistic i mean to make use of concepts that is used in real linux OS, not just UI but the actual inner workking What went down any application when opened in OS has two parts The window The process Like for notepad app, there is a wrapper window which has the close button and menu options and then there is the actual notepad process which handles things related to the creation and saving of the notes file what was the problem In real OS whenever we try to close a window, the window wrapper simply sends a closing signal to the actual process saying hey process user wants to close you for now. after this the process either saves logs, current changes or show user a confirmation dialog before closing but in my webOS i was jsut closign the process when user clicked the close button on the window wrapper, which is not realistic at all There are three kinds of closing signals that a process can receive SIGTERM SIGKILL SIGQUIT i will not get into the details of these signals but they mean different things , like SIGTERM is a request to terminate the process whereas SIGKILL forces the process to terminate. Solution so i basically added a new property to the window state to track if a window has requested to close the process process actively listen to such state change from the window and replies accordingly and closes the app performs tasks like askeing user to save changes, show warning dialog etc before closing the process there are still some bugs and a lot of things to improve in this thing but i will do that in the next devlog
Devlog 2 i think i have laid a good foundation for process and window management i am now focusing on the UI and UX of the desktop environment and adding some more app, fetures, and more OS like fell Minimizing and maximizing windows implemented feature to minimize and maxiimize the windows maximizing feature existed but there were some bugs and it wasnt really fullscreen so i fixed that and now it works as expected improve Dock to open or focus the app by detecting wheter app is open or closed or minimized Started improving and adding animations used framer-motion to animate the appearance and disappearance of the windows later i will add transitions to other elements as well Created a settings app to handle the widgets , appearance and general setting all i one place also fixed an infinite render issue in ActivityManagerApp that was caused by the useEffect
Real OS true now this feels like a real operating system Widgets added widgets to the desktop, can be added from the settings right there are jsut widgets for clock and calander but same design can be used to simply add many more kinds of widgets Menu Bar menu bar now has the brightnes control slider and wifi options (obviously wifi are fake here) Dock can now be auto hidden from settings and only shows up when you hover in the bottom jsut like real macos Integrated the perosnalization in the settings app up next i will add a launch pad, some more little apps, fix a issue related to navigation in finder that i just found out
Devlog 3 Launchpad as promised i have created the launchpad , but the serach functionlity is not working in it sorry i know its just s amll filter thing but i got my exmas this week, im in rush need to feactor the whole assets thing as i wasn initially importing the images but now i have moved it to the public and how just load them all updated the readme and added icon for the launchpad A lot can be done i think, but i am limited with this event ending 30 sep and also my exams are coming up SO BYE FOR NOWW, i really loved this project
Ships:
I built AlpineOS, A fully functional, persistent, browser-based operating system, not just a CSS UI mockup it’s powered by a custom Redux “kernel” that actually manages background processes independently from the visual windows. live Activity Manager that tracks active PIDs and simulated CPU/Memory telemetry. It includes a persistent Virtual File System An draggable Window Manager Terminal engine that interacts with the File System Persistency , File and folders are persistennt and so it the state of the OS, you leave and come back just find that it has retained the state. The Challange? The architecture and state management were incredibly complex. Synchonizing the UI with the actual process mangement in the “kernal” Persistence, making the whole website persistence. Creatin an Task manager was fun and exciting, it felt like a real low level OS feature Excitement??? hell yeah my whole time I have been building, high-level websites and backend. I never tried a low level project, although this is not Low Level but it forced me to explore the architecture and concepts of hoow operating system works at Low level, how terminal connect with the file system. who doesn’t get excited by low level ?? Being able to selec multiple files and folder, not dragable yet, but soon will be What can i do? When you boot it up, don’t just click the icons and look and design and colors, stress test the ARCHITECTURE! Open the Terminal , use cd to change directory and try standard commands like mkdir, touch, ls, and interact with the file system Open the Activity Manager side-by-side with other apps to watch the active processes update and check the live charts (dummy) Right-click the desktop to open Personalization and change the wallpaper. Most importantly: Open a few windows, move them around the screen, and then hard refresh your browser or maybe just restart and Watch the persistence engine drop you right back where you left off.
This is AlpineOS 2 (WebOS-2) upgraded from the previous version of AlpineOS 1 (WebOS-2) UPss Window animations are now smoother and more responsive. Introduced Widgets and are draggable anywhere on the desktop screen Truly FullScreen mode is here, previously the fullscreen was still not using the space behind the dock and menu bar at top, now it does Menu Bar improvements, now it has calender, wifi and a brightness slider which actually workd A new Settings app, which now has the personalization settings, and a new Widgets section where you can add widgets to your desktop Auto hide dock is now working, it simply hides the dock and shows on hovering th bottom of the desktop and it can be toggled in the settings app The Challenge? The main hurdle for me was understanding the actual OS, and its working as i hve tried to keep this project as realistic as i could understand other then that, the animations and drag and drop functionality was a bit challenging, so right now drag and drop us not supported as i have my exams coming up ans stardance is also going to end 30 sep to i dont have that much time The Excitement? this project was particularly exiting for me not because of the web technologies like used react heavily i have been a web dev for like a year main thing was the OS part, i have never worked on an OS before and this was a new experience for me, and i really loved it i tried to understand the real Operating System i leanred about scheduling algorithms like FCFS, SJF, memory management,how kernel works and communicated, how things are separated and modularized so much more What can you do? just right click on desktop and try to add a widget try to hide dock from the settings app, and hover at the bottom of the desktop and see the dock appear back try to minimize and maximize the windows and see the animations try increasing and decreasing the brightness from the menu bar...
|
1793270952.4341726
|
1793357352.4341726
|
|
64514
|
YouTube video watcher by @suklaasukkulayt | Starda YouTube video watcher by @suklaasukkulayt | Stardance...
|
suklaasukkulayt
|
1
|
2.0
|
3
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T14:31:30Z", "hours": 2.0, "multiplier": 1.26, "payout": 3, "blessing": "neutral", "text": "I made a site to watch YouTube videos without cookies and without most of the UI. It’s idea is to make it possible to just show one video at a time for example some kiosk projects or something that can load embeds, but no YouTube UI or advanced cookie javascript. It supports most of the YouTube URL’s (shorts, embeds, watch (live support too) and youtu.be) or you could only paste or type in the video ID. Also you can type it in the URL: https://yt-watcher.suklaasukkula.dev/VIDEO_ID_OR_URL_HERE . Please watch the showcase video from my last devlog. This was a pretty simple project compared to my other projects, but it was still fun to make.", "repo": "https://github.com/suklaasukkulayt/youtube-video-watcher", "demo": "https://yt-watcher.suklaasukkula.dev/"}]...
|
[{"post_id": 73056, "ts": "202 [{"post_id": 73056, "ts": "2026-09-24T09:03:11Z", "hours": 0.5008, "text": "Devlog 3 This is the final devlog probably. I have now added the ability to type the video ID straight to the URL . Like this: https://yt-watcher.suklaasukkula.dev/VIDEO_ID_HERE You can even type the YouTube video URL straight to the URL. Like this: https://yt-watcher.suklaasukkula.dev/VIDEO_URL_HERE I had to use a 404 HTML file because otherwise it would just return 404 when you tried to enter the video ID in the URL (and I used AI to help with that)."}, {"post_id": 72717, "ts": "2026-09-23T16:15:12Z", "hours": 0.9939, "text": "Devlog 2 I made the UI a bit better And I finally added support for other YouTube URLs : Shorts works Embed works Live works (atleast with the youtube.com/watch URL) I also swapped the Kevin MacLeod for a random screen test video :) The project is now almost completed, the final feature I want to add is that you could put the video ID in the URL of this website and that would load it."}, {"post_id": 72126, "ts": "2026-09-22T07:47:30Z", "hours": 0.7975, "text": "Devlog 1 I’m making a YouTube video watcher , that you can use to watch YouTube videos without cookies and with super simple UI . Like if you are using an old browser this might work idk. This currently has: A button to show the input field You can enter the video ID , or use a YouTube URL for easy use, but the URL thing doesn’t currently support shorts or embed URL’s. I will make it better next devlog."}]...
|
Title: YouTube video watcher by @suklaasukkulayt | Title: YouTube video watcher by @suklaasukkulayt | Stardance
Devlogs:
Devlog 1 I’m making a YouTube video watcher , that you can use to watch YouTube videos without cookies and with super simple UI . Like if you are using an old browser this might work idk. This currently has: A button to show the input field You can enter the video ID , or use a YouTube URL for easy use, but the URL thing doesn’t currently support shorts or embed URL’s. I will make it better next devlog.
Devlog 2 I made the UI a bit better And I finally added support for other YouTube URLs : Shorts works Embed works Live works (atleast with the youtube.com/watch URL) I also swapped the Kevin MacLeod for a random screen test video :) The project is now almost completed, the final feature I want to add is that you could put the video ID in the URL of this website and that would load it.
Devlog 3 This is the final devlog probably. I have now added the ability to type the video ID straight to the URL . Like this: https://yt-watcher.suklaasukkula.dev/VIDEO_ID_HERE You can even type the YouTube video URL straight to the URL. Like this: https://yt-watcher.suklaasukkula.dev/VIDEO_URL_HERE I had to use a 404 HTML file because otherwise it would just return 404 when you tried to enter the video ID in the URL (and I used AI to help with that).
Ships:
I made a site to watch YouTube videos without cookies and without most of the UI. It’s idea is to make it possible to just show one video at a time for example some kiosk projects or something that can load embeds, but no YouTube UI or advanced cookie javascript. It supports most of the YouTube URL’s (shorts, embeds, watch (live support too) and youtu.be) or you could only paste or type in the video ID. Also you can type it in the URL: https://yt-watcher.suklaasukkula.dev/VIDEO_ID_OR_URL_HERE . Please watch the showcase video from my last devlog. This was a pretty simple project compared to my other projects, but it was still fun to make....
|
1793213600.835209
|
1793300000.835209
|
|
65017
|
Wallpaper Motor by @o5oul | Stardance
|
o5oul
|
0
|
1.37
|
0
|
[]
|
[{"post_id": 73057, "ts": "202 [{"post_id": 73057, "ts": "2026-09-24T09:09:42Z", "hours": 1.3742, "text": "Wallpaper Motor v1.0"}]...
|
Title: Wallpaper Motor by @o5oul | Stardance
Devl Title: Wallpaper Motor by @o5oul | Stardance
Devlogs:
Wallpaper Motor v1.0...
|
1793083734.2239156
|
1793688534.2239156
|
|
56135
|
WAKE-X — Smart Alarm Clock by @Aditya_Jaiswal | St WAKE-X — Smart Alarm Clock by @Aditya_Jaiswal | Stardance...
|
Aditya_Jaiswal
|
0
|
3.75
|
0
|
[]
|
[{"post_id": 73061, "ts": "202 [{"post_id": 73061, "ts": "2026-09-24T09:23:41Z", "hours": 1.0669, "text": "Devlog #5 Started making the CAD But facing some issues so can anyone help me (let me know in the comment )"}, {"post_id": 58213, "ts": "2026-08-30T15:57:46Z", "hours": 0.5169, "text": "Devlog#4 Successfully kept the PCB dimensions under 100mm x 100mm."}, {"post_id": 58174, "ts": "2026-08-30T15:11:02Z", "hours": 0.3669, "text": "Devlog#3 Done routing of WakeXPCB"}, {"post_id": 57993, "ts": "2026-08-30T10:14:55Z", "hours": 1.1669, "text": "Devlog#2 Started the routing"}, {"post_id": 57930, "ts": "2026-08-30T08:28:33Z", "hours": 0.6336, "text": "Successfully designed the PCB of the WakeX"}]...
|
Title: WAKE-X — Smart Alarm Clock by @Aditya_Jaisw Title: WAKE-X — Smart Alarm Clock by @Aditya_Jaiswal | Stardance
Devlogs:
Successfully designed the PCB of the WakeX
Devlog#2 Started the routing
Devlog#3 Done routing of WakeXPCB
Devlog#4 Successfully kept the PCB dimensions under 100mm x 100mm.
Devlog #5 Started making the CAD But facing some issues so can anyone help me (let me know in the comment )...
|
1792648329.8813484
|
1793253129.8813484
|
|
21103
|
Ritualia by @gabriel_ferreira | Stardance
|
gabriel_ferreira
|
1
|
148.7
|
2310
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-23T23:45:29Z", "hours": 148.0, "multiplier": 18.45, "payout": 2310, "blessing": "neutral", "text": "What did i made I made an complete music play system that will help users to learn while listening to musics! I used youtube, flask, python, mysql, js and hope to make this! What else Solved a lot of painful bugs that were stopping the project from working Finished and made the music queue work Added music description labels Improved a lot the performance Made the website responsive Added a keyboard based navigation Fixed so much errors at the cover-flow that now i forgot how many Added bug checks before the play of each video on the player Created an toast component to show errors or infos Added 54 musics to choose and listen Challenges The most painful code was the player and the cover-flow, they were with a lot of hidden bugs that i had to figure out, feats that i had to make and pain to suffer! Now i figured out that i love and HATE making a website responsive! What im proud of MutationObserver: An observer that loads / hides an image based on its position at the cover-flow, this system took a while and worked very well. Error checks at player: The system can handle the error that happen and dont crash! Keyboard navigation: Everyone can use the keyboard to navigate now! Oracle VM: For the first time i used an ssh and hosted an website in my own machine (oracle, not mine)! How to test Access http://ritualia.duckdns.org/ , when you join and the page loads you will find a screen to choose an genre, select which one you want, after you will see an emotion selector, select the emotion that you wanna feel! You will see the player screen and an audio explaining the music (The audio is in portuguese), after the audio the music will play. Notice: The github and the website are in portuguese, please use your browser built-in translator or any that you want to use the software properly! Follow the installation guides at github if you want to install", "repo": "https://github.com/GF-Silva/Ritualia", "demo": "https://ritualia.hackclub.app"}]...
|
[{"post_id": 73067, "ts": "202 [{"post_id": 73067, "ts": "2026-09-24T09:47:16Z", "hours": 0.6983, "text": "Added english readme I created an english readme, api and install Guide, so it will be easier to read and more accessible for worl-wide users"}, {"post_id": 72881, "ts": "2026-09-23T22:36:56Z", "hours": 0.3906, "text": "It is time to ship! Now the system is working perfectly fine running at a vm in oracle cloud with a public domain, and a dns with duckdns at http://ritualia.duckdns.org/ Warning: It is just HTTP!"}, {"post_id": 72810, "ts": "2026-09-23T19:36:13Z", "hours": 1.3461, "text": "Configuring an ssh server! I configured an oracle cloud vm with ubuntu to host my website 24/7, that was because nest wasnt working in a while. Im running it at a local IP with http only, i will configure https today and maybe an domain, the IP is http://164.152.55.252 , notice that some browsers may block you from accessing and http website. UPDATE AFTER THE DEVLOG: I put an domain using duck dns: http://ritualia.duckdns.org Hardwork I had absolutely not a single knowledge about oracle cloud vm, so configuring it was an hell. Sometime my internet stopped working so i had to use my smartphone, this lead me to configuring an invalid ssh key and i had do configure everything from scratch, i spent 5 hours configuring everything, but that was ssh and wasnt tracked. But now everything is working fine. Thx oracle This vm is a 24/7 entire OS (Virtual Machine) that has some good free plans, without any cold start. Thx stardance Stardance now will have one more mount!!!!!! I still has roughly 40 hours of deep development to do after this ship, i will love to finish that in stardance!"}, {"post_id": 70936, "ts": "2026-09-20T02:22:48Z", "hours": 2.9706, "text": "Added install guides Now there is guides to help the user install for ubuntu, arch and windows. Notice that im a linux user and my pc is weak, so i could not test it on another operational system. Also the guide is in portuguese (all of them), please use your browser built-in translator or any of them to read if u dont understands portuguese I could test it on another linux distro, but i would have to go through all the install steps. Also i cannot try installing windows because it normally wipe out another OS installed on the same disc (i know that it just replaces the bootloader) and using a VM was not possible due to the amount of RAM and the processor that i have."}, {"post_id": 69913, "ts": "2026-09-18T01:53:38Z", "hours": 0.3256, "text": "All done, it is time to ship Every metric at lighthouse it nearly perfect, im so exited to ship it!"}, {"post_id": 69904, "ts": "2026-09-18T01:19:42Z", "hours": 4.9561, "text": "The accessibility workings is done Features Now the system has a new navigation system that allow users to navigate with just the keyboard! (The video was with just the keyboard) Why Why not? It was meant to improve the accessibility for users without mouse, or any another problem and because i was tired of having to use the mouse to debug something. How it was made Again with a lot of pain, the feature itself was easy but i had to fix some errors that went unnoticed, so it took more time. The feature detects when the user press a key and do an action based on wich key was. The accessibility was easy to get 100, but the metrics at lighthouse dont give all what the users will need, i had to think about the website usage and how would be the easiest way for the user. Results The accessibility went from nearly 69 to 100! What next Now i will work on the best practices! Update after the devlog: Nearly every metric is already maxed out lol, i will ship it very soon!"}, {"post_id": 69444, "ts": "2026-09-17T02:13:13Z", "hours": 1.6906, "text": "The performance workings is finished and bug fix Fixes Now the logo z-index is lower, that is because the logo was ‘eating’ the click in more important elements. Also i did a small change at the cover-flow, that change fix the bug of the scroll at the element sudently stoping when at a certain position. The copa script had some old references to images that were leading to bugs, i changed it. Performance I already finished it in the past devlog, i was just checking if there was anything worth improving, but everything is working fine and now is time to improve acessibility. Most of the logged time was me trying to improve more some metrics at the lighthouse, but the work was too much for anything that is already good, so i decided to stop before i started focusing too much in it."}, {"post_id": 69395, "ts": "2026-09-16T23:43:00Z", "hours": 1.505, "text": "Fixing an error at the youtubeHelper Now the youtubeHelpers checks if the youtube API is ready before sending commands. Why Sometimes the API maybe is not finished yet, that was leaving an untreated error that was braking the entire website. How was made With a lot of pain and suffer. I thought “Oh hey, that will be a 15 minutes fix” - i spent 1 HOUR FIGHTING with the iframe itself, nothing was working and at some point i started thinking that even the API of YOUTUBE wasnt working, even the most basic function that should be triggered when the youtube finished the loading wasnt beeing activated, even the console.log(“Api READY!”) wasnt working, even when it worked it wasnt working well, the variable of the player was a promise and not the result. At the end i shut down my PC, defeated, without any energy left, with just hope that in the next day (this) that would be fixed (if not i was planning to ignore and make it a feature “Easter egg, if u dont join the website for a while it will not load!”. The problem here was just the position were the iframe api was in the HTML, it was being loaded before the helper script, so the helper was not there to check if it the iframe was ready or not, the fix was just move it a little down. Architecture It was just an promise, if the function checks that the iframe isnt available it await for it to be available. The check if it was available use the onYoutubeIframeAPIReady, easy easy (except for all the suffer that i went into)."}, {"post_id": 68896, "ts": "2026-09-15T23:59:43Z", "hours": 1.1389, "text": "The loading is done and working! Fix I fixed the error that were happening when the cover had a certain amount of elements. Problems The fix itself was very easy to do, but doing it in a readable or without using 10 lines of code (i want things concise) was way harder than i expected. So i spent this entire time trying different ways to do it, each of them making everything worse. Reasoning The bug were with less than 14 elements, the script were calculating the first and last element index, it happened that these elements were behind the screen focus. Why? Because the values that the system was using were leaving these values, so i had to fix the way it was calculating things."}, {"post_id": 68865, "ts": "2026-09-15T22:15:27Z", "hours": 1.3303, "text": "The loading is done Features Now the loading at the mutationObserver is finished, it finally loads or unloads the images that should be (or not) loaded! The new observer is way faster, because it can detect the image way before it enters the screen, loading it before and having more time to do it. Also the system loads just a maximum of images (with the configs that i put it is 13), so it will not fry an cellphone. Problems The loading part was easy to do, i already done it before in the past observer (intersectionObserver), so i just had to pass the old code to the new part. But when the cover-flow element dont got atleast 13 elements the mutationObserver code breaks completely! Im still pondering how to solve it, when i do i will post about! Results The performance went from 78 to 100! The system is way faster! The user does not see a blank image anymore! Why The old method was slow even with a good internet connection, because it was loading the images just when the element was already in the screen, leaving to a perceptive delay for the user and a blank image to the user. Also i thought about creating an observer from scratch (maybe i was a little off my ideas, because that was insane), but the browser already had exactly what i wanted (the mutationObserver) Videos The new features The performance of the new feats The old features Reasoning While i was trying to sleep i thought about a system that fill the cover-flow with a maximum of images (like 10, or 13, or the code decides) at the DOM, using less memory to run. That system will free a lot of memory based on how many cards the cover-flow have. But that will have noticeable effects just with a lot of elements and probably would be hard to develop, maybe i will do in next updates. What next Im leading to the shipping, so i will improve metrics about the lighthouse, improve the readme and post it."}, {"post_id": 68449, "ts": "2026-09-15T04:25:35Z", "hours": 7.2278, "text": "Adding a mutationObserver Now, instead of an intersectionObserver, the system use a mutationObserver that monitors the angle of the cylinder itself. With that the loading of the images will be insanely better, faster and user-friendly. Now the changes in the cover-flow is observed at the cylinder angle, not at each card. There was some problems in the journey like, for some reason, unexpected cards being loaded or not, the loading script at the observer dont triggering at all (that was caused by the speed of the observer) and an insane amount of cards being triggered at the same time (i still did not figured out why, but that isnt ‘harmful’). But man, i had to be creative here and remember about some concepts like concurrent programming, buffer / queue and apply some delays (because the mutationObserver is insanely fast and can trigger every millisecond). That all was meant to decrease the speed of the mutationObserver, because it was triggering with the most small change in the cylinder, so i made it trigger just when an expected amount of movement was made. The red/yellow collor is for me to visualize the loading state, it is just for debug The code isnt finished, i still need to implement the loading part, for now i just implemented the observer and basics of the loading part"}, {"post_id": 67841, "ts": "2026-09-14T03:19:48Z", "hours": 4.2825, "text": "The observer is finished (nearly) Now the cover-flow has an observer that checks the position of the images and changes it styles based on that, so the images that the user is seeing is loaded while the others is hide. It still has some bugs and space for improvements that im still figuring out how to solve, like the image loading too late on the screen or, in slow internet connections, the image takes too long to load. Most of these bugs are because the observer (an intersectionObserver ) was designed for 2d contexts, not 3d (that were and still is an giant problem to solve). For this reason i was thinking about creating an observer from scratch in C++ that can work better in my 3d element, but the overhead would be high so im trying to solve in other ways before that. The feature was made using fetchPriority, contentVisibility and src (the system add the source just when the image is near the screen). OBS: I found about MutationObserver after this post, maybe i will use that instead of insersectionObserver. Oh man, at least if had found about this before… Aaaaaahhhhh i spent 9 hours in that, but at least a Lot of the new logic will be used. Anyway, lets cook"}, {"post_id": 67151, "ts": "2026-09-13T06:53:12Z", "hours": 5.4219, "text": "Adding an observer Now the script observe the card elements at the cover-flow component, classify their position and changes it visibility based on that. Im using an IntersectionObserver to observe every card, but it was designed to observe the position of 2d elements, so i had to figure out how to make it work well in an 3d element. The way it works is when the observe activates (it basically means that some card is in the range to load) it get the card info (like position and angle) and changes it visibility state based on that. Simple, right? No, it was a headache for the start to the top, nearly 4 hours of what i did was to fix the fact that it was meant for 2d. The observer were activating for cards that were in the back of the element, so i had to classify the card position into back or front by using its angle. But if i tried to use the card angle without anything else the script would broke (and did for 3 hours until i realized how to fix), so i had to use an second angle which is 360 - cardAngle (the 360 is the angle of an circle), so this new angle is based on the circle end while the other is based on the circle start. But the system still broke, because at some point one of these values would become negative and makes the if that classify the elements fail. The fix was using the absolute value in the if (it took 1 hour until i figured that; oh i were so happy when it worked). Why To improve the performance, so the browser will just load what is really important and not 50 images that the user cant even see. What else All that work definitely improved a lot my logic thinking and for the first time i used the truth table well. Now i just need to use the new code to change more the style of the images that are not in the screen. I did not deleted the code that i wrote in the past devlog, it was used in the new code to select how many images should be loaded in the same time. ** The first video is the result, the others is some problems that i had **"}, {"post_id": 66316, "ts": "2026-09-12T02:31:12Z", "hours": 4.5481, "text": "Improving the loading performance Now the system selects some images that needs to be shown faster than the others and making them load with priority. It was made by selecting the images that the user is seeing and defining some params like fetchPriority = \"high\" and decoding=\"sync\" , the other images have the params: decoding=\"async\"; loading=\"lazy\"; contentVisibility=\"auto\"; . With that config the LCP went from 2.4s to 0.5s . Also it loads the image in the start and dont change that config again, so the browser will be lazy while downloading these images. The problem is: only the first images are chosen as high priority, but their positions will be changed while the configs stays the same, that makes the browser lazy while loading them and makes the runtime performance became worse. To fix that i found about IntersectionObserver, that are meant to solve the problem of updating the images position fast. It was not applied yet, i found about it like 1 hour ago. What else Now the perspective of the emotionDrum is based on the elements that it have, before it was based just in the screen and would broke if something changes. I did a little change in the way that the script checks for clicks in the screen, now it has more accuracy (I changed the round system)."}, {"post_id": 64533, "ts": "2026-09-09T00:41:52Z", "hours": 7.6869, "text": "Improving the LCP (Largest content paint) performance I am improving the way that the website create and downloads the images, the main reason is to make the user see something faster. Before the system were doing 2 main things: Go trough the entire list of images, creating the elements and placing them into the page. Position them. But the position of the items were being done after the creation of the images, in another function. Now they are in the same function: it create the element, position it and add it to the page. That does not seem like much, but the code got way faster with that, probably because it dont need to go item by item in an list twice just to create an element. I tested the time to load the first element and it went from 8.63s to 6.43s , the test was made with 2200 elements (Yeah ik, it is a lot and normally it isnt that much, but i had to see how they were holding with more than 22 items). Also i fixed a bug that passed unnoticed while improving the responsiveness: At some point of images the visibility of the elements broke, that was because the perspective (what makes the 3D perspective of the component, and makes it visible with 3D effects) was based on the screen size, not the elements itself. What was the problem in that: Each element takes a size in the screen ‘makes the circle that shows the element be more and more near of our point of view’ (i cant explain it any better, search what is ‘perspective in an 3d element at HTML’ ). While it was approaching our point of view (POV), our POV were exactly at the same position (based on the screen size), so at some point the circle perspective would pass the POV and we would be unable of seeing it well. Now it is based on the elements: The 3d elements were basically a circle, i just used the diameter to change the perspective based on it. TODO: Maybe i lowered the image quality too much… I will fix it in the next updates. Also i were trying to improve the font settings to improve the performance, but that wast working so i decided to move on to this because it was more critical (took a while for me to jump to this, maybe like 2 hours trying and trying values in the font settings). i am also working in a way to load the images in parallel, with that it will take way less time (I didnt known about LCP before so i spent a while figuring out the way it works)."}, {"post_id": 63656, "ts": "2026-09-07T16:11:33Z", "hours": 2.6633, "text": "Improving the performance After finishing the improvements in the responsiveness, now i decided to improve the performance. I used lighthouse to get insights (i learned about it in an tiktok video) and figured out that the images size were too high (were an png of 1280x1280px), so i saw more about that in the page: https://developer.chrome.com/docs/performance/insights/image-delivery (an link that google lighthouse gave). With that i saw how to decrease the size while staying with quality, i reached up to the sharp-cli tool, that makes the work of resize, convert and compress the image for me. The command used was that: npx sharp-cli -i * .png -o ./output resize 320 -f avif -q 50 --effort 6 --smartDeblock --preset photo The 320 is the size that i want it to be at the end, i got that value by seeing what was the computed value (the value that is being used in the website) in an high resolution pc (not the most higher one, the high but normal pc) with the resolution of 2500x1714px . With this simple changing the image went from 2mb to 40Kb! Nearly 100% decrease, and take in mind that there is more than one img, so the change were even higher. Also i created 5 different images: 320px, 480px, 640px, 960px e 1280px. With them the browser can choose which one is better for each device. With these changes i went from 35 points of performance to 59."}, {"post_id": 63459, "ts": "2026-09-07T10:10:31Z", "hours": 0.8717, "text": "The home is now fully responsive Ah that took a while, but finally it is fully responsive. Now the description at the player UI resizes based on the screen size and active a scroll behaviour when need, also i did some minor change at the emotionDrum perspective to make it show more emotions at the same time, removed the padding in the arrows at the emotionDrum so they will have more space and fixed an error in the genre drum that was making it perspective broke. After all these devlogs i improved how i make a code responsive."}, {"post_id": 63436, "ts": "2026-09-07T08:55:04Z", "hours": 2.5378, "text": "The emotionDrum is now responsive! Now the buttons that you use to select the emotion are in the same side as the div that displays the emotion, so they dont fight for space anymore. This change is meant to fix the low size of the items in screens that are too small, in the new way we have more free space to display the emotions, there is not much to say. What else I did some minor changes in the size of some items at the player area, now they are easier to read! (I increased the size of some items)"}, {"post_id": 63379, "ts": "2026-09-07T05:17:01Z", "hours": 6.6125, "text": "Im nearly finishing the workings on the responsiveness. Now the entire player screen is responsive and do not breaks the texts anymore (except for the description area), also the buttons that show you the next screen (the ones that displays ‘player’ and ‘generos’) are responsive too, the music queue is working perfectly fine, and the area that is used to select an emotion is nearly responsive too, it just needs some adjusts in the two buttons that change the current emotion because they become too small and uses a lot of space when the screen is too small, after that this screen will be finished. It is taking a really long time, the fact of how many different screen sizes exists makes it harder to finish, but now there is times that i even cannot see if i changed the resolution in some areas, because the system looks the same. I spent quite a while testing different resolutions and combinations of size, i didnt even noticed that i where 6 hours here, but now ik more about css (things like container-type + container based sizes and more ways to set the size of an text) The video shows how it is now, if u want to see the before just checks the past devlog."}, {"post_id": 62723, "ts": "2026-09-06T06:59:19Z", "hours": 0.7094, "text": "Finished the correction of the errors at the perspective and click in the cover-flow component. Now the perspective stays the same 150vw value (that is based on the screen width) and stays normal, with everything working. Oh man, that needed a lot of logic and out of box thinking finding another ways to check where the user clicked without using an normal click event listener (for those who lost the past devlog or didnt understood, i cannot use a normal eventListener in that because the clicks is detected in another element or in nothing, even with z-index or more in css, so the solution should be done entirely on javascript logic). The first video is the new way, the second is how it was before all changes in it"}, {"post_id": 62679, "ts": "2026-09-06T05:10:34Z", "hours": 5.5194, "text": "i finished the workings on the section of the home page that i where doing before, now has a good responsiveness for pc and a decent one for mobile. Now im working on the main area of the home page, the one where the user selects the desired genre for the music (second img). It may looks completely fine, but that same element already was a headache before and is here again. The given area is the cover-flow component, before i already fixed it (or so i thought), but it was looking bad (the 3d perspective where a bit strange) and would probably broken if i added new genres. I were trying to figure out a way to listen to the clicks in the card without any problems, that seems easy at first glance, but the 3d perspective in the element make other elements eat the click from one another, make the clicks dont be listened and so many problems that i nearly decided to erase it and write from scratch. I already found a way to do it by using the mouse position, the center of the screen and the card width (the genre img) to transform it in an value that can be used to select the exact card without any dependencies on the doom selector. It basically uses just some values, put in some calcs and get the difference between the current card (genre) index and the clicked. Im nearly finishing it, but i still need to figure out some values and more."}, {"post_id": 61879, "ts": "2026-09-05T01:17:53Z", "hours": 1.1772, "text": "Im improving the responsiveness at the home page (before was the player page), but for some reason that idk the emotion selection div is having a strange behavior, i will update what it is after i fix it. Take a look: (the item in the center should be centered)"}, {"post_id": 61218, "ts": "2026-09-04T01:30:11Z", "hours": 0.725, "text": "Hi again! Like said in the past devlog, im improving the responsiveness of the website, specifically in the player part. But it had some problems and where distorting when playing an video, now it resizes based on the screen size in a way that it stays ¨normal¨. The first video is the new way, the second is the old way. It still needs a lot of improvements, but it is going!"}, {"post_id": 60619, "ts": "2026-09-03T02:22:12Z", "hours": 1.4631, "text": "Making the website responsive Hi again! Like i said in some devlog, the website dont have support for mobile, that was because it was designed to be at kiosk mode and work just in desktops. but i decided to change that. First of all: the site where using a lot of absolute values of dimensions, so it where braking even in the desktops (it wasnt responsive at all). But i spent a while changing it, it is isnt ready and has some problems, but is better than before. (The mobile is still strange, i did not started fixing it yet). Credits: https://css-tricks.com/snippets/css/fluid-typography/ - This website shows about a way to make the texts become responsive for the screen using some calcs, it is worth seeing. The first video is how it was before, the second is how it is now"}, {"post_id": 60559, "ts": "2026-09-02T23:48:07Z", "hours": 0.7944, "text": "Creating a new helper Context: There was an class called youtubeFrameControls , this class basically where designed as an structure to help using the youtube iframe API, but with the time this class where becoming basically to hold just an function (and in a very inefficient way), because the methods that it had before (like the one that runs when the iframe is loaded) had to have more and more specific logic in the codes that used it, so they where useless (because the codes that where using it where rewriting it). What i did: I picked the only function that where being used and transformed it in an helpers (that can easily be customized). This function was the one that creates the player of the musics, and the function where called createPlayer . Also i removed the old class (youtubeFrameControls) and replaced it for this helper in every place that used it. It now is way more simple than before and can me more customized."}, {"post_id": 60001, "ts": "2026-09-02T02:58:53Z", "hours": 2.1603, "text": "Refactoring the copa script I where placing some scripts in a class. These scripts are related with the player functions of the copa script, so i pick all of them and placed in the same class. I did it to follow best practices, but i confess that i still got some doubts about when to create an class and when the variable or method should be static or private (#property), i will search and learn more about because maybe i will have to refactor some parts of the code following these rules of best practices. That was all for now, see ya!"}, {"post_id": 59339, "ts": "2026-09-01T02:28:57Z", "hours": 2.4744, "text": "Adding more bug checks I added some checks in the player class at the startExplication function that checks if the src (the url for the audio) is valid or not by doing an fetch with the HEAD method and checking if the return is an valid audio before trying anything in this function. Also i solved this error in the same function: Uncaught (in promise) AbortError: The play() request was interrupted because the media was removed from the document. https://goo.gl/LdLk22 This error was because the startExplication function where trying to play the audio before it was loaded, i solved it by making it play the audio just after it was load with the event listener canplaythrough . There was another error at the playMusic function where the code where trying to play the youtube video before it was loaded, i solved it by making it wait until it was CUED (Where the video isnt playing, but is loaded and showed). (The website was not created to be in mobile and dont has a lot of support, the video where recorded in my smartphone because i had to record the audio and the audio on my pc dont work. In the Future i Will add mobile suport, but right now im finishing the bugs and etc)"}, {"post_id": 58653, "ts": "2026-08-31T04:27:35Z", "hours": 2.7947, "text": "Adding a new description feature So basically there was an place where was designed to have the description about an music, but that was empty and where only finished today What it do It is petty simple, it just show an text about the music that is currently playing, also there is an audio that plays before the music starts playing, but this audios is played just one time before the music so if someone loses it or didnt listen well there was not a second chance to listen for that audio. Now there is this place that holds the same content, but in the format of an text that can be read whenever they want while the music is being played, that was what i added. Also that text can be hidden, so it will not stay using half of the screen every time (in the screenshot it is active) What this audios do This audio / text is part of the main purpose of the website, they give some fun facts about the music that may be useful someday in some kind of quiz or essay. Also the audio is played before the music and the music plays just after the audio finishes. That is to make whoever is listening listen to the entire audio before having what he (or she) wants, so they will not listen to the music and skip the audio."}, {"post_id": 58526, "ts": "2026-08-30T23:20:27Z", "hours": 1.3911, "text": "Studing about cache So basically i where studing about cache, the main ideia was to implement it in the sistem, but then i realized something: Theres is nearly no difference between cache and a normal request in an localhost project, adding the cache would not improve anything, sometimes it maybe even slow the website, because the page would need load more code. I realized it afther a while studing about it, but anyway lets focus on another thing. Also i where studing with google for devs: https://developer.chrome.com/docs/workbox/caching-strategies-overview"}, {"post_id": 56374, "ts": "2026-08-28T03:45:15Z", "hours": 1.0169, "text": "Toast applied and tested The toast notification component is now being used at the player class, i did some tests and it is working very nice, hopefully the user will not see it very often (because that would be a problem, the user must not see it unless there is an error playing the music). But why did i make it? It is used to show more about what is going on for the user, so they will not become anxious if it something is working or not. Why not use another notification system? Each notification system has its own use cases, the others would be very painful for the user. Imagine every time a simple error (that is simple for me) like the music fail to play there was an error that interrupt the use of the app with an popup or alert, that would be painful, dont it? That is why i used an toast notification, because it is temporary (disappears after some seconds) and dont stop the use of the website. Also there is a feature that i implemented for the same reason a few devlogs ago that add a fallback in the music search, so it wont show a message at every single combination. Lets calculate how many combinations we have: there is around 50 musics in the database, 22 genres and around 40 emotions, multiplying the genres and the music 880 combinations that the user can make. Now lets see how many musics we can get: each music have around 1.2 emotions and 1.2 genres, so we get 72 combinations that lead to an music . With that in mind, we can see that from 880 combinations, just 72 of them are useful combinations, so we get a 8.18% for getting a music, and 91,12% of not getting one. Consider that each failed attempt shows an error that stop the use flow of the website, but that was before the past devlog, now it tries again and again and only afther failing everything it shows an error, at that point it must really show an error. Thats all, sorry for the long boring text and thanks everyone that read, see yall later"}, {"post_id": 56331, "ts": "2026-08-28T01:58:42Z", "hours": 3.1336, "text": "The toast notification is finished So i finished it, it is a component that u adds in the code that u wants to use. I added 2 icons, 1 for infos and another for warnings. What i used and did The element that holds it all is an dialog , the icons are svg , the text is a span and the element that shows the time left is an progress . To update the time left i used an setInterval that runs at a 10ms delay and deduce 0.01 of the dialog value, so it will be smooth to see. Also there is an if inside that destroy the element and clear the interval when the value of the dialog reaches zero or less (In the past devlog i said about not using an if, but considering how low the cost for an if in that time is i decided to use it anyway). The function that creates the toast receives some params that will let it be customized by whoever is calling it: const icons = Object . freeze ({ INFO : infoIcon (), WARNING : warningIcon () }); function createToast ({ message , time = 5 , styles , icon = icons . INFO }) // the `message` is the displayed message // the `time` is the time until close // the `styles` is custom css styles for the element, it uses the dictionary format {} // the `icon` is the svg icon What else? I will apply it in some elements and post about. See you later!"}, {"post_id": 56188, "ts": "2026-08-27T20:27:52Z", "hours": 1.5956, "text": "Creating a toast notification system So rn im creating what i said in the past devlog about a toast navigation. This isnt finished yet, im still figuring out an way to check the end of the timer, i found some ways to do it, like using an simple if inside the countdown. I didnt comment but i am using an setInterval to decrease the time and an <progress> tag to show the value but that is a bad ideia, imagine doing 1 if every 50 ms? that dont cost a lot of processing power, but i still will search for other ways to do it just to check, if yall got any hints or ideas leave a comment. Also i will improve the design, the design is petty poor."}, {"post_id": 55334, "ts": "2026-08-27T02:23:29Z", "hours": 4.2383, "text": "Fixing errors and adding bug checks Hi everyone, so i were fixing some bugs that i saw that may broke the app, i fixed all of them (for now), here they are: There was a logic bug that a class (the one that controls the youtube iframe) where doing stuff that it wasnt supposed to do (not an unexpected behavior, but a logic that should be outside of it), it was an easy fix. There was a bug at the player class that when the provided sourceId (for the youtube iframe) where wrong or unable to use it crash and stopped doing anything else (like playing another musics). I tryied solving it in various ways, one was beffore the changes that i did in my last devlog, but i failed because the class that holds the player where hard to fix, this devlog fix it. I fixed it by adding some bug checks and, when some error ocurred, it play the next music. There was also a bug at the player class and youtube-iframe-controls class, that for a couple seconds in the start of the website it would broke if u tried to play a music. It was because in the start of the program the youtube API where unable to be used. To fix it i just made it wait until the API where ready using an ASYNC function. There was also a bug that, afther the past devlog, it was doing and request at the /api/songs with params at the wrong format. Afther the past devlog the API started using the params genre_id and emotion_id , but the frontend where passing with the incorrect name (genre, emotion). Something that i implemented I upgraded the mysql query that where being used to get more infos about the music, before it where just returning infos like name, author, sourceId, etc, but now it also returns the genre and emotion from that given music. I added a bug check at the player class, now if it fails it pass to the next music. Something that i want implement I want to implement a simple toast notification system that will apear when something fails, like the playing of some music. Others The youtube docs for the iframe where very helpful for this changes, check it out: https://developers.google.com/youtube/iframe_api_reference?hl=pt-br"}, {"post_id": 54690, "ts": "2026-08-25T19:06:05Z", "hours": 3.2633, "text": "Optimizating some piece of code So there was a certain part of the code responsible for the songs queue in the main route, that piece is a core function but where running a while true loop for no reason , here is the part: async start () { while ( true ) { // { emotion, genre, author, name, sourceId } const musicData = await this . #musicQueue . get (); this . createPlayer ( musicData [ ' sourceId ' ], null ); this . #showMusicInfos ( musicData [ ' name ' ], musicData [ ' author ' ]); this . #queueList . removeChild ( this . #queueList . children [ 0 ]); await this . #startExplication ( `/storage/ ${ musicData [ ' explicationSource ' ]} ` ); this . player . playVideo (); await this . #musicFinished . when ( true ); this . #musicFinished . set ( false ); } } Basically the code were calling it at the start and running it forever, but that code where a nightmare to maintain / implement, i tried to implement a safe check here for over 2 hours, but wasnt possible. I replaced it for a more efficient approach that do a loop in a different way, here it is: when adding a music, it checks if it is already playing, if no starts to play. when start to play it checks if there is a music in the queue for it to play, if no it stops playing, if yes it get it and play. When the music that is playing ends, it call the play function (from the above topic). That is just it, no while or constant loops, no overhead, it works by basically connecting all the codes in a way that they work together to maintain (or stop) the loop (notice how i said loop, it uses a loop but isnt a while or for loop, it connects the end of one code and the start of another, like a chain . I made it in the pull request #2, check it out: here"}, {"post_id": 54151, "ts": "2026-08-24T23:51:28Z", "hours": 5.8114, "text": "Fixing some forgoten code and more So at this devlog i were fixing some bugs in a specific ui / route called ¨copa¨, this is a special route added because a teacher asked our team to create them to use at some football games in our school. But since it was a hiddend route and mostly like a easter egg it hasnt been updated in a while and wasnt working anymore. What i fixed i was following a pattern where most of the images that each route used should be in a special foulder of storage (literally called /storage), but this mode (copa) where created before it and was following the old way Also there was some errors ocurred afther i changed the entire folder structure, so the copa mode where completely broken, i fixed it too. What i added I had a class about PHP + Laravel | API | Controlers in my course, afther that class i realized that the way the API (copa) where searching for data based on ID where wrong (was doing copa?id=…), i changed it to /copa/id There is a function that show the teams to the user to select one that he wants, but the teams list where hard coded and wasnt synced with the database. I made it use the database data instead of a hardcoded value ** That where all for that mode, but i didnt spent 5 hours just on it, i made more: ** Fixing (or making) some other bugs There is a script that controls the database that where holding and infinite single connection with the database, something like this conn = mysql . connector . connect ( ** configs ) cursor = conn . cursor ( Dictionary = True ) But all the codes where using the same connection and cursor, so i decided to apply a connecton pool and make each database call get a connection and a new cursor. Also i added some functions to abstrac the connection and query part: def __get_connection ( self ): conn = self . db_pool . get_connection () conn . ping ( reconnect = True , attempts = 3 , delay = 1 ) return conn def __execute_query ( self , query : str , params : list | None = None , dictionary = True , query_type : QueryTypes = QueryTypes . ALL ): conn = self . __get_connection () try : with conn . cursor ( dictionary = dictionary ) as cursor : cursor . execute ( query , ( params ) or ()) match query_type : case QueryTypes . ALL : return cursor . fetchall () case QueryTypes . ONE : return cursor . fetchone () case QueryTypes . EXECUTE : cursor . commit () return cursor . lastrowid or cursor . rowcount case _ : raise ValueError ( f \" Tipo de consulta não suportado: { query_type } \" ) If yall want to see it check here at my repo That was also the first time that i used a Enum (on code) and branchs (on github, but i didnt used them properly) Others There was also some other changes, check the repo GF-Silva/Ritualia What next Now i will add some bug checks on a piece of code that handle the video display using an youtube iframe."}, {"post_id": 52754, "ts": "2026-08-23T03:00:03Z", "hours": 4.8206, "text": "Changing some values to be relative I spent a while (more than i expected) changing some strange values that control some settings of a component called cover-flow (this component create and control the images that are displayed in the home screen). I spent more time figuring out what where each variable and lhe logic behind than acually writing.Before it had some hardcoded values that would probably broke if anything changes, i saw it and solved. I wasnt here for it, i was fixing another bug and fixed it before it broke. I also used some basic math of circles like angle of an arc. That is all for today"}, {"post_id": 52465, "ts": "2026-08-22T16:18:22Z", "hours": 3.1097, "text": "I spent some time correcting errors and logic problems, here they are: Error Correction Music playback would freeze when the music queue ended : This problem would break the app until you restarted it, but it was very simple to solve. I had simply made it remove the first instance of music from the HTML twice, which caused it to try to remove an element that didn’t exist, thus freezing the app. Removed an unnecessary loop : In the player section, there was a loop that iterated through all the elements (emotions) in a list to toggle the state of ONLY 1 ELEMENT. With the few elements it had (there were 3), this was minimal, but adding more could be detrimental to functionality. It only did this to toggle the state of the PREVIOUS element from active to inactive. I solved this simply by making it save the index of the last element and use that to access it. It took a while to work because javascript was treating 0 (the first indice / old indice when u start) as false in the if, but afther i figured out why it was simple to solve (if oldIndice != null) Implementations / Changes I separated the API/WEB routes : Previously, the routes exposed by the backend (such as /songs) were in the same file. This wasn’t a problem before, but with the addition of new functions, it could become difficult to maintain and prone to various errors, as the routes weren’t separated (a name could be the same). Therefore, I separated them into: /api (backend API codes) and / (frontend web codes). I put the genres in the database : Previously, the genres were in the frontend, and to add a new one, I would have to update both the backend and the frontend. To solve this, I simply added a route that retrieves the current genres (from the database) and uses the data (name / location) to load them into the frontend. I added the emotions to the database : The emotions had the same problem; although both (they and the genres) were in the database, the frontend wasn’t based on that data, so I did the same thing I did with the genres. I changed the name of where the music explanations were saved : I must have mentioned in a devlog that the folder inside storage was called /explication_source, and I also mentioned that the name was incorrect (because the audio source wasn’t there, nor would it be; the audio files themselves are there), so I changed it to /explication_audios"}, {"post_id": 48602, "ts": "2026-08-17T02:01:56Z", "hours": 3.6708, "text": "Updating the README I saw a post about how to structure a README, how to make it clear and etc. Afther i realized how wrong the old README was (it was confusing, and also was months out of date). So I chose some topics that would be interesting to include in and filled in a skeleton, spending some time learning what to do and what not to do. I also didn’t fill in some fields because they aren’t ready yet (they now are stored in my memory to add later). How it was before: https://github.com/GF-Silva/RitualIa/blob/9a2a7756c777a7042eca28309924e5a408bd561f/README.md How it is now: https://github.com/GF-Silva/RitualIa/blob/2dea5f80266f06e8633af1aa3c9430065cde9231/README.md There is a huge difference. Also i did some bugs and noticed how bad my commits are"}, {"post_id": 47776, "ts": "2026-08-15T22:55:35Z", "hours": 32.5314, "text": "After a development pause, here are the various changes made. Also, I never mentioned it, but this project was made by students focused on the school environment. (This time I finally got around to writing the devlog myself): Structure Moved main.py to the root Replaced mysql-connector with the official version : The added library was a version I didn’t recognize; I added the official one instead. Cleanup Removed some Code that wasnt being used. Backend Change the return value of the SQL cursor : Previously, the cursor returned an array, but for code readability and security, I opted to change it to an array. Structured Error 404 : The backend used abort in certain parts, but it returns HTML and certain parts of the frontend expected JSON, so I formatted the abort to JSON. This caused a headache, I hadn’t tested it (again lol) and when I saw it, it was time to present the project at school and I was having this error. frontend Fixed the CoverFlow component : An error went unnoticed in the creation of the component, this made the size and spacing of the images look strange, it was fixed to a certain extent. I implemented a new playback policy : The text about it got so long that I decided to open an extra topic. Playback Policy Now it search for the requested emotion + genre that the user choose, If It fails It search Just for the genre, if It fails again it search for anything. Now it falls into a fallback: This policy change was motivated by having to find a song to show in a presentation and failing. I reflected that if it was annoying for me, it would be for the end user (students) as well. Database Added new songs : I added 50 extras and their respective genres/emotions. (Also i wrote some helpers in python to help me categorize and search for the musics in youtube and get and structured sql output, that took quite a while) Saved the songs locally : Topic local saving Local saving But why would saving the songs in the cloud be a problem? Nothing comes for free, the server we were using to host the music had a monthly access limit, which was a silent problem that, thankfully, was noticed before it happened. My mistake, I didn’t even think about the possibility of saving locally and went straight to saving in the cloud, it must have been due to haste and inattention (always plan well what you are going to do before you do it, weigh the risks and benefits). Now, how it works The audios are saved inside the /storage folder. The database still saves the location, but this time it saves the relative path (e.g., /explication_audiis/fun_audio.extension). Why save the folder path as well? Won’t the audios always be there? Yes, but at some point the path might change (e.g., explication_source/youtube/audio_legal.extension). Future plans I’m going to improve my devlogs lol, this one got huge"}, {"post_id": 12818, "ts": "2026-06-20T23:46:13Z", "hours": 5.5386, "text": "RitualIa in Evolution: Refactoring, Optimization, and New Features 🎶 Hey everyone! I’m back with a cool update on what’s been happening here at RitualIa. After that commit where we transformed some scripts into helpers, things have evolved quite a bit. We’ve been doing a heavy refactoring of the project, focusing on organization, performance, and better code architecture . What’s changed: Structure & Organization: I removed legacy folders that weren’t being used, did a mega merge bringing everything from /frontend (the folder that where holding ALL the frontend logics) to the project root (with that the frontend and backend are in the same folder), and switched from FastAPI to Flask on the backend. Why the change of FastAPI to Flask: Because my supervisor or mentor (something like this) said and said again to, because there was other guys in the project (still is, but im the main developer, the others stopped doing anything like mounths Ago, and even while they where doing something i still was the main dev), these other guys where total starters and could not hold the learning curve of FastAPI (even with the fact that was Just me that where using It, because it was at the backend and i was the only developing at back). Code Quality: We made several methods private in the PlayerControls class, making the API cleaner and more secure. We also fixed the “enclosing class errors” that appeared. These small fixes make a huge difference in code reliability. UI/UX Improvements: We created a new CoverFlow component to replace GenreCylinder on the homepage – it’s much smoother and prettier now. We added support for async onClick, grab + touch in CoverFlow, and adjusted visual positioning to keep everything aligned. Oh, and we removed that unnecessary playerText that was cluttering the interface. New Features: A really cool feature that was added was the checking for duplicate songs in the queue . Nothing worse than accidentally playing the same song twice, right? Now that doesn’t happen anymore. Maintenance & Updates: We updated the fetches to call the new routes, moved the favicon to assets (because everything has its place), and focused on the details. What’s coming next: We are in a consolidation phase, laying a solid foundation for the upcoming features. The focus now is on ensuring that each component is doing exactly what it needs to do, nothing more, nothing less. Thanks for following along!"}, {"post_id": 11702, "ts": "2026-06-19T02:03:07Z", "hours": 1.0236, "text": "I’m transforming some duplicate code into helpers so they can be more easily used in new code."}, {"post_id": 11412, "ts": "2026-06-18T17:53:37Z", "hours": 1.2881, "text": "Introducing: The ‘Ritualia’ project is a project developed by me and some colleagues with the help of the school. In it, we have done and continue to do research and assembly with the aim of impacting the daily lives of students in our school and (in the future) other schools. It is an open-source project with an article soon to be published detailing the foundations used, etc. The readme is currently outdated because I am redoing part of the current architecture, but I will update it later to include information on how to assemble and create your own version. The project is divided into hardware and software. I, along with other members, am responsible for the software (which is usable on most computers), and the hardware is relatively simple (it only depends on a display + sound + a controller with an OS + the preparations for installation)."}]...
|
Title: Ritualia by @gabriel_ferreira | Stardance
Title: Ritualia by @gabriel_ferreira | Stardance
Devlogs:
Introducing: The ‘Ritualia’ project is a project developed by me and some colleagues with the help of the school. In it, we have done and continue to do research and assembly with the aim of impacting the daily lives of students in our school and (in the future) other schools. It is an open-source project with an article soon to be published detailing the foundations used, etc. The readme is currently outdated because I am redoing part of the current architecture, but I will update it later to include information on how to assemble and create your own version. The project is divided into hardware and software. I, along with other members, am responsible for the software (which is usable on most computers), and the hardware is relatively simple (it only depends on a display + sound + a controller with an OS + the preparations for installation).
I’m transforming some duplicate code into helpers so they can be more easily used in new code.
RitualIa in Evolution: Refactoring, Optimization, and New Features 🎶 Hey everyone! I’m back with a cool update on what’s been happening here at RitualIa. After that commit where we transformed some scripts into helpers, things have evolved quite a bit. We’ve been doing a heavy refactoring of the project, focusing on organization, performance, and better code architecture . What’s changed: Structure & Organization: I removed legacy folders that weren’t being used, did a mega merge bringing everything from /frontend (the folder that where holding ALL the frontend logics) to the project root (with that the frontend and backend are in the same folder), and switched from FastAPI to Flask on the backend. Why the change of FastAPI to Flask: Because my supervisor or mentor (something like this) said and said again to, because there was other guys in the project (still is, but im the main developer, the others stopped doing anything like mounths Ago, and even while they where doing something i still was the main dev), these other guys where total starters and could not hold the learning curve of FastAPI (even with the fact that was Just me that where using It, because it was at the backend and i was the only developing at back). Code Quality: We made several methods private in the PlayerControls class, making the API cleaner and more secure. We also fixed the “enclosing class errors” that appeared. These small fixes make a huge difference in code reliability. UI/UX Improvements: We created a new CoverFlow component to replace GenreCylinder on the homepage – it’s much smoother and prettier now. We added support for async onClick, grab + touch in CoverFlow, and adjusted visual positioning to keep everything aligned. Oh, and we removed that unnecessary playerText that was cluttering the interface. New Features: A really cool feature that was added was the checking for duplicate songs in the queue . Nothing worse than accidentally playing the same song twice, right? Now that doesn’t happen anymore. Maintenance & Updates: We updated the fetches to call the new routes, moved the favicon to assets (because everything has its place), and focused on the details. What’s coming next: We are in a consolidation phase, laying a solid foundation for the upcoming features. The focus now is on ensuring that each component is doing exactly what it needs to do, nothing more, nothing less. Thanks for following along!
After a development pause, here are the various changes made. Also, I never mentioned it, but this project was made by students focused on the school environment. (This time I finally got around to writing the devlog myself): Structure Moved main.py to the root Replaced mysql-connector with the official version : The added library was a version I didn’t recognize; I added the official one instead. Cleanup Removed some Code that wasnt being used. Backend Change the return value of the SQL cursor : Previously, the cursor returned an array, but for code readability and security, I opted to change it to an array. Structured Error 404 : The backend used abort in certain parts, but it returns HTML and certain parts of the frontend expected JSON, so I formatted the abort to JSON. This caused a headache, I hadn’t tested it (again lol) and when I saw it, it was time to present the project at school and I was having this error. frontend Fixed the CoverFlow component : An error went unnoticed in the creation of the component, this made the size and spacing of the images look strange, it was fixed to a certain extent. I implemented a new playback policy : The text about it got so long that I decided to open an extra topic. Playback Policy Now it search for the requested emotion + genre that the user choose, If It fails It search Just for the genre, if It fails again it search for anything. Now it falls into a fallback: This policy change was motivated by having to find a song to show in a presentation and failing. I reflected that if it was annoying for me, it would be for the end user (students) as well. Database Added new songs : I added 50 extras and their respective genres/emotions. (Also i wrote some helpers in python to help me categorize and search for the musics in youtube and get and structured sql output, that took quite a while) Saved the songs locally : Topic local saving Local saving But why would saving the songs in the cloud be a problem? Nothing comes for free, the server we were using to host the music had a monthly access limit, which was a silent problem that, thankfully, was noticed before it happened. My mistake, I didn’t even think about the possibility of saving locally and went straight to saving in the cloud, it must have been due to haste and inattention (always plan well what you are going to do before you do it, weigh the risks and benefits). Now, how it works The audios are saved inside the /storage folder. The database still saves the location, but this time it saves the relative path (e.g., /explication_audiis/fun_audio.extension). Why save the folder path as well? Won’t the audios always be there? Yes, but at some point the path might change (e.g., explication_source/youtube/audio_legal.extension). Future plans I’m going to improve my devlogs lol, this one got huge
Updating the README I saw a post about how to structure a README, how to make it clear and etc. Afther i realized how wrong the old README was (it was confusing, and also was months out of date). So I chose some topics that would be interesting to include in and filled in a skeleton, spending some time learning what to do and what not to do. I also didn’t fill in some fields because they aren’t ready yet (they now are stored in my memory to add later). How it was before: https://github.com/GF-Silva/RitualIa/blob/9a2a7756c777a7042eca28309924e5a408bd561f/README.md How it is now: https://github.com/GF-Silva/RitualIa/blob/2dea5f80266f06e8633af1aa3c9430065cde9231/README.md There is a huge difference. Also i did some bugs and noticed how bad my commits are
I spent some time correcting errors and logic problems, here they are: Error Correction Music playback would freeze when the music queue ended : This problem would break the app until you restarted it, but it was very simple to solve. I had simply made it remove the first instance of music from the HTML twice, which caused it to try to remove an element that didn’t exist, thus freezing the app. Removed an unnecessary loop : In the player section, there was a loop that iterated through all the elements (emotions) in a list to toggle the state of ONLY 1 ELEMENT. With the few elements it had (there were 3), this was minimal, but adding more could be detrimental to functionality. It only did this to toggle the state of the PREVIOUS element from active to inactive. I solved this simply by making it save the index of the last element and use that to access it. It took a while to work because javascript was treating 0 (the first indice / old indice when u start) as false in the if, but afther i figured out why it was simple to solve (if oldIndice != null) Implementations / Changes I separated the API/WEB routes : Previously, the routes exposed by the backend (such as /songs) were in the same file. This wasn’t a problem before, but with the addition of new functions, it could become difficult to maintain and prone to various errors, as the routes weren’t separated (a name could be the same). Therefore, I separated them into: /api (backend API codes) and / (frontend web codes). I put the genres in the database : Previously, the genres were in the frontend, and to add a new one, I would have to update both the backend and the frontend. To solve this, I simply added a route that retrieves the current genres (from the database) and uses the data (name / location) to load them into the frontend. I added the emotions to the database : The emotions had the same problem; although both (they and the genres) were in the database, the frontend wasn’t based on that data, so I did the same thing I did with the genres. I changed the name of where the music explanations were saved : I must have mentioned in a devlog that the folder inside storage was called /explication_source, and I also mentioned that the name was incorrect (because the audio source wasn’t there, nor would it be; the audio files themselves are there), so I changed it to /explication_audios
Changing some values to be relative I spent a while (more than i expected) changing some strange values that control some settings of a component called cover-flow (this component create and control the images that are displayed in the home screen). I spent more time figuring out what where each variable and lhe logic behind than acually writing.Before it had some hardcoded values that would probably broke if anything changes, i saw it and solved. I wasnt here for it, i was fixing another bug and fixed it before it broke. I also used some basic math of circles like angle of an arc. That is all for today
Fixing some forgoten code and more So at this devlog i were fixing some bugs in a specific ui / route called ¨copa¨, this is a special route added because a teacher asked our team to create them to use at some football games in our school. But since it was a hiddend route and mostly like a easter egg it hasnt been updated in a while and wasnt working anymore. What i fixed i was following a pattern where most of the images that each route used should be in a special foulder of storage (literally called /storage), but this mode (copa) where created before it and was following the old way Also there was some errors ocurred afther i changed the entire folder structure, so the copa mode where completely broken, i fixed it too. What i added I had a class about PHP + Laravel | API | Controlers in my course, afther that class i realized that the way the API (copa) where searching for data based on ID where wrong (was doing copa?id=…), i changed it to /copa/id There is a function that show the teams to the user to select one that he wants, but the teams list where hard coded and wasnt synced with the database. I made it use the database data instead of a hardcoded value ** That where all for that mode, but i didnt spent 5 hours just on it, i made more: ** Fixing (or making) some other bugs There is a script that controls the database that where holding and infinite single connection with the database, something like this conn = mysql . connector . connect ( ** configs ) cursor = conn . cursor ( Dictionary = True ) But all the codes where using the same connection and cursor, so i decided to apply a connecton pool and make each database call get a connection and a new cursor. Also i added some functions to abstrac the connection and query part: def __get_connection ( self ): conn = self . db_pool . get_connection () conn . ping ( reconnect = True , attempts = 3 , delay = 1 ) return conn def __execute_query ( self , query : str , params : list | None = None , dictionary = True , query_type : QueryTypes = QueryTypes . ALL ): conn = self . __get_connection () try : with conn . cursor ( dictionary = dictionary ) as cursor : cursor . execute ( query , ( params ) or ()) match query_type : case QueryTypes . ALL : return cursor . fetchall () case QueryTypes . ONE : return cursor . fetchone () case QueryTypes . EXECUTE : cursor . commit () return cursor . lastrowid or cursor . rowcount case _ : raise ValueError ( f " Tipo de consulta não suportado: { query_type } " ) If yall want to see it check here at my repo That was also the first time that i used a Enum (on code) and branchs (on github, but i didnt used them properly) Others There was also some other changes, check the repo GF-Silva/Ritualia What next Now i will add some bug checks on a piece of code that handle the video display using an youtube iframe.
Optimizating some piece of code So there was a certain part of the code responsible for the songs queue in the main route, that piece is a core function but where running a while true loop for no reason , here is the part: async start () { while ( true ) { // { emotion, genre, author, name, sourceId } const musicData = await this . #musicQueue . get (); this . createPlayer ( musicData [ ' sourceId ' ], null ); this . #showMusicInfos ( musicData [ ' name ' ], musicData [ ' author ' ]); this . #queueList . removeChild ( this . #queueList . children [ 0 ]); await this . #startExplication ( `/storage/ ${ musicData [ ' explicationSource ' ]} ` ); this . player . playVideo (); await this . #musicFinished . when ( true ); this . #musicFinished . set ( false ); } } Basically the code were calling it at the start and running it forever, but that code where a nightmare to maintain / implement, i tried to implement a safe check here for over 2 hours, but wasnt possible. I replaced it for a more efficient approach that do a loop in a different way, here it is: when adding a music, it checks if it is already playing, if no starts to play. when start to play it checks if there is a music in the queue for it to play, if no it stops playing, if yes it get it and play. When the music that is playing ends, it call the play function (from the above topic). That is just it, no while or constant loops, no overhead, it works by basically connecting all the codes in a way that they work together to maintain (or stop) the loop (notice how i said loop, it uses a loop but isnt a while or for loop, it connects the end of one code and the start of another, like a chain . I made it in the pull request #2, check it out: here
Fixing errors and adding bug checks Hi everyone, so i were fixing some bugs that i saw that may broke the app, i fixed all of them (for now), here they are: There was a logic bug that a class (the one that controls the youtube iframe) where doing stuff that it wasnt supposed to do (not an unexpected behavior, but a logic that should be outside of it), it was an easy fix. There was a bug at the player class that when the provided sourceId (for the youtube iframe) where wrong or unable to use it crash and stopped doing anything else (like playing another musics). I tryied solving it in various ways, one was beffore the changes that i did in my last devlog, but i failed because the class that holds the player where hard to fix, this devlog fix it. I fixed it by adding some bug checks and, when some error ocurred, it play the next music. There was also a bug at the player class and youtube-iframe-controls class, that for a couple seconds in the start of the website it would broke if u tried to play a music. It was because in the start of the program the youtube API where unable to be used. To fix it i just made it wait until the API where ready using an ASYNC function. There was also a bug that, afther the past devlog, it was doing and request at the /api/songs with params at the wrong format. Afther the past devlog the API started using the params genre_id and emotion_id , but the frontend where passing with the incorrect name (genre, emotion). Something that i implemented I upgraded the mysql query that where being used to get more infos about the music, before it where just returning infos like name, author, sourceId, etc, but now it also returns the genre and emotion from that given music. I added a bug check at the player class, now if it fails it pass to the next music. Something that i want implement I want to implement a simple toast notification system that will apear when something fails, like the playing of some music. Others The youtube docs for the iframe where very helpful for this changes, check it out: https://developers.google.com/youtube/iframe_api_reference?hl=pt-br
Creating a toast notification system So rn im creating what i said in the past devlog about a toast navigation. This isnt finished yet, im still figuring out an way to check the end of the timer, i found some ways to do it, like using an simple if inside the countdown. I didnt comment but i am using an setInterval to decrease the time and an <progress> tag to show the value but that is a bad ideia, imagine doing 1 if every 50 ms? that dont cost a lot of processing power, but i still will search for other ways to do it just to check, if yall got any hints or ideas leave a comment. Also i will improve the design, the design is petty poor.
The toast notification is finished So i finished it, it is a component that u adds in the code that u wants to use. I added 2 icons, 1 for infos and another for warnings. What i used and did The element that holds it all is an dialog , the icons are svg , the text is a span and the element that shows the time left is an progress . To update the time left i used an setInterval that runs at a 10ms delay and deduce 0.01 of the dialog value, so it will be smooth to see. Also there is an if inside that destroy the element and clear the interval when the value of the dialog reaches zero or less (In the past devlog i said about not using an if, but considering how low the cost for an if in that time is i decided to use it anyway). The function that creates the toast receives some params that will let it be customized by whoever is calling it: const icons = Object . freeze ({ INFO : infoIcon (), WARNING : warningIcon () }); function createToast ({ message , time = 5 , styles , icon = icons . INFO }) // the `message` is the displayed message // the `time` is the time until close // the `styles` is custom css styles for the element, it uses the dictionary format {} // the `icon` is the svg icon What else? I will apply it in some elements and post about. See you later!
Toast applied and tested The toast notification component is now being used at the player class, i did some tests and it is working very nice, hopefully the user will not see it very often (because that would be a problem, the user must not see it unless there is an error playing the music). But why did i make it? It is used to show more about what is going on for the user, so they will not become anxious if it something is working or not. Why not use another notification system? Each notification system has its own use cases, the others would be very painful for the user. Imagine every time a simple error (that is simple for me) like the music fail to play there was an error that interrupt the use of the app with an popup or alert, that would be painful, dont it? That is why i used an toast notification, because it is temporary (disappears after some seconds) and dont stop the use of the website. Also there is a feature that i implemented for the same reason a few devlogs ago that add a fallback in the music search, so it wont show a message at every single combination. Lets calculate how many combinations we have: there is around 50 musics in the database, 22 genres and around 40 emotions, multiplying the genres and the music 880 combinations that the user can make. Now lets see how many musics we can get: each music have around 1.2 emotions and 1.2 genres, so we get 72 combinations that lead to an music . With that in mind, we can see that from 880 combinations, just 72 of them are useful combinations, so we get a 8.18% for getting a music, and 91,12% of not getting one. Consider that each failed attempt shows an error that stop the use flow of the website, but that was before the past devlog, now it tries again and again and only afther failing everything it shows an error, at that point it must really show an error. Thats all, sorry for the long boring text and thanks everyone that read, see yall later
Studing about cache So basically i where studing about cache, the main ideia was to implement it in the sistem, but then i realized something: Theres is nearly no difference between cache and a normal request in an localhost project, adding the cache would not improve anything, sometimes it maybe even slow the website, because the page would need load more code. I realized it afther a while studing about it, but anyway lets focus on another thing. Also i where studing with google for devs: https://developer.chrome.com/docs/workbox/caching-strategies-overview
Adding a new description feature So basically there was an place where was designed to have the description about an music, but that was empty and where only finished today What it do It is petty simple, it just show an text about the music that is currently playing, also there is an audio that plays before the music starts playing, but this audios is played just one time before the music so if someone loses it or didnt listen well there was not a second chance to listen for that audio. Now there is this place that holds the same content, but in the format of an text that can be read whenever they want while the music is being played, that was what i added. Also that text can be hidden, so it will not stay using half of the screen every time (in the screenshot it is active) What this audios do This audio / text is part of the main purpose of the website, they give some fun facts about the music that may be useful someday in some kind of quiz or essay. Also the audio is played before the music and the music plays just after the audio finishes. That is to make whoever is listening listen to the entire audio before having what he (or she) wants, so they will not listen to the music and skip the audio.
Adding more bug checks I added some checks in the player class at the startExplication function that checks if the src (the url for the audio) is valid or not by doing an fetch with the HEAD method and checking if the return is an valid audio before trying anything in this function. Also i solved this error in the same function: Uncaught (in promise) AbortError: The play() request was interrupted because the media was removed from the document. https://goo.gl/LdLk22 This error was because the startExplication function where trying to play the audio before it was loaded, i solved it by making it play the audio just after it was load with the event listener canplaythrough . There was another error at the playMusic function where the code where trying to play the youtube video before it was loaded, i solved it by making it wait until it was CUED (Where the video isnt playing, but is loaded and showed). (The website was not created to be in mobile and dont has a lot of support, the video where recorded in my smartphone because i had to record the audio and the audio on my pc dont work. In the Future i Will add mobile suport, but right now im finishing the bugs and etc)
Refactoring the copa script I where placing some scripts in a class. These scripts are related with the player functions of the copa script, so i pick all of them and placed in the same class. I did it to follow best practices, but i confess that i still got some doubts about when to create an class and when the variable or method should be static or private (#property), i will search and learn more about because maybe i will have to refactor some parts of the code following these rules of best practices. That was all for now, see ya!
Creating a new helper Context: There was an class called youtubeFrameControls , this class basically where designed as an structure to help using the youtube iframe API, but with the time this class where becoming basically to hold just an function (and in a very inefficient way), because the methods that it had before (like the one that runs when the iframe is loaded) had to have more and more specific logic in the codes that used it, so they where useless (because the codes that where using it where rewriting it). What i did: I picked the only function that where being used and transformed it in an helpers (that can easily be customized). This function was the one that creates the player of the musics, and the function where called createPlayer . Also i removed the old class (youtubeFrameControls) and replaced it for this helper in every place that used it. It now is way more simple than before and can me more customized.
Making the website responsive Hi again! Like i said in some devlog, the website dont have support for mobile, that was because it was designed to be at kiosk mode and work just in desktops. but i decided to change that. First of all: the site where using a lot of absolute values of dimensions, so it where braking even in the desktops (it wasnt responsive at all). But i spent a while changing it, it is isnt ready and has some problems, but is better than before. (The mobile is still strange, i did not started fixing it yet). Credits: https://css-tricks.com/snippets/css/fluid-typography/ - This website shows about a way to make the texts become responsive for the screen using some calcs, it is worth seeing. The first video is how it was before, the second is how it is now
Hi again! Like said in the past devlog, im improving the responsiveness of the website, specifically in the player part. But it had some problems and where distorting when playing an video, now it resizes based on the screen size in a way that it stays ¨normal¨. The first video is the new way, the second is the old way. It still needs a lot of improvements, but it is going!
Im improving the responsiveness at the home page (before was the player page), but for some reason that idk the emotion selection div is having a strange behavior, i will update what it is after i fix it. Take a look: (the item in the center should be centered)
i finished the workings on the section of the home page that i where doing before, now has a good responsiveness for pc and a decent one for mobile. Now im working on the main area of the home page, the one where the user selects the desired genre for the music (second img). It may looks completely fine, but that same element already was a headache before and is here again. The given area is the cover-flow component, before i already fixed it (or so i thought), but it was looking bad (the 3d perspective where a bit strange) and would probably broken if i added new genres. I were trying to figure out a way to listen to the clicks in the card without any problems, that seems easy at first glance, but the 3d perspective in the element make other elements eat the click from one another, make the clicks dont be listened and so many problems that i nearly decided to erase it and write from scratch. I already found a way to do it by using the mouse position, the center of the screen and the card width (the genre img) to transform it in an value that can be used to select the exact card without any dependencies on the doom selector. It basically uses just some values, put in some calcs and get the difference between the current card (genre) index and the clicked. Im nearly finishing it, but i still need to figure out some values and more.
Finished the correction of the errors at the perspective and click in the cover-flow component. Now the perspective stays the same 150vw value (that is based on the screen width) and stays normal, with everything working. Oh man, that needed a lot of logic and out of box thinking finding another ways to check where the user clicked without using an normal click event listener (for those who lost the past devlog or didnt understood, i cannot use a normal eventListener in that because the clicks is detected in another element or in nothing, even with z-index or more in css, so the solution should be done entirely on javascript logic). The first video is the new way, the second is how it was before all changes in it
Im nearly finishing the workings on the responsiveness. Now the entire player screen is responsive and do not breaks the texts anymore (except for the description area), also the buttons that show you the next screen (the ones that displays ‘player’ and ‘generos’) are responsive too, the music queue is working perfectly fine, and the area that is used to select an emotion is nearly responsive too, it just needs some adjusts in the two buttons that change the current emotion because they become too small and uses a lot of space when the screen is too small, after that this screen will be finished. It is taking a really long time, the fact of how many different screen sizes exists makes it harder to finish, but now there is times that i even cannot see if i changed the resolution in some areas, because the system looks the same. I spent quite a while testing different resolutions and combinations of size, i didnt even noticed that i where 6 hours here, but now ik more about css (things like container-type + container based sizes and more ways to set the size of an text) The video shows how it is now, if u want to see the before just checks the past devlog.
The emotionDrum is now responsive! Now the buttons that you use to select the emotion are in the same side as the div that displays the emotion, so they dont fight for space anymore. This change is meant to fix the low size of the items in screens that are too small, in the new way we have more free space to display the emotions, there is not much to say. What else I did some minor changes in the size of some items at the player area, now they are easier to read! (I increased the size of some items)
The home is now fully responsive Ah that took a while, but finally it is fully responsive. Now the description at the player UI resizes based on the screen size and active a scroll behaviour when need, also i did some minor change at the emotionDrum perspective to make it show more emotions at the same time, removed the padding in the arrows at the emotionDrum so they will have more space and fixed an error in the genre drum that was making it perspective broke. After all these devlogs i improved how i make a code responsive.
Improving the performance After finishing the improvements in the responsiveness, now i decided to improve the performance. I used lighthouse to get insights (i learned about it in an tiktok video) and figured out that the images size were too high (were an png of 1280x1280px), so i saw more about that in the page: https://developer.chrome.com/docs/performance/insights/image-delivery (an link that google lighthouse gave). With that i saw how to decrease the size while staying with quality, i reached up to the sharp-cli tool, that makes the work of resize, convert and compress the image for me. The command used was that: npx sharp-cli -i * .png -o ./output resize 320 -f avif -q 50 --effort 6 --smartDeblock --preset photo The 320 is the size that i want it to be at the end, i got that value by seeing what was the computed value (the value that is being used in the website) in an high resolution pc (not the most higher one, the high but normal pc) with the resolution of 2500x1714px . With this simple changing the image went from 2mb to 40Kb! Nearly 100% decrease, and take in mind that there is more than one img, so the change were even higher. Also i created 5 different images: 320px, 480px, 640px, 960px e 1280px. With them the browser can choose which one is better for each device. With these changes i went from 35 points of performance to 59.
Improving the LCP (Largest content paint) performance I am improving the way that the website create and downloads the images, the main reason is to make the user see something faster. Before the system were doing 2 main things: Go trough the entire list of images, creating the elements and placing them into the page. Position them. But the position of the items were being done after the creation of the images, in another function. Now they are in the same function: it create the element, position it and add it to the page. That does not seem like much, but the code got way faster with that, probably because it dont need to go item by item in an list twice just to create an element. I tested the time to load the first element and it went from 8.63s to 6.43s , the test was made with 2200 elements (Yeah ik, it is a lot and normally it isnt that much, but i had to see how they were holding with more than 22 items). Also i fixed a bug that passed unnoticed while improving the responsiveness: At some point of images the visibility of the elements broke, that was because the perspective (what makes the 3D perspective of the component, and makes it visible with 3D effects) was based on the screen size, not the elements itself. What was the problem in that: Each element takes a size in the screen ‘makes the circle that shows the element be more and more near of our point of view’ (i cant explain it any better, search what is ‘perspective in an 3d element at HTML’ ). While it was approaching our point of view (POV), our POV were exactly at the same position (based on the screen size), so at some point the circle perspective would pass the POV and we would be unable of seeing it well. Now it is based on the elements: The 3d elements were basically a circle, i just used the diameter to change the perspective based on it. TODO: Maybe i lowered the image quality too much… I will fix it in the next updates. Also i were trying to improve the font settings to improve the performance, but that wast working so i decided to move on to this because it was more critical (took a while for me to jump to this, maybe like 2 hours trying and trying values in the font settings). i am also working in a way to load the images in parallel, with that it will take way less time (I didnt known about LCP before so i spent a while figuring out the way it works).
Improving the loading performance Now the system selects some images that needs to be shown faster than the others and making them load with priority. It was made by selecting the images that the user is seeing and defining some params like fetchPriority = "high" and decoding="sync" , the other images have the params: decoding="async"; loading="lazy"; contentVisibility="auto"; . With that config the LCP went from 2.4s to 0.5s . Also it loads the image in the start and dont change that config again, so the browser will be lazy while downloading these images. The problem is: only the first images are chosen as high priority, but their positions will be changed while the configs stays the same, that makes the browser lazy while loading them and makes the runtime performance became worse. To fix that i found about IntersectionObserver, that are meant to solve the problem of updating the images position fast. It was not applied yet, i found about it like 1 hour ago. What else Now the perspective of the emotionDrum is based on the elements that it have, before it was based just in the screen and would broke if something changes. I did a little change in the way that the script checks for clicks in the screen, now it has more accuracy (I changed the round system).
Adding an observer Now the script observe the card elements at the cover-flow component, classify their position and changes it visibility based on that. Im using an IntersectionObserver to observe every card, but it was designed to observe the position of 2d elements, so i had to figure out how to make it work well in an 3d element. The way it works is when the observe activates (it basically means that some card is in the range to load) it get the card info (like position and angle) and changes it visibility state based on that. Simple, right? No, it was a headache for the start to the top, nearly 4 hours of what i did was to fix the fact that it was meant for 2d. The observer were activating for cards that were in the back of the element, so i had to classify the card position into back or front by using its angle. But if i tried to use the card angle without anything else the script would broke (and did for 3 hours until i realized how to fix), so i had to use an second angle which is 360 - cardAngle (the 360 is the angle of an circle), so this new angle is based on the circle end while the other is based on the circle start. But the system still broke, because at some point one of these values would become negative and makes the if that classify the elements fail. The fix was using the absolute value in the if (it took 1 hour until i figured that; oh i were so happy when it worked). Why To improve the performance, so the browser will just load what is really important and not 50 images that the user cant even see. What else All that work definitely improved a lot my logic thinking and for the first time i used the truth table well. Now i just need to use the new code to change more the style of the images that are not in the screen. I did not deleted the code that i wrote in the past devlog, it was used in the new code to select how many images should be loaded in the same time. ** The first video is the result, the others is some problems that i had **
The observer is finished (nearly) Now the cover-flow has an observer that checks the position of the images and changes it styles based on that, so the images that the user is seeing is loaded while the others is hide. It still has some bugs and space for improvements that im still figuring out how to solve, like the image loading too late on the screen or, in slow internet connections, the image takes too long to load. Most of these bugs are because the observer (an intersectionObserver ) was designed for 2d contexts, not 3d (that were and still is an giant problem to solve). For this reason i was thinking about creating an observer from scratch in C++ that can work better in my 3d element, but the overhead would be high so im trying to solve in other ways before that. The feature was made using fetchPriority, contentVisibility and src (the system add the source just when the image is near the screen). OBS: I found about MutationObserver after this post, maybe i will use that instead of insersectionObserver. Oh man, at least if had found about this before… Aaaaaahhhhh i spent 9 hours in that, but at least a Lot of the new logic will be used. Anyway, lets cook
Adding a mutationObserver Now, instead of an intersectionObserver, the system use a mutationObserver that monitors the angle of the cylinder itself. With that the loading of the images will be insanely better, faster and user-friendly. Now the changes in the cover-flow is observed at the cylinder angle, not at each card. There was some problems in the journey like, for some reason, unexpected cards being loaded or not, the loading script at the observer dont triggering at all (that was caused by the speed of the observer) and an insane amount of cards being triggered at the same time (i still did not figured out why, but that isnt ‘harmful’). But man, i had to be creative here and remember about some concepts like concurrent programming, buffer / queue and apply some delays (because the mutationObserver is insanely fast and can trigger every millisecond). That all was meant to decrease the speed of the mutationObserver, because it was triggering with the most small change in the cylinder, so i made it trigger just when an expected amount of movement was made. The red/yellow collor is for me to visualize the loading state, it is just for debug The code isnt finished, i still need to implement the loading part, for now i just implemented the observer and basics of the loading part
The loading is done Features Now the loading at the mutationObserver is finished, it finally loads or unloads the images that should be (or not) loaded! The new observer is way faster, because it can detect the image way before it enters the screen, loading it before and having more time to do it. Also the system loads just a maximum of images (with the configs that i put it is 13), so it will not fry an cellphone. Problems The loading part was easy to do, i already done it before in the past observer (intersectionObserver), so i just had to pass the old code to the new part. But when the cover-flow element dont got atleast 13 elements the mutationObserver code breaks completely! Im still pondering how to solve it, when i do i will post about! Results The performance went from 78 to 100! The system is way faster! The user does not see a blank image anymore! Why The old method was slow even with a good internet connection, because it was loading the images just when the element was already in the screen, leaving to a perceptive delay for the user and a blank image to the user. Also i thought about creating an observer from scratch (maybe i was a little off my ideas, because that was insane), but the browser already had exactly what i wanted (the mutationObserver) Videos The new features The performance of the new feats The old features Reasoning While i was trying to sleep i thought about a system that fill the cover-flow with a maximum of images (like 10, or 13, or the code decides) at the DOM, using less memory to run. That system will free a lot of memory based on how many cards the cover-flow have. But that will have noticeable effects just with a lot of elements and probably would be hard to develop, maybe i will do in next updates. What next Im leading to the shipping, so i will improve metrics about the lighthouse, improve the readme and post it.
The loading is done and working! Fix I fixed the error that were happening when the cover had a certain amount of elements. Problems The fix itself was very easy to do, but doing it in a readable or without using 10 lines of code (i want things concise) was way harder than i expected. So i spent this entire time trying different ways to do it, each of them making everything worse. Reasoning The bug were with less than 14 elements, the script were calculating the first and last element index, it happened that these elements were behind the screen focus. Why? Because the values that the system was using were leaving these values, so i had to fix the way it was calculating things.
Fixing an error at the youtubeHelper Now the youtubeHelpers checks if the youtube API is ready before sending commands. Why Sometimes the API maybe is not finished yet, that was leaving an untreated error that was braking the entire website. How was made With a lot of pain and suffer. I thought “Oh hey, that will be a 15 minutes fix” - i spent 1 HOUR FIGHTING with the iframe itself, nothing was working and at some point i started thinking that even the API of YOUTUBE wasnt working, even the most basic function that should be triggered when the youtube finished the loading wasnt beeing activated, even the console.log(“Api READY!”) wasnt working, even when it worked it wasnt working well, the variable of the player was a promise and not the result. At the end i shut down my PC, defeated, without any energy left, with just hope that in the next day (this) that would be fixed (if not i was planning to ignore and make it a feature “Easter egg, if u dont join the website for a while it will not load!”. The problem here was just the position were the iframe api was in the HTML, it was being loaded before the helper script, so the helper was not there to check if it the iframe was ready or not, the fix was just move it a little down. Architecture It was just an promise, if the function checks that the iframe isnt available it await for it to be available. The check if it was available use the onYoutubeIframeAPIReady, easy easy (except for all the suffer that i went into).
The performance workings is finished and bug fix Fixes Now the logo z-index is lower, that is because the logo was ‘eating’ the click in more important elements. Also i did a small change at the cover-flow, that change fix the bug of the scroll at the element sudently stoping when at a certain position. The copa script had some old references to images that were leading to bugs, i changed it. Performance I already finished it in the past devlog, i was just checking if there was anything worth improving, but everything is working fine and now is time to improve acessibility. Most of the logged time was me trying to improve more some metrics at the lighthouse, but the work was too much for anything that is already good, so i decided to stop before i started focusing too much in it.
The accessibility workings is done Features Now the system has a new navigation system that allow users to navigate with just the keyboard! (The video was with just the keyboard) Why Why not? It was meant to improve the accessibility for users without mouse, or any another problem and because i was tired of having to use the mouse to debug something. How it was made Again with a lot of pain, the feature itself was easy but i had to fix some errors that went unnoticed, so it took more time. The feature detects when the user press a key and do an action based on wich key was. The accessibility was easy to get 100, but the metrics at lighthouse dont give all what the users will need, i had to think about the website usage and how would be the easiest way for the user. Results The accessibility went from nearly 69 to 100! What next Now i will work on the best practices! Update after the devlog: Nearly every metric is already maxed out lol, i will ship it very soon!
All done, it is time to ship Every metric at lighthouse it nearly perfect, im so exited to ship it!
Added install guides Now there is guides to help the user install for ubuntu, arch and windows. Notice that im a linux user and my pc is weak, so i could not test it on another operational system. Also the guide is in portuguese (all of them), please use your browser built-in translator or any of them to read if u dont understands portuguese I could test it on another linux distro, but i would have to go through all the install steps. Also i cannot try installing windows because it normally wipe out another OS installed on the same disc (i know that it just replaces the bootloader) and using a VM was not possible due to the amount of RAM and the processor that i have.
Configuring an ssh server! I configured an oracle cloud vm with ubuntu to host my website 24/7, that was because nest wasnt working in a while. Im running it at a local IP with http only, i will configure https today and maybe an domain, the IP is http://164.152.55.252 , notice that some browsers may block you from accessing and http website. UPDATE AFTER THE DEVLOG: I put an domain using duck dns: http://ritualia.duckdns.org Hardwork I had absolutely not a single knowledge about oracle cloud vm, so configuring it was an hell. Sometime my internet stopped working so i had to use my smartphone, this lead me to configuring an invalid ssh key and i had do configure everything from scratch, i spent 5 hours configuring everything, but that was ssh and wasnt tracked. But now everything is working fine. Thx oracle This vm is a 24/7 entire OS (Virtual Machine) that has some good free plans, without any cold start. Thx stardance Stardance now will have one more mount!!!!!! I still has roughly 40 hours of deep development to do after this ship, i will love to finish that in stardance!
It is time to ship! Now the system is working perfectly fine running at a vm in oracle cloud with a public domain, and a dns with duckdns at http://ritualia.duckdns.org/ Warning: It is just HTTP!
Added english readme I created an english readme, api and install Guide, so it will be easier to read and more accessible for worl-wide users
Ships:
What did i made I made an complete music play system that will help users to learn while listening to musics! I used youtube, flask, python, mysql, js and hope to make this! What else Solved a lot of painful bugs that were stopping the project from working Finished and made the music queue work Added music description labels Improved a lot the performance Made the website responsive Added a keyboard based navigation Fixed so much errors at the cover-flow that now i forgot how many Added bug checks before the play of each video on the player Created an toast component to show errors or infos Added 54 musics to choose and listen Challenges The most painful code was the player and the cover-flow, they were with a lot of hidden bugs that i had to figure out, feats that i had to make and pain to suffer! Now i figured out that i love and HATE making a website responsive! What im proud of MutationObserver: An observer that loads / hides an image based on its position at the cover-flow, this system took a while and worked very well. Error checks at player: The system can handle the error that happen and dont crash! Keyboard navigation: Everyone can use the keyboard to navigate now! Oracle VM: For the first time i used an ssh and hosted an website in my own machine (oracle, not mine)! How to test Access http://ritualia.duckdns.org/ , when you join and the page loads you will find a screen to choose an genre, select which one you want, after you will see an emotion selector, select the emotion that you wanna feel! You will see the player screen and an audio explaining the music (The audio is in portuguese), after the audio the music will play. Notice: The github and the website are in portuguese, please use your browser built-in translator or any that you want to use the software properly! Follow the installation guides at github if you want to install...
|
1793350645.729271
|
1793437045.729271
|
|
56504
|
LucidOS by @Snetch | Stardance
|
Snetch
|
1
|
17.81
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T13:10:54Z", "hours": 13.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i made an online desktop OS called LucidOS , the first idea was to make it a creepy OS that evolves over time but i changed the idea to make it so people can create small apps/games in it with the custom Lucid script , it was made to look easy and beginer freindly , people can publish those apps , i review the apps and if accepted the app will be shown in lucid store where other users can try your app ! , there are also cool built in apps such as lucid media and Lucid paint , you can create musics , and make simple cool animations , the LucidOS+ is working but the payment method isnt , since i am a minor i made the payment method only in test mode , DONT PUT YOUR CARD INFOS , there is the terminal with cool commands , and custom wallpaper for the OS , i struggled with the project since i have a lot of studies for bachelor but AI helped me complete the project , i am proud of making my first functional project since all the projects before failed , contact me at my email [email protected] for bugs or cool features and enjoy !", "repo": "https://github.com/Snetchy09/LucidOS/", "demo": "https://snetchy09.github.io/LucidOS/"}]...
|
[{"post_id": 73069, "ts": "202 [{"post_id": 73069, "ts": "2026-09-24T09:54:43Z", "hours": 1.8347, "text": "buku buku! added themes , rewrote some scripts , optimized and the orb eye follow the cursor now !"}, {"post_id": 69290, "ts": "2026-09-16T19:03:58Z", "hours": 2.9706, "text": "added intro for the OS and some simple musics i found , so you dont get bored , well typically OSs dont have music in them but whatever"}, {"post_id": 65342, "ts": "2026-09-10T12:57:46Z", "hours": 4.9172, "text": "finished working on the OS !!!! you can try it out now , hope you like it , and also report any bugs and dont buy the LucidOS+ since it is in test mode"}, {"post_id": 60292, "ts": "2026-09-02T15:48:38Z", "hours": 2.5389, "text": "#Devlog 3 , i tried to add a whole lucid programing lang wich i named lucidscript , nothing fance but i keep getting a lot of errors , at the current time , i added lucid studio where users create simple apps that run in the OS and get submited to me and review them before adding them to lucid store where other useres can try community made apps !, that it for now"}, {"post_id": 59414, "ts": "2026-09-01T07:17:47Z", "hours": 0.765, "text": "#Devlog 2 , i made the animation smoother and now the windows appear on top icons and the orb , that it for now"}, {"post_id": 59198, "ts": "2026-08-31T21:07:39Z", "hours": 4.9867, "text": "#devlog 1 , here is the test page https://snetchy09.github.io/LucidOS/ i made an OS based on hallucinations , it wont be creepy like those games and it will remain functional , that part still wasnt implemented as i am trying to make the full OS with the apps and stuff , current working apps are : browser(only weki works) , notes , media , calculator , terminal , lucid store ( it only shows apps but won’t download apps at this moment ) , settings , text editor/files , some apps are unfinished and there are some bugs , yall can comment if you find any and thank you!"}]...
|
Title: LucidOS by @Snetch | Stardance
Devlogs:
#d Title: LucidOS by @Snetch | Stardance
Devlogs:
#devlog 1 , here is the test page https://snetchy09.github.io/LucidOS/ i made an OS based on hallucinations , it wont be creepy like those games and it will remain functional , that part still wasnt implemented as i am trying to make the full OS with the apps and stuff , current working apps are : browser(only weki works) , notes , media , calculator , terminal , lucid store ( it only shows apps but won’t download apps at this moment ) , settings , text editor/files , some apps are unfinished and there are some bugs , yall can comment if you find any and thank you!
#Devlog 2 , i made the animation smoother and now the windows appear on top icons and the orb , that it for now
#Devlog 3 , i tried to add a whole lucid programing lang wich i named lucidscript , nothing fance but i keep getting a lot of errors , at the current time , i added lucid studio where users create simple apps that run in the OS and get submited to me and review them before adding them to lucid store where other useres can try community made apps !, that it for now
finished working on the OS !!!! you can try it out now , hope you like it , and also report any bugs and dont buy the LucidOS+ since it is in test mode
added intro for the OS and some simple musics i found , so you dont get bored , well typically OSs dont have music in them but whatever
buku buku! added themes , rewrote some scripts , optimized and the orb eye follow the cursor now !
Ships:
i made an online desktop OS called LucidOS , the first idea was to make it a creepy OS that evolves over time but i changed the idea to make it so people can create small apps/games in it with the custom Lucid script , it was made to look easy and beginer freindly , people can publish those apps , i review the apps and if accepted the app will be shown in lucid store where other users can try your app ! , there are also cool built in apps such as lucid media and Lucid paint , you can create musics , and make simple cool animations , the LucidOS+ is working but the payment method isnt , since i am a minor i made the payment method only in test mode , DONT PUT YOUR CARD INFOS , there is the terminal with cool commands , and custom wallpaper for the OS , i struggled with the project since i have a lot of studies for bachelor but AI helped me complete the project , i am proud of making my first functional project since all the projects before failed , contact me at my email [email protected] for bugs or cool features and enjoy !...
|
1793346853.8856683
|
1793433253.8856683
|
|
16960
|
Frictionless by @Alberto4944 | Stardance
|
Alberto4944
|
0
|
0.31
|
0
|
[]
|
[{"post_id": 7307, "ts": "2026 [{"post_id": 7307, "ts": "2026-06-12T05:26:30Z", "hours": 0.3094, "text": "Working on the coding part, also the title is wrong. This is my computer vision x table tennis coaching project."}]...
|
Title: Frictionless by @Alberto4944 | Stardance
D Title: Frictionless by @Alberto4944 | Stardance
Devlogs:
Working on the coding part, also the title is wrong. This is my computer vision x table tennis coaching project....
|
1792799339.006091
|
1793404139.006091
|
|
61619
|
hackth pad by @hann | Stardance
|
hann
|
0
|
2.22
|
0
|
[]
|
[{"post_id": 73079, "ts": "202 [{"post_id": 73079, "ts": "2026-09-24T10:28:42Z", "hours": 0.5333, "text": "the extruding thing didnt work so i cried"}, {"post_id": 72673, "ts": "2026-09-23T13:51:16Z", "hours": 0.9731, "text": "i designed the outercase before it crashed (mylaptop)"}, {"post_id": 71828, "ts": "2026-09-21T16:49:07Z", "hours": 0.3, "text": "i had to redo the pcb cus it was bad :/"}, {"post_id": 67109, "ts": "2026-09-13T05:18:13Z", "hours": 0.4167, "text": "i made a schematic and the pcb and then my pc died :D"}]...
|
Title: hackth pad by @hann | Stardance
Devlogs:
i Title: hackth pad by @hann | Stardance
Devlogs:
i made a schematic and the pcb and then my pc died :D
i had to redo the pcb cus it was bad :/
i designed the outercase before it crashed (mylaptop)
the extruding thing didnt work so i cried...
|
1793040732.6797614
|
1793645532.6797614
|
|
65362
|
MCQ MASTER by @Obito | Stardance
|
Obito
|
1
|
1.0
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T18:35:54Z", "hours": 1.0, "multiplier": 1.26, "payout": 1, "blessing": "neutral", "text": "i know my project is still on the beginning stage but the reason i ship this one is to communicate with the authorities that i am a 17 years old from south India i just heard about this event 3 days ago as i started lately i can’t use my full potential in less time. I’m now very frustrated that why projects get Ai flagged i just you Ai to final optimization to make the code looks clean. but the review simply says that your project contains heavy Ai code usage i don’t know how they even say this and my only goal is to get my dream keyboard AULA F75 which is very useful for me as my laptop keys are not working properly(chunky and sticky) i have 110 stardust now and i want 290 more so is this any other ways to get the stardust rather than shipping project. and any other ways to get that keyboard (Due to my financial conditions ) i can’t able to afford for a keyboard I don’t even have a proper internet connection I’m just using the mobile hotspot for the internet connection. so I Kindly request your team to give me a proper reply through this ship reply. I’m really frustrated and mentally become sick like i hit the peak level of the depression. The Only reason i accepts this stress and pain is to get that AULA F75 keyboard if i can’t able to get that or lost my chance i will definitely gets scattered and broken. so please give me a proper reply for my all questions and i know its not a proper way but please help me get that keyboard", "repo": "https://github.com/tharunkumarCYSEC/MCQ-MASTER", "demo": "https://mcq-master-sigma.vercel.app/"}]...
|
[{"post_id": 73082, "ts": "202 [{"post_id": 73082, "ts": "2026-09-24T10:44:25Z", "hours": 0.3561, "text": "im finally completed the coding part im very excited to deploy my project"}, {"post_id": 73077, "ts": "2026-09-24T10:20:37Z", "hours": 0.2856, "text": "hey there im OBITO my project is a MCQ generator name MCQ MASTER its a kind of tool for the students who want to examine thier self my monk exam. now i completed the python codes for it."}]...
|
Title: MCQ MASTER by @Obito | Stardance
Devlogs:
Title: MCQ MASTER by @Obito | Stardance
Devlogs:
hey there im OBITO my project is a MCQ generator name MCQ MASTER its a kind of tool for the students who want to examine thier self my monk exam. now i completed the python codes for it.
im finally completed the coding part im very excited to deploy my project
Ships:
i know my project is still on the beginning stage but the reason i ship this one is to communicate with the authorities that i am a 17 years old from south India i just heard about this event 3 days ago as i started lately i can’t use my full potential in less time. I’m now very frustrated that why projects get Ai flagged i just you Ai to final optimization to make the code looks clean. but the review simply says that your project contains heavy Ai code usage i don’t know how they even say this and my only goal is to get my dream keyboard AULA F75 which is very useful for me as my laptop keys are not working properly(chunky and sticky) i have 110 stardust now and i want 290 more so is this any other ways to get the stardust rather than shipping project. and any other ways to get that keyboard (Due to my financial conditions ) i can’t able to afford for a keyboard I don’t even have a proper internet connection I’m just using the mobile hotspot for the internet connection. so I Kindly request your team to give me a proper reply through this ship reply. I’m really frustrated and mentally become sick like i hit the peak level of the depression. The Only reason i accepts this stress and pain is to get that AULA F75 keyboard if i can’t able to get that or lost my chance i will definitely gets scattered and broken. so please give me a proper reply for my all questions and i know its not a proper way but please help me get that keyboard...
|
1793213748.231008
|
1793300148.231008
|