|
62331
|
Game Dashboard by @Parrot | Stardance
|
Parrot
|
2
|
1.0
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T15:56:29Z", "hours": 1.0, "multiplier": 1.18, "payout": 2, "blessing": "neutral", "text": "Hey, this is my project Game Dash Board Added new log out feature and favourting feature ran into couple of bugs bug now its fixed!!!!!", "repo": "https://github.com/ryan113cpu/game-dashboard", "demo": "https://ryan113cpu.github.io/game-dashboard/"}, {"ship_num": 2, "ts": "2026-09-15T20:38:39Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "HI guys this my is my first Devlog and so far is been 30 minutes of me grinding i just added saving featue and favoutriting features more is coming do not worry!!!!!", "repo": "https://github.com/ryan113cpu/game-dashboard", "demo": "https://ryan113cpu.github.io/game-dashboard/"}]...
|
[{"post_id": 69852, "ts": "202 [{"post_id": 69852, "ts": "2026-09-17T22:29:04Z", "hours": 0.3189, "text": "Devlog #4 this may or may not be my Final devlog depending on if they return it or not i hope i Pass this mission!! In this devlog i added a Logout button and made it so you can track you video game time Untill next time or maybe not who knows??????!!!!!"}, {"post_id": 69845, "ts": "2026-09-17T21:54:09Z", "hours": 0.4864, "text": "Devlog # 3 so lowki i kinda forgot to make it so when you sign up/ log in to hide the backgound and yeah fixed it"}, {"post_id": 69413, "ts": "2026-09-17T00:26:26Z", "hours": 0.5819, "text": "Greetings everyone Devlog #2 so For my first Devlog i acsedently shiped it insed of doing devlog LOL so anyways they returned the mission and gave me the idea to add……… Athentication Untill next time"}, {"post_id": 68830, "ts": "2026-09-15T20:27:10Z", "hours": 0.3297, "text": "added game input check!!!!!"}]...
|
Title: Game Dashboard by @Parrot | Stardance
Devl Title: Game Dashboard by @Parrot | Stardance
Devlogs:
added game input check!!!!!
Greetings everyone Devlog #2 so For my first Devlog i acsedently shiped it insed of doing devlog LOL so anyways they returned the mission and gave me the idea to add……… Athentication Untill next time
Devlog # 3 so lowki i kinda forgot to make it so when you sign up/ log in to hide the backgound and yeah fixed it
Devlog #4 this may or may not be my Final devlog depending on if they return it or not i hope i Pass this mission!! In this devlog i added a Logout button and made it so you can track you video game time Untill next time or maybe not who knows??????!!!!!
Ships:
HI guys this my is my first Devlog and so far is been 30 minutes of me grinding i just added saving featue and favoutriting features more is coming do not worry!!!!!
Hey, this is my project Game Dash Board Added new log out feature and favourting feature ran into couple of bugs bug now its fixed!!!!!...
|
1793008368.0880623
|
1793872368.0880623
|
|
42657
|
HackerOS by @akshay369 | Stardance
|
akshay369
|
3
|
13.0
|
58
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T15:49:47Z", "hours": 5.0, "multiplier": 5.21, "payout": 25, "blessing": "neutral", "text": "I built HackerOS, a hacker-style web OS featuring a terminal, animated system monitor, password generator, notes app, system settings, a minimal taskbar, and desktop wallpapers. This ship included new 3 apps, network,calculator and a music player. So try it and give your feedbacks. Thankyou!", "repo": "https://github.com/akshaykpillai369-max/HackerOS", "demo": "https://akshaykpillai369-max.github.io/HackerOS"}, {"ship_num": 2, "ts": "2026-08-21T07:03:03Z", "hours": 5.0, "multiplier": 13.84, "payout": 33, "blessing": "neutral", "text": "What did you make? I built HackerOS, a hacker-style web OS featuring a terminal, animated system monitor, password generator, notes app, system settings, a minimal taskbar, and desktop wallpapers. What was challenging? My biggest hurdle was making the system monitor animated. What are you proud of? I am most proud of successfully implementing the animated system monitor and creating an intuitive, functional user interface with a nice hacker aesthetic. In future updates, I plan to add a dedicated start menu, expanded terminal commands, and more built-in utility apps in hacker aesthetic. All I want is your support. And if you have any nice features in mind, feel free to add those while rating or in the comments of Devlogs", "repo": "https://github.com/akshaykpillai369-max/HackerOS", "demo": "https://akshaykpillai369-max.github.io/HackerOS"}, {"ship_num": 3, "ts": "2026-08-19T07:39:16Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made HackerOS, a fictional hacker-style operating system interface using HTML, CSS, and JavaScript. The most challenging part was creating the booting experience and making the different windows work like an actual desktop. I’m proud that I was able to turn a simple web project into something that feels like a small operating system", "repo": "https://github.com/akshaykpillai369-max/HackerOS", "demo": "https://akshaykpillai369-max.github.io/HackerOS"}]...
|
[{"post_id": 73543, "ts": "202 [{"post_id": 73543, "ts": "2026-09-25T11:03:12Z", "hours": 1.7675, "text": "Added music app and added my very favorite 3 songs in it, guys check it out and if you have more apps in mind, feel free to comment it. I will add it"}, {"post_id": 73066, "ts": "2026-09-24T09:34:36Z", "hours": 1.4125, "text": "Added Calculator to the Hacker OS because in the previous ratings one guy said that adding a calculator and music player is good, so I added it"}, {"post_id": 73018, "ts": "2026-09-24T07:09:54Z", "hours": 0.3031, "text": "Started development of the new two apps, the calculator and the music player"}, {"post_id": 72991, "ts": "2026-09-24T05:42:18Z", "hours": 0.2594, "text": "Now I fixed the transparent background, and many of the users complained about it, so I changed that to an opaque background for the window."}, {"post_id": 72986, "ts": "2026-09-24T05:22:09Z", "hours": 1.0311, "text": "I added the most requested feature , the network app, now we can ping and scan an IP address. Check it out guys!"}, {"post_id": 51483, "ts": "2026-08-21T06:46:12Z", "hours": 0.6197, "text": "I added a small taskbar! Now, when you open any application, its name shows up on the taskbar. Go check it out guys!"}, {"post_id": 51465, "ts": "2026-08-21T06:01:05Z", "hours": 0.6628, "text": "I created Hacker Settings app, and now you can change the wallpaper. Currently, there are 3 wallpapers. Are you still reading? Stop and go try out my project, guys!"}, {"post_id": 51449, "ts": "2026-08-21T05:11:01Z", "hours": 1.0914, "text": "Added a new application: Hacker Notes, now we can save whatever we want. Next destination is Hacker settings. I am into it. Stay tuned!"}, {"post_id": 50791, "ts": "2026-08-20T05:44:17Z", "hours": 0.7919, "text": "Earlier there has a problem is js, that is when we click close button. The application window moves right, I solved that bug . It is the problem of the make draggable fn."}, {"post_id": 50718, "ts": "2026-08-20T01:50:39Z", "hours": 1.6122, "text": "Added a new app, password generator, now we can generate secure password which meets any requirement."}, {"post_id": 50136, "ts": "2026-08-19T07:18:35Z", "hours": 0.6108, "text": "Completed the System Monitor also. Also made some tweaks in the UI and in the Booting page. Soon I will add the functionality to the other two apps(Network Scanner and the Code Editor). Also you have any features in mind, feel free to share it, I will try to add that❤️"}, {"post_id": 50125, "ts": "2026-08-19T06:29:46Z", "hours": 0.5447, "text": "Hurray, The terminal is working well, type help to get the available commands . I will try to add functionality to all the 4 apps. Next going to work on System Monitor"}, {"post_id": 50117, "ts": "2026-08-19T05:50:17Z", "hours": 0.7622, "text": "Designed the website UI🎉. I added 4 applications on the website: Terminal, Network Scanner, Code editor, system Monitor. Also added background that matches the theme😅."}, {"post_id": 50089, "ts": "2026-08-19T04:41:51Z", "hours": 0.3533, "text": "Hurray🎉🎉, the booting screen is completed, now it shows the typing effect , just like we see in movies. and when the system is ready, the button will be enabled. Now going to the actual OS"}, {"post_id": 50080, "ts": "2026-08-19T04:16:37Z", "hours": 0.3336, "text": "Next, I worked on the styling, and now it looks like a hacker terminal 😅. My next target is JS. After adding JS, the booting screen will show “Initializing HackerOS”, “Loading kernel”, “Getting system ready”, etc. After the process is done, the Enter System button will become active. Boom! You entered HackerOS 😂"}, {"post_id": 50069, "ts": "2026-08-19T03:46:17Z", "hours": 0.3394, "text": "I started working on my new project Hacker OS. I made the booting screen in html, now I has to work on its styling part . And everyone dreams(mine also) of becoming a hacker and running commands and boom the system is hacked!🤯, and that is fun to see, though that’s never going to happen because hacking doesn’t work that way 😂. But we can be ethical hackers or grey hats 😂. So this project should be a good way to experience movie-level hacking. So I am working on it, and I initialized a Git repo successfully."}]...
|
Title: HackerOS by @akshay369 | Stardance
Devlogs Title: HackerOS by @akshay369 | Stardance
Devlogs:
I started working on my new project Hacker OS. I made the booting screen in html, now I has to work on its styling part . And everyone dreams(mine also) of becoming a hacker and running commands and boom the system is hacked!🤯, and that is fun to see, though that’s never going to happen because hacking doesn’t work that way 😂. But we can be ethical hackers or grey hats 😂. So this project should be a good way to experience movie-level hacking. So I am working on it, and I initialized a Git repo successfully.
Next, I worked on the styling, and now it looks like a hacker terminal 😅. My next target is JS. After adding JS, the booting screen will show “Initializing HackerOS”, “Loading kernel”, “Getting system ready”, etc. After the process is done, the Enter System button will become active. Boom! You entered HackerOS 😂
Hurray🎉🎉, the booting screen is completed, now it shows the typing effect , just like we see in movies. and when the system is ready, the button will be enabled. Now going to the actual OS
Designed the website UI🎉. I added 4 applications on the website: Terminal, Network Scanner, Code editor, system Monitor. Also added background that matches the theme😅.
Hurray, The terminal is working well, type help to get the available commands . I will try to add functionality to all the 4 apps. Next going to work on System Monitor
Completed the System Monitor also. Also made some tweaks in the UI and in the Booting page. Soon I will add the functionality to the other two apps(Network Scanner and the Code Editor). Also you have any features in mind, feel free to share it, I will try to add that❤️
Added a new app, password generator, now we can generate secure password which meets any requirement.
Earlier there has a problem is js, that is when we click close button. The application window moves right, I solved that bug . It is the problem of the make draggable fn.
Added a new application: Hacker Notes, now we can save whatever we want. Next destination is Hacker settings. I am into it. Stay tuned!
I created Hacker Settings app, and now you can change the wallpaper. Currently, there are 3 wallpapers. Are you still reading? Stop and go try out my project, guys!
I added a small taskbar! Now, when you open any application, its name shows up on the taskbar. Go check it out guys!
I added the most requested feature , the network app, now we can ping and scan an IP address. Check it out guys!
Now I fixed the transparent background, and many of the users complained about it, so I changed that to an opaque background for the window.
Started development of the new two apps, the calculator and the music player
Added Calculator to the Hacker OS because in the previous ratings one guy said that adding a calculator and music player is good, so I added it
Added music app and added my very favorite 3 songs in it, guys check it out and if you have more apps in mind, feel free to comment it. I will add it
Ships:
I made HackerOS, a fictional hacker-style operating system interface using HTML, CSS, and JavaScript. The most challenging part was creating the booting experience and making the different windows work like an actual desktop. I’m proud that I was able to turn a simple web project into something that feels like a small operating system
What did you make? I built HackerOS, a hacker-style web OS featuring a terminal, animated system monitor, password generator, notes app, system settings, a minimal taskbar, and desktop wallpapers. What was challenging? My biggest hurdle was making the system monitor animated. What are you proud of? I am most proud of successfully implementing the animated system monitor and creating an intuitive, functional user interface with a nice hacker aesthetic. In future updates, I plan to add a dedicated start menu, expanded terminal commands, and more built-in utility apps in hacker aesthetic. All I want is your support. And if you have any nice features in mind, feel free to add those while rating or in the comments of Devlogs
I built HackerOS, a hacker-style web OS featuring a terminal, animated system monitor, password generator, notes app, system settings, a minimal taskbar, and desktop wallpapers. This ship included new 3 apps, network,calculator and a music player. So try it and give your feedbacks. Thankyou!...
|
1793001135.2547014
|
1793087535.2547014
|
|
62840
|
Can you Outsmart AI? by @Duxredux | Stardance
|
Duxredux
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T14:55:15Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "CAN YOU OUTSMART AI? This is a simple website that gamifies the process of trying to basically extract confidential data(not really that confidential in this case) from an LLM by tricking it into giving it to you. Your objective is simple. The LLM has been given a passkey or a secret phrase (whatever floats your boat) and it is instructed on not to giving it to you (Do not try to inspect page, it wont work). You are supposed to give it prompts to trick it into giving you the passkey by any manner. This is a cybersecurity based project to educate people about the potential harm that could occur when AI agents are given acess to confidential information. Challenges: The main challenge in making this was that I had to learn how to make an LLM run locally on a machine and that too through a website and ofc choosing the model itself. I experimented with a few smaller models with 0.5-1B parameters and they were all insanely dumb and made getting the passkey way too easy. So stepped it up to a 1.5B parameter model and a bit of Prompt Engineering Magic to get the sweet spot. Important: This project does not support or endorse any kind of illegal activities by utilizing AI or otherwise. This is strictly a cybersecurity based project I wanted to make to educate people about the potential flaws of LLMs. LLMs are stateless and hence each message is new to them. So its really important to maintain guardrails and safely nets in your AI Agents and system prompts", "repo": "https://github.com/Sohan-r07/Outsmarting-AI", "demo": "https://sohan-r07.github.io/Outsmarting-AI/"}]...
|
[{"post_id": 73221, "ts": "202 [{"post_id": 73221, "ts": "2026-09-24T16:51:16Z", "hours": 1.0839, "text": "Finally finished the website completely. The UI to me is satisfactory but not perfect or good enough, will look forward to improve it. Will be shipping it out soon (maybe tomorrow perhaps)."}, {"post_id": 71791, "ts": "2026-09-21T15:39:47Z", "hours": 0.535, "text": "Finished the UI finally and got the Javascript and stuff working. The model that I am currently using though is a 0.5B parameter one and just keeps giving the secret away with no effort.. Gotta find some bigger and better alternatives for it. Once that’s done I might be able to ship this out"}, {"post_id": 71296, "ts": "2026-09-20T16:13:41Z", "hours": 0.6475, "text": "Worked on the actual website to make it functional but the AI model I am using which is a 0.5B parameter one seems a little too dumb. Going to try to improve it now."}, {"post_id": 70523, "ts": "2026-09-19T09:59:24Z", "hours": 0.5783, "text": "Worked on trying to get the AI model to work on the browser and found out that I could use webllm for it. Chose a simple model. Decided to also implement a sha256 encryption so that people can not just inspect page to get the answer. (Please excuse the video at the bottom)"}, {"post_id": 70160, "ts": "2026-09-18T16:24:23Z", "hours": 0.5692, "text": "Worked on the styling of the website today with a little help for the colour palette. Worked on a bit of the javascript too."}, {"post_id": 69227, "ts": "2026-09-16T16:45:44Z", "hours": 0.4125, "text": "Started the Project today. Done with the simple overall structure for the website, may need some changes later."}]...
|
Title: Can you Outsmart AI? by @Duxredux | Stardan Title: Can you Outsmart AI? by @Duxredux | Stardance
Devlogs:
Started the Project today. Done with the simple overall structure for the website, may need some changes later.
Worked on the styling of the website today with a little help for the colour palette. Worked on a bit of the javascript too.
Worked on trying to get the AI model to work on the browser and found out that I could use webllm for it. Chose a simple model. Decided to also implement a sha256 encryption so that people can not just inspect page to get the answer. (Please excuse the video at the bottom)
Worked on the actual website to make it functional but the AI model I am using which is a 0.5B parameter one seems a little too dumb. Going to try to improve it now.
Finished the UI finally and got the Javascript and stuff working. The model that I am currently using though is a 0.5B parameter one and just keeps giving the secret away with no effort.. Gotta find some bigger and better alternatives for it. Once that’s done I might be able to ship this out
Finally finished the website completely. The UI to me is satisfactory but not perfect or good enough, will look forward to improve it. Will be shipping it out soon (maybe tomorrow perhaps).
Ships:
CAN YOU OUTSMART AI? This is a simple website that gamifies the process of trying to basically extract confidential data(not really that confidential in this case) from an LLM by tricking it into giving it to you. Your objective is simple. The LLM has been given a passkey or a secret phrase (whatever floats your boat) and it is instructed on not to giving it to you (Do not try to inspect page, it wont work). You are supposed to give it prompts to trick it into giving you the passkey by any manner. This is a cybersecurity based project to educate people about the potential harm that could occur when AI agents are given acess to confidential information. Challenges: The main challenge in making this was that I had to learn how to make an LLM run locally on a machine and that too through a website and ofc choosing the model itself. I experimented with a few smaller models with 0.5-1B parameters and they were all insanely dumb and made getting the passkey way too easy. So stepped it up to a 1.5B parameter model and a bit of Prompt Engineering Magic to get the sweet spot. Important: This project does not support or endorse any kind of illegal activities by utilizing AI or otherwise. This is strictly a cybersecurity based project I wanted to make to educate people about the potential flaws of LLMs. LLMs are stateless and hence each message is new to them. So its really important to maintain guardrails and safely nets in your AI Agents and system prompts...
|
1792964946.1221845
|
1793051346.1221845
|
|
37706
|
FormulaOS by @Stellar | Stardance
|
Stellar
|
1
|
26.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T14:51:27Z", "hours": 26.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Formula One web-based operating system! I started this project forever ago and just never had the time to actually work on it. It is currently very simple and I wish I had the time to actually make it better, but unfortunately Stardance is coming to an end soon. This project was built using React JS (more so Typescript than Javascript) which is a simple Javascript framework. It features three apps: notes, calculator, and terminal. It has a (static/non-movable) clock widget along with the time and date being displayed in the top-right corner. This project wasn’t very hard to make with probably the most difficult part being deploying the project itself.", "repo": "https://github.com/Ansh2021/FormulaOS", "demo": "https://ansh2021.github.io/FormulaOS/"}]...
|
[{"post_id": 73460, "ts": "202 [{"post_id": 73460, "ts": "2026-09-25T04:13:29Z", "hours": 10.9867, "text": "Finished (hopefully) Devlog #3 It’s been way too long since I’ve worked on this project. I decided to make it simpler for myself so I could actually get this project shipped. This is the main reason why I decided to remove part of the topbar (it didn’t really have much purpose anyway). I added a useable terminal filled with commands and fixed window ordering when clicking on multiple windows in any order. That’s really it for this devlog. I’ll probably ship this project very soon."}, {"post_id": 38900, "ts": "2026-08-01T14:11:31Z", "hours": 8.7997, "text": "Notes App & Clock Devlog #2 I added a simple notes app that is heavily inspired by the Apple Notes app (right now at least). I also added an analog clock drawn through JS graphics. Notes App The notes app is currently very simple and only has the capability to create and edit notes (no delete functionality yet). The first line in your note determines its title and the rest is considered its content (similar to Apple Notes). The Clock The analog clock is drawn through simple JavaScript graphics. It is repeatedly drawn over and over again to update the clock’s hands by using the the requestAnimationFrame() function which automatically synchronizes repeated updates to the refresh rate of the user’s display. This is taking way too long for WebOS 1. I’ll try to finish the first ship by the next devlog."}, {"post_id": 33087, "ts": "2026-07-22T17:55:59Z", "hours": 6.3911, "text": "Frontend Skeleton Devlog #1 FormulaOS, a little OS for F1 lovers. Progress I really just added a lot of the skeleton/components I will be using throughout this project. For example, I made a reusable window component. It currently has a full screen button working but isn’t freely resizable by the user like actual OS windows typically are. Next Steps Find a better color scheme? Add wallpapers (although I might save this for later) Add a bottom bar Clock and maybe calendar widget(s) Add more apps (I’ll decide which ones to add later) F1 themed fonts?"}]...
|
Title: FormulaOS by @Stellar | Stardance
Devlogs: Title: FormulaOS by @Stellar | Stardance
Devlogs:
Frontend Skeleton Devlog #1 FormulaOS, a little OS for F1 lovers. Progress I really just added a lot of the skeleton/components I will be using throughout this project. For example, I made a reusable window component. It currently has a full screen button working but isn’t freely resizable by the user like actual OS windows typically are. Next Steps Find a better color scheme? Add wallpapers (although I might save this for later) Add a bottom bar Clock and maybe calendar widget(s) Add more apps (I’ll decide which ones to add later) F1 themed fonts?
Notes App & Clock Devlog #2 I added a simple notes app that is heavily inspired by the Apple Notes app (right now at least). I also added an analog clock drawn through JS graphics. Notes App The notes app is currently very simple and only has the capability to create and edit notes (no delete functionality yet). The first line in your note determines its title and the rest is considered its content (similar to Apple Notes). The Clock The analog clock is drawn through simple JavaScript graphics. It is repeatedly drawn over and over again to update the clock’s hands by using the the requestAnimationFrame() function which automatically synchronizes repeated updates to the refresh rate of the user’s display. This is taking way too long for WebOS 1. I’ll try to finish the first ship by the next devlog.
Finished (hopefully) Devlog #3 It’s been way too long since I’ve worked on this project. I decided to make it simpler for myself so I could actually get this project shipped. This is the main reason why I decided to remove part of the topbar (it didn’t really have much purpose anyway). I added a useable terminal filled with commands and fixed window ordering when clicking on multiple windows in any order. That’s really it for this devlog. I’ll probably ship this project very soon.
Ships:
I made a Formula One web-based operating system! I started this project forever ago and just never had the time to actually work on it. It is currently very simple and I wish I had the time to actually make it better, but unfortunately Stardance is coming to an end soon. This project was built using React JS (more so Typescript than Javascript) which is a simple Javascript framework. It features three apps: notes, calculator, and terminal. It has a (static/non-movable) clock widget along with the time and date being displayed in the top-right corner. This project wasn’t very hard to make with probably the most difficult part being deploying the project itself....
|
1793004650.858659
|
1793091050.858659
|
|
65535
|
Mini-Games Slackbot by @kareemwaleed | Stardance
|
kareemwaleed
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T14:15:12Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a slack bot whenever you get bored you can use it it now contains -coin flip -rock , paper ,scissors -dice rolling I also added the cat facts and the joke part from the guide At the begging of the project i didn’t have much knowledge I started reading documentations and I followed the guide I struggled to push the files and to hide the .env but I finally managed to do it i spent way more than an hour but it was on the push and nest steps that was not recorded by hack time also the algorithm of the rock paper scissors and how to do the win, lose and draw with out writing each case one by one using if statements There was also an error in this game that the user may input his choice capitalized which would result an error so I worked to convert this input into small letters to match the statement I wrote and do not have errors I used Ai to add emojis of both the readme and the code to make it a little more fun and i stated that in the description", "repo": "https://github.com/kokx138/Mini-games", "demo": "https://hackclub.enterprise.slack.com/archives/C0C4QJJ2L0Z"}]...
|
[{"post_id": 73610, "ts": "202 [{"post_id": 73610, "ts": "2026-09-25T14:00:26Z", "hours": 1.1914, "text": "I COMPLETED THE SLACK MISSION"}]...
|
Title: Mini-Games Slackbot by @kareemwaleed | Star Title: Mini-Games Slackbot by @kareemwaleed | Stardance
Devlogs:
I COMPLETED THE SLACK MISSION
Ships:
I made a slack bot whenever you get bored you can use it it now contains -coin flip -rock , paper ,scissors -dice rolling I also added the cat facts and the joke part from the guide At the begging of the project i didn’t have much knowledge I started reading documentations and I followed the guide I struggled to push the files and to hide the .env but I finally managed to do it i spent way more than an hour but it was on the push and nest steps that was not recorded by hack time also the algorithm of the rock paper scissors and how to do the win, lose and draw with out writing each case one by one using if statements There was also an error in this game that the user may input his choice capitalized which would result an error so I worked to convert this input into small letters to match the statement I wrote and do not have errors I used Ai to add emojis of both the readme and the code to make it a little more fun and i stated that in the description...
|
1792965175.4717488
|
1793051575.4717488
|
|
22802
|
Cosmo Sling by @Kartik_B | Stardance
|
Kartik_B
|
4
|
32.0
|
181
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T13:59:49Z", "hours": 2.0, "multiplier": 11.05, "payout": 23, "blessing": "neutral", "text": "This ships is all about the android build of the game. I have also fixed some bugs. i did a lot of playtesting in android.", "repo": "https://github.com/K-BIDDOLIYA/Cosmo-Slingshot", "demo": "https://kartik-biddoliya.itch.io/cosmo-sling"}, {"ship_num": 2, "ts": "2026-08-03T17:48:02Z", "hours": 8.0, "multiplier": 2.26, "payout": 18, "blessing": "neutral", "text": "Cosmo Sling is a 2D space arcade game where players pilot a spacecraft through hazardous space, dodging asteroids, black holes, and other cosmic dangers. This submission includes both Campaign and Endless modes, multiple selectable ships, polished UI, dynamic backgrounds, and improved gameplay and visual effects.", "repo": "https://github.com/K-BIDDOLIYA/Cosmo-Slingshot", "demo": "https://kartik-biddoliya.itch.io/cosmo-sling"}, {"ship_num": 3, "ts": "2026-07-19T17:06:15Z", "hours": 8.0, "multiplier": 7.58, "payout": 62, "blessing": "neutral", "text": "Cosmo Sling is a 2D physics-based space puzzle game where players launch a spaceship from Earth and use the gravitational pull of randomly generated planets to reach the destination. Throughout development, the project has evolved from a simple gravity prototype into a polished game with procedural level generation, multiple difficulty modes, accurate trajectory prediction, dynamic gravity physics, sound effects, UI menus (main menu, settings, pause, win/lose screens), camera improvements, and WebGL support. Continuous feedback and playtesting have led to numerous gameplay balancing, bug fixes, UI refinements, performance improvements, and overall polish, bringing the game close to its final release version.", "repo": "https://github.com/K-BIDDOLIYA/Cosmo-Slingshot", "demo": "https://kartik-biddoliya.itch.io/cosmo-sling"}, {"ship_num": 4, "ts": "2026-07-05T15:09:17Z", "hours": 14.0, "multiplier": 5.54, "payout": 78, "blessing": "neutral", "text": "I made Cosmo Sling, a 2D physics-based space game where you get one launch to reach the destination planet. Randomly generated planets use gravity to curve your ship’s path, with four difficulty modes ranging from 1–6 planets. The most challenging parts were building the gravity system, random level generation, keeping the game working across different screen sizes, and fixing scene/UI issues. I’m most proud of getting the complete game polished and shipped with sound, settings, pause/restart controls, and a Windows build. To test it, download the game, unzip it, and run Cosmo Sling.exe. Click and drag to aim, release to launch, press P to pause, and R to restart anytime.", "repo": "https://github.com/K-BIDDOLIYA/Cosmo-Slingshot", "demo": "https://kartik-biddoliya.itch.io/cosmo-sling"}]...
|
[{"post_id": 73532, "ts": "202 [{"post_id": 73532, "ts": "2026-09-25T10:26:39Z", "hours": 2.1081, "text": "I added the android build also. trust me its better that the image below"}, {"post_id": 40258, "ts": "2026-08-03T17:45:43Z", "hours": 2.5464, "text": "Upgrade Devlog - #3 Just completed the game, upgraded the ui, selection of ships and a new gamemode. i will not add anything to this game anymore. This game is complete for me. This is the End!"}, {"post_id": 38955, "ts": "2026-08-01T16:00:25Z", "hours": 3.0036, "text": "Upgrading Devlog -#2 I added nebula that will come and try to block your vision. Also, i added blackhole but its not fully developed yet. You can see this perfectly timed image of the game that will show all of the upgrades"}, {"post_id": 38708, "ts": "2026-08-01T07:45:19Z", "hours": 2.2847, "text": "Upgrading devlog - #1 I just woke up and decided to upgrade the game and add an endless mode also. I will work on more upgrades like - mutiple ships, game control etc. This is what has been completed till now: Endless bg. Ship movement by WASD. Asteroids."}, {"post_id": 31330, "ts": "2026-07-19T17:03:54Z", "hours": 2.7847, "text": "After first ship devlog - #4 I have successfully fixed all of the issues pointed out in the feedback. Here’s what i did: Implemented the core gravity slingshot mechanic. Added procedural planet generation and difficulty levels. Improved ship launch controls and aiming. Made the trajectory prediction smoother and more accurate. Fixed multiple gameplay bugs (launch, collisions, UI, camera). Added pause menu, settings, win and lose screens. Improved audio system with sound effects and music controls. Balanced gravity strength and gameplay difficulty. Refined ship movement and collision handling. Fixed camera positioning and gameplay visibility issues. Optimized the game for WebGL and browser compatibility. Resolved UI scaling and resolution problems based on testing feedback. Added overall polish and prepared the game for release. Special thanks to @PAPER_01 for following this journey and encouraging me."}, {"post_id": 30668, "ts": "2026-07-18T13:15:24Z", "hours": 0.8947, "text": "After ship devlog - #3 Just fixed the win/lose panels. I’ll add WebGL very soon."}, {"post_id": 30142, "ts": "2026-07-17T14:09:06Z", "hours": 2.9939, "text": "After ship devlog - #2 I’ve just fixed 40% of the issues ya’ll pointed in the first ship and tried my best to work on your feedbacks."}, {"post_id": 25919, "ts": "2026-07-10T12:39:22Z", "hours": 0.8697, "text": "After ship devlog - #1 Started working on the feedback from the first players today. I fixed the difficulty system so each mode now spawns the correct number of planets, fixed the pause menu not appearing properly the first time, and stopped the win/lose sounds from repeating. I also fixed the music and sound toggles so they stay independent and sync correctly, and optimized the gravity system by caching the planets once per level instead of searching for them every physics frame. Still a lot more feedback to work through, but the game is already becoming much more stable and polished. I will ship the game again after fixes and some more firey upgrades."}, {"post_id": 23386, "ts": "2026-07-06T09:44:29Z", "hours": 0.6711, "text": "Devlog – I’m Shipping Again My first ship was sent back with changes requested because I accidentally forgot to mention my AI usage in the submission. I’ve now corrected that and am resubmitting the project with the proper information. There is also a second Hackatime project because I changed the Unity project/company name from Cosmo Slingshot to Cosmo Sling near the end of development. Hackatime detected the renamed project as a new project instead of continuing to track time under the original one. So the two Hackatime projects are both for the same game: Cosmo Slingshot — most of the development time Cosmo Sling — final changes after the rename This is not a second game or a duplicate project—just the same project being tracked under two names."}, {"post_id": 22890, "ts": "2026-07-05T15:03:01Z", "hours": 3.5681, "text": "Final Devlog – Cosmo Sling Shipped 🚀 Today I finished and shipped Cosmo Sling! I completed the final polish, including: Background music and sound effects Music and sound toggles with saved settings Pause menu and win/lose states Final UI fixes and screen scaling Game icon and branding Windows build and final testing After fixing the last build and resolution issues, I packaged the complete game and published it on itch.io. Cosmo Sling is officially finished and shipped!"}, {"post_id": 22151, "ts": "2026-07-04T13:53:14Z", "hours": 3.4792, "text": "Devlog #5 – UI & Visual Polish Today I focused on improving Cosmo Sling’s visuals and UI. Added a new pixel-art settings panel. Created Music and Sound toggles with blue/white visual states. Improved the menu’s space-themed design. Added an infinitely moving space background. Fixed several issues related to camera bounds, level generation, launching, and missing audio references. The game is now starting to look much more polished and consistent with its space theme."}, {"post_id": 19287, "ts": "2026-06-30T15:38:42Z", "hours": 4.1344, "text": "Devlog #4 – Big Progress on Cosmo Sling I completely forgot to write two day’s devlog while working 😅. I spent around 3–4 hours developing the game, so here’s a recap of everything I got done. Project Update Development on Cosmo Sling has been progressing really well. The core gameplay loop is now in place and the project feels much more like a real game than just a prototype. Gameplay Finished the one-shot launch mechanic. Improved the aiming system with a visual aim line. Added gravity that pulls the spaceship toward nearby planets. Implemented procedural generation of gravity planets based on the selected difficulty. Added random planet sizes and gravity strengths. Added minimum spacing between generated planets to reduce overlap. Game Systems Added a proper Game Manager and Level Manager. Added win and lose conditions. Implemented a hull (health) system. Added boundary collisions with hull damage. Added restart functionality and pause menu. UI Created the HUD to display hull information. Added Win and Game Over panels. Added buttons for restarting and returning to the main menu. Visual Polish Added planet spawn animations. Added a launch animation for the spaceship. Added a pulsing effect to the destination planet. Added an explosion effect when the ship is destroyed. Challenges There were a few bugs along the way, mostly related to script references, gravity generation, and scene setup. After tracking them down and fixing them, the project is much more stable and easier to build on. Next Steps The next goal is to improve the game’s presentation by adding camera effects, audio, particle effects, and a more polished background. After that, I’ll focus on balancing gameplay and polishing the overall experience before release. Overall, today’s session was very productive, and Cosmo Sling is steadily becoming a complete and polished game."}, {"post_id": 17455, "ts": "2026-06-28T07:31:55Z", "hours": 1.565, "text": "Devlog #3 - Fresh Start After running into a few issues with the original project setup, I decided it was better to rebuild everything from scratch instead of trying to patch things up. Along with the fresh start, I also renamed the game from Gravity Sling to Cosmo Sling—I think it fits the space theme much better. This is also my first time working on the project again after a pretty long break, so it feels great to finally get back into development. What I worked on today: 🔄 Rebuilt the project from scratch with a cleaner structure. 🚀 Renamed the game to Cosmo Sling. 📁 Organized the project folders for easier development. 🌍 Set up the Earth, spaceship, launch point, and core scene. 🎯 Implemented the click-and-drag launch mechanic. 📏 Added a launch trajectory line. 🛠️ Refactored the launch system into a dedicated Launch Manager for a cleaner architecture. 🧹 Fixed several early issues, including launch direction, spawn position, and ship interactions with Earth. The core launch mechanic is now working, which gives me a solid foundation for the next step: implementing planetary gravity and procedural level generation. Looking forward to making the first playable prototype!"}, {"post_id": 12600, "ts": "2026-06-20T16:07:40Z", "hours": 0.8, "text": "🚀 Gravity Sling — Devlog #2 Made progress on the game scene. Added: Earth and destination planet Spaceship setup Screen Boundaries Basic in-game UI The game is still static for now, but the playground for the core mechanic is finally ready. Next step: launching the ship and seeing gravity do its thing. #gamedev #unity #GravitySling #indiedev"}, {"post_id": 12505, "ts": "2026-06-20T13:01:23Z", "hours": 0.5, "text": "Gravity Sling — Devlog #1 Started work on a new Unity project: Gravity Sling. Today was mostly about building the foundation. The main menu is now up and running with: Start menu Difficulty selection Settings panel Audio controls Nothing flashy yet, but every game starts somewhere. The core idea revolves around launching a spacecraft and using the environment to reach a distant destination. I’m keeping the details secret for now because discovering the mechanics is part of the fun. Next up: bringing the actual gameplay to life and seeing if the physics feels as satisfying as it does in my head. Built with Unity.#gamedev #unity #indiedev #stardance #GravitySling"}]...
|
Title: Cosmo Sling by @Kartik_B | Stardance
Devlo Title: Cosmo Sling by @Kartik_B | Stardance
Devlogs:
Gravity Sling — Devlog #1 Started work on a new Unity project: Gravity Sling. Today was mostly about building the foundation. The main menu is now up and running with: Start menu Difficulty selection Settings panel Audio controls Nothing flashy yet, but every game starts somewhere. The core idea revolves around launching a spacecraft and using the environment to reach a distant destination. I’m keeping the details secret for now because discovering the mechanics is part of the fun. Next up: bringing the actual gameplay to life and seeing if the physics feels as satisfying as it does in my head. Built with Unity.#gamedev #unity #indiedev #stardance #GravitySling
🚀 Gravity Sling — Devlog #2 Made progress on the game scene. Added: Earth and destination planet Spaceship setup Screen Boundaries Basic in-game UI The game is still static for now, but the playground for the core mechanic is finally ready. Next step: launching the ship and seeing gravity do its thing. #gamedev #unity #GravitySling #indiedev
Devlog #3 - Fresh Start After running into a few issues with the original project setup, I decided it was better to rebuild everything from scratch instead of trying to patch things up. Along with the fresh start, I also renamed the game from Gravity Sling to Cosmo Sling—I think it fits the space theme much better. This is also my first time working on the project again after a pretty long break, so it feels great to finally get back into development. What I worked on today: 🔄 Rebuilt the project from scratch with a cleaner structure. 🚀 Renamed the game to Cosmo Sling. 📁 Organized the project folders for easier development. 🌍 Set up the Earth, spaceship, launch point, and core scene. 🎯 Implemented the click-and-drag launch mechanic. 📏 Added a launch trajectory line. 🛠️ Refactored the launch system into a dedicated Launch Manager for a cleaner architecture. 🧹 Fixed several early issues, including launch direction, spawn position, and ship interactions with Earth. The core launch mechanic is now working, which gives me a solid foundation for the next step: implementing planetary gravity and procedural level generation. Looking forward to making the first playable prototype!
Devlog #4 – Big Progress on Cosmo Sling I completely forgot to write two day’s devlog while working 😅. I spent around 3–4 hours developing the game, so here’s a recap of everything I got done. Project Update Development on Cosmo Sling has been progressing really well. The core gameplay loop is now in place and the project feels much more like a real game than just a prototype. Gameplay Finished the one-shot launch mechanic. Improved the aiming system with a visual aim line. Added gravity that pulls the spaceship toward nearby planets. Implemented procedural generation of gravity planets based on the selected difficulty. Added random planet sizes and gravity strengths. Added minimum spacing between generated planets to reduce overlap. Game Systems Added a proper Game Manager and Level Manager. Added win and lose conditions. Implemented a hull (health) system. Added boundary collisions with hull damage. Added restart functionality and pause menu. UI Created the HUD to display hull information. Added Win and Game Over panels. Added buttons for restarting and returning to the main menu. Visual Polish Added planet spawn animations. Added a launch animation for the spaceship. Added a pulsing effect to the destination planet. Added an explosion effect when the ship is destroyed. Challenges There were a few bugs along the way, mostly related to script references, gravity generation, and scene setup. After tracking them down and fixing them, the project is much more stable and easier to build on. Next Steps The next goal is to improve the game’s presentation by adding camera effects, audio, particle effects, and a more polished background. After that, I’ll focus on balancing gameplay and polishing the overall experience before release. Overall, today’s session was very productive, and Cosmo Sling is steadily becoming a complete and polished game.
Devlog #5 – UI & Visual Polish Today I focused on improving Cosmo Sling’s visuals and UI. Added a new pixel-art settings panel. Created Music and Sound toggles with blue/white visual states. Improved the menu’s space-themed design. Added an infinitely moving space background. Fixed several issues related to camera bounds, level generation, launching, and missing audio references. The game is now starting to look much more polished and consistent with its space theme.
Final Devlog – Cosmo Sling Shipped 🚀 Today I finished and shipped Cosmo Sling! I completed the final polish, including: Background music and sound effects Music and sound toggles with saved settings Pause menu and win/lose states Final UI fixes and screen scaling Game icon and branding Windows build and final testing After fixing the last build and resolution issues, I packaged the complete game and published it on itch.io. Cosmo Sling is officially finished and shipped!
Devlog – I’m Shipping Again My first ship was sent back with changes requested because I accidentally forgot to mention my AI usage in the submission. I’ve now corrected that and am resubmitting the project with the proper information. There is also a second Hackatime project because I changed the Unity project/company name from Cosmo Slingshot to Cosmo Sling near the end of development. Hackatime detected the renamed project as a new project instead of continuing to track time under the original one. So the two Hackatime projects are both for the same game: Cosmo Slingshot — most of the development time Cosmo Sling — final changes after the rename This is not a second game or a duplicate project—just the same project being tracked under two names.
After ship devlog - #1 Started working on the feedback from the first players today. I fixed the difficulty system so each mode now spawns the correct number of planets, fixed the pause menu not appearing properly the first time, and stopped the win/lose sounds from repeating. I also fixed the music and sound toggles so they stay independent and sync correctly, and optimized the gravity system by caching the planets once per level instead of searching for them every physics frame. Still a lot more feedback to work through, but the game is already becoming much more stable and polished. I will ship the game again after fixes and some more firey upgrades.
After ship devlog - #2 I’ve just fixed 40% of the issues ya’ll pointed in the first ship and tried my best to work on your feedbacks.
After ship devlog - #3 Just fixed the win/lose panels. I’ll add WebGL very soon.
After first ship devlog - #4 I have successfully fixed all of the issues pointed out in the feedback. Here’s what i did: Implemented the core gravity slingshot mechanic. Added procedural planet generation and difficulty levels. Improved ship launch controls and aiming. Made the trajectory prediction smoother and more accurate. Fixed multiple gameplay bugs (launch, collisions, UI, camera). Added pause menu, settings, win and lose screens. Improved audio system with sound effects and music controls. Balanced gravity strength and gameplay difficulty. Refined ship movement and collision handling. Fixed camera positioning and gameplay visibility issues. Optimized the game for WebGL and browser compatibility. Resolved UI scaling and resolution problems based on testing feedback. Added overall polish and prepared the game for release. Special thanks to @PAPER_01 for following this journey and encouraging me.
Upgrading devlog - #1 I just woke up and decided to upgrade the game and add an endless mode also. I will work on more upgrades like - mutiple ships, game control etc. This is what has been completed till now: Endless bg. Ship movement by WASD. Asteroids.
Upgrading Devlog -#2 I added nebula that will come and try to block your vision. Also, i added blackhole but its not fully developed yet. You can see this perfectly timed image of the game that will show all of the upgrades
Upgrade Devlog - #3 Just completed the game, upgraded the ui, selection of ships and a new gamemode. i will not add anything to this game anymore. This game is complete for me. This is the End!
I added the android build also. trust me its better that the image below
Ships:
I made Cosmo Sling, a 2D physics-based space game where you get one launch to reach the destination planet. Randomly generated planets use gravity to curve your ship’s path, with four difficulty modes ranging from 1–6 planets. The most challenging parts were building the gravity system, random level generation, keeping the game working across different screen sizes, and fixing scene/UI issues. I’m most proud of getting the complete game polished and shipped with sound, settings, pause/restart controls, and a Windows build. To test it, download the game, unzip it, and run Cosmo Sling.exe. Click and drag to aim, release to launch, press P to pause, and R to restart anytime.
Cosmo Sling is a 2D physics-based space puzzle game where players launch a spaceship from Earth and use the gravitational pull of randomly generated planets to reach the destination. Throughout development, the project has evolved from a simple gravity prototype into a polished game with procedural level generation, multiple difficulty modes, accurate trajectory prediction, dynamic gravity physics, sound effects, UI menus (main menu, settings, pause, win/lose screens), camera improvements, and WebGL support. Continuous feedback and playtesting have led to numerous gameplay balancing, bug fixes, UI refinements, performance improvements, and overall polish, bringing the game close to its final release version.
Cosmo Sling is a 2D space arcade game where players pilot a spacecraft through hazardous space, dodging asteroids, black holes, and other cosmic dangers. This submission includes both Campaign and Endless modes, multiple selectable ships, polished UI, dynamic backgrounds, and improved gameplay and visual effects.
This ships is all about the android build of the game. I have also fixed some bugs. i did a lot of playtesting in android....
|
1792997320.1425152
|
1793083720.1425152
|
|
62277
|
Verse by @lukas007 | Stardance
|
lukas007
|
1
|
10.0
|
72
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T13:31:47Z", "hours": 10.0, "multiplier": 7.43, "payout": 72, "blessing": "neutral", "text": "Verse is a web app that finds a song just by a part of the lyrics. It first searches the lyrics you enter and gives back top 10 results. You can then play each song to find the correct one. It’s basically Shazam but with lyrics. I struggled with the APIs but after some time and help from Claude I managed to get everything working. I learned a lot about using APIs, JavaScript and web development in general.", "repo": "https://github.com/lukas66666666/Song_guesser", "demo": "https://song-guesser-rho.vercel.app/"}]...
|
[{"post_id": 73573, "ts": "202 [{"post_id": 73573, "ts": "2026-09-25T12:42:08Z", "hours": 9.6797, "text": "I’m currently working on an app that finds a song just by a part of the lyrics. You can also play the songs it found. First I added the song searching and UI. Yesterday I was fighting with the song preview and I almost abandoned the feature because I just couldn’t get the audio to work but now after 3 hours it finally works. I still need to fix some bugs but it’s almost done and ready to ship."}]...
|
Title: Verse by @lukas007 | Stardance
Devlogs:
I’ Title: Verse by @lukas007 | Stardance
Devlogs:
I’m currently working on an app that finds a song just by a part of the lyrics. You can also play the songs it found. First I added the song searching and UI. Yesterday I was fighting with the song preview and I almost abandoned the feature because I just couldn’t get the audio to work but now after 3 hours it finally works. I still need to fix some bugs but it’s almost done and ready to ship.
Ships:
Verse is a web app that finds a song just by a part of the lyrics. It first searches the lyrics you enter and gives back top 10 results. You can then play each song to find the correct one. It’s basically Shazam but with lyrics. I struggled with the APIs but after some time and help from Claude I managed to get everything working. I learned a lot about using APIs, JavaScript and web development in general....
|
1792964895.7337866
|
1793051295.7337866
|
|
65665
|
My own site! by @mangoman | Stardance
|
mangoman
|
1
|
3.01
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T13:25:12Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a very simple site.But its my own and i like ir. Hardest part was the css and website hosting", "repo": "https://github.com/ismangoman/personal-site", "demo": "https://mangotechboy.dpdns.org"}]...
|
[{"post_id": 80603, "ts": "202 [{"post_id": 80603, "ts": "2026-10-18T08:43:18Z", "hours": 0.2731, "text": "Added an image to the sight and cleaned up the code a lil bit and upadted link in readme"}, {"post_id": 80596, "ts": "2026-10-18T08:07:49Z", "hours": 0.5772, "text": "I added a section about me. I had to use ai cuz after adding it the colours of the divs and text dissapered. I also changed the domain to a domain I had which hadd nothing on the root of it. now i will add a few images"}, {"post_id": 73874, "ts": "2026-09-26T07:22:14Z", "hours": 1.1578, "text": "So i improved the site by horizontally centering the divs, adding a background colour, adding some animations, made all the boxes use percentage sizes instead of pixel sizes becuas percentage works better. Added some fonts to. I also added a better readme and added a icon"}, {"post_id": 73595, "ts": "2026-09-25T13:18:04Z", "hours": 0.8222, "text": "So basically I started making the website. First i did the HTML of the website, after doing that i made the div’s then the css. I had to use one other tutorial from w3schools.com for the css. After making the website i tried to host on github pages but found i had an Iq too low so i had to use vercel pages.Then I just added the info to starance and done."}]...
|
Title: My own site! by @mangoman | Stardance
Devl Title: My own site! by @mangoman | Stardance
Devlogs:
So basically I started making the website. First i did the HTML of the website, after doing that i made the div’s then the css. I had to use one other tutorial from w3schools.com for the css. After making the website i tried to host on github pages but found i had an Iq too low so i had to use vercel pages.Then I just added the info to starance and done.
So i improved the site by horizontally centering the divs, adding a background colour, adding some animations, made all the boxes use percentage sizes instead of pixel sizes becuas percentage works better. Added some fonts to. I also added a better readme and added a icon
I added a section about me. I had to use ai cuz after adding it the colours of the divs and text dissapered. I also changed the domain to a domain I had which hadd nothing on the root of it. now i will add a few images
Added an image to the sight and cleaned up the code a lil bit and upadted link in readme
Ships:
I made a very simple site.But its my own and i like ir. Hardest part was the css and website hosting...
|
1792965186.6288848
|
1793051586.6288848
|
|
47423
|
DUNGEON ESCAPE (SHOWCASE) by @aaradhyarya_srivasta DUNGEON ESCAPE (SHOWCASE) by @aaradhyarya_srivastava | Stardance...
|
aaradhyarya_srivastava
|
1
|
12.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T13:09:51Z", "hours": 12.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hey Everyone! Dungeon Escape is a sort of showcase project made to showcase a cool dungeon but, more importantly, a gameplay system I’m working on for a rough game I have in mind The movement system is a mix between found footage and smooth horror games like PT (Which it is inspired by) The showcase is done with the help of a cool dungeon map :D If you are interested, please do check it out :3 NOTE: You need a relatively stronger PC since the game is not optimised yet :( Or you can check out the linked YouTube video https://www.youtube.com/watch?v=2ED_53Zj5m8", "repo": "https://github.com/lemonzwastaken/DungeonEscape", "demo": "https://lemonglemongg.itch.io/dungeon-escape-showcase"}]...
|
[{"post_id": 73572, "ts": "202 [{"post_id": 73572, "ts": "2026-09-25T12:41:24Z", "hours": 1.1061, "text": "Finished the showcase :D. I basically worked on the map a little, give some sense of exploration. Besides that I made changes to the player camera by adding a camera boom that gives a sort of smoothness to the camera instead of making it too snappy. On top of that I also made a flashlight for the darker portions of the game I also packaged the project and am now shipping it to itch.io"}, {"post_id": 73123, "ts": "2026-09-24T13:14:46Z", "hours": 1.4281, "text": "Worked on improving the player camera feel for the game. Added a more VHS ish square camera which also feels a bit more cinematic and mostly improved player movement in game like adding bobbing etc. Although quite a bit of this was done using Blueprints as player control is easier done on blueprints"}, {"post_id": 66849, "ts": "2026-09-12T19:32:33Z", "hours": 9.4644, "text": "Since im migrating this project from another YSWS I was unable to post devlogs however up until now ive worked on an inventory system as well as lock and key system that works like a charm. It is showcased in the video below. I also worked on a pressure plate system. I decide to expand upon this game much more in the coming future but for now this is all I have"}]...
|
Title: DUNGEON ESCAPE (SHOWCASE) by @aaradhyarya_s Title: DUNGEON ESCAPE (SHOWCASE) by @aaradhyarya_srivastava | Stardance
Devlogs:
Since im migrating this project from another YSWS I was unable to post devlogs however up until now ive worked on an inventory system as well as lock and key system that works like a charm. It is showcased in the video below. I also worked on a pressure plate system. I decide to expand upon this game much more in the coming future but for now this is all I have
Worked on improving the player camera feel for the game. Added a more VHS ish square camera which also feels a bit more cinematic and mostly improved player movement in game like adding bobbing etc. Although quite a bit of this was done using Blueprints as player control is easier done on blueprints
Finished the showcase :D. I basically worked on the map a little, give some sense of exploration. Besides that I made changes to the player camera by adding a camera boom that gives a sort of smoothness to the camera instead of making it too snappy. On top of that I also made a flashlight for the darker portions of the game I also packaged the project and am now shipping it to itch.io
Ships:
Hey Everyone! Dungeon Escape is a sort of showcase project made to showcase a cool dungeon but, more importantly, a gameplay system I’m working on for a rough game I have in mind The movement system is a mix between found footage and smooth horror games like PT (Which it is inspired by) The showcase is done with the help of a cool dungeon map :D If you are interested, please do check it out :3 NOTE: You need a relatively stronger PC since the game is not optimised yet :( Or you can check out the linked YouTube video https://www.youtube.com/watch?v=2ED_53Zj5m8...
|
1793004519.1790805
|
1793090919.1790805
|
|
65374
|
RandomBot by @Greg_ios | Stardance
|
Greg_ios
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T13:08:47Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "RandomBot is a simple Slack bot that manages a list of people and can randomly pick someone from it. You can add people, view the list, randomly pick a person, clear the list, and see all available commands directly from Slack. The bot is built with JavaScript, Node.js, Slack Bolt and Socket Mode. The list is saved locally in a JSON file so it can stay between restarts.", "repo": "https://github.com/travletothefurureprogramming/RandomBot", "demo": "https://hackclub.enterprise.slack.com/archives/C0C4NGG664A"}]...
|
[{"post_id": 73585, "ts": "202 [{"post_id": 73585, "ts": "2026-09-25T13:08:17Z", "hours": 0.2594, "text": "Today I wrapped up the development of RandomBot for the Hack Club Stardance Slack Bot mission! The bot is fully finished, tested, and running live. What got finished in v1.0.0: Deployment on Nest: Deployed the bot to the Nest server using systemd ( slackbot.service ) so it runs 24/7 in the background. Production Setup: Configured server-side environment variables ( .env ) for Slack tokens and verified process logging via journalctl . Repo Polish: Cleaned up the repository with a minimal README.md , LICENSE (MIT), CHANGELOG.md , .env.example , and .gitignore . Persistence: Verified that local state persistence ( people.json ) works seamlessly across process restarts. Key Learnings: Building this project step-by-step taught me a lot about Node.js array manipulation, handling the local filesystem ( fs ), managing JSON data, Slack’s @slack/bolt framework with Socket Mode, and setting up persistent Linux services on Nest. The project is officially shipped and ready to use! 🚀"}, {"post_id": 73092, "ts": "2026-09-24T11:28:54Z", "hours": 0.7606, "text": "RandomBot — Devlog Today I started building my first Slack bot for the Hack Club Stardance Slack Bot mission. The idea is pretty simple. I wanted to make something where you can add people to a list and then let the bot randomly pick someone. What it can do so far /randombot-add [name] — adds someone to the list /randombot-list — shows everyone in the list /randombot-pick — randomly picks someone /randombot-clear — clears the list /randombot-help — shows the available commands I’m using a small people.json file to save the list. The bot creates it automatically if it doesn’t exist, and I added it to .gitignore so the list won’t be uploaded to GitHub. I’m building everything step by step instead of trying to make the whole thing at once. So far I’ve learned more about arrays, fs , JSON and how Slack slash commands work. Next I want to test everything in Slack and continue improving the bot."}]...
|
Title: RandomBot by @Greg_ios | Stardance
Devlogs Title: RandomBot by @Greg_ios | Stardance
Devlogs:
RandomBot — Devlog Today I started building my first Slack bot for the Hack Club Stardance Slack Bot mission. The idea is pretty simple. I wanted to make something where you can add people to a list and then let the bot randomly pick someone. What it can do so far /randombot-add [name] — adds someone to the list /randombot-list — shows everyone in the list /randombot-pick — randomly picks someone /randombot-clear — clears the list /randombot-help — shows the available commands I’m using a small people.json file to save the list. The bot creates it automatically if it doesn’t exist, and I added it to .gitignore so the list won’t be uploaded to GitHub. I’m building everything step by step instead of trying to make the whole thing at once. So far I’ve learned more about arrays, fs , JSON and how Slack slash commands work. Next I want to test everything in Slack and continue improving the bot.
Today I wrapped up the development of RandomBot for the Hack Club Stardance Slack Bot mission! The bot is fully finished, tested, and running live. What got finished in v1.0.0: Deployment on Nest: Deployed the bot to the Nest server using systemd ( slackbot.service ) so it runs 24/7 in the background. Production Setup: Configured server-side environment variables ( .env ) for Slack tokens and verified process logging via journalctl . Repo Polish: Cleaned up the repository with a minimal README.md , LICENSE (MIT), CHANGELOG.md , .env.example , and .gitignore . Persistence: Verified that local state persistence ( people.json ) works seamlessly across process restarts. Key Learnings: Building this project step-by-step taught me a lot about Node.js array manipulation, handling the local filesystem ( fs ), managing JSON data, Slack’s @slack/bolt framework with Socket Mode, and setting up persistent Linux services on Nest. The project is officially shipped and ready to use! 🚀
Ships:
RandomBot is a simple Slack bot that manages a list of people and can randomly pick someone from it. You can add people, view the list, randomly pick a person, clear the list, and see all available commands directly from Slack. The bot is built with JavaScript, Node.js, Slack Bolt and Socket Mode. The list is saved locally in a JSON file so it can stay between restarts....
|
1792965164.723088
|
1793051564.723088
|
|
65670
|
Personal site by @shyamks1828 | Stardance
|
shyamks1828
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T13:00:11Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Helloo guyss. I made my personal website. I know it feels very less but very soon i will add some pictures and videos of my projects in action pls do lookout.Helloo guyss. I made my personal website. I know it feels very less but very soon i will add some pictures and videos of my projects in action pls do lookout. rn the site has an about section projects section and project links section. I did use Ai mainly only for the part where if you hover over the links they morph to blue colour.", "repo": "https://github.com/coderrcboy/personal-website", "demo": "https://coderrcboy.github.io/personal-website/"}]...
|
[{"post_id": 73579, "ts": "202 [{"post_id": 73579, "ts": "2026-09-25T12:58:09Z", "hours": 0.6208, "text": "Helloo guyss. I made my personal website. I know it feels very less but very soon i will add some pictures and videos of my projects in action pls do lookout."}]...
|
Title: Personal site by @shyamks1828 | Stardance
Title: Personal site by @shyamks1828 | Stardance
Devlogs:
Helloo guyss. I made my personal website. I know it feels very less but very soon i will add some pictures and videos of my projects in action pls do lookout.
Ships:
Helloo guyss. I made my personal website. I know it feels very less but very soon i will add some pictures and videos of my projects in action pls do lookout.Helloo guyss. I made my personal website. I know it feels very less but very soon i will add some pictures and videos of my projects in action pls do lookout. rn the site has an about section projects section and project links section. I did use Ai mainly only for the part where if you hover over the links they morph to blue colour....
|
1792965188.1620493
|
1793051588.1620493
|
|
21500
|
HCR2 Setups Guide by @Alloy | Stardance
|
Alloy
|
1
|
63.0
|
846
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T11:58:58Z", "hours": 63.0, "multiplier": 13.44, "payout": 846, "blessing": "neutral", "text": "I made a web based information app that shows setups for each vehicle and track combination in the time attack game mode of Hill Climb Racing 2 (HCR2). The hardest thing was all of the queries for specific statistics, and since some of them also filtered by world records I just made a function to make world record queries cleaner and less messy. A second major problem was the filters on the search page, at the start were just simple select elements but they only take one value so the user can’t filter by more than one of each at once, to fix this I wanted to add a checkbox to each option but selects don’t support that so I needed to break my entire css by switching to details elements and restyling them so they stack nicely like the select elements before.", "repo": "https://github.com/Alloy-MVP/HCR2-Setups-Guide", "demo": "https://frenchtoast.pythonanywhere.com/"}]...
|
[{"post_id": 73537, "ts": "202 [{"post_id": 73537, "ts": "2026-09-25T10:57:09Z", "hours": 0.8028, "text": "FINAL DEVLOG: Added the new parts; Echo and Amplifier, added another part slot, increasing it to 4 since all world records use 4 parts now instead of 3. Took 4 hours to insert the world record setups (only all vehicle world records) for all 197 tracks as of 25/9/2026."}, {"post_id": 73425, "ts": "2026-09-25T02:03:28Z", "hours": 4.7644, "text": "Fixed a bug where inserting setups with a negative number were getting through because they are the only inputs not validated by sqlalchemy. Changed the validation to use the database data instead of the lists at the top of the .py, and therefore also added every single vehicle, part, and track to replace it in the db. Installed pylint to help my code look cleaner and changed everything it was complaining about. Also cleared the database so its empty and added all of the in game tracks and vehicles to replace the test data."}, {"post_id": 52034, "ts": "2026-08-22T02:16:53Z", "hours": 2.0461, "text": "Changed the tuning parts on setups and search page to icons, reversed the order of setups on the setups page so recently added ones are shown at the top, added a max time limit (32 bit integer limit). Tons of bug fixes: the search filters now handle more than one value, checking “World Records” doesnt wipe other filters, filters arent wiped when the page reloads after searching for a setup, rows per page defaults to 50, fixed the settings returning the error statement if rows per page is empty."}, {"post_id": 51494, "ts": "2026-08-21T07:31:36Z", "hours": 0.7431, "text": "Small tweak to the backend validation for the settings inputs, database path is now relative instead of absolute, added a second SQLAlchemy error catcher on top of the python ones, removed the .venv so a new one is made when the repository is cloned. (now it should be runable)"}, {"post_id": 51359, "ts": "2026-08-20T23:45:02Z", "hours": 0.8308, "text": "Changed most of the lists to now use list comprehension, made the error handler handle every error code from 400 to 599. Updated the error page to not break the flow. The app is now fully runable (hopefully) with instructions on the readme."}, {"post_id": 50800, "ts": "2026-08-20T06:19:49Z", "hours": 2.0058, "text": "Added a clear filters button to the insert form, added a shadow to the home page title. Changed the backend for time to not allow times > 32 bit int limit, changed the rows per page setting to be able to type custom amounts while still suggesting 5,10,20,30,40,50 with back end validation. Added a small section in information about insert field parameters. The setups table order is now reversed so new inserts are shown at the top. Settings errors are now shown on pages. Cleaned up some backend validation, the error messages now dont show for empty fields, created a requrements.txt and a readme on how to run the app."}, {"post_id": 49273, "ts": "2026-08-17T23:45:16Z", "hours": 0.8703, "text": "Added a 404 error handler and images of tuning parts to replace the text."}, {"post_id": 47929, "ts": "2026-08-16T06:12:15Z", "hours": 3.1731, "text": "Finished most of the home page, added a information section with a video, added 3 containers with quick navigation links, statistics, and fastest times on the home page, also added a background."}, {"post_id": 47790, "ts": "2026-08-15T23:28:52Z", "hours": 1.8481, "text": "Made the button borders brighter to be more visible, changed the content backgrounds to a gradient. Changed the setups table to look identical to search. Added a delete button to the all setups table to easily delete specific setups."}, {"post_id": 47320, "ts": "2026-08-15T06:19:10Z", "hours": 4.9217, "text": "Big Update: Moved links to the right and added a settings menu, added a title, made all inputs and filters have hover effects. Settings menu has a toggle for light/dark theme, and a way to select how many rows are shown in all tables (default is 10). Changed all of the css colors to variables for the settings."}, {"post_id": 46610, "ts": "2026-08-13T23:34:27Z", "hours": 2.1578, "text": "Search bar now fully supports searching for more than one word."}, {"post_id": 45471, "ts": "2026-08-11T23:30:33Z", "hours": 1.6261, "text": "The player, vehicle, and track filters can all take more than one filter so the search page can now show results from multiple players, vehicles, and tracks."}, {"post_id": 43698, "ts": "2026-08-09T03:15:24Z", "hours": 2.5139, "text": "Revamped the css again, the insert and delete forms are being moved to the setups table. No screenshot until the next devlog because its a mess right now."}, {"post_id": 43069, "ts": "2026-08-08T04:14:05Z", "hours": 1.5303, "text": "Added a leaderboard for the most used part setups, Changed how the parts are submitted, they are now sorted so there cant be multiple setups of the same parts combination but different orders, duplicates will just reuse an already existing one."}, {"post_id": 42928, "ts": "2026-08-07T22:11:58Z", "hours": 2.7381, "text": "Added a script that counts how many wrs every single player has and displays on the leaderboard page. Made the player field autoselect a name if you type it with wrong capitalization, for example ndwg will autoswitch to Ndwg."}, {"post_id": 39258, "ts": "2026-08-02T03:35:36Z", "hours": 2.9344, "text": "Completely finished styling the search page, also changed the filters to details instead of select so i can use checkboxes inside."}, {"post_id": 39170, "ts": "2026-08-01T22:55:05Z", "hours": 0.7469, "text": "World records filter is fully finished"}, {"post_id": 38508, "ts": "2026-07-31T22:44:24Z", "hours": 3.4031, "text": "Finished the backend of the wr filter, the fastest time with x vehicle and y track is highlighted in yellow."}, {"post_id": 36188, "ts": "2026-07-28T03:29:06Z", "hours": 1.2111, "text": "Finally found out about back_populates, players that arent currently in a setup now get deleted."}, {"post_id": 35045, "ts": "2026-07-26T06:34:23Z", "hours": 1.4058, "text": "Styled the filters section, added hover styling for links, buttons, and table data."}, {"post_id": 34983, "ts": "2026-07-26T03:54:43Z", "hours": 3.9231, "text": "Completely restarted the css, started styling the search bar filters and navigation bar."}, {"post_id": 29886, "ts": "2026-07-17T01:32:40Z", "hours": 1.055, "text": "Changed the filters to only show players,tracks, and vehicles that actually have a setup. Made the vehicle and track filter setups by time (lowest to highes) so the first time (fastest) is at the top."}, {"post_id": 29282, "ts": "2026-07-16T02:58:34Z", "hours": 0.8175, "text": "Added warnings for invalid filters (changed the values using inspect)"}, {"post_id": 28723, "ts": "2026-07-15T05:01:13Z", "hours": 1.4858, "text": "Made the filter fields functional but are misssing back end validation"}, {"post_id": 26951, "ts": "2026-07-12T01:24:49Z", "hours": 2.71, "text": "Added a stats/search page and moved the search bar there, also added a way to filter by players and vehicles (unfuctional)."}, {"post_id": 21229, "ts": "2026-07-03T02:00:51Z", "hours": 1.4261, "text": "Added a search bar to filter specific setups but still has some bugs (first table is all data, second table is data from the search)"}, {"post_id": 19058, "ts": "2026-06-30T07:43:15Z", "hours": 1.2028, "text": "Made the delete table functional and removes rows from setups but not the sub tables where the individual data is."}, {"post_id": 16718, "ts": "2026-06-27T05:02:23Z", "hours": 2.5661, "text": "Added checks for duplicates, missing fields, and times automatically updates if a time that is faster than the previous for a specific setup is submitted. Automatically adds the data to the setups table and puts the individual field data into their respective tables as well."}, {"post_id": 15998, "ts": "2026-06-25T23:45:29Z", "hours": 2.5778, "text": "Added some back end validation checks and added a list to check if the track field matches what can actually be inserted, also used a jinja loop to make options for each individual track in the list for the form."}, {"post_id": 14169, "ts": "2026-06-23T04:56:34Z", "hours": 2.9508, "text": "Basic input form for the database if every field is filled and correct"}]...
|
Title: HCR2 Setups Guide by @Alloy | Stardance
De Title: HCR2 Setups Guide by @Alloy | Stardance
Devlogs:
Basic input form for the database if every field is filled and correct
Added some back end validation checks and added a list to check if the track field matches what can actually be inserted, also used a jinja loop to make options for each individual track in the list for the form.
Added checks for duplicates, missing fields, and times automatically updates if a time that is faster than the previous for a specific setup is submitted. Automatically adds the data to the setups table and puts the individual field data into their respective tables as well.
Made the delete table functional and removes rows from setups but not the sub tables where the individual data is.
Added a search bar to filter specific setups but still has some bugs (first table is all data, second table is data from the search)
Added a stats/search page and moved the search bar there, also added a way to filter by players and vehicles (unfuctional).
Made the filter fields functional but are misssing back end validation
Added warnings for invalid filters (changed the values using inspect)
Changed the filters to only show players,tracks, and vehicles that actually have a setup. Made the vehicle and track filter setups by time (lowest to highes) so the first time (fastest) is at the top.
Completely restarted the css, started styling the search bar filters and navigation bar.
Styled the filters section, added hover styling for links, buttons, and table data.
Finally found out about back_populates, players that arent currently in a setup now get deleted.
Finished the backend of the wr filter, the fastest time with x vehicle and y track is highlighted in yellow.
World records filter is fully finished
Completely finished styling the search page, also changed the filters to details instead of select so i can use checkboxes inside.
Added a script that counts how many wrs every single player has and displays on the leaderboard page. Made the player field autoselect a name if you type it with wrong capitalization, for example ndwg will autoswitch to Ndwg.
Added a leaderboard for the most used part setups, Changed how the parts are submitted, they are now sorted so there cant be multiple setups of the same parts combination but different orders, duplicates will just reuse an already existing one.
Revamped the css again, the insert and delete forms are being moved to the setups table. No screenshot until the next devlog because its a mess right now.
The player, vehicle, and track filters can all take more than one filter so the search page can now show results from multiple players, vehicles, and tracks.
Search bar now fully supports searching for more than one word.
Big Update: Moved links to the right and added a settings menu, added a title, made all inputs and filters have hover effects. Settings menu has a toggle for light/dark theme, and a way to select how many rows are shown in all tables (default is 10). Changed all of the css colors to variables for the settings.
Made the button borders brighter to be more visible, changed the content backgrounds to a gradient. Changed the setups table to look identical to search. Added a delete button to the all setups table to easily delete specific setups.
Finished most of the home page, added a information section with a video, added 3 containers with quick navigation links, statistics, and fastest times on the home page, also added a background.
Added a 404 error handler and images of tuning parts to replace the text.
Added a clear filters button to the insert form, added a shadow to the home page title. Changed the backend for time to not allow times > 32 bit int limit, changed the rows per page setting to be able to type custom amounts while still suggesting 5,10,20,30,40,50 with back end validation. Added a small section in information about insert field parameters. The setups table order is now reversed so new inserts are shown at the top. Settings errors are now shown on pages. Cleaned up some backend validation, the error messages now dont show for empty fields, created a requrements.txt and a readme on how to run the app.
Changed most of the lists to now use list comprehension, made the error handler handle every error code from 400 to 599. Updated the error page to not break the flow. The app is now fully runable (hopefully) with instructions on the readme.
Small tweak to the backend validation for the settings inputs, database path is now relative instead of absolute, added a second SQLAlchemy error catcher on top of the python ones, removed the .venv so a new one is made when the repository is cloned. (now it should be runable)
Changed the tuning parts on setups and search page to icons, reversed the order of setups on the setups page so recently added ones are shown at the top, added a max time limit (32 bit integer limit). Tons of bug fixes: the search filters now handle more than one value, checking “World Records” doesnt wipe other filters, filters arent wiped when the page reloads after searching for a setup, rows per page defaults to 50, fixed the settings returning the error statement if rows per page is empty.
Fixed a bug where inserting setups with a negative number were getting through because they are the only inputs not validated by sqlalchemy. Changed the validation to use the database data instead of the lists at the top of the .py, and therefore also added every single vehicle, part, and track to replace it in the db. Installed pylint to help my code look cleaner and changed everything it was complaining about. Also cleared the database so its empty and added all of the in game tracks and vehicles to replace the test data.
FINAL DEVLOG: Added the new parts; Echo and Amplifier, added another part slot, increasing it to 4 since all world records use 4 parts now instead of 3. Took 4 hours to insert the world record setups (only all vehicle world records) for all 197 tracks as of 25/9/2026.
Ships:
I made a web based information app that shows setups for each vehicle and track combination in the time attack game mode of Hill Climb Racing 2 (HCR2). The hardest thing was all of the queries for specific statistics, and since some of them also filtered by world records I just made a function to make world record queries cleaner and less messy. A second major problem was the filters on the search page, at the start were just simple select elements but they only take one value so the user can’t filter by more than one of each at once, to fix this I wanted to add a checkbox to each option but selects don’t support that so I needed to break my entire css by switching to details elements and restyling them so they stack nicely like the select elements before....
|
1793008168.6604137
|
1793094568.6604137
|
|
63794
|
Dynamite by @disgustalt | Stardance
|
disgustalt
|
1
|
7.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T11:01:21Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A simple Slack bot that works. My first time working with @slack /bolt, so I had some trouble making it at first (though the caption command was more troublesome 😔). I’m proud that it works lol, and if you wanna try it, run ‘/dynamite-caption’ in #bot-spam (Use the try project button :0000)", "repo": "https://github.com/disgustalt/Slackbot", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 73538, "ts": "202 [{"post_id": 73538, "ts": "2026-09-25T10:57:41Z", "hours": 2.4247, "text": "Made a clear guide on the stuff (idk what to write help)"}, {"post_id": 73035, "ts": "2026-09-24T07:51:44Z", "hours": 4.8675, "text": "Simple slackbot ;) Has only a few commands (caption, fact, ping). Any ideas for new commands? Or maybe a software project idea :))"}]...
|
Title: Dynamite by @disgustalt | Stardance
Devlog Title: Dynamite by @disgustalt | Stardance
Devlogs:
Simple slackbot ;) Has only a few commands (caption, fact, ping). Any ideas for new commands? Or maybe a software project idea :))
Made a clear guide on the stuff (idk what to write help)
Ships:
A simple Slack bot that works. My first time working with @slack /bolt, so I had some trouble making it at first (though the caption command was more troublesome 😔). I’m proud that it works lol, and if you wanna try it, run ‘/dynamite-caption’ in #bot-spam (Use the try project button :0000)...
|
1792965018.191884
|
1793051418.191884
|
|
51505
|
Simon_pocket by @joris | Stardance
|
joris
|
1
|
15.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T10:19:34Z", "hours": 15.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made Simon_pocket - a pocket version of the classic simon says game. I designed a PCB, wrote bare metal code for the microcontroller and designed an enclosure. I am very happy with the PCB and code, but it think that I need to improve my 3D modeling skills and make better models in the future. I am really happy that i was able to learn so much about the programming of STM32 microcontrollers even if it took a long time. In the future i hope to make projects with more interesting electronic circuits.", "repo": "https://github.com/JorisBar/Simon_pocket", "demo": ""}]...
|
[{"post_id": 71325, "ts": "202 [{"post_id": 71325, "ts": "2026-09-20T17:06:37Z", "hours": 0.7, "text": "I just prepared a few 3D printed housings and PCBs. My 3D printed parts have bridges that don’t turn out very well, so i need to use some tools to grind them down. I think that my filament is wet, so I’m experiencing this problem."}, {"post_id": 62788, "ts": "2026-09-06T09:38:25Z", "hours": 3.2003, "text": "I just updated the Simon_pocket housing 3D model. It now has a tighter locking mechanism and a thinner loop for connecting to key rings. I am also finishing up my README document. I have created all of the diagrams and pictures i need. I attached a picture of the old and the new versions of the housing."}, {"post_id": 56440, "ts": "2026-08-28T06:33:06Z", "hours": 5.6667, "text": "I just soldered 2 PCBs by hand and 5 PCBs using a solder paste stencil. I was very suprised that the solder paste and stencil were easy to use. Using the stencil, i soldered 5 PCBs in about the same time it would have taken me to solder 1 PCB by hand. The stencil also improved the solder quality. It looks way better than doing it by hand. Even though i used a cheap solder paste, I still got great results."}, {"post_id": 51524, "ts": "2026-08-21T09:05:24Z", "hours": 2.0833, "text": "Today I finished 2 diagrams for the code logic and took a screenshot of my Fusion workspace to put in my README file. I also took 2 images of the real soldered PCBs. The README is starting to look really good"}, {"post_id": 50940, "ts": "2026-08-20T12:31:58Z", "hours": 1.1833, "text": "I started 2 diagrams for my project’s code/game logic. I will put them in my README file on my github. At first i had a hard time figuring out how to display the code logic, but after talking to Gemini i decided to do 2 different diagrams: one for system state transitions and the other for how the code is structured. I attached images of both unfinnished diagrams."}, {"post_id": 50846, "ts": "2026-08-20T09:10:28Z", "hours": 2.2167, "text": "I created a block diagram to explain the gameplay of my project. I did it in diagrams.net. I really like how it looks and it makes my README.md way better. I also fixed file formats of some images, because github doesnt suppord PDFs in the README and i had a hard time exporting .svg files. I later realised that i can put a black rectangle behind my PCB svg and now the constrast is really good and i can see everything clearly."}]...
|
Title: Simon_pocket by @joris | Stardance
Devlogs Title: Simon_pocket by @joris | Stardance
Devlogs:
I created a block diagram to explain the gameplay of my project. I did it in diagrams.net. I really like how it looks and it makes my README.md way better. I also fixed file formats of some images, because github doesnt suppord PDFs in the README and i had a hard time exporting .svg files. I later realised that i can put a black rectangle behind my PCB svg and now the constrast is really good and i can see everything clearly.
I started 2 diagrams for my project’s code/game logic. I will put them in my README file on my github. At first i had a hard time figuring out how to display the code logic, but after talking to Gemini i decided to do 2 different diagrams: one for system state transitions and the other for how the code is structured. I attached images of both unfinnished diagrams.
Today I finished 2 diagrams for the code logic and took a screenshot of my Fusion workspace to put in my README file. I also took 2 images of the real soldered PCBs. The README is starting to look really good
I just soldered 2 PCBs by hand and 5 PCBs using a solder paste stencil. I was very suprised that the solder paste and stencil were easy to use. Using the stencil, i soldered 5 PCBs in about the same time it would have taken me to solder 1 PCB by hand. The stencil also improved the solder quality. It looks way better than doing it by hand. Even though i used a cheap solder paste, I still got great results.
I just updated the Simon_pocket housing 3D model. It now has a tighter locking mechanism and a thinner loop for connecting to key rings. I am also finishing up my README document. I have created all of the diagrams and pictures i need. I attached a picture of the old and the new versions of the housing.
I just prepared a few 3D printed housings and PCBs. My 3D printed parts have bridges that don’t turn out very well, so i need to use some tools to grind them down. I think that my filament is wet, so I’m experiencing this problem.
Ships:
I made Simon_pocket - a pocket version of the classic simon says game. I designed a PCB, wrote bare metal code for the microcontroller and designed an enclosure. I am very happy with the PCB and code, but it think that I need to improve my 3D modeling skills and make better models in the future. I am really happy that i was able to learn so much about the programming of STM32 microcontrollers even if it took a long time. In the future i hope to make projects with more interesting electronic circuits....
|
1793004888.4027257
|
1793091288.4027257
|
|
65589
|
NovTAB by @notfix133 | Stardance
|
notfix133
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T09:38:16Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "NovTAB here!! This is NovTAB a “…………” new tab for your browser. (it is still in its initial stages so there is not really a good adjective for it.) I have finished with the v1.0 the basic version that works and has the following features: a clock that works and a calendar that shows today’s date and day a searchbar that works!!! a few shortcuts to your favourite sites a hover animation I have used fonts awesome for the icons. demo lonk: https://abhrajit-gogoi.github.io/novTAB/", "repo": "https://github.com/Abhrajit-Gogoi/novTAB", "demo": "https://abhrajit-gogoi.github.io/novTAB/"}]...
|
[{"post_id": 73517, "ts": "202 [{"post_id": 73517, "ts": "2026-09-25T09:23:00Z", "hours": 0.2536, "text": "Wrote the clock and the search tab logic!!"}, {"post_id": 73511, "ts": "2026-09-25T08:43:30Z", "hours": 0.7531, "text": "done with the styling!!!! now i need to add the javascript logic"}, {"post_id": 73496, "ts": "2026-09-25T07:41:41Z", "hours": 0.4042, "text": "Started with the styling css. made the content centered…"}, {"post_id": 73478, "ts": "2026-09-25T06:32:57Z", "hours": 0.4758, "text": "Created the basic html for my new tab and added a searchbar and a timer along with daily useful href links"}]...
|
Title: NovTAB by @notfix133 | Stardance
Devlogs:
Title: NovTAB by @notfix133 | Stardance
Devlogs:
Created the basic html for my new tab and added a searchbar and a timer along with daily useful href links
Started with the styling css. made the content centered…
done with the styling!!!! now i need to add the javascript logic
Wrote the clock and the search tab logic!!
Ships:
NovTAB here!! This is NovTAB a “…………” new tab for your browser. (it is still in its initial stages so there is not really a good adjective for it.) I have finished with the v1.0 the basic version that works and has the following features: a clock that works and a calendar that shows today’s date and day a searchbar that works!!! a few shortcuts to your favourite sites a hover animation I have used fonts awesome for the icons. demo lonk: https://abhrajit-gogoi.github.io/novTAB/...
|
1792965182.4131386
|
1793051582.4131386
|
|
64379
|
My very very personal website by @mian | Stardance
|
mian
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T08:30:52Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "#About I made a personal website that has three sections. There is the About, project, and my food tier list. In the projects, there are links which you can find the project. What did I learn? I learnt how to make a table and list. I used to manually do like <\\p> and then to split it but then i realised i can just do that list thing lol.", "repo": "https://github.com/mianyay/My-personal-website", "demo": "https://mianyay.github.io/My-personal-website/"}]...
|
[{"post_id": 73493, "ts": "202 [{"post_id": 73493, "ts": "2026-09-25T07:25:21Z", "hours": 0.5017, "text": "Added a third section cause i didnt realise we needed 3"}, {"post_id": 73477, "ts": "2026-09-25T06:27:32Z", "hours": 1.9336, "text": "I made a personal site for the mission. It has an about me and a table of projects. I learnt how to make a table using html!"}]...
|
Title: My very very personal website by @mian | St Title: My very very personal website by @mian | Stardance
Devlogs:
I made a personal site for the mission. It has an about me and a table of projects. I learnt how to make a table using html!
Added a third section cause i didnt realise we needed 3
Ships:
#About I made a personal website that has three sections. There is the About, project, and my food tier list. In the projects, there are links which you can find the project. What did I learn? I learnt how to make a table and list. I used to manually do like <\p> and then to split it but then i realised i can just do that list thing lol....
|
1792965068.0730758
|
1793051468.0730758
|
|
63944
|
My own site by @colgation | Stardance
|
colgation
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T07:49:56Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "MY personal site, thought it would be cool to style it in a color palette that matches colgate, as that is my username after all. Go check it out! Currently it seems a bit empty, I mgith add more things later on.", "repo": "https://github.com/194500-cpu/basicpersonaltemplate", "demo": "https://194500-cpu.github.io/basicpersonaltemplate/"}]...
|
[{"post_id": 73500, "ts": "202 [{"post_id": 73500, "ts": "2026-09-25T07:46:39Z", "hours": 0.7214, "text": "I have made a personal site, my previous project was deleted for some reason, alongside all mydevlogs."}]...
|
Title: My own site by @colgation | Stardance
Devl Title: My own site by @colgation | Stardance
Devlogs:
I have made a personal site, my previous project was deleted for some reason, alongside all mydevlogs.
Ships:
MY personal site, thought it would be cool to style it in a color palette that matches colgate, as that is my username after all. Go check it out! Currently it seems a bit empty, I mgith add more things later on....
|
1792965033.096561
|
1793051433.096561
|
|
65096
|
streaksaver by @raahi | Stardance
|
raahi
|
1
|
10.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T06:55:59Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a bot to remind you to actually lock in and do 30 min of work everyday. It directly connects to your hackatime account when you run /streaksaver-connect and pulls the number of hours you do. You can use the bot to do other things as well like directly see how many hours you’ve done without actually opening hackatime or view your streak. There is API support as well for this allowing you to access whoevers hackatime data like hours/streaks/goals. I am hosting this project using nest which was fun to learn as well. This was my very first attempt at making a slack bot, coding in JS and actually SSHing into a server and running my programs on it! Hope yall like it and feel free to join the channel #streaksaver-stardance-bot-project to try the bot out :0", "repo": "https://github.com/CreativeDragon1/streakbuddy", "demo": "https://hackclub.enterprise.slack.com/archives/C0C40JKMH7B"}]...
|
[{"post_id": 72725, "ts": "202 [{"post_id": 72725, "ts": "2026-09-23T16:26:24Z", "hours": 10.1311, "text": "Hey there, I made this project initially for thirdsapce and then later moved it here, thirdspace doesn’t have a web log system, so I ended up making a JOURNAL.md with all the journals for each commit. Each journal has an estimate of the time spent, the gh commit, AI disclosure and a summary of stuff I did. github for it: streakbuddy/JOURNAL.md at main · CreativeDragon1/streakbuddy"}]...
|
Title: streaksaver by @raahi | Stardance
Devlogs: Title: streaksaver by @raahi | Stardance
Devlogs:
Hey there, I made this project initially for thirdsapce and then later moved it here, thirdspace doesn’t have a web log system, so I ended up making a JOURNAL.md with all the journals for each commit. Each journal has an estimate of the time spent, the gh commit, AI disclosure and a summary of stuff I did. github for it: streakbuddy/JOURNAL.md at main · CreativeDragon1/streakbuddy
Ships:
I made a bot to remind you to actually lock in and do 30 min of work everyday. It directly connects to your hackatime account when you run /streaksaver-connect and pulls the number of hours you do. You can use the bot to do other things as well like directly see how many hours you’ve done without actually opening hackatime or view your streak. There is API support as well for this allowing you to access whoevers hackatime data like hours/streaks/goals. I am hosting this project using nest which was fun to learn as well. This was my very first attempt at making a slack bot, coding in JS and actually SSHing into a server and running my programs on it! Hope yall like it and feel free to join the channel #streaksaver-stardance-bot-project to try the bot out :0...
|
1792965134.8566558
|
1793051534.8566558
|
|
65205
|
Nova Tab by @gdev | Stardance
|
gdev
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T04:02:39Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "NovaTab is my custom newtab page where you can be greated with a beautiful tab everytime you open a new tab! NovaTab has everything from custom calendar support, to a custom-made bookmark widget, and dymanic weather and timezone systems using various apis.", "repo": "https://github.com/galaxydevvv/NovaTab", "demo": "https://galaxydevvv.github.io/NovaTab/"}]...
|
[{"post_id": 73454, "ts": "202 [{"post_id": 73454, "ts": "2026-09-25T03:56:56Z", "hours": 0.2822, "text": "DEVLOG #3 I added a clock from my old website to go above the search bar and wrote a quick readme for the website so people can easily read how to config and setup the new tab"}, {"post_id": 73122, "ts": "2026-09-24T13:12:12Z", "hours": 0.6708, "text": "DEVLOG #2 Today I added a bookmarks and calendar widget! The calendar took forever to add, working and cool-looking, without doxxing myself lol, and the bookmarks are just a new widget form I recoded from my old bookmark manager project."}, {"post_id": 72917, "ts": "2026-09-24T01:04:27Z", "hours": 1.5039, "text": "DEVLOG #1 YAYYY FIRST DEV LOG!!! I tried using the guide but it was really boring lol so I made my own new tab and after some research I found out its actually REALLY easy to add a working google search-bar so I added that the to center and also I added a cool weather widget I made so you can view the weather from inside the website! Its pretty basic right now so I added some blur effects and outlines, etc with css so it looks pretty good at least :D"}]...
|
Title: Nova Tab by @gdev | Stardance
Devlogs:
DEV Title: Nova Tab by @gdev | Stardance
Devlogs:
DEVLOG #1 YAYYY FIRST DEV LOG!!! I tried using the guide but it was really boring lol so I made my own new tab and after some research I found out its actually REALLY easy to add a working google search-bar so I added that the to center and also I added a cool weather widget I made so you can view the weather from inside the website! Its pretty basic right now so I added some blur effects and outlines, etc with css so it looks pretty good at least :D
DEVLOG #2 Today I added a bookmarks and calendar widget! The calendar took forever to add, working and cool-looking, without doxxing myself lol, and the bookmarks are just a new widget form I recoded from my old bookmark manager project.
DEVLOG #3 I added a clock from my old website to go above the search bar and wrote a quick readme for the website so people can easily read how to config and setup the new tab
Ships:
NovaTab is my custom newtab page where you can be greated with a beautiful tab everytime you open a new tab! NovaTab has everything from custom calendar support, to a custom-made bookmark widget, and dymanic weather and timezone systems using various apis....
|
1792965144.2960553
|
1793051544.2960553
|
|
63760
|
My own site! by @notfix133 | Stardance
|
notfix133
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T03:43:20Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "this is my first project on stardance!! i tried to follow a simple yt tutorial and made this simple sectioned website. it turned out to be kind of cute like a banana pancake but alls well!!! thank you for visiting this humble site of mine :) demo link: https://github.com/Abhrajit-Gogoi/personal-site", "repo": "https://github.com/Abhrajit-Gogoi/personal-site", "demo": "https://abhrajit-gogoi.github.io/personal-site/"}]...
|
[{"post_id": 73450, "ts": "202 [{"post_id": 73450, "ts": "2026-09-25T03:40:31Z", "hours": 0.4481, "text": "added my styling and a little bit of color. although it looks like a banana pancake to me. i really need to work on my styling sense."}, {"post_id": 73145, "ts": "2026-09-24T14:13:48Z", "hours": 0.4806, "text": "made the index.html after following the guide!!!!!"}]...
|
Title: My own site! by @notfix133 | Stardance
Dev Title: My own site! by @notfix133 | Stardance
Devlogs:
made the index.html after following the guide!!!!!
added my styling and a little bit of color. although it looks like a banana pancake to me. i really need to work on my styling sense.
Ships:
this is my first project on stardance!! i tried to follow a simple yt tutorial and made this simple sectioned website. it turned out to be kind of cute like a banana pancake but alls well!!! thank you for visiting this humble site of mine :) demo link: https://github.com/Abhrajit-Gogoi/personal-site...
|
1792965011.4044292
|
1793051411.4044292
|
|
25598
|
itinerarey by @nate | Stardance
|
nate
|
1
|
25.0
|
369
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T03:25:36Z", "hours": 25.0, "multiplier": 14.57, "payout": 369, "blessing": "neutral", "text": "Itinerarey is the better way to plan out your trips! When getting ready for a vacation, it can be incredibly stressful to plan out flights, hotels, activities, and more! So, I built itinerarey to make it a bit easier! It uses APIs and web scrapers to compile information from across the internet to have a centralized place to get information. The most challenging part of Itinerarey was the flights and hotels system. There are no free APIs (with good limits) for showing either, so I had to get a bit creative and spend a few hours researching. The flights system runs by contacting an API that runs a python web scraper that is hosted on Render, while the hotels call from an online Booking.com scraper. I am really proud of the recap page, mainly. To me, it feels like a representation of the entire project in its entireity. It shows everything the user did, and it works as a confirmation of every system performing as it should. For testing, please be aware that the render server mmight take up to a minute to load up. Also, due to web scraping being a bit finnicky, some results might not show up. If this happens, try clearing your localstorage and using a new destination. Enjoy your vacations! -nate", "repo": "https://github.com/Np3-0/itinerarey", "demo": "https://itinerarey.vercel.app/"}]...
|
[{"post_id": 73441, "ts": "202 [{"post_id": 73441, "ts": "2026-09-25T03:12:47Z", "hours": 3.2119, "text": "Itinerarey is complete! The last thing that I needed to get done was the recap page, which takes all the data in your localstorage and displays it for you! I had to rewrite how the flights and hotels are displayed to show the booking links, but overall it was pretty simple. The main thing that I am proud of is the budget tracker, which shows the prices for everything, including how much is leftover in the budget! This is done with some pretty simple math, but it definitely ties the project together. Lastly, the user can save a copy of this page to their computer. They can then also reset their localstorage to create a brand new trip! Lastly, I got the readme and license done (id take a look if I were you!), and finished deploying everything on vercel. Overall, I am really happy with how Itinerarey came out. I learned a lot about web scrapping and hosting websites from this project, which I hope will come in handy in the future! Thank you all for the support, stardance has been incredible! feel free to dm me in slack! - nate"}, {"post_id": 72073, "ts": "2026-09-22T03:31:50Z", "hours": 3.2789, "text": "The activities portion of the website is done! I did some research, and it turns out that the best way for me to find information on local events is AI! The way it works is by using Google Gemini along with Zod, which allows me to format my API requests to return in JSON. Since it has the same information each time, I can then just treat it as a regular API call. However, I might change it and put this on the backend to try to hide the API key. Anyways, we are almost at the end! The last major portion of the project is the recap page, where I plan to show all info on the trip, let users download, and maybe more! Today went pretty well, and I am excited to finally get this thing done."}, {"post_id": 70976, "ts": "2026-09-20T04:34:37Z", "hours": 3.3614, "text": "So… quick update, I tore my ACL! havent really been able to do much since, but today I sat down and got work done. Mainly, I got the hotels done! It works pretty similar to flights system, where the user is prompted with a list, and they choose whichever they want. Now, if you remember, I have been struggling with finding a hotel API, since amadeus shut down. Originally, the plan was rapidAPI, but the rate limits are horrid for that. After some very intense googling, I found omkar.cloud ! They have a bunch of web scrappers with a 200/month limit, so their booking.com API works perfectly. I genuinely was considering dropping the project from this, and I am so happy I found something that worked. Now, the future. There is like 10 days left in stardance, and I need to do the activities, final page, and fix deployment. Activities shouldn’t be that dificult, my plan is to use gemini and prompt it for activity ideas, and then format it to look cool? Im going to still do some research. Now, the main issue is deployment. Github pages doesn’t really support having a .env, so I tried switching to vercel. However, I now need to get localstorage (which I had to use as the cookie got too big lol) working on that, plus the flight API and everything else."}, {"post_id": 65159, "ts": "2026-09-10T03:14:31Z", "hours": 2.3381, "text": "Did I get work done on the hotels part? No! BUT, I did some very needed work on the flight system so that it should work in general. The main issue was that there was no way to convert from cities to airport codes, but I sat down and actually got it done. When the user enters a city and goes to the flight screen, a modal now appears. In the background, a function runs that gets the coordinates of the city, and then creates a 100 km circle around the location, returning all airports inside of it! Originally, the plan was to use nominatim for the geolocating, since it’s free, open source, and the goat, but I may have gotten IP banned for having it run 60 times a second for a good few minutes. (This is around 60 times the amount I am supposed to do it). I forgot to remove a variable from a dependency array. ANYWAYS, I used Mapbox instead! I have some experience with it, and its free tier is pretty comprehensive. Once the locations show on the modal, they choose which ones, it reloads to show departures, and then the same system as before applies! This works SO much better, and I’m really proud of the system."}, {"post_id": 61266, "ts": "2026-09-04T03:42:26Z", "hours": 1.16, "text": "So, I got some work done on itinerarey since. Mainly, I’ve been working on error trapping and trying to find a hotel’s API. Firstly, I am trying to use airport-data-js to convert city names to airports, but it returns the incorrect values usually. Otherwise, I got the base for the hotel page done. It’s going to look pretty similar to the flights, just with different information. Currently, I need to find an API that works for hotels, but it’s going to be a bit of a struggle. I tried fast-hotels, but they are no longer maintained, or at least the current version broke on me. Wish me luck!"}, {"post_id": 59366, "ts": "2026-09-01T03:57:08Z", "hours": 1.375, "text": "The flight system is complete! To reiterate how it works, once you put in a date, a render server with an API is called that uses Python to scrape Google Flights and return (hopefully) accurate flight data. Then, a user chooses the flight they want, it gets saved to the cookie, and it does the same actions for the return flight. The main issue I had with this was getting to swap between departure and returns, since it required some refactoring of the code. It wasn’t anything too bad, though. Next up is going to be finding a hotel API. This is going to be probably just as annoying as with the flights, but there is only one way to find out. That’ll be tomorrow, though; I am so tired right now lol. Lastly, I am writing this 3 minutes before my time as a Stardance Ambassador ends. I want to thank the team for letting me take this role; Nay-nay and Alex for their help; and everyone whom I’ve interacted with. While the role is done, I’m going to finish this project!"}, {"post_id": 57779, "ts": "2026-08-30T02:17:46Z", "hours": 0.9856, "text": "Now, the flights will actually show up in the website! Using the API, I get an array, and then each flight is put into a custom object that allows it to be displayed! Each option includes basic info such as airline, price, legs, locations, timings, and more! Now that it is styled, the next goal is to save flights to the cookie, and than rerun the same process for the return flight! Overall, I think it looks pretty good!"}, {"post_id": 52020, "ts": "2026-08-22T01:49:59Z", "hours": 1.9211, "text": "This time is fully my bad, I sort of (100%) forgot about this. ANYWAYS, I got some of the biggest progress done yet. Firstly, I got trips to save as cookies in your browser, since its an easier way for me to store data across the website. dont worry, im not stealing your data or anything lol. Then, I did some research (with help from Claude) and found fast-flights, a Python library that is basically a Google Flights scraper, so it works perfectly. Except it’s a Python library… on a React website. So, I created a seperate repo that contains an API that requests the library and hosted it on render.com. One note is that the links supplied reroute to google flights, so users will have to be careful with choosing correctly. Sadly, theres really no good free options for a flight API (literally everyone shut theirs down lol). Lastly, I connected it all together by writing the base code for querying the API and getting the data back. I do need to actually format it, modify it to work with my data, and display it. But, its a good stopping point for now. By next time, I want to have the flights page looking good, and my API to be more polished!"}, {"post_id": 38419, "ts": "2026-07-31T19:38:47Z", "hours": 1.1278, "text": "So… its been a minute! I’ve been out of state doing an engineering program at ND for the past few weeks, and I am FINALLY back home! So, here’s what I got done today! I finished the layout (for now) on for the planning page. For now, you put in the departure/arrival, number of people, dates, and overall budgets. The worst part of getting it to work was the date picker. I spent like 2 hours researching different date-range pickers and trying them out, such as react aria, react-date-range, and more. Eventually, I settled on cally since its lightweight, easy to customize, and didn’t require me to spend 3 hours making it work! I also created a new input type to shrink the file size down. For the future, I plan to get data to actually save in the app, and then start looking for a flights API. The API is going to be an issue. There is really not a lot of choices for a free and large-scale API for what I want. But, its the internet. Theres gotta be something! the website thats published isn’t updated yet, since I have some code that needs to be implemented before I can redeploy."}, {"post_id": 23955, "ts": "2026-07-07T05:30:43Z", "hours": 2.0186, "text": "I started to get some work done on the planning settings! Mainly, I need to track budgets, dates, and what the user actually wants to do and spend money on. The main issue I am currently having is making the date system work. I am going to do more research, though!"}, {"post_id": 21772, "ts": "2026-07-03T21:28:54Z", "hours": 0.9672, "text": "The home page is completely done! I spent around an hour adding in all of the other info, mainly about how the program works. I also spent a decent amount of time redoing the file structure of the website, just so everything is more organized. Now, I have to find the APIs I need. Google Flights doesn’t have one, so I am going to need to do some deep research."}, {"post_id": 20522, "ts": "2026-07-02T04:20:43Z", "hours": 0.6714, "text": "Been on vacation so progress been slow but here’s what I got done! Mainly, the search bar is done! I haven’t been able to program my custom algorithm yet, so right now it just links to google maps. I tried to mimic websites like Kayak and Google Earth, and I think its pretty decent. The main issue I had was with the website crashing when clicking the search bar. ThreeJS couldnt handle the pointer event (it doesnt really make sense), but with changing the z-order and adding a LOT of e.stoppropagation() fixed it. Overall, good progress, and next post I want to get the home page done!"}, {"post_id": 18112, "ts": "2026-06-29T03:36:57Z", "hours": 0.5631, "text": "Two major things for today: I fixed responsiveness, so it looks better on small screens. Also, I started work on the search bar. I have to style it, but its coming along well! shoutout to my friends @ fallout, wish i was allowed to come with! enjoy!"}, {"post_id": 16726, "ts": "2026-06-27T05:22:25Z", "hours": 0.9508, "text": "Card system works! When you click on a point (I added more), with around 3 per continent except Australia, a popup with basic info, a photo, and a button shows up. The button will eventually go to the itinerary algorithim, but for now just links to google maps. I have to make it responsive, but tomorrow I will (hopefully) finish the base page. check it out here!"}, {"post_id": 15870, "ts": "2026-06-25T19:58:46Z", "hours": 1.4225, "text": "Itinerarey (get it?) is going to be a website where you can put in a plan for a trip and get a full detailed list of what you can do, taking into consideration price, dates, and suggested ideas. I got this idea while waiting at EWR for 3 hours before my flight got cancelled, lol. I was supposed to go to Atlanta, and I would have had a free day by myself. If I had this, I could have figured out what to do. The plan is to take data from APIs to get flights, hotels, and other stuff, and combine it with AI to get a full list of what to do! But, so far, all I got done is the start of the hero page. I want to have a globe spinning in the BG with points that can pop up some ideas, which I got done using globe.gl. The points are not coded in yet to pop up, but that’ll be later."}]...
|
Title: itinerarey by @nate | Stardance
Devlogs:
I Title: itinerarey by @nate | Stardance
Devlogs:
Itinerarey (get it?) is going to be a website where you can put in a plan for a trip and get a full detailed list of what you can do, taking into consideration price, dates, and suggested ideas. I got this idea while waiting at EWR for 3 hours before my flight got cancelled, lol. I was supposed to go to Atlanta, and I would have had a free day by myself. If I had this, I could have figured out what to do. The plan is to take data from APIs to get flights, hotels, and other stuff, and combine it with AI to get a full list of what to do! But, so far, all I got done is the start of the hero page. I want to have a globe spinning in the BG with points that can pop up some ideas, which I got done using globe.gl. The points are not coded in yet to pop up, but that’ll be later.
Card system works! When you click on a point (I added more), with around 3 per continent except Australia, a popup with basic info, a photo, and a button shows up. The button will eventually go to the itinerary algorithim, but for now just links to google maps. I have to make it responsive, but tomorrow I will (hopefully) finish the base page. check it out here!
Two major things for today: I fixed responsiveness, so it looks better on small screens. Also, I started work on the search bar. I have to style it, but its coming along well! shoutout to my friends @ fallout, wish i was allowed to come with! enjoy!
Been on vacation so progress been slow but here’s what I got done! Mainly, the search bar is done! I haven’t been able to program my custom algorithm yet, so right now it just links to google maps. I tried to mimic websites like Kayak and Google Earth, and I think its pretty decent. The main issue I had was with the website crashing when clicking the search bar. ThreeJS couldnt handle the pointer event (it doesnt really make sense), but with changing the z-order and adding a LOT of e.stoppropagation() fixed it. Overall, good progress, and next post I want to get the home page done!
The home page is completely done! I spent around an hour adding in all of the other info, mainly about how the program works. I also spent a decent amount of time redoing the file structure of the website, just so everything is more organized. Now, I have to find the APIs I need. Google Flights doesn’t have one, so I am going to need to do some deep research.
I started to get some work done on the planning settings! Mainly, I need to track budgets, dates, and what the user actually wants to do and spend money on. The main issue I am currently having is making the date system work. I am going to do more research, though!
So… its been a minute! I’ve been out of state doing an engineering program at ND for the past few weeks, and I am FINALLY back home! So, here’s what I got done today! I finished the layout (for now) on for the planning page. For now, you put in the departure/arrival, number of people, dates, and overall budgets. The worst part of getting it to work was the date picker. I spent like 2 hours researching different date-range pickers and trying them out, such as react aria, react-date-range, and more. Eventually, I settled on cally since its lightweight, easy to customize, and didn’t require me to spend 3 hours making it work! I also created a new input type to shrink the file size down. For the future, I plan to get data to actually save in the app, and then start looking for a flights API. The API is going to be an issue. There is really not a lot of choices for a free and large-scale API for what I want. But, its the internet. Theres gotta be something! the website thats published isn’t updated yet, since I have some code that needs to be implemented before I can redeploy.
This time is fully my bad, I sort of (100%) forgot about this. ANYWAYS, I got some of the biggest progress done yet. Firstly, I got trips to save as cookies in your browser, since its an easier way for me to store data across the website. dont worry, im not stealing your data or anything lol. Then, I did some research (with help from Claude) and found fast-flights, a Python library that is basically a Google Flights scraper, so it works perfectly. Except it’s a Python library… on a React website. So, I created a seperate repo that contains an API that requests the library and hosted it on render.com. One note is that the links supplied reroute to google flights, so users will have to be careful with choosing correctly. Sadly, theres really no good free options for a flight API (literally everyone shut theirs down lol). Lastly, I connected it all together by writing the base code for querying the API and getting the data back. I do need to actually format it, modify it to work with my data, and display it. But, its a good stopping point for now. By next time, I want to have the flights page looking good, and my API to be more polished!
Now, the flights will actually show up in the website! Using the API, I get an array, and then each flight is put into a custom object that allows it to be displayed! Each option includes basic info such as airline, price, legs, locations, timings, and more! Now that it is styled, the next goal is to save flights to the cookie, and than rerun the same process for the return flight! Overall, I think it looks pretty good!
The flight system is complete! To reiterate how it works, once you put in a date, a render server with an API is called that uses Python to scrape Google Flights and return (hopefully) accurate flight data. Then, a user chooses the flight they want, it gets saved to the cookie, and it does the same actions for the return flight. The main issue I had with this was getting to swap between departure and returns, since it required some refactoring of the code. It wasn’t anything too bad, though. Next up is going to be finding a hotel API. This is going to be probably just as annoying as with the flights, but there is only one way to find out. That’ll be tomorrow, though; I am so tired right now lol. Lastly, I am writing this 3 minutes before my time as a Stardance Ambassador ends. I want to thank the team for letting me take this role; Nay-nay and Alex for their help; and everyone whom I’ve interacted with. While the role is done, I’m going to finish this project!
So, I got some work done on itinerarey since. Mainly, I’ve been working on error trapping and trying to find a hotel’s API. Firstly, I am trying to use airport-data-js to convert city names to airports, but it returns the incorrect values usually. Otherwise, I got the base for the hotel page done. It’s going to look pretty similar to the flights, just with different information. Currently, I need to find an API that works for hotels, but it’s going to be a bit of a struggle. I tried fast-hotels, but they are no longer maintained, or at least the current version broke on me. Wish me luck!
Did I get work done on the hotels part? No! BUT, I did some very needed work on the flight system so that it should work in general. The main issue was that there was no way to convert from cities to airport codes, but I sat down and actually got it done. When the user enters a city and goes to the flight screen, a modal now appears. In the background, a function runs that gets the coordinates of the city, and then creates a 100 km circle around the location, returning all airports inside of it! Originally, the plan was to use nominatim for the geolocating, since it’s free, open source, and the goat, but I may have gotten IP banned for having it run 60 times a second for a good few minutes. (This is around 60 times the amount I am supposed to do it). I forgot to remove a variable from a dependency array. ANYWAYS, I used Mapbox instead! I have some experience with it, and its free tier is pretty comprehensive. Once the locations show on the modal, they choose which ones, it reloads to show departures, and then the same system as before applies! This works SO much better, and I’m really proud of the system.
So… quick update, I tore my ACL! havent really been able to do much since, but today I sat down and got work done. Mainly, I got the hotels done! It works pretty similar to flights system, where the user is prompted with a list, and they choose whichever they want. Now, if you remember, I have been struggling with finding a hotel API, since amadeus shut down. Originally, the plan was rapidAPI, but the rate limits are horrid for that. After some very intense googling, I found omkar.cloud ! They have a bunch of web scrappers with a 200/month limit, so their booking.com API works perfectly. I genuinely was considering dropping the project from this, and I am so happy I found something that worked. Now, the future. There is like 10 days left in stardance, and I need to do the activities, final page, and fix deployment. Activities shouldn’t be that dificult, my plan is to use gemini and prompt it for activity ideas, and then format it to look cool? Im going to still do some research. Now, the main issue is deployment. Github pages doesn’t really support having a .env, so I tried switching to vercel. However, I now need to get localstorage (which I had to use as the cookie got too big lol) working on that, plus the flight API and everything else.
The activities portion of the website is done! I did some research, and it turns out that the best way for me to find information on local events is AI! The way it works is by using Google Gemini along with Zod, which allows me to format my API requests to return in JSON. Since it has the same information each time, I can then just treat it as a regular API call. However, I might change it and put this on the backend to try to hide the API key. Anyways, we are almost at the end! The last major portion of the project is the recap page, where I plan to show all info on the trip, let users download, and maybe more! Today went pretty well, and I am excited to finally get this thing done.
Itinerarey is complete! The last thing that I needed to get done was the recap page, which takes all the data in your localstorage and displays it for you! I had to rewrite how the flights and hotels are displayed to show the booking links, but overall it was pretty simple. The main thing that I am proud of is the budget tracker, which shows the prices for everything, including how much is leftover in the budget! This is done with some pretty simple math, but it definitely ties the project together. Lastly, the user can save a copy of this page to their computer. They can then also reset their localstorage to create a brand new trip! Lastly, I got the readme and license done (id take a look if I were you!), and finished deploying everything on vercel. Overall, I am really happy with how Itinerarey came out. I learned a lot about web scrapping and hosting websites from this project, which I hope will come in handy in the future! Thank you all for the support, stardance has been incredible! feel free to dm me in slack! - nate
Ships:
Itinerarey is the better way to plan out your trips! When getting ready for a vacation, it can be incredibly stressful to plan out flights, hotels, activities, and more! So, I built itinerarey to make it a bit easier! It uses APIs and web scrapers to compile information from across the internet to have a centralized place to get information. The most challenging part of Itinerarey was the flights and hotels system. There are no free APIs (with good limits) for showing either, so I had to get a bit creative and spend a few hours researching. The flights system runs by contacting an API that runs a python web scraper that is hosted on Render, while the hotels call from an online Booking.com scraper. I am really proud of the recap page, mainly. To me, it feels like a representation of the entire project in its entireity. It shows everything the user did, and it works as a confirmation of every system performing as it should. For testing, please be aware that the render server mmight take up to a minute to load up. Also, due to web scraping being a bit finnicky, some results might not show up. If this happens, try clearing your localstorage and using a new destination. Enjoy your vacations! -nate...
|
1793008128.911999
|
1793094528.911999
|
|
14548
|
PhoebOS: Digital temple of Apollo by @Icky_Vicky | PhoebOS: Digital temple of Apollo by @Icky_Vicky | Stardance...
|
Icky_Vicky
|
1
|
10.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T03:10:31Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a WebOS with a functional clock in the top bar, an app that links to a list of reading material, and a work in progress weather app!", "repo": "https://github.com/IckyVicky-real/PhoebOS", "demo": "https://ickyvicky-real.github.io/PhoebOS/"}]...
|
[{"post_id": 73439, "ts": "202 [{"post_id": 73439, "ts": "2026-09-25T02:59:08Z", "hours": 8.1939, "text": "I sorta forgot to post devlogs I was I working oops. I succesfully built several functional windows, made my simple app that linked to a list of reading material, and then the only thing I had left to do was build my complex app. The complex app I decided to build was a weather app. Over the past roughly two weeks of work I managed to complete a fully functional weather app that was based off a free API tracker that I found that was made specifically for weather apps like mine. I say all of this in past tense because, as of yesterday at the time I am posting this devlog, that API tracker shut down without warning. As a result of this, the entirety of the 8h 11m devlog I am posting will have absolutely nothing to show for it. Needless to say this is extremely frustrating, and I am hoping that whoever is reading this will see how hard I tried on that app and consider my WebOS 1 project finished enough. After losing what is essentially all of my progress, I have decided to spend the last week off this event focusing on other projects. I understand that I have not done what this mission asked of me, but I hope you understand that I tried my absolute hardest."}, {"post_id": 63285, "ts": "2026-09-07T01:04:06Z", "hours": 0.4731, "text": "I tried separating the time and date from the window, but I haven’t figured it out yet :b. I also changed the window position to the center and changed the border tyep"}, {"post_id": 63268, "ts": "2026-09-07T00:27:29Z", "hours": 1.2722, "text": "I am working on a web OS that will act as a digital temple to the Greek god Apollo! So far I’ve only added a title page with a clock that updates every second."}]...
|
Title: PhoebOS: Digital temple of Apollo by @Icky_ Title: PhoebOS: Digital temple of Apollo by @Icky_Vicky | Stardance
Devlogs:
I am working on a web OS that will act as a digital temple to the Greek god Apollo! So far I’ve only added a title page with a clock that updates every second.
I tried separating the time and date from the window, but I haven’t figured it out yet :b. I also changed the window position to the center and changed the border tyep
I sorta forgot to post devlogs I was I working oops. I succesfully built several functional windows, made my simple app that linked to a list of reading material, and then the only thing I had left to do was build my complex app. The complex app I decided to build was a weather app. Over the past roughly two weeks of work I managed to complete a fully functional weather app that was based off a free API tracker that I found that was made specifically for weather apps like mine. I say all of this in past tense because, as of yesterday at the time I am posting this devlog, that API tracker shut down without warning. As a result of this, the entirety of the 8h 11m devlog I am posting will have absolutely nothing to show for it. Needless to say this is extremely frustrating, and I am hoping that whoever is reading this will see how hard I tried on that app and consider my WebOS 1 project finished enough. After losing what is essentially all of my progress, I have decided to spend the last week off this event focusing on other projects. I understand that I have not done what this mission asked of me, but I hope you understand that I tried my absolute hardest.
Ships:
I made a WebOS with a functional clock in the top bar, an app that links to a list of reading material, and a work in progress weather app!...
|
1793004688.3243651
|
1793091088.3243651
|
|
34416
|
My own site! by @HarvyLiu | Stardance
|
HarvyLiu
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T02:26:34Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "IDK why it only recorded 1h but I’m 100% sure I spent at least 3 hours on this… Well anyways, I’ve finished my own site which is just some Me-info HOWEVER, THERE is a FLAG hidden here, the format is HLCTF{…} tho it’s not a ctf but just for fun :D. Have fun finding it, hint1: open inspect (F12)", "repo": "https://github.com/HarvyLiu/My-own-site", "demo": "https://harvyliu.github.io/My-own-site/"}]...
|
[{"post_id": 73428, "ts": "202 [{"post_id": 73428, "ts": "2026-09-25T02:12:46Z", "hours": 0.2939, "text": "Done! still doing a little tweaks and I’ll ship"}, {"post_id": 72761, "ts": "2026-09-23T17:59:36Z", "hours": 0.7486, "text": "Wrote some css… this is like the first time touching web since I was like in junior high… the feeling that I don’t wanna be a web dev is still in here (jk). Ricing linux would be more motivated but, welp trying out this to a depth that I havent been to is still a bit interesting…"}, {"post_id": 71835, "ts": "2026-09-21T16:56:41Z", "hours": 0.2719, "text": "Still working on it, it looks very ugly now, planning to make it into slide format, like slide to the right (using arrows) and show the next section."}]...
|
Title: My own site! by @HarvyLiu | Stardance
Devl Title: My own site! by @HarvyLiu | Stardance
Devlogs:
Still working on it, it looks very ugly now, planning to make it into slide format, like slide to the right (using arrows) and show the next section.
Wrote some css… this is like the first time touching web since I was like in junior high… the feeling that I don’t wanna be a web dev is still in here (jk). Ricing linux would be more motivated but, welp trying out this to a depth that I havent been to is still a bit interesting…
Done! still doing a little tweaks and I’ll ship
Ships:
IDK why it only recorded 1h but I’m 100% sure I spent at least 3 hours on this… Well anyways, I’ve finished my own site which is just some Me-info HOWEVER, THERE is a FLAG hidden here, the format is HLCTF{…} tho it’s not a ctf but just for fun :D. Have fun finding it, hint1: open inspect (F12)...
|
1793004530.2409594
|
1793090930.2409594
|
|
60002
|
OpenTasks by @noahplaysmario | Stardance
|
noahplaysmario
|
1
|
16.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T01:51:56Z", "hours": 16.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an open-source server for tracking tasks and events. Everything is securely encrypted, and easy to make custom clients for. One thing you should know is that this software only contains the server and a basic testing client, but a custom client is very simple, especially if you use the testing client as a starting point.", "repo": "https://github.com/noah560/OpenTasks", "demo": "https://github.com/noah560/OpenTasks/blob/main/server.py"}]...
|
[{"post_id": 73392, "ts": "202 [{"post_id": 73392, "ts": "2026-09-25T01:48:45Z", "hours": 3.2003, "text": "I finished the server and test client!!!!!!!!! I am very happy, if it isn’t obvious by the number of exclamation points in the top line of this devlog. I finally finished the main part, now I can use this myself and implement clients for whatever I want. Also, I added a debug mode to help with client development."}, {"post_id": 71552, "ts": "2026-09-21T01:40:11Z", "hours": 2.6672, "text": "Finished server code for now- now to make a testing client to make sure it works! I am almost done with the project. For this devlog, I mainly fixed a bunch of errors found by AI (even if it doesn’t code the best, it can still find mistakes after all it’s pretty much just a lot of pattern detection) and fixed them(myself, not with AI). Next, I will make a simple CLI test/demo client to make sure it works."}, {"post_id": 71218, "ts": "2026-09-20T14:01:27Z", "hours": 5.6742, "text": "Redesigned protocol to be more extensible without modifying the server much."}, {"post_id": 68920, "ts": "2026-09-16T01:38:08Z", "hours": 2.2131, "text": "Started work on the actual server code!"}, {"post_id": 65714, "ts": "2026-09-11T01:46:52Z", "hours": 0.6372, "text": "Made it more secure and added a version number to the protocol. Next thing to do: the server code!"}, {"post_id": 65683, "ts": "2026-09-11T00:23:37Z", "hours": 0.9097, "text": "Documented the TCP protocol and request types."}, {"post_id": 64736, "ts": "2026-09-09T11:26:19Z", "hours": 0.5064, "text": "Started making the protocol. I am making the protocol first so I know exactly what to program and custom clients can easily be made."}]...
|
Title: OpenTasks by @noahplaysmario | Stardance
D Title: OpenTasks by @noahplaysmario | Stardance
Devlogs:
Started making the protocol. I am making the protocol first so I know exactly what to program and custom clients can easily be made.
Documented the TCP protocol and request types.
Made it more secure and added a version number to the protocol. Next thing to do: the server code!
Started work on the actual server code!
Redesigned protocol to be more extensible without modifying the server much.
Finished server code for now- now to make a testing client to make sure it works! I am almost done with the project. For this devlog, I mainly fixed a bunch of errors found by AI (even if it doesn’t code the best, it can still find mistakes after all it’s pretty much just a lot of pattern detection) and fixed them(myself, not with AI). Next, I will make a simple CLI test/demo client to make sure it works.
I finished the server and test client!!!!!!!!! I am very happy, if it isn’t obvious by the number of exclamation points in the top line of this devlog. I finally finished the main part, now I can use this myself and implement clients for whatever I want. Also, I added a debug mode to help with client development.
Ships:
I made an open-source server for tracking tasks and events. Everything is securely encrypted, and easy to make custom clients for. One thing you should know is that this software only contains the server and a basic testing client, but a custom client is very simple, especially if you use the testing client as a starting point....
|
1792961614.2864156
|
1793048014.2864156
|
|
24990
|
Fortress Fighter by @codingfreak234 | Stardance
|
codingfreak234
|
2
|
12.0
|
30
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T01:39:15Z", "hours": 0.0, "multiplier": 3.46, "payout": 2, "blessing": "neutral", "text": "I made some mistakes. Mainly, I wrote a terrible readme(oops), and completely forgot to tell anyone how to play the game. Also, I had it named as a RPG, which it is not. And now, after fixing these, I’m ready to re-release. To avoid a repeat: Use WASD to move Use L to launch a long range blast in the direction of travel Use K to launch a short range blast in the direction of travel I really hope I didn’t miss anything that needed to be fixed. Have Fun!", "repo": "https://github.com/CodingFreak234/Fortress-Fighter-Sprig-game", "demo": "https://sprig.hackclub.com/share/IgY4OhjZCEx4bOdCrc6c"}, {"ship_num": 2, "ts": "2026-09-08T02:26:07Z", "hours": 12.0, "multiplier": 2.33, "payout": 28, "blessing": "neutral", "text": "I made a basic RPG in sprig! It was really hard, especially since, this was my first real JavaScript project. I think the game turned out great, and I hope you enjoy it.", "repo": "https://github.com/CodingFreak234/Fortress-Fighter-Sprig-game", "demo": "https://sprig.hackclub.com/share/IgY4OhjZCEx4bOdCrc6c"}]...
|
[{"post_id": 72821, "ts": "202 [{"post_id": 72821, "ts": "2026-09-23T20:09:39Z", "hours": 0.4758, "text": "Mistakes were made… specifically the one were I forgot to tell anyone how to play my game. So here it is, and I will also include it in the second ship as well. Oh, and I added it to the read me as well. Plus, I changed the name, because it really isn’t an rpg. I updated the placement of the health and score displays as well because I needed time to make a devlog so I can ship again. controls are wasd to move/rotate. Use L to attack the bugs with long range blasts, and K to hit them with short range ones."}, {"post_id": 63981, "ts": "2026-09-08T02:23:44Z", "hours": 1.2344, "text": "I’M DONE!!! I finished the modifications, made a repository for the project, and I’m going to ship it. (This took me way too long…)"}, {"post_id": 56183, "ts": "2026-08-27T20:24:33Z", "hours": 1.89, "text": "Over the past week or so, I reworked the controls. I did this so I could add some sort of long range weapon. the long range weapon would be able to hit more enemies with longer range, but would also do less damage. It was a lot of trial and error, and I’m still not done. I need to add the script where the enemies get damaged, but only part way. I also need to make it so that the long range blasts get removed from the screen after a second."}, {"post_id": 38577, "ts": "2026-08-01T01:51:24Z", "hours": 1.0628, "text": "Today I fixed a bug where the enemies in my game weren’t spawning at the very top of the playing field, they were spawning a little below it. After that I fixed a potential bug about being able to move the character out of bounds, and a very real bug about the program trying to spawn an attack sprite out of bounds. In fixing that, I also restrained the player a little more, making it harder to farm the enemies. Finally, I tried to add a theme song, but either something with the software didn’t work, or I have just failed to see the exit button for three or four days strait. The problem is likely that second option."}, {"post_id": 26324, "ts": "2026-07-11T01:50:56Z", "hours": 2.5386, "text": "I worked a lot on my Sprig RPG today, and got a lot of work done. I also got the project done. For those of you who are familiar with sprig, the game will be released there soon (hopefully tommorrow). However, lets go through what I did today. First off, I updated the player character from a large blue block to a blue circle with an orange outline. second, I added a castle for the player to defend. I also made it fairly difficult for players to puppy gaurd one segment of the castle. Finnally, I made it so that the game gets progressively harder. That’s what I did today. Enjoy!"}, {"post_id": 25588, "ts": "2026-07-09T22:45:30Z", "hours": 0.5617, "text": "Today I did a lot of debugging and solved all known problems with the game. I (finally) fixed the health counter and made the blasts disappear shortly after they are fired. finally, I regulated the numbers of enemies to make them more manageable. Next time I’m going to do the final graphic design and then add some sort of castle for the player to defend. Enjoy!"}, {"post_id": 24469, "ts": "2026-07-08T01:24:56Z", "hours": 1.4217, "text": "I worked on debugging for both yesterday and today. I had one particular problem where the player could attack the enemies in the game, but the attack would do nothing to the enemy. I fixed that, and now I only have a few more bugs to fix. Right now, I still have to fix the health counter, and then I have to figure out how to make the blasts disappear about a half-second after the player brings them into existence. Enjoy!"}, {"post_id": 18862, "ts": "2026-06-30T01:59:26Z", "hours": 0.8964, "text": "I worked on fighting mechanics today for my sprig RPG. I have it so that you can blast the enemy sprites with the IJKL buttons, and then move around with the WASD buttons. There was a lot of tweaking in the code today, but it works. I haven’t fixed the health counter yet, but I think I know what’s wrong, and I plan to fix it soon. Enjoy!"}, {"post_id": 16059, "ts": "2026-06-26T02:54:05Z", "hours": 1.4053, "text": "I continued to work on the Sprig RPG today. Initially, I had planned for there to be some kind of wall building mechanic in the game, but I realized that might be a little over my head, so I put that on the shelf for now. I created an initial game loop today, and it’s working okay. The one problem I’ve run into is the health counter. In the game, you start at 10 health I tried to make it so that after every hit you go down by one, but after the first hit you go up to 90, and then it counts down by ten after that. I’m going to try and figure that out next week. Enjoy!"}, {"post_id": 14812, "ts": "2026-06-24T01:40:09Z", "hours": 0.9139, "text": "I started on a basic RPG in sprig. To start off I did preliminary graphic design, and then I coded the wasd controls."}]...
|
Title: Fortress Fighter by @codingfreak234 | Stard Title: Fortress Fighter by @codingfreak234 | Stardance
Devlogs:
I started on a basic RPG in sprig. To start off I did preliminary graphic design, and then I coded the wasd controls.
I continued to work on the Sprig RPG today. Initially, I had planned for there to be some kind of wall building mechanic in the game, but I realized that might be a little over my head, so I put that on the shelf for now. I created an initial game loop today, and it’s working okay. The one problem I’ve run into is the health counter. In the game, you start at 10 health I tried to make it so that after every hit you go down by one, but after the first hit you go up to 90, and then it counts down by ten after that. I’m going to try and figure that out next week. Enjoy!
I worked on fighting mechanics today for my sprig RPG. I have it so that you can blast the enemy sprites with the IJKL buttons, and then move around with the WASD buttons. There was a lot of tweaking in the code today, but it works. I haven’t fixed the health counter yet, but I think I know what’s wrong, and I plan to fix it soon. Enjoy!
I worked on debugging for both yesterday and today. I had one particular problem where the player could attack the enemies in the game, but the attack would do nothing to the enemy. I fixed that, and now I only have a few more bugs to fix. Right now, I still have to fix the health counter, and then I have to figure out how to make the blasts disappear about a half-second after the player brings them into existence. Enjoy!
Today I did a lot of debugging and solved all known problems with the game. I (finally) fixed the health counter and made the blasts disappear shortly after they are fired. finally, I regulated the numbers of enemies to make them more manageable. Next time I’m going to do the final graphic design and then add some sort of castle for the player to defend. Enjoy!
I worked a lot on my Sprig RPG today, and got a lot of work done. I also got the project done. For those of you who are familiar with sprig, the game will be released there soon (hopefully tommorrow). However, lets go through what I did today. First off, I updated the player character from a large blue block to a blue circle with an orange outline. second, I added a castle for the player to defend. I also made it fairly difficult for players to puppy gaurd one segment of the castle. Finnally, I made it so that the game gets progressively harder. That’s what I did today. Enjoy!
Today I fixed a bug where the enemies in my game weren’t spawning at the very top of the playing field, they were spawning a little below it. After that I fixed a potential bug about being able to move the character out of bounds, and a very real bug about the program trying to spawn an attack sprite out of bounds. In fixing that, I also restrained the player a little more, making it harder to farm the enemies. Finally, I tried to add a theme song, but either something with the software didn’t work, or I have just failed to see the exit button for three or four days strait. The problem is likely that second option.
Over the past week or so, I reworked the controls. I did this so I could add some sort of long range weapon. the long range weapon would be able to hit more enemies with longer range, but would also do less damage. It was a lot of trial and error, and I’m still not done. I need to add the script where the enemies get damaged, but only part way. I also need to make it so that the long range blasts get removed from the screen after a second.
I’M DONE!!! I finished the modifications, made a repository for the project, and I’m going to ship it. (This took me way too long…)
Mistakes were made… specifically the one were I forgot to tell anyone how to play my game. So here it is, and I will also include it in the second ship as well. Oh, and I added it to the read me as well. Plus, I changed the name, because it really isn’t an rpg. I updated the placement of the health and score displays as well because I needed time to make a devlog so I can ship again. controls are wasd to move/rotate. Use L to attack the bugs with long range blasts, and K to hit them with short range ones.
Ships:
I made a basic RPG in sprig! It was really hard, especially since, this was my first real JavaScript project. I think the game turned out great, and I hope you enjoy it.
I made some mistakes. Mainly, I wrote a terrible readme(oops), and completely forgot to tell anyone how to play the game. Also, I had it named as a RPG, which it is not. And now, after fixing these, I’m ready to re-release. To avoid a repeat: Use WASD to move Use L to launch a long range blast in the direction of travel Use K to launch a short range blast in the direction of travel I really hope I didn’t miss anything that needed to be fixed. Have Fun!...
|
1793001160.2607045
|
1793087560.2607045
|
|
35799
|
TurboNinja by @TheGeekachu | Stardance
|
TheGeekachu
|
1
|
15.0
|
161
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T01:34:28Z", "hours": 15.0, "multiplier": 10.89, "payout": 161, "blessing": "neutral", "text": "I made this. TurboNinja. Yes, I suck at naming stuff. But this game taught me more about gamedev than any game I’ve made, mostly because I didn’t use an engine. Nope. This is all pure code, written by yours truly. Thanks for being here! BTW, arrow keys to move and X to dash attack.", "repo": "https://github.com/vijayakasee-debug/TurboNinja", "demo": "https://thegeekachu.itch.io/turboninja-preview"}]...
|
[{"post_id": 73383, "ts": "202 [{"post_id": 73383, "ts": "2026-09-25T01:30:42Z", "hours": 0.6725, "text": "I’m done. I’m finally done. The game is now on Itch.io and available to play! THE GAME DOES NOT WORK ON SAFARI BECAUSE APPLE IS STUPID. I just discovered this after the ship, so I came back to edit. Please play on Chrome or Firefox."}, {"post_id": 72905, "ts": "2026-09-24T00:16:24Z", "hours": 0.6064, "text": "IM DONE!!!! All that’s left is making an exec and putting it on Itch.io!!!! THE GRAPHICS ARE AMAZING!!!"}, {"post_id": 72893, "ts": "2026-09-23T23:40:35Z", "hours": 0.3989, "text": "I’m currently working on silhouettes for the game and all characters, but I’m having just a teensy bit of layering issues… Only the silhouettes are visible and literally nothing else…"}, {"post_id": 72377, "ts": "2026-09-22T19:48:13Z", "hours": 0.7825, "text": "SO, I added level transitions. You can now beat a level and go to the next one. I also just realised that the levels I’ve been designing are insanely hard, so good luck playing them all the way through!"}, {"post_id": 71984, "ts": "2026-09-21T22:13:01Z", "hours": 2.9931, "text": "AAaaaaahhhh!!! I finally implemented a particle system for sparks that uses advanced trigonometry, and I added enemy and player death, the animations for which are completely written without any assets using only trigonometry, pygame.polygon() and the math module. PAINNN!!!"}, {"post_id": 70824, "ts": "2026-09-19T20:39:05Z", "hours": 0.6794, "text": "I added a Dash mechanic. After much pain in the arse, I realised that the reason he was shooting leaves when dashing was I forgot to import the Ninja dash effect, so VS Code for some reason decided to import leaves instead. He no longer spews leaves when dashing, which I consider a win!"}, {"post_id": 70408, "ts": "2026-09-19T04:04:20Z", "hours": 0.4569, "text": "He no longer can jump to the high heavens to meet Jesus. He gets one jump, and I’ve added some really nice walljumps, yippee!"}, {"post_id": 70402, "ts": "2026-09-19T03:29:51Z", "hours": 1.0106, "text": "So, I really didn’t need to do this, but the tutorial I’m following for the base functionality because it comes with the assets I’m using said I can add a particle system for leaves, so I thought, why not? The results look beautiful and I’m glad I did it. Also, check out the new levels, made by yours truly with the new level editor!"}, {"post_id": 66847, "ts": "2026-09-12T19:25:12Z", "hours": 0.5358, "text": "After much pain and annoyance, I got fed up with coding my own level editor, and got a pre-made Python file for one, then modified it to the controls I like, which took longer than I appreciate. Unfortunately, some editing work was done on a different computer, so Hackatime didn’t track it. Not much though, so no biggie."}, {"post_id": 40830, "ts": "2026-08-04T16:27:24Z", "hours": 1.3808, "text": "I added animations. I realised that you wouldn’t be able to tell there were animations if I just took a photo of the idle one, so I locked in and took a screenshot while he was in midair, in the jumping animation. Next step is gonna be cooked. I have to write a level editor from scratch!"}, {"post_id": 37756, "ts": "2026-07-30T17:47:05Z", "hours": 0.8744, "text": "I added clouds. Exciting, I know. But this took a lot more work than I care to admit. At first the clouds were going diagonal. I spent half an hour fixing it, and succeeded in making them go the other way, still diagonal. Then I realised that in my endless wisdom, I’d updated the y-axis with the values meant for the x-axis. Now it’s fixed."}, {"post_id": 31022, "ts": "2026-07-19T02:35:16Z", "hours": 0.5706, "text": "I added a camera that follows the player, so you can watch him infinitely jump across the heavens. Bro’s on his god tier loadout."}, {"post_id": 29739, "ts": "2026-07-16T20:40:52Z", "hours": 1.5772, "text": "Added collisions and jumping so he doesn’t fall endlessly. I have the opposite problem now. He isn’t restricted to double jumps. Either my ninja knows how to fly or air is solid. Pick one, beats me!"}, {"post_id": 29196, "ts": "2026-07-15T22:41:02Z", "hours": 2.2247, "text": "Added gravity, tilemaps, and a ninja. You can’t see him in the photo because I’v added gravity, but, er, not collisions as of yet, so he’s infinitely falling through space, poor guy."}]...
|
Title: TurboNinja by @TheGeekachu | Stardance
Dev Title: TurboNinja by @TheGeekachu | Stardance
Devlogs:
Added gravity, tilemaps, and a ninja. You can’t see him in the photo because I’v added gravity, but, er, not collisions as of yet, so he’s infinitely falling through space, poor guy.
Added collisions and jumping so he doesn’t fall endlessly. I have the opposite problem now. He isn’t restricted to double jumps. Either my ninja knows how to fly or air is solid. Pick one, beats me!
I added a camera that follows the player, so you can watch him infinitely jump across the heavens. Bro’s on his god tier loadout.
I added clouds. Exciting, I know. But this took a lot more work than I care to admit. At first the clouds were going diagonal. I spent half an hour fixing it, and succeeded in making them go the other way, still diagonal. Then I realised that in my endless wisdom, I’d updated the y-axis with the values meant for the x-axis. Now it’s fixed.
I added animations. I realised that you wouldn’t be able to tell there were animations if I just took a photo of the idle one, so I locked in and took a screenshot while he was in midair, in the jumping animation. Next step is gonna be cooked. I have to write a level editor from scratch!
After much pain and annoyance, I got fed up with coding my own level editor, and got a pre-made Python file for one, then modified it to the controls I like, which took longer than I appreciate. Unfortunately, some editing work was done on a different computer, so Hackatime didn’t track it. Not much though, so no biggie.
So, I really didn’t need to do this, but the tutorial I’m following for the base functionality because it comes with the assets I’m using said I can add a particle system for leaves, so I thought, why not? The results look beautiful and I’m glad I did it. Also, check out the new levels, made by yours truly with the new level editor!
He no longer can jump to the high heavens to meet Jesus. He gets one jump, and I’ve added some really nice walljumps, yippee!
I added a Dash mechanic. After much pain in the arse, I realised that the reason he was shooting leaves when dashing was I forgot to import the Ninja dash effect, so VS Code for some reason decided to import leaves instead. He no longer spews leaves when dashing, which I consider a win!
AAaaaaahhhh!!! I finally implemented a particle system for sparks that uses advanced trigonometry, and I added enemy and player death, the animations for which are completely written without any assets using only trigonometry, pygame.polygon() and the math module. PAINNN!!!
SO, I added level transitions. You can now beat a level and go to the next one. I also just realised that the levels I’ve been designing are insanely hard, so good luck playing them all the way through!
I’m currently working on silhouettes for the game and all characters, but I’m having just a teensy bit of layering issues… Only the silhouettes are visible and literally nothing else…
IM DONE!!!! All that’s left is making an exec and putting it on Itch.io!!!! THE GRAPHICS ARE AMAZING!!!
I’m done. I’m finally done. The game is now on Itch.io and available to play! THE GAME DOES NOT WORK ON SAFARI BECAUSE APPLE IS STUPID. I just discovered this after the ship, so I came back to edit. Please play on Chrome or Firefox.
Ships:
I made this. TurboNinja. Yes, I suck at naming stuff. But this game taught me more about gamedev than any game I’ve made, mostly because I didn’t use an engine. Nope. This is all pure code, written by yours truly. Thanks for being here! BTW, arrow keys to move and X to dash attack....
|
1793004974.6227162
|
1793091374.6227162
|
|
64293
|
MatchRatingCalc by @Allen | Stardance
|
Allen
|
1
|
11.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T01:33:57Z", "hours": 11.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made Veyro", "repo": "https://github.com/awang03-crypto/Veyrov2.6", "demo": "https://darksalmon-lark-983637.hostingersite.com/calculator"}]...
|
[{"post_id": 73381, "ts": "202 [{"post_id": 73381, "ts": "2026-09-25T01:29:20Z", "hours": 10.9056, "text": "I just worked on making the site better"}]...
|
Title: MatchRatingCalc by @Allen | Stardance
Devl Title: MatchRatingCalc by @Allen | Stardance
Devlogs:
I just worked on making the site better
Ships:
I made Veyro...
|
1792965059.0062406
|
1793051459.0062406
|
|
43023
|
Worlds Unbound - Terrain Engine by @alpeka | Stard Worlds Unbound - Terrain Engine by @alpeka | Stardance...
|
alpeka
|
1
|
125.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T01:05:30Z", "hours": 125.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "— SHIP No.1 — I spent the last couple of months making a model terrain, which I will use for my game that I will continue to build after this competition. My game idea is quite ambitious, and given how long it took for me to get this basic terrain to work properly and well, that won’t even be coming with the extra month added one. I lot of you may be thinking though, what on earth were you doing for 125 hours, when all you came up with is a glorified green and grey piece of paper you could walk on. Well, not only was I learning and using Godot for the first time, it was the first time I learnt anything as complicated as this. I had to wrap my head around complex (at least for me) maths and computer science topics, like vectors and cross product, noise and FBM, TBN model, and UVs, not to mention just the sheer amount of logic I had to get through. It was so tiring to keep getting bugs for the chunking system I had, or the collisions. But thankfully, all that is behind me 😼. I’ll give you a more indepth look into what I’ve done over the past couple months. Devlogs 1-12: This period was the general beginning of my project. Not only was I learning Godot, and watching tutorials on it, I was also spending time on the player character, the camera system, and the world environment. Devlogs 13-15: I tried to implement LODs into my chunks, since the performance was simply too bad. Somehow this made it worse, possibly because of more chunks (the ones at the broder of LOD borders) being forced to be unloaded and loaded back in. Devlogs 16-21: I used my current technique, heavily based from devmars video on youtube about procedural terrain during this period. School had also started, so I spent less and less time on it, being significantly burnt out and tired. So I basically went through 3 iterations of terrain for my game, so that is why it took so long to get to this point.", "repo": "https://github.com/jona-mtw/Celestial", "demo": "https://alpeka.itch.io/worlds-unbound-terrain-engine"}]...
|
[{"post_id": 73370, "ts": "202 [{"post_id": 73370, "ts": "2026-09-25T00:42:51Z", "hours": 2.2056, "text": "Devlog 21 - Ship Prep!!! Colours I added colours to the terrain depending on how high the vertex is. This does create a very harsh border between the two colours, but I didn’t want to learn lerping, ik how to larp enough. Cleaned up my commits My commits were, and probably are still messy, and when I went ahead to revert some changes it said there were errors, but now thankfully that’s all fixed. :) I also updated quite small normals and some technical stuff."}, {"post_id": 72564, "ts": "2026-09-23T07:21:06Z", "hours": 3.9622, "text": "Devlog 20: GPU noise I found a way to make noise using a Godot addon called FastNoiseLite Runtime Shader . It was apparently identical to the FastNoiseLite in GDScript. So I gave it a try. I knew it was a gamble, given how much time I got left to ship an decent project, but I gave it a try since it seemed interesting. It wasn’t that hard to get the noise working, but to get it to sync with the collisions was a nightmare. In the end, I decided that even though the README stated it was 99.9% the same, the output seed by seed was different. So I decided to scrap it and now I’m going back to the old version with heightmaps. Why did I really want to switch? Because of the limited colour depth in images (has to be 8-bit for GDShader to read), theres not enough heights for each vertex to be at, so every so often, there’s this massive wall. It looks fine from afar, but thats probably because my terrain is 20km x 20km, so of course an 8m tall wall would look fine. (the image is from the addon readme)"}, {"post_id": 70779, "ts": "2026-09-19T19:04:39Z", "hours": 6.5594, "text": "Devlog 19 - Main Menu Added (and other things)! I spent quite a lot of time making the background for the main menu in Blender. After just copy and pasting the player model used in the game, I went ahead and made the main attraction: ✨ the planet in the background ✨ . My knowledge of noise that I gained from my previous attempts at the terrain generation helped me create the stars in the background, and the texture for the actual planet in the shader editor. I also added a slight atmosphere, which is (somewhat?) noticeable. I also went ahead and updated the shader code. Before, I used to use the visual shaders, since it was quite similar to the shader editor in Blender, which I was familiar with. But then I realised there’s just more flexibility with using GLSL . I can group uniforms in the inspector, making it clearer and less cluttered if I want to add textures in the future, including different images for the same texture (like Ambient Occlusion, Normals, Colours, and Roughness). Thus being able to group those different types images for the same texture was very important for future usability. Thankfully, Godot allows you to see the shader code that is generated from the visual shaders. Unfortunately, it was not readable at all. The generated code used a random(ish) collection of numbers and letters, and it was too long. Look below for the comparision for just the vertex shader, but it was something like 84 lines that was shruken down to 10 for the vertex shader. Even if you account for spaces in the generated code (which then it might be like 50-60 lines) thats a huge difference. So it took quite some time to get it to a readable state. edit: idk why the actual background looks so bumcheeks compared to the banner, hopefully itll be fixed by then 🤞"}, {"post_id": 67802, "ts": "2026-09-14T01:51:22Z", "hours": 4.0497, "text": "Devlog 18 - I am happy once again!! I FINALLY got the collisions to work!! Basically, it looks at the terrain model that is imported into Godot, and aligns the vertices of the CollisionShape3D with it. It also updates its position every time the player moves 1 unit (whatever the size of a quad of the mesh is). Then it looks at the heightmap, looks up the height of its coresponding pixel, multiplies that by the height shader param (2000, like in the vertex shaders), and thats the collision shape done. I noticed while walking around the world, that there were these massive ridges on the terrain. This is due to the lack of precision in the heightmap. The heightmap only has 256 shades of grey, and I need 2000 values. It is quite impossible to make a image file with that much precision, so instead, I’ll make it so that the CPU will just send an array to the vertex shader. Also, I’ve rebranded my project to Worlds Unbound, and this specific Stardance project will just be handling the terrain stuff for the game. p.s, it never goes above 16ms, i think thats probably because i was recording"}, {"post_id": 65723, "ts": "2026-09-11T02:05:18Z", "hours": 6.0086, "text": "Devlog 17 - I am incredibly frustrated. No matter what I do it feels like I just can’t get the collisions to work. Basically, I’m trying to fetch the heights from the height map to input into the CollisionShape3D, but the coordinates are always offset in some way or the other. I even used AI my friend to basically rewrite the entire script over and over again, but that didn’t work either. Maybe it’s cos school has started now, and I haven’t been able to spend that much time on this project than I would like to As you can see in the photo, the collision mesh (in blue) is offset from the normal terrain (in white)"}, {"post_id": 63142, "ts": "2026-09-06T19:41:46Z", "hours": 7.2203, "text": "Devlog 16 - AMAZING PROGRESS!! I’ve managed to get a massive 20km render distance with huge mountains and ridges using FastNoiseLite and vertex shaders. I used devmar ’s terrain technique, which he named the “Wandering Clipmap Terrain Technique”. The reason why the technique is called the “ Wandering Clipmap Terrain Technique” is because a flat plane that is subdivided a bunch (to make varrying levels of detail (LODs)) that follows the player. The vertex shaders then offset the heightmap so it gives off the illusions that your moving about in a massive world. All the displacement is done by the vertex shaders, which looks at a heightmap. In the future, I might make this heightmap be generated in gdscript instead of in the inspector, to deal with texture resolutions. Currently, from afar, the terrain looks amazing (except from the fact its not textured) but upclose, you can see rings in the terrain, which is caused by the heightmap’s resolution being too low. In fact each ring is about 8m tall so I really need to fix that 😭 The normals are calculated by just copying the heightmap and setting it ‘as normals’ in the inspector. They also are multiplied by a normal basis matrix, which allows me to configure the specific normal settings. I’ll need to calculate the normals in the fragment shader as well in the future for more convincing shadows, but for the mean time, the vertex shaders should do just fine. I’m planning on adding collisions, then maybe textures, biomes and vegetation soon!!"}, {"post_id": 61230, "ts": "2026-09-04T01:57:24Z", "hours": 4.8533, "text": "Devlog 15 - I’m an Idiot For the past 95ish hours, I’ve been working on a way to make procedural terrain for my game. I tried 2 main methods, one centred round the CPU, and one I was building centred around the GPU. The endless chunk seam bugs caused me to burnout/get tired of the entire project, and there was so many stuff (that I won’t really be explaining for the sake of my poor reader’s sanity) leading to me ✨ youtube ✨ I saw this AMAZINGLY smart video by devmar, showing an alternate way of generating terrain. I urge you to watch the video as well, the whole technique is very very clever, and he even goes on to make further videos on making collisions, recalculating normals and adding vegetation, especially if your interested in procedural generation. After watching this video however, I became incredibly frustrated. I spent nearly 100hrs of my summer making this procedural terrain which I know hadn’t gotten anywhere and theres this incredibly smart video from 4yrs ago that pops up on my feed. Welp, now ig i gotta try out this way, and quick cos my parents are on my tail talking about me finishing this project before school starts 🙏 (its my gcse year so ig its valid but still ) Now what I actually did that counted to my time Experimented with vertex shaders, and sending heightmaps to vertex shaders to displace. This however caused immense lag and caused VERY ANNOYING chunk seams. #epicfails"}, {"post_id": 59673, "ts": "2026-09-01T16:27:07Z", "hours": 9.5572, "text": "Devlog 14 - LOD chunks ——— OPTIMISATION IS SOO HARDD 10hrs to do practically do something I’ve already done? (i had already made a chunk system in previous devlogs) Well, whilst some of that time was transferring code from my old commits to the current one and making sure it works, most of the time I spent on this devlog was spent on ✨ “optimisation” ✨ Optimisation First of all, I added LODs into the chunk mesh. What this means is that since further away chunks take up less of your screen, the level of detail (LOD) is reduced the further away it is. I had already made the script that handled the creation of those different meshes with different LODs, so in this devlog, I added it to the main terrain generation script, and assigned each LOD to a certain distance, so that any chunk with a certain distance has a certain LOD. In my last version of the terrain generation, I relied on the name of the MeshInstance3d nodes created to identify what chunk they were. I realised when making this updated version that it was prone to failure, since if the node did not exist or a node with the same name were some how added to the scene tree, errors would be raised or at the very least, a logic error would occur. To recetify this, I switched to using dictionaries to house all the information of all the chunks: chunks : Dictionary [ Vector2i , int ] = { Vector2i ( 0 , 0 ): 0 , Vector2i ( 0 , 1 ): 0 , #etc } The key is chunk coordinate, and the value is the LOD (0 being the highest, 4 being the lowest) Every time I wanted to update the terrain, I would search the scene tree if a particular node was unwanted (again, by looking at the name) and then generating the rest of the ones wanted. This way would not work with LODs, since some chunks may still exist, but may have to change LOD depending on where the player is. So I made use of the dictionary and also created a new one that would store the chunks that I want created. It would loop through the dictionarys, checking certain conditions, and the terrain would be updated. All this looping is somewhat inefficient, and did cause some lag spikes, so I will try to fix that next devlog by only checking the chunks that would be affected based on which way the player moved. To help with the looping, I created chunk and lod lookup tables, that can be offset based on the players_position. These lookup tables are only changed when the render distance is changed, so the same calculation doesn’t have to run hundreds of times in 16ms (60 fps)."}, {"post_id": 57389, "ts": "2026-08-29T15:03:50Z", "hours": 3.8103, "text": "Devlog 13 - LOD template I basically deleted all the old code, and started over, by making a function where the noise will be given to the vertex shader, and one that will generate the actual flat mesh for it (which is going to be changed by the vertex shader). I made the template for making flat planes with different levels of detail (LOD), which will be changed by the vertex shaders, applying the noise to the mesh. I created a new script called lod.gd and gave it a class name, so that I can call multiple instances of it in the main terrain generation program. Every time the program wants to make another chunk, I have to pass the arguements: resolution - what ive defined as a synoymn of LOD chunk_pos - where the chunk is The function then loads an ArrayMesh from a pre-generated list of possible meshes and creates a new MeshInstance3D node to display it. Extra stuff I also added player coords and chunk position in the debug_screen :)"}, {"post_id": 56938, "ts": "2026-08-28T23:24:46Z", "hours": 4.2589, "text": "Devlog 12 - General updates 3.0 I PROMISE THIS IS THE LAST ONE GUYS 🙏 Performance Stats I added a little HUD showing the FPS, the time it takes to make one frame (has to be below 16.67ms (60fps) or there will be noticeable lag), and the memory usage. Lighting, Shadows, and World Environment I slightly changed the shadow bias and normal bias so that shadow artifacts are to a minimum. On top of that, I set it so that shadows aren’t cast for the terrain, which unintentionally handles with some of the artifacts, whilst keeping the “shadows” by illuminating the terrain depending on where the DirectionalLight3d is, making the “shadows” reponsive to a future day-night cycle. Also the volumetric fog and lighting looks better Camera Issues 2.0 So previously I had the player hide() when you go into first person, but that also effects the shadows. So instead I made the visor disappear when you go into first person. But then there was another problem. The head would move during the idle and walking animations, which is quite distracting and could be problematic for some players. So I stopped the animtions whilst in first person. It is a very rudimentary fix, since players can look at their shadows and see the lack of animation. Furthermore if I want to add multiplayer in the future, it’ll look very weird. Performance checks In preparation of the biome generation, I wanted to make sure the performance is fine. It takes a bit for the terrain to generate at the start, but thats common across nearly every game. And this will be lightened a bit when I implement LODs. Once the game is running, it runs relatively fine, except with (very quick) lag spikes when the chunks update. To address this, I’m planning of offloading some of the terrain generation to the GPU, which can calculate normals a LOT more effeciently and quicker than the CPU. Current, the CPU calculates all the vertices, indices, normals, and then compiles it into an ArrayMesh , which is given to the GPU for rendering. This can put a lot of strain on the CPU, especially later down the line, so it’s better and more effiecient if the GPU does the very repetetive calculations, by making it do all the normal calculations, including other stuff."}, {"post_id": 56302, "ts": "2026-08-28T01:02:37Z", "hours": 5.1292, "text": "Devlog 11 - General updates 2.0 Editor Tools!! - (to see the terrain in the editor) So in a previous devlog, I think I talked about how I added @tool in my terrain generation program to be able to see it in the editor. Once I made it dependent on the player position, it didn’t generate in the editor because the player wasn’t loaded in. So now I made it so that if the script was running while the editor (not the game) is open, the terrain would generate around (0, 0) based on how ever big the render distance is. Also I made it so that if you tweak the value of any of the primary noise settings in the editor, it updates in the editor. On top of that, I set the viewport to display wireframe so that I can see the triangles at different resolutions, which is where I came across:…. FLOATING POINT ERRORS!!! (yay ) I noticed that if I set the resolution to a decimal value that was not a power of 2, the triangles would be off by some amount, causing neighbouring triangles to overlap each other, causing normal and collision problems. The resolution variable is going to be eventually used for LODs, so since I’ll be the only setting it, I’ll just make sure to use a value thats a power of 2 The reason why this happens is because 16 (my chunk size) can be multplied and divided by 0.125 (2^-3) evenly to create an integer, compared to 0.1 which results in 1.6. Any smaller power of two is rounded it to the nearest 3dp, so 0.0625 (2^-4) doesn’t work. Camera Issues So I made functionality with the camera where you can scroll to zoom the camera in and out, and if you scroll far enough in, you’ll be in first person, much like how it works in Roblox. There was one problem though. Since the material for the visor on the player model was somewhat transluscent, your view would get darker. Also, you could free look inside the helmet, looking at the areas I wasn’t bothered to model and texture hadn’t modelled. So I disabled that in first person. The biggest timewaste of my life In an attempt to offload some of the generation to the GPU for more effecient parallel processing, I tried to figure out which parts of the algorthim were going to be handled by the CPU and GPU. There were some that had to be handled by the CPU, and there was no choice about those, and they were: collisions and figuring out what chunks should be rendered. At first I thought, how about I offload nearly everything to the GPU, including the noise function. Then I learnt that FastNoiseLite didn’t exist in .gdshader . So I did what any normal person would do, and CODE PERLIN NOISE BY HAND. I spent HOURS learning everything my dumbass could about it: vectors, normals, gradients, deviation, erosional generation, and finite difference approximation. At least I probably learnt something useful for FSMQ 🤷 (a British maths exam most students do in yr11 along with their other GCSEs)."}, {"post_id": 55266, "ts": "2026-08-26T23:25:21Z", "hours": 4.5936, "text": "Devlog 10 - General updates Alright, so ik I said I would work on the procedural terrain, but instead I worked on:… Debugging Tools!! (yayy! ) When tab is pressed, it toggles on debug mode, where all meshes turn into wireframes (to check LOD) and chunk boudaries are shown. There are problems with chunk boundaries not despawning when the terrain its on is gone, but that’s fixed when you toggle debug mode again :). I could fix it but icba I have other stuff that needs to be prioritsed. Resizabile UI So before, if you resized the window, the pause menu and settings menu would be offset from the centre and wouldn’t scale with the window. Now when you scale it, the pause and settings menu stay in the centre and scale accordingly. (the flickering in the video is just an artifact created by the godot editor, and will apparently be fixed once exported)"}, {"post_id": 55025, "ts": "2026-08-26T13:34:07Z", "hours": 7.725, "text": "Devlog 9 - Player Animation!! Walking and Idle Animations I finished a basic walking and idle animation for the player. The walking animation is also somewhat inspired from the kerbals from KSP. Both the animations are kinda choppy, especially when the animation loops round, but frankly icba I didn’t have enough time to fix them rn (mbmb 😭 ). Thankfully the walking animation is timed properly so that the player doesn’t look like its sliding around. Camera updates I added functionality to the camera where you can freelook around the player when holding the right mouse button. Once released, it goes back to the normal position (motion is lerped). Prepartions for next steps For the next steps, I want to go back to the terrain_generation program and start to add variation across the world (like biomes, mountains, etc.). I’m also looking to optimise it, making it generate terrain and collisions faster in prepartion for any future implementation of faster travel. So I added functionality that can allow me to make LODs, which will likely be implemented next devlog."}, {"post_id": 53506, "ts": "2026-08-24T02:34:01Z", "hours": 9.7758, "text": "Devlog 8 - Player Model and other assets! Player Model I finished with texturing, rigging and weight painting. Next Step is to make the walking and jumping animations. Worked on the settings menu I updated the setting menu layout to account for different settings I’ll add in the future Stupid Bugs So when trying to break the terrain generation, I set the speed of the player to like 300 (which it will never be in the game except when in a space ship) but when I tried to do that, the game kept crashing, spitting out an error saying that something didn’t exist. It was coming from my unload_terrain() function. Basically how it works is it checks for all the instances of the MeshInstance3D node, and checks the name of it. For every chunk that is created, I assigned a unique name to it on creation based on the x and y coordinates of it. The function would checking all the nodes, and seeing which ones were out of the “ collision_chunk_size ” radius, and then would delete them. But when going super fast, the processing of things got all weird, meaning that when it tried to delete a chunk, and if it didn’t exist, it would crash. So I added a simple if statement if len(child_name_array) > 2: (basically it would check if the length of the name was long enough to see if there was the coord data). Stupidly I wrote the greater than sign the wrong way round, which led to me being stumped for SO long on why the terrain was just not unloading. tldr: > was the wrong way round and cost me hours."}, {"post_id": 48656, "ts": "2026-08-17T04:20:08Z", "hours": 6.7203, "text": "Devlog 7 - Chunks # 2: PROCEDURAL GENERATION DONE (mostly) Bugs Managed to fix all the bugs related to this part of terrain generation. Weird chunk errors There was an if statement (I changed it out for something else that’s more efficient) that was like: if abs(player_position.x - chunk_pos.x) > collision_chunk_size or abs(player_position.y - chunk_pos.y) > collision_chunk_size This logic error create weird stuttering issues and lag. The fix was to switch or with and . Normals DEFINITELY the bane of my existence. I know roughly what normals are due to me doing 3D modelling/rendering, but I have no clue how it actually works. And plus, I’ve barely covered the maths I need for this in school, so I spent sooo much time (much of which wasn’t recorded) just researching about normals and how they work. I think that definitely helped me find a solution to the annoying chunk borders and random artifacts found inside each chunk. Chunk Sizing I stupidly and randomly changed the chunk size from 16 to 10, which worked completely fine, except for the fact that the player script was still using the 16x16 chunk system, causing the generation to lag behind, eventually leading to the player falling off the map. New Features There were also some ✨ features ✨ that I added. Colour I added colour to the world, and if I match it to the fog and sky, I think it would look AMAZING I will make it so that the colour does vary across the planet. Player I added the rig and refined the topology for animation."}, {"post_id": 47230, "ts": "2026-08-15T00:41:31Z", "hours": 7.1208, "text": "Devlog 6 - Chunks # 1 Previously, I had it so that the entire world was one big mesh, that could not be expanded without unloading and reloading the whole thing and more. This is obviously very inefficient, especially if I want the terrain to load in and out based on where the player is. Chunks is the answer to that. Split the world into chunks of your choice (I chose 16x16), and load/unload just the chunks you need to, not the whole thing. It seemed easy for me at first, clearly it wasn’t (the #1 for the header, ik this isnt gonna be the only devlog on this 😭 ). Bug 1 - The Normals aren’t normal Last devlog, I talked about calculating the normals, which went smoothly… For the old mesh… You see, to calculate normals, you need the vertices surrounding the vertex your trying to find out, and with chunks, that meant every 16 vertices, the normals were being calculated incorrectly, causing seams to be found in the terrain. However, since we did calculate the normals (for the most part) some pretty nice shadows have been cast on our terrain. Despite it being a bug, it is useful to find out where the chunk boundaries are, which is EXTREMELY useful for debugging, so I haven’t tried fixing it just yet. Bug 2 - Not so Good Performance After dividing the terrain into chunks, and making new chunks generate when the player moved into a new chunk, I tested it out. And every time I tried to cross a chunk border, there would be a huge lag spike. This would be caused by the fact the game prioritised the generation of chunks instead of the game. Thankfully I was able to make it so that the chunks would load whenever the processor was ready, to make sure not to overload it too much. Bug 3 - (Lack of) Collisions Another reason why chunks are useful is for limiting the area with active collisions. When the terrain was one big mesh, the entire mesh had active collisions, which would all be checking if something hit it, which is very resource intensive. Which is why I limited the area with collisions to a small radius around the player. While coding it, many logic erros came up, such as one that caused the collisions to just not work."}, {"post_id": 46583, "ts": "2026-08-13T22:19:41Z", "hours": 8.0178, "text": "Devlog 5 - Procedural Terrain (FINALLY!!) I made a start at making the procedural terrain, made some progress with the player model, and with configuring the basic shaders of the game. Elephant in the Room - Procedural Terrain Technically calling it procedural terrain is cheating a bit, cos really all it is right now is perlin noise applied to each vertex’s height. And with that, you can change the shape of the terrain by changing the values of some variables, like the seed, frequency, and octaves. I exported these variables so I could change them in the editor, and added @tool at the start so I can see it in the editor. I’m starting to work on a chunk system at the moment, which will load and unload chunks of the world as the player moves about. Player Model I finished modelling the player (added this version to the game) and added the bones for rigging, except when I move the arm bone, the helmet deforms, so next time I will be doing some weight painting Thankfully UV unwrapping is done as well so I should be able to texture everything before the next devlog. Also, addressing my last devlog, I said Lapse wasn’t syncing with hackatime. Turns out, if I just told it to create a new project called Celestial (which is what my project is called on hackatime), it’ll just add the time to it, so thats amazing!!! The WorldEnvironment Node I accidentally deleted my old configuration of this node while experimenting with stuff, and so I made some changes to the shading of the world. Next up is to recalculate all the normals of each triangle so shadows can be cast properly. I tried using SSAO, but every time I used that to make some sort of shadow, it changed depending on where the camera was and it made the terrain very pixelated. As you can see in the video, you can see the outlines of the terrain. That is because of the volumetric fog added. It sounds resource intensive, so if it starts to lag out my game I might remove it, which is a shame cos it looks really nice."}, {"post_id": 45513, "ts": "2026-08-12T01:47:27Z", "hours": 6.4792, "text": "Devlog 4 - A little bit of a few things I mostly did a combination of small bits, which is probably bad in terms of github commits and actual progress, but at least it’s not burning me out because I’m doing whatever part of the project I fancy at the time. UI I spent most of the time making a (hopefully) futuristic(?) looking pause menu that can also redirect you to a settings page, where I’m planning to hold the settings for terrain generation for the player to manipulate. Much of this time was spent experimenting with different Control nodes, finding out what they do and what they’re helpful for and manipulating the styles of them. I ended up with a style shown below 👇👇👇 Player Model I think I’ve finalised on a particular style, now I basically just have to make it and then texture it. The sad thing is that for some reason lapse doesn’t recognise my hackclub project anymore (already logged 5+ hrs on lapse), so all the time I spent on Blender wasn’t actually logged. If someone could please tell me how to fix this or if theres an extension for blender that would be SO helpful 🙏. Extras I also added the devlogs to my repository, it should appear there when I next commit, which should be soon!! I realise that the popular devlogs have assets from the get-go, so I probably might focus more on that, despite lapse not working if I wanna record time on Blender or Affinity. Again, if someone could please tell me if something is up with lapse or if there’s an extension that I can download for Blender or Affinity, that would be SOO helpful!! 🙏"}, {"post_id": 44908, "ts": "2026-08-10T23:37:53Z", "hours": 2.1228, "text": "Devlog 3 - Flat Plane I know this sounds INCREDIBLY trivial, but I finally figured out how to make a flat plane in Godot, that can be used to make an actual terrain. There were 2 main ways that I could have used to make this: Method 1: I can use a PlaneMesh and then subdivide it down into triangles. Then use vertex shaders or custom scripts to displace the plane as a whole based on noise. It is faster to make the flat plane using this method since you give Godot most of the control over the tessellation, and the individual vertex placement. This means however that it is a lot harder to load and unload certain parts of the terrain, and it is generally harder to add noise to the terrain since you do not have control over each vertex. Method 2: I can use an ArrayMesh , where I create the grid from scratch, telling Godot how to connect every single vertex to create triangles. The downside to this is how long this took. I know it seems short compared to my first devlog (I think the main reason I took so long in that one was not only because I was learning Godot, but it was also because I was experimenting with player models on Blender but hopefully now I’ll be more time efficient) but it is still more time consuming to tell Godot how to connect each and every vertex. I was in fact so stumped on how to go about doing this that it suddenly came to me when I was playing with my little cousin. I even noted down how to do it on my phones notes app (excuse my bad handwriting I was in the car writing with my finger) :/ Despite it being longer to setup, it is overall better for the needs of my game, since I’ll not only need to be able to change the height of each vertex based on a heightmap, but it can also aid with making biomes, by adding custom values to each vertex, which is simply not possible with PlaneMesh . It is also easier to load and unload certain parts of the mesh, and it is better for larger maps, since your CPU isnt doing all the hard work of choosing all the vertices and indexing them. In order to make the actually interesting part of the terrain (which btw I haven’t done in this devlog, I guess this is just like a future plans part) I can use either vertex shaders or custom scripts to make noise in the terrain. Both of these have their respective use cases, and I wouldn’t be able to say one is better than the other for my case. Vertex Shaders: GPU based no collisions (purely visual) written in Godot Shader Language (which is written in C, which is terrifying for me who practically only knows Python ( GDScript and Python are similar enough for me)) Custom Scripts: CPU based can create collisions (actually changes the vertex’s height) written in GDScript (happy days (ik I can write it in C# , but I’m staying far away from that)) Despite my fear of anything not similar to Python , I will still need to use vertex shaders. And I will explain that in my next devlog because this is getting too long. Now onto my struggles incredible skill when making a.. flat plane in Godot. I chose to do Method 2, because of it’s functionality later down the line. But that means I have to tell Godot what vertices to make, and how to connect them up. Obviously that was as simple as could be.. (you can see my failures in the screen recordings below)"}, {"post_id": 44630, "ts": "2026-08-10T15:03:15Z", "hours": 1.7508, "text": "Devlog 2 - One Lone Triangle I spent 2ish hours trying to make a triangle. In GDScript.. Absoutely terrible progress. I see people on Stardance making whole ass projects in 2 hours, and I’m spending those 2 hours making a simple triangle. I have no idea why decided to do a game with procedural terrain generation as my FIRST Godot project. I somewhat understand the theory behind procedural generation, mainly from watching a video on the breakdown of Minecraft’s code when I was like 10, but yeah 🤷 Unfortunately, I have no clue how to do it in practise.. so I guess hours of looking through the Godot docs awaits me yay -_-. (jk the docs are extremely helpful tysm godot 🙏)"}, {"post_id": 43355, "ts": "2026-08-08T15:43:46Z", "hours": 12.8333, "text": "Devlog 1 - Player Movement Okay I know what your thinking. 12 hours for just player movement. Surely you must be wasting time just to get as much stardust as possible. The thing is.. I’ve never used Godot before. Everything from the node tree, to project settings was all pretty much new to me. I should have honestly done the WarioWave Godot mission thingy, so that I would have at least been fimilarised with how Godot worked in 3D. And here I am thinking about making a game where you explore a procedurally generated world. Never before have I touched Godot, and I’m dreaming of making a game with procedural terrain, like in Minecraft or No Mans Sky. Time Waste No. 1 - Learning Godot I had to look through the docs just to figure out how to assign a key to going forwards, mind you all the code needed is given to you when you use the PlayerCharacter3D class. This is on of the many things I struggled with in Godot. 😭 Time Waste No. 2 - Experimenting with player models in blender I experiemented with different styles of player models to use in the game, and I landed on one inspired from the infamous space game Kerbal Space Program. Time Waste No. 3 - Being petty about a camera system 📷 I think this is what took up most of my time. As soon as I made a moveable player that doesn’t fall through the ground (a very quickly made glorified cube in blender), I thought about adding a third person camera. I initially thought of making it toggleable, like in Minecraft, where you press F5, it toggles between first, second(?) and third person. But you can’t change the distance away the camera is from the player in third person. Besides, my stupid ass made it so that each time you pressed F, the camera would keep zooming out endlessly instead of toggling between first and third person. So instead I made it zoomable, like in Roblox. First I tried to manually change the offset based on the scroll wheel (that took me so much time because I had no clue how to get inputs from the scroll wheel). But that posed a problem, which was that the player could clip through walls. Then I found there was a literal node called SpringArm3D to do all of this for me 😭 And its so useful, like I can change how much it zoom’s out by my just changing one variable, and it automatically detects collisions an stops clipping through them. This may seem like somehting that is really basic to some of you who have actually cared to read this far (ty btw :)) but this was crazy for me. And now, I realised you can’t orbit around the camera without the player moving. But that’s something to add next time 🤷 lmao this feels like smth to convince ppl that i wasnt afk or smth to farm stardust. i PROMISE im not trying to farm them, although i would love to get some, im not trying to cheat the system guys 😭"}]...
|
Title: Worlds Unbound - Terrain Engine by @alpeka Title: Worlds Unbound - Terrain Engine by @alpeka | Stardance
Devlogs:
Devlog 1 - Player Movement Okay I know what your thinking. 12 hours for just player movement. Surely you must be wasting time just to get as much stardust as possible. The thing is.. I’ve never used Godot before. Everything from the node tree, to project settings was all pretty much new to me. I should have honestly done the WarioWave Godot mission thingy, so that I would have at least been fimilarised with how Godot worked in 3D. And here I am thinking about making a game where you explore a procedurally generated world. Never before have I touched Godot, and I’m dreaming of making a game with procedural terrain, like in Minecraft or No Mans Sky. Time Waste No. 1 - Learning Godot I had to look through the docs just to figure out how to assign a key to going forwards, mind you all the code needed is given to you when you use the PlayerCharacter3D class. This is on of the many things I struggled with in Godot. 😭 Time Waste No. 2 - Experimenting with player models in blender I experiemented with different styles of player models to use in the game, and I landed on one inspired from the infamous space game Kerbal Space Program. Time Waste No. 3 - Being petty about a camera system 📷 I think this is what took up most of my time. As soon as I made a moveable player that doesn’t fall through the ground (a very quickly made glorified cube in blender), I thought about adding a third person camera. I initially thought of making it toggleable, like in Minecraft, where you press F5, it toggles between first, second(?) and third person. But you can’t change the distance away the camera is from the player in third person. Besides, my stupid ass made it so that each time you pressed F, the camera would keep zooming out endlessly instead of toggling between first and third person. So instead I made it zoomable, like in Roblox. First I tried to manually change the offset based on the scroll wheel (that took me so much time because I had no clue how to get inputs from the scroll wheel). But that posed a problem, which was that the player could clip through walls. Then I found there was a literal node called SpringArm3D to do all of this for me 😭 And its so useful, like I can change how much it zoom’s out by my just changing one variable, and it automatically detects collisions an stops clipping through them. This may seem like somehting that is really basic to some of you who have actually cared to read this far (ty btw :)) but this was crazy for me. And now, I realised you can’t orbit around the camera without the player moving. But that’s something to add next time 🤷 lmao this feels like smth to convince ppl that i wasnt afk or smth to farm stardust. i PROMISE im not trying to farm them, although i would love to get some, im not trying to cheat the system guys 😭
Devlog 2 - One Lone Triangle I spent 2ish hours trying to make a triangle. In GDScript.. Absoutely terrible progress. I see people on Stardance making whole ass projects in 2 hours, and I’m spending those 2 hours making a simple triangle. I have no idea why decided to do a game with procedural terrain generation as my FIRST Godot project. I somewhat understand the theory behind procedural generation, mainly from watching a video on the breakdown of Minecraft’s code when I was like 10, but yeah 🤷 Unfortunately, I have no clue how to do it in practise.. so I guess hours of looking through the Godot docs awaits me yay -_-. (jk the docs are extremely helpful tysm godot 🙏)
Devlog 3 - Flat Plane I know this sounds INCREDIBLY trivial, but I finally figured out how to make a flat plane in Godot, that can be used to make an actual terrain. There were 2 main ways that I could have used to make this: Method 1: I can use a PlaneMesh and then subdivide it down into triangles. Then use vertex shaders or custom scripts to displace the plane as a whole based on noise. It is faster to make the flat plane using this method since you give Godot most of the control over the tessellation, and the individual vertex placement. This means however that it is a lot harder to load and unload certain parts of the terrain, and it is generally harder to add noise to the terrain since you do not have control over each vertex. Method 2: I can use an ArrayMesh , where I create the grid from scratch, telling Godot how to connect every single vertex to create triangles. The downside to this is how long this took. I know it seems short compared to my first devlog (I think the main reason I took so long in that one was not only because I was learning Godot, but it was also because I was experimenting with player models on Blender but hopefully now I’ll be more time efficient) but it is still more time consuming to tell Godot how to connect each and every vertex. I was in fact so stumped on how to go about doing this that it suddenly came to me when I was playing with my little cousin. I even noted down how to do it on my phones notes app (excuse my bad handwriting I was in the car writing with my finger) :/ Despite it being longer to setup, it is overall better for the needs of my game, since I’ll not only need to be able to change the height of each vertex based on a heightmap, but it can also aid with making biomes, by adding custom values to each vertex, which is simply not possible with PlaneMesh . It is also easier to load and unload certain parts of the mesh, and it is better for larger maps, since your CPU isnt doing all the hard work of choosing all the vertices and indexing them. In order to make the actually interesting part of the terrain (which btw I haven’t done in this devlog, I guess this is just like a future plans part) I can use either vertex shaders or custom scripts to make noise in the terrain. Both of these have their respective use cases, and I wouldn’t be able to say one is better than the other for my case. Vertex Shaders: GPU based no collisions (purely visual) written in Godot Shader Language (which is written in C, which is terrifying for me who practically only knows Python ( GDScript and Python are similar enough for me)) Custom Scripts: CPU based can create collisions (actually changes the vertex’s height) written in GDScript (happy days (ik I can write it in C# , but I’m staying far away from that)) Despite my fear of anything not similar to Python , I will still need to use vertex shaders. And I will explain that in my next devlog because this is getting too long. Now onto my struggles incredible skill when making a.. flat plane in Godot. I chose to do Method 2, because of it’s functionality later down the line. But that means I have to tell Godot what vertices to make, and how to connect them up. Obviously that was as simple as could be.. (you can see my failures in the screen recordings below)
Devlog 4 - A little bit of a few things I mostly did a combination of small bits, which is probably bad in terms of github commits and actual progress, but at least it’s not burning me out because I’m doing whatever part of the project I fancy at the time. UI I spent most of the time making a (hopefully) futuristic(?) looking pause menu that can also redirect you to a settings page, where I’m planning to hold the settings for terrain generation for the player to manipulate. Much of this time was spent experimenting with different Control nodes, finding out what they do and what they’re helpful for and manipulating the styles of them. I ended up with a style shown below 👇👇👇 Player Model I think I’ve finalised on a particular style, now I basically just have to make it and then texture it. The sad thing is that for some reason lapse doesn’t recognise my hackclub project anymore (already logged 5+ hrs on lapse), so all the time I spent on Blender wasn’t actually logged. If someone could please tell me how to fix this or if theres an extension for blender that would be SO helpful 🙏. Extras I also added the devlogs to my repository, it should appear there when I next commit, which should be soon!! I realise that the popular devlogs have assets from the get-go, so I probably might focus more on that, despite lapse not working if I wanna record time on Blender or Affinity. Again, if someone could please tell me if something is up with lapse or if there’s an extension that I can download for Blender or Affinity, that would be SOO helpful!! 🙏
Devlog 5 - Procedural Terrain (FINALLY!!) I made a start at making the procedural terrain, made some progress with the player model, and with configuring the basic shaders of the game. Elephant in the Room - Procedural Terrain Technically calling it procedural terrain is cheating a bit, cos really all it is right now is perlin noise applied to each vertex’s height. And with that, you can change the shape of the terrain by changing the values of some variables, like the seed, frequency, and octaves. I exported these variables so I could change them in the editor, and added @tool at the start so I can see it in the editor. I’m starting to work on a chunk system at the moment, which will load and unload chunks of the world as the player moves about. Player Model I finished modelling the player (added this version to the game) and added the bones for rigging, except when I move the arm bone, the helmet deforms, so next time I will be doing some weight painting Thankfully UV unwrapping is done as well so I should be able to texture everything before the next devlog. Also, addressing my last devlog, I said Lapse wasn’t syncing with hackatime. Turns out, if I just told it to create a new project called Celestial (which is what my project is called on hackatime), it’ll just add the time to it, so thats amazing!!! The WorldEnvironment Node I accidentally deleted my old configuration of this node while experimenting with stuff, and so I made some changes to the shading of the world. Next up is to recalculate all the normals of each triangle so shadows can be cast properly. I tried using SSAO, but every time I used that to make some sort of shadow, it changed depending on where the camera was and it made the terrain very pixelated. As you can see in the video, you can see the outlines of the terrain. That is because of the volumetric fog added. It sounds resource intensive, so if it starts to lag out my game I might remove it, which is a shame cos it looks really nice.
Devlog 6 - Chunks # 1 Previously, I had it so that the entire world was one big mesh, that could not be expanded without unloading and reloading the whole thing and more. This is obviously very inefficient, especially if I want the terrain to load in and out based on where the player is. Chunks is the answer to that. Split the world into chunks of your choice (I chose 16x16), and load/unload just the chunks you need to, not the whole thing. It seemed easy for me at first, clearly it wasn’t (the #1 for the header, ik this isnt gonna be the only devlog on this 😭 ). Bug 1 - The Normals aren’t normal Last devlog, I talked about calculating the normals, which went smoothly… For the old mesh… You see, to calculate normals, you need the vertices surrounding the vertex your trying to find out, and with chunks, that meant every 16 vertices, the normals were being calculated incorrectly, causing seams to be found in the terrain. However, since we did calculate the normals (for the most part) some pretty nice shadows have been cast on our terrain. Despite it being a bug, it is useful to find out where the chunk boundaries are, which is EXTREMELY useful for debugging, so I haven’t tried fixing it just yet. Bug 2 - Not so Good Performance After dividing the terrain into chunks, and making new chunks generate when the player moved into a new chunk, I tested it out. And every time I tried to cross a chunk border, there would be a huge lag spike. This would be caused by the fact the game prioritised the generation of chunks instead of the game. Thankfully I was able to make it so that the chunks would load whenever the processor was ready, to make sure not to overload it too much. Bug 3 - (Lack of) Collisions Another reason why chunks are useful is for limiting the area with active collisions. When the terrain was one big mesh, the entire mesh had active collisions, which would all be checking if something hit it, which is very resource intensive. Which is why I limited the area with collisions to a small radius around the player. While coding it, many logic erros came up, such as one that caused the collisions to just not work.
Devlog 7 - Chunks # 2: PROCEDURAL GENERATION DONE (mostly) Bugs Managed to fix all the bugs related to this part of terrain generation. Weird chunk errors There was an if statement (I changed it out for something else that’s more efficient) that was like: if abs(player_position.x - chunk_pos.x) > collision_chunk_size or abs(player_position.y - chunk_pos.y) > collision_chunk_size This logic error create weird stuttering issues and lag. The fix was to switch or with and . Normals DEFINITELY the bane of my existence. I know roughly what normals are due to me doing 3D modelling/rendering, but I have no clue how it actually works. And plus, I’ve barely covered the maths I need for this in school, so I spent sooo much time (much of which wasn’t recorded) just researching about normals and how they work. I think that definitely helped me find a solution to the annoying chunk borders and random artifacts found inside each chunk. Chunk Sizing I stupidly and randomly changed the chunk size from 16 to 10, which worked completely fine, except for the fact that the player script was still using the 16x16 chunk system, causing the generation to lag behind, eventually leading to the player falling off the map. New Features There were also some ✨ features ✨ that I added. Colour I added colour to the world, and if I match it to the fog and sky, I think it would look AMAZING I will make it so that the colour does vary across the planet. Player I added the rig and refined the topology for animation.
Devlog 8 - Player Model and other assets! Player Model I finished with texturing, rigging and weight painting. Next Step is to make the walking and jumping animations. Worked on the settings menu I updated the setting menu layout to account for different settings I’ll add in the future Stupid Bugs So when trying to break the terrain generation, I set the speed of the player to like 300 (which it will never be in the game except when in a space ship) but when I tried to do that, the game kept crashing, spitting out an error saying that something didn’t exist. It was coming from my unload_terrain() function. Basically how it works is it checks for all the instances of the MeshInstance3D node, and checks the name of it. For every chunk that is created, I assigned a unique name to it on creation based on the x and y coordinates of it. The function would checking all the nodes, and seeing which ones were out of the “ collision_chunk_size ” radius, and then would delete them. But when going super fast, the processing of things got all weird, meaning that when it tried to delete a chunk, and if it didn’t exist, it would crash. So I added a simple if statement if len(child_name_array) > 2: (basically it would check if the length of the name was long enough to see if there was the coord data). Stupidly I wrote the greater than sign the wrong way round, which led to me being stumped for SO long on why the terrain was just not unloading. tldr: > was the wrong way round and cost me hours.
Devlog 9 - Player Animation!! Walking and Idle Animations I finished a basic walking and idle animation for the player. The walking animation is also somewhat inspired from the kerbals from KSP. Both the animations are kinda choppy, especially when the animation loops round, but frankly icba I didn’t have enough time to fix them rn (mbmb 😭 ). Thankfully the walking animation is timed properly so that the player doesn’t look like its sliding around. Camera updates I added functionality to the camera where you can freelook around the player when holding the right mouse button. Once released, it goes back to the normal position (motion is lerped). Prepartions for next steps For the next steps, I want to go back to the terrain_generation program and start to add variation across the world (like biomes, mountains, etc.). I’m also looking to optimise it, making it generate terrain and collisions faster in prepartion for any future implementation of faster travel. So I added functionality that can allow me to make LODs, which will likely be implemented next devlog.
Devlog 10 - General updates Alright, so ik I said I would work on the procedural terrain, but instead I worked on:… Debugging Tools!! (yayy! ) When tab is pressed, it toggles on debug mode, where all meshes turn into wireframes (to check LOD) and chunk boudaries are shown. There are problems with chunk boundaries not despawning when the terrain its on is gone, but that’s fixed when you toggle debug mode again :). I could fix it but icba I have other stuff that needs to be prioritsed. Resizabile UI So before, if you resized the window, the pause menu and settings menu would be offset from the centre and wouldn’t scale with the window. Now when you scale it, the pause and settings menu stay in the centre and scale accordingly. (the flickering in the video is just an artifact created by the godot editor, and will apparently be fixed once exported)
Devlog 11 - General updates 2.0 Editor Tools!! - (to see the terrain in the editor) So in a previous devlog, I think I talked about how I added @tool in my terrain generation program to be able to see it in the editor. Once I made it dependent on the player position, it didn’t generate in the editor because the player wasn’t loaded in. So now I made it so that if the script was running while the editor (not the game) is open, the terrain would generate around (0, 0) based on how ever big the render distance is. Also I made it so that if you tweak the value of any of the primary noise settings in the editor, it updates in the editor. On top of that, I set the viewport to display wireframe so that I can see the triangles at different resolutions, which is where I came across:…. FLOATING POINT ERRORS!!! (yay ) I noticed that if I set the resolution to a decimal value that was not a power of 2, the triangles would be off by some amount, causing neighbouring triangles to overlap each other, causing normal and collision problems. The resolution variable is going to be eventually used for LODs, so since I’ll be the only setting it, I’ll just make sure to use a value thats a power of 2 The reason why this happens is because 16 (my chunk size) can be multplied and divided by 0.125 (2^-3) evenly to create an integer, compared to 0.1 which results in 1.6. Any smaller power of two is rounded it to the nearest 3dp, so 0.0625 (2^-4) doesn’t work. Camera Issues So I made functionality with the camera where you can scroll to zoom the camera in and out, and if you scroll far enough in, you’ll be in first person, much like how it works in Roblox. There was one problem though. Since the material for the visor on the player model was somewhat transluscent, your view would get darker. Also, you could free look inside the helmet, looking at the areas I wasn’t bothered to model and texture hadn’t modelled. So I disabled that in first person. The biggest timewaste of my life In an attempt to offload some of the generation to the GPU for more effecient parallel processing, I tried to figure out which parts of the algorthim were going to be handled by the CPU and GPU. There were some that had to be handled by the CPU, and there was no choice about those, and they were: collisions and figuring out what chunks should be rendered. At first I thought, how about I offload nearly everything to the GPU, including the noise function. Then I learnt that FastNoiseLite didn’t exist in .gdshader . So I did what any normal person would do, and CODE PERLIN NOISE BY HAND. I spent HOURS learning everything my dumbass could about it: vectors, normals, gradients, deviation, erosional generation, and finite difference approximation. At least I probably learnt something useful for FSMQ 🤷 (a British maths exam most students do in yr11 along with their other GCSEs).
Devlog 12 - General updates 3.0 I PROMISE THIS IS THE LAST ONE GUYS 🙏 Performance Stats I added a little HUD showing the FPS, the time it takes to make one frame (has to be below 16.67ms (60fps) or there will be noticeable lag), and the memory usage. Lighting, Shadows, and World Environment I slightly changed the shadow bias and normal bias so that shadow artifacts are to a minimum. On top of that, I set it so that shadows aren’t cast for the terrain, which unintentionally handles with some of the artifacts, whilst keeping the “shadows” by illuminating the terrain depending on where the DirectionalLight3d is, making the “shadows” reponsive to a future day-night cycle. Also the volumetric fog and lighting looks better Camera Issues 2.0 So previously I had the player hide() when you go into first person, but that also effects the shadows. So instead I made the visor disappear when you go into first person. But then there was another problem. The head would move during the idle and walking animations, which is quite distracting and could be problematic for some players. So I stopped the animtions whilst in first person. It is a very rudimentary fix, since players can look at their shadows and see the lack of animation. Furthermore if I want to add multiplayer in the future, it’ll look very weird. Performance checks In preparation of the biome generation, I wanted to make sure the performance is fine. It takes a bit for the terrain to generate at the start, but thats common across nearly every game. And this will be lightened a bit when I implement LODs. Once the game is running, it runs relatively fine, except with (very quick) lag spikes when the chunks update. To address this, I’m planning of offloading some of the terrain generation to the GPU, which can calculate normals a LOT more effeciently and quicker than the CPU. Current, the CPU calculates all the vertices, indices, normals, and then compiles it into an ArrayMesh , which is given to the GPU for rendering. This can put a lot of strain on the CPU, especially later down the line, so it’s better and more effiecient if the GPU does the very repetetive calculations, by making it do all the normal calculations, including other stuff.
Devlog 13 - LOD template I basically deleted all the old code, and started over, by making a function where the noise will be given to the vertex shader, and one that will generate the actual flat mesh for it (which is going to be changed by the vertex shader). I made the template for making flat planes with different levels of detail (LOD), which will be changed by the vertex shaders, applying the noise to the mesh. I created a new script called lod.gd and gave it a class name, so that I can call multiple instances of it in the main terrain generation program. Every time the program wants to make another chunk, I have to pass the arguements: resolution - what ive defined as a synoymn of LOD chunk_pos - where the chunk is The function then loads an ArrayMesh from a pre-generated list of possible meshes and creates a new MeshInstance3D node to display it. Extra stuff I also added player coords and chunk position in the debug_screen :)
Devlog 14 - LOD chunks ——— OPTIMISATION IS SOO HARDD 10hrs to do practically do something I’ve already done? (i had already made a chunk system in previous devlogs) Well, whilst some of that time was transferring code from my old commits to the current one and making sure it works, most of the time I spent on this devlog was spent on ✨ “optimisation” ✨ Optimisation First of all, I added LODs into the chunk mesh. What this means is that since further away chunks take up less of your screen, the level of detail (LOD) is reduced the further away it is. I had already made the script that handled the creation of those different meshes with different LODs, so in this devlog, I added it to the main terrain generation script, and assigned each LOD to a certain distance, so that any chunk with a certain distance has a certain LOD. In my last version of the terrain generation, I relied on the name of the MeshInstance3d nodes created to identify what chunk they were. I realised when making this updated version that it was prone to failure, since if the node did not exist or a node with the same name were some how added to the scene tree, errors would be raised or at the very least, a logic error would occur. To recetify this, I switched to using dictionaries to house all the information of all the chunks: chunks : Dictionary [ Vector2i , int ] = { Vector2i ( 0 , 0 ): 0 , Vector2i ( 0 , 1 ): 0 , #etc } The key is chunk coordinate, and the value is the LOD (0 being the highest, 4 being the lowest) Every time I wanted to update the terrain, I would search the scene tree if a particular node was unwanted (again, by looking at the name) and then generating the rest of the ones wanted. This way would not work with LODs, since some chunks may still exist, but may have to change LOD depending on where the player is. So I made use of the dictionary and also created a new one that would store the chunks that I want created. It would loop through the dictionarys, checking certain conditions, and the terrain would be updated. All this looping is somewhat inefficient, and did cause some lag spikes, so I will try to fix that next devlog by only checking the chunks that would be affected based on which way the player moved. To help with the looping, I created chunk and lod lookup tables, that can be offset based on the players_position. These lookup tables are only changed when the render distance is changed, so the same calculation doesn’t have to run hundreds of times in 16ms (60 fps).
Devlog 15 - I’m an Idiot For the past 95ish hours, I’ve been working on a way to make procedural terrain for my game. I tried 2 main methods, one centred round the CPU, and one I was building centred around the GPU. The endless chunk seam bugs caused me to burnout/get tired of the entire project, and there was so many stuff (that I won’t really be explaining for the sake of my poor reader’s sanity) leading to me ✨ youtube ✨ I saw this AMAZINGLY smart video by devmar, showing an alternate way of generating terrain. I urge you to watch the video as well, the whole technique is very very clever, and he even goes on to make further videos on making collisions, recalculating normals and adding vegetation, especially if your interested in procedural generation. After watching this video however, I became incredibly frustrated. I spent nearly 100hrs of my summer making this procedural terrain which I know hadn’t gotten anywhere and theres this incredibly smart video from 4yrs ago that pops up on my feed. Welp, now ig i gotta try out this way, and quick cos my parents are on my tail talking about me finishing this project before school starts 🙏 (its my gcse year so ig its valid but still ) Now what I actually did that counted to my time Experimented with vertex shaders, and sending heightmaps to vertex shaders to displace. This however caused immense lag and caused VERY ANNOYING chunk seams. #epicfails
Devlog 16 - AMAZING PROGRESS!! I’ve managed to get a massive 20km render distance with huge mountains and ridges using FastNoiseLite and vertex shaders. I used devmar ’s terrain technique, which he named the “Wandering Clipmap Terrain Technique”. The reason why the technique is called the “ Wandering Clipmap Terrain Technique” is because a flat plane that is subdivided a bunch (to make varrying levels of detail (LODs)) that follows the player. The vertex shaders then offset the heightmap so it gives off the illusions that your moving about in a massive world. All the displacement is done by the vertex shaders, which looks at a heightmap. In the future, I might make this heightmap be generated in gdscript instead of in the inspector, to deal with texture resolutions. Currently, from afar, the terrain looks amazing (except from the fact its not textured) but upclose, you can see rings in the terrain, which is caused by the heightmap’s resolution being too low. In fact each ring is about 8m tall so I really need to fix that 😭 The normals are calculated by just copying the heightmap and setting it ‘as normals’ in the inspector. They also are multiplied by a normal basis matrix, which allows me to configure the specific normal settings. I’ll need to calculate the normals in the fragment shader as well in the future for more convincing shadows, but for the mean time, the vertex shaders should do just fine. I’m planning on adding collisions, then maybe textures, biomes and vegetation soon!!
Devlog 17 - I am incredibly frustrated. No matter what I do it feels like I just can’t get the collisions to work. Basically, I’m trying to fetch the heights from the height map to input into the CollisionShape3D, but the coordinates are always offset in some way or the other. I even used AI my friend to basically rewrite the entire script over and over again, but that didn’t work either. Maybe it’s cos school has started now, and I haven’t been able to spend that much time on this project than I would like to As you can see in the photo, the collision mesh (in blue) is offset from the normal terrain (in white)
Devlog 18 - I am happy once again!! I FINALLY got the collisions to work!! Basically, it looks at the terrain model that is imported into Godot, and aligns the vertices of the CollisionShape3D with it. It also updates its position every time the player moves 1 unit (whatever the size of a quad of the mesh is). Then it looks at the heightmap, looks up the height of its coresponding pixel, multiplies that by the height shader param (2000, like in the vertex shaders), and thats the collision shape done. I noticed while walking around the world, that there were these massive ridges on the terrain. This is due to the lack of precision in the heightmap. The heightmap only has 256 shades of grey, and I need 2000 values. It is quite impossible to make a image file with that much precision, so instead, I’ll make it so that the CPU will just send an array to the vertex shader. Also, I’ve rebranded my project to Worlds Unbound, and this specific Stardance project will just be handling the terrain stuff for the game. p.s, it never goes above 16ms, i think thats probably because i was recording
Devlog 19 - Main Menu Added (and other things)! I spent quite a lot of time making the background for the main menu in Blender. After just copy and pasting the player model used in the game, I went ahead and made the main attraction: ✨ the planet in the background ✨ . My knowledge of noise that I gained from my previous attempts at the terrain generation helped me create the stars in the background, and the texture for the actual planet in the shader editor. I also added a slight atmosphere, which is (somewhat?) noticeable. I also went ahead and updated the shader code. Before, I used to use the visual shaders, since it was quite similar to the shader editor in Blender, which I was familiar with. But then I realised there’s just more flexibility with using GLSL . I can group uniforms in the inspector, making it clearer and less cluttered if I want to add textures in the future, including different images for the same texture (like Ambient Occlusion, Normals, Colours, and Roughness). Thus being able to group those different types images for the same texture was very important for future usability. Thankfully, Godot allows you to see the shader code that is generated from the visual shaders. Unfortunately, it was not readable at all. The generated code used a random(ish) collection of numbers and letters, and it was too long. Look below for the comparision for just the vertex shader, but it was something like 84 lines that was shruken down to 10 for the vertex shader. Even if you account for spaces in the generated code (which then it might be like 50-60 lines) thats a huge difference. So it took quite some time to get it to a readable state. edit: idk why the actual background looks so bumcheeks compared to the banner, hopefully itll be fixed by then 🤞
Devlog 20: GPU noise I found a way to make noise using a Godot addon called FastNoiseLite Runtime Shader . It was apparently identical to the FastNoiseLite in GDScript. So I gave it a try. I knew it was a gamble, given how much time I got left to ship an decent project, but I gave it a try since it seemed interesting. It wasn’t that hard to get the noise working, but to get it to sync with the collisions was a nightmare. In the end, I decided that even though the README stated it was 99.9% the same, the output seed by seed was different. So I decided to scrap it and now I’m going back to the old version with heightmaps. Why did I really want to switch? Because of the limited colour depth in images (has to be 8-bit for GDShader to read), theres not enough heights for each vertex to be at, so every so often, there’s this massive wall. It looks fine from afar, but thats probably because my terrain is 20km x 20km, so of course an 8m tall wall would look fine. (the image is from the addon readme)
Devlog 21 - Ship Prep!!! Colours I added colours to the terrain depending on how high the vertex is. This does create a very harsh border between the two colours, but I didn’t want to learn lerping, ik how to larp enough. Cleaned up my commits My commits were, and probably are still messy, and when I went ahead to revert some changes it said there were errors, but now thankfully that’s all fixed. :) I also updated quite small normals and some technical stuff.
Ships:
— SHIP No.1 — I spent the last couple of months making a model terrain, which I will use for my game that I will continue to build after this competition. My game idea is quite ambitious, and given how long it took for me to get this basic terrain to work properly and well, that won’t even be coming with the extra month added one. I lot of you may be thinking though, what on earth were you doing for 125 hours, when all you came up with is a glorified green and grey piece of paper you could walk on. Well, not only was I learning and using Godot for the first time, it was the first time I learnt anything as complicated as this. I had to wrap my head around complex (at least for me) maths and computer science topics, like vectors and cross product, noise and FBM, TBN model, and UVs, not to mention just the sheer amount of logic I had to get through. It was so tiring to keep getting bugs for the chunking system I had, or the collisions. But thankfully, all that is behind me 😼. I’ll give you a more indepth look into what I’ve done over the past couple months. Devlogs 1-12: This period was the general beginning of my project. Not only was I learning Godot, and watching tutorials on it, I was also spending time on the player character, the camera system, and the world environment. Devlogs 13-15: I tried to implement LODs into my chunks, since the performance was simply too bad. Somehow this made it worse, possibly because of more chunks (the ones at the broder of LOD borders) being forced to be unloaded and loaded back in. Devlogs 16-21: I used my current technique, heavily based from devmars video on youtube about procedural terrain during this period. School had also started, so I spent less and less time on it, being significantly burnt out and tired. So I basically went through 3 iterations of terrain for my game, so that is why it took so long to get to this point....
|
1793004561.5073767
|
1793090961.5073767
|
|
21375
|
STANDTall by @akshay369 | Stardance
|
akshay369
|
3
|
7.0
|
37
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T01:01:00Z", "hours": 2.0, "multiplier": 6.33, "payout": 5, "blessing": "neutral", "text": "I built StandTall, a lightweight system tray utility designed for desk workers to encourage regular movement and help prevent back pain during long working hours. So try this and StandTall", "repo": "https://github.com/akshaykpillai369-max/StandTall", "demo": "https://github.com/akshaykpillai369-max/StandTall/releases/tag/v4.0"}, {"ship_num": 2, "ts": "2026-07-06T13:36:46Z", "hours": 2.0, "multiplier": 3.17, "payout": 5, "blessing": "neutral", "text": "I made the app modern, added more features so it is worth check in out . So try it and StandTall.", "repo": "https://github.com/akshaykpillai369-max/StandTall", "demo": "https://github.com/akshaykpillai369-max/StandTall/releases/tag/v4.0"}, {"ship_num": 3, "ts": "2026-06-29T10:05:50Z", "hours": 3.0, "multiplier": 9.57, "payout": 27, "blessing": "neutral", "text": "I made an application for those who sit more, and it is challenging to look for bugs and test the app", "repo": "https://github.com/akshaykpillai369-max/StandTall", "demo": "https://github.com/akshaykpillai369-max/StandTall/releases/tag/v4.0"}]...
|
[{"post_id": 73372, "ts": "202 [{"post_id": 73372, "ts": "2026-09-25T00:54:27Z", "hours": 1.5414, "text": "Version V4 is live. The major feature in this version is Cursor Inactivity Pause — automatically pauses the timer after five minutes of cursor inactivity and resumes when you move the cursor again. So guys, Try it and always StandTall"}, {"post_id": 23293, "ts": "2026-07-06T05:03:27Z", "hours": 0.7544, "text": "Previously, there was a bug of multiple instances running, now it is solved and new features have been added NEW FEATURES 1, Break Nudges — Full-screen overlay during eye breaks with countdown + Dismiss button. Toggle on/off in Settings. 2, Statistics Dashboard — Tracks stands and eye breaks per day. View today’s totals, all-time totals, and a 7-day bar chart. 3, Tray Tooltip — Hover the tray icon to see remaining time until next stand and eye break (Stand↑ Xm Eye Ym). 4, Auto-Update Check — “Check for Updates” button in Settings queries GitHub releases and notifies you when a newer version is available."}, {"post_id": 22226, "ts": "2026-07-04T16:18:09Z", "hours": 0.5997, "text": "StandTall Pro is now available on Windows, macOS, and Linux! This release features a completely rewritten cross-platform codebase, near-zero startup impact, a first-launch setup window, and standalone packages for all platforms. What’s new 1, 🌍 Cross-platform — works on Windows, macOS, and Linux 2, 🚀 Near-zero startup impact — CustomTkinter now loads only when you open Settings 3, 🪟 First-launch window — settings appear automatically on first run so new users can configure the app 4, 🔒 Single-instance lock — prevents duplicate app instances (works on all OS)"}, {"post_id": 20778, "ts": "2026-07-02T13:59:09Z", "hours": 0.3683, "text": "How to install it correctly 1, Download the zip file from the assets 2, Unzip it 3, Open the exe file 4, It does not show any windows at first; look at the system tray and right-click the application, then select Settings 5, Done. Now you can adjust the remainder"}, {"post_id": 18229, "ts": "2026-06-29T09:43:42Z", "hours": 2.8225, "text": "StandTall Pro is a health-focused Windows desktop utility tailored for desk-bound professionals. Operating quietly from the system tray, it helps mitigate back pain and digital eye strain by prompting users to take physical standing breaks and practice the 20-20-20 rule (looking at an object 20 feet away for 20 seconds every 20 minutes)."}]...
|
Title: STANDTall by @akshay369 | Stardance
Devlog Title: STANDTall by @akshay369 | Stardance
Devlogs:
StandTall Pro is a health-focused Windows desktop utility tailored for desk-bound professionals. Operating quietly from the system tray, it helps mitigate back pain and digital eye strain by prompting users to take physical standing breaks and practice the 20-20-20 rule (looking at an object 20 feet away for 20 seconds every 20 minutes).
How to install it correctly 1, Download the zip file from the assets 2, Unzip it 3, Open the exe file 4, It does not show any windows at first; look at the system tray and right-click the application, then select Settings 5, Done. Now you can adjust the remainder
StandTall Pro is now available on Windows, macOS, and Linux! This release features a completely rewritten cross-platform codebase, near-zero startup impact, a first-launch setup window, and standalone packages for all platforms. What’s new 1, 🌍 Cross-platform — works on Windows, macOS, and Linux 2, 🚀 Near-zero startup impact — CustomTkinter now loads only when you open Settings 3, 🪟 First-launch window — settings appear automatically on first run so new users can configure the app 4, 🔒 Single-instance lock — prevents duplicate app instances (works on all OS)
Previously, there was a bug of multiple instances running, now it is solved and new features have been added NEW FEATURES 1, Break Nudges — Full-screen overlay during eye breaks with countdown + Dismiss button. Toggle on/off in Settings. 2, Statistics Dashboard — Tracks stands and eye breaks per day. View today’s totals, all-time totals, and a 7-day bar chart. 3, Tray Tooltip — Hover the tray icon to see remaining time until next stand and eye break (Stand↑ Xm Eye Ym). 4, Auto-Update Check — “Check for Updates” button in Settings queries GitHub releases and notifies you when a newer version is available.
Version V4 is live. The major feature in this version is Cursor Inactivity Pause — automatically pauses the timer after five minutes of cursor inactivity and resumes when you move the cursor again. So guys, Try it and always StandTall
Ships:
I made an application for those who sit more, and it is challenging to look for bugs and test the app
I made the app modern, added more features so it is worth check in out . So try it and StandTall.
I built StandTall, a lightweight system tray utility designed for desk workers to encourage regular movement and help prevent back pain during long working hours. So try this and StandTall...
|
1793001136.471927
|
1793087536.471927
|
|
26084
|
MagnOS by @ABN | Stardance
|
ABN
|
2
|
15.0
|
71
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T00:52:53Z", "hours": 10.0, "multiplier": 7.34, "payout": 71, "blessing": "neutral", "text": "I made a magnet themed OS called MagnOS. This OS’s standout feature is the ability to flip the polarity of the windows to make them either attract or repel each other. The goal is to let people be able to organize related windows and put them where they want to. I added a switch which toggles window outlines between red and blue, and linked windows can be dragged together. Along with this feature, I also added a scientific calculator, a music player, and a search app. Windows are also scalable now by dragging the corners, allowing even more freedom to the user. So altogether, 5 new features. The most challenging part was getting the magnetism feature working; I couldn’t find any references online, and even after the core function was working, there were a bunch of number tweaks to be made. Generally speaking, I’m proud of making an HTML site that goes above and beyond, expanding on my previous ship for the more limited mission. I’m also proud of some of the intentional choices I made, like adding feedback to windows snapping and creating gradients on the magnetism switches. For anyone who wants to test my project, just head to the demo URL, since it is just a web page you can run in your browser. The magnetism stuff should be pretty intuitive to use, but it can be a bit janky if you spawn many windows on top of each other. Thanks for reading!", "repo": "https://github.com/abn3000/magnos", "demo": "https://abn3000.github.io/magnos/"}, {"ship_num": 2, "ts": "2026-07-06T01:19:48Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a magnet-themed OS, with a red and blue design. I added a welcome window and a notes app, both of which can be dragged around. For some bonus features, I added the ability to drag the app icon, as well as an editable taskbar “To Do” item. The most challenging part of designing this was getting the icon for the app to be draggable without having the app open when dragged. I am proud of this OS, since I have limited experience with HTML, and almost no experience in combining it with JavaScript. To test it out, just head to the attached link (it’s hosted using Github pages).", "repo": "https://github.com/abn3000/magnos", "demo": "https://abn3000.github.io/magnos/"}]...
|
[{"post_id": 73366, "ts": "202 [{"post_id": 73366, "ts": "2026-09-25T00:23:22Z", "hours": 6.8256, "text": "Final Update Scalable Windows It wouldn’t really be useful for productivity if you couldn’t shrink the apps that can stay off to the side, so now they can be shrunk and still attached to other windows! This was definitely the hardest part, and I’m not 100% sure it works in all cases when windows are already magnetized. Snapping Design Previously, I was able to make the windows’ edges change to white when connected. After doing some more Googling, I was able to make a sort of pulse that acts as feedback when the super snaps the windows together (I’m very proud of this). If that’s not enough, it also plays a snap sound now. Search Fix I noticed that some OS’s make their search app replace the current tab, which makes the OS tab go away. I fixed mine to have it open a new tab with your query. End of the Line This will be the final devlog for MagnOS, at least before my first WebOS 2 ship. I’ve added 3 new apps and a big new feature, which I hope Stardancers will enjoy."}, {"post_id": 67028, "ts": "2026-09-13T02:09:47Z", "hours": 2.1383, "text": "Big Update Magnetism Features Click a switch on a window to swap it between red mode and blue mode. Opposites attract, while like poles repel. The main feature of this OS. Calculator Not just a four-function one, but scientific with all the bells and whistles! Music Player Comes with all the basic features you’d expect (except maybe more than one song, but I feel like the song choice is self-explanatory). Next Time I have a search feature that I want to properly flesh out so that it’s actually usable. Also, I want to make scalable windows, but I’ve been having a lot of trouble getting that to be separate from the dragging functionality."}, {"post_id": 25046, "ts": "2026-07-09T00:17:57Z", "hours": 0.7333, "text": "Looks pretty sketchy… Introducing the MagSketch app, which comes with different colours, pen sizes, and even a colour picker (I’m pretty proud of that one). Getting the canvas to work was pretty challenging, but there are plenty of guides online that really helped speed things up."}, {"post_id": 22198, "ts": "2026-07-04T15:35:53Z", "hours": 3.1514, "text": "What a drag… I’ve updated quite a bit since the last devlog, so the windows are now draggable, closable, openable, all that jazz. We also have some editability: the MagNotes app is up and working as a simple notepad, and the to-do list in the taskbar can be updated. One app is a little boring, though, so I think we can step things up in the coming days. The end of WebOS 1 is in sight!"}, {"post_id": 17962, "ts": "2026-06-28T22:28:49Z", "hours": 1.3928, "text": "Are we sure we’re on task right now? The bottom bar is ready, except for that to-do button in the centre. That can be made inputtable and working once I get a bit more in-depth on my JavaScript. Right now, we have a window of content, the taskbar, and a nice screensaver background (this might be a placeholder, but I kind of like it). Moving on to some clickability!"}, {"post_id": 17361, "ts": "2026-06-28T03:37:48Z", "hours": 0.9319, "text": "Welcome! I’ve made the welcome page for MagnOS, including the basics on what it does, and a little introduction to how magnets work. That’s the basic HTML and CSS, but JavaScript (a.k.a. the hard stuff) is yet to come. If this pans out how I hope, I think the OS can really be a cool thing to mess around with, and I might even use the code for my personal productivity!"}]...
|
Title: MagnOS by @ABN | Stardance
Devlogs:
Welcom Title: MagnOS by @ABN | Stardance
Devlogs:
Welcome! I’ve made the welcome page for MagnOS, including the basics on what it does, and a little introduction to how magnets work. That’s the basic HTML and CSS, but JavaScript (a.k.a. the hard stuff) is yet to come. If this pans out how I hope, I think the OS can really be a cool thing to mess around with, and I might even use the code for my personal productivity!
Are we sure we’re on task right now? The bottom bar is ready, except for that to-do button in the centre. That can be made inputtable and working once I get a bit more in-depth on my JavaScript. Right now, we have a window of content, the taskbar, and a nice screensaver background (this might be a placeholder, but I kind of like it). Moving on to some clickability!
What a drag… I’ve updated quite a bit since the last devlog, so the windows are now draggable, closable, openable, all that jazz. We also have some editability: the MagNotes app is up and working as a simple notepad, and the to-do list in the taskbar can be updated. One app is a little boring, though, so I think we can step things up in the coming days. The end of WebOS 1 is in sight!
Looks pretty sketchy… Introducing the MagSketch app, which comes with different colours, pen sizes, and even a colour picker (I’m pretty proud of that one). Getting the canvas to work was pretty challenging, but there are plenty of guides online that really helped speed things up.
Big Update Magnetism Features Click a switch on a window to swap it between red mode and blue mode. Opposites attract, while like poles repel. The main feature of this OS. Calculator Not just a four-function one, but scientific with all the bells and whistles! Music Player Comes with all the basic features you’d expect (except maybe more than one song, but I feel like the song choice is self-explanatory). Next Time I have a search feature that I want to properly flesh out so that it’s actually usable. Also, I want to make scalable windows, but I’ve been having a lot of trouble getting that to be separate from the dragging functionality.
Final Update Scalable Windows It wouldn’t really be useful for productivity if you couldn’t shrink the apps that can stay off to the side, so now they can be shrunk and still attached to other windows! This was definitely the hardest part, and I’m not 100% sure it works in all cases when windows are already magnetized. Snapping Design Previously, I was able to make the windows’ edges change to white when connected. After doing some more Googling, I was able to make a sort of pulse that acts as feedback when the super snaps the windows together (I’m very proud of this). If that’s not enough, it also plays a snap sound now. Search Fix I noticed that some OS’s make their search app replace the current tab, which makes the OS tab go away. I fixed mine to have it open a new tab with your query. End of the Line This will be the final devlog for MagnOS, at least before my first WebOS 2 ship. I’ve added 3 new apps and a big new feature, which I hope Stardancers will enjoy.
Ships:
I made a magnet-themed OS, with a red and blue design. I added a welcome window and a notes app, both of which can be dragged around. For some bonus features, I added the ability to drag the app icon, as well as an editable taskbar “To Do” item. The most challenging part of designing this was getting the icon for the app to be draggable without having the app open when dragged. I am proud of this OS, since I have limited experience with HTML, and almost no experience in combining it with JavaScript. To test it out, just head to the attached link (it’s hosted using Github pages).
I made a magnet themed OS called MagnOS. This OS’s standout feature is the ability to flip the polarity of the windows to make them either attract or repel each other. The goal is to let people be able to organize related windows and put them where they want to. I added a switch which toggles window outlines between red and blue, and linked windows can be dragged together. Along with this feature, I also added a scientific calculator, a music player, and a search app. Windows are also scalable now by dragging the corners, allowing even more freedom to the user. So altogether, 5 new features. The most challenging part was getting the magnetism feature working; I couldn’t find any references online, and even after the core function was working, there were a bunch of number tweaks to be made. Generally speaking, I’m proud of making an HTML site that goes above and beyond, expanding on my previous ship for the more limited mission. I’m also proud of some of the intentional choices I made, like adding feedback to windows snapping and creating gradients on the magnetism switches. For anyone who wants to test my project, just head to the demo URL, since it is just a web page you can run in your browser. The magnetism stuff should be pretty intuitive to use, but it can be a bit janky if you spawn many windows on top of each other. Thanks for reading!...
|
1792993987.5820916
|
1793080387.5820916
|
|
57660
|
Program Framework by @Wiiwhbfidow | Stardance
|
Wiiwhbfidow
|
1
|
25.29
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T00:15:56Z", "hours": 14.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a simple framework that builds on the Single DirectMedia Library (an existing library) which helps to take care of some boilerplate and streamline programming projects. I finished the basics like rendering and a component system, but I plan to add more soon! Attached is a rough design diagram (made in Microsoft Paint)", "repo": "https://github.com/User-Name54321/BPFramework", "demo": "https://github.com/User-Name54321/BPFramework/releases"}]...
|
[{"post_id": 82832, "ts": "202 [{"post_id": 82832, "ts": "2026-10-25T23:44:12Z", "hours": 1.1975, "text": "Today, I polished the library a bit more and expanded the demo. First, I thought about how “game logic” would be executed and tied to the existing framework’s clock. I decided that the easiest way for me to implement this was to create a function pointer which is called every “tick” (a moment in which you want to execute updates, with an ideally constant step time). Second, I removed my reporting/logging implementation. I don’t think it’s worth it to reinvent the wheel for this right now, but in the future, I might pull in libraries like spdlog. I also updated the demo to show how input can result in movement. Uhh, I also fixed a memory leak in which I never cleared the list of sprites to be rendered after each frame, so memory usage would slowly climb, and my fps would slowly drop. That’s an issue no more!"}, {"post_id": 82806, "ts": "2026-10-25T21:26:32Z", "hours": 2.4167, "text": "Yesterday, I worked on setting up a Linux build for BPF. SDL is largely designed to be compatible for a variety of different platforms, so I thought that not at least trying* to do so would be a bit of a waste. I spent way too long tracking down dependencies and setting up WSL, but I finally have a working binary for Linux (minor caveat: the audio wrapper which uses SDL_Mixer may or may not work; I can’t tell if there’s an issue with my virtual environment or with my code."}, {"post_id": 81136, "ts": "2026-10-20T01:04:45Z", "hours": 3.3481, "text": "New functioning audio system In the past few days, I have been working on implementing an audio system that relies on SDL_Mixer, a separate library from SDL. I decided to use SDL_Mixer because I did not want to manually manage the mixing of sounds and management of the different audio streams, like that of which I would need to do if I used SDL’s built in audio tools. I also dropped SDL_image from the library right now because it adds too many dependencies, and I don’t think the additional overhead is needed for my intended functionality right now. In the future, I was looking into incorporating WUFFS, which is a programming language that is built to guarantee memory safety when loading files. (link: https://github.com/google/wuffs ) I wasn’t really sure of what to put for my image, so I put an image of me stepping through and debugging my code to troubleshoot nothing being played. (Spoiler alert: I flipped an operator)"}, {"post_id": 78910, "ts": "2026-10-12T00:30:07Z", "hours": 4.3239, "text": "First, I worked a bit more on my observer system under the hood. Instead of relying on observer objects, the subject just takes a reference to a callback which is intended to be called on the subject’s notify(). The picture is a demo where anytime I press a key it prints “test.” I also went through my code and tried to leave comments which clarify the functions and usage of certain things, which should help to make it more usable. Also, my Git connection keeps breaking, which is enraging!"}, {"post_id": 73362, "ts": "2026-09-25T00:05:25Z", "hours": 0.5894, "text": "I finished wiring up a simple test render which uses the framework’s systems. I also worked a bit on cleaning up some of the code and labelling my intentions/future plans. I also verified that my build configurations were ok, and made sure I had no more memory issues."}, {"post_id": 72486, "ts": "2026-09-23T02:07:10Z", "hours": 6.6931, "text": "I cobbled together a component system which allows for the creation of two types of containers. One strictly contains data, while the other one is slower but can also contain references to other components and functions. I based quite a bit of this on some of the patterns I read in “Game Programming Patterns” by Robert Nystrom, and I really recommend it if you are interested. In addition to that, I had a “small” (massive) memory leak which resulted from me misunderstanding the way SDL handles rendering, so I got it to render stuff and clear the command queue which fixed that. I also started a little bit on a logging system which also uses SDL, but I want to make it more natural to use and more fitting with the way I designed this library."}, {"post_id": 69876, "ts": "2026-09-17T23:50:57Z", "hours": 6.8017, "text": "Started basic window management, input systems, and texture rendering. More soon!"}]...
|
Title: Program Framework by @Wiiwhbfidow | Stardan Title: Program Framework by @Wiiwhbfidow | Stardance
Devlogs:
Started basic window management, input systems, and texture rendering. More soon!
I cobbled together a component system which allows for the creation of two types of containers. One strictly contains data, while the other one is slower but can also contain references to other components and functions. I based quite a bit of this on some of the patterns I read in “Game Programming Patterns” by Robert Nystrom, and I really recommend it if you are interested. In addition to that, I had a “small” (massive) memory leak which resulted from me misunderstanding the way SDL handles rendering, so I got it to render stuff and clear the command queue which fixed that. I also started a little bit on a logging system which also uses SDL, but I want to make it more natural to use and more fitting with the way I designed this library.
I finished wiring up a simple test render which uses the framework’s systems. I also worked a bit on cleaning up some of the code and labelling my intentions/future plans. I also verified that my build configurations were ok, and made sure I had no more memory issues.
First, I worked a bit more on my observer system under the hood. Instead of relying on observer objects, the subject just takes a reference to a callback which is intended to be called on the subject’s notify(). The picture is a demo where anytime I press a key it prints “test.” I also went through my code and tried to leave comments which clarify the functions and usage of certain things, which should help to make it more usable. Also, my Git connection keeps breaking, which is enraging!
New functioning audio system In the past few days, I have been working on implementing an audio system that relies on SDL_Mixer, a separate library from SDL. I decided to use SDL_Mixer because I did not want to manually manage the mixing of sounds and management of the different audio streams, like that of which I would need to do if I used SDL’s built in audio tools. I also dropped SDL_image from the library right now because it adds too many dependencies, and I don’t think the additional overhead is needed for my intended functionality right now. In the future, I was looking into incorporating WUFFS, which is a programming language that is built to guarantee memory safety when loading files. (link: https://github.com/google/wuffs ) I wasn’t really sure of what to put for my image, so I put an image of me stepping through and debugging my code to troubleshoot nothing being played. (Spoiler alert: I flipped an operator)
Yesterday, I worked on setting up a Linux build for BPF. SDL is largely designed to be compatible for a variety of different platforms, so I thought that not at least trying* to do so would be a bit of a waste. I spent way too long tracking down dependencies and setting up WSL, but I finally have a working binary for Linux (minor caveat: the audio wrapper which uses SDL_Mixer may or may not work; I can’t tell if there’s an issue with my virtual environment or with my code.
Today, I polished the library a bit more and expanded the demo. First, I thought about how “game logic” would be executed and tied to the existing framework’s clock. I decided that the easiest way for me to implement this was to create a function pointer which is called every “tick” (a moment in which you want to execute updates, with an ideally constant step time). Second, I removed my reporting/logging implementation. I don’t think it’s worth it to reinvent the wheel for this right now, but in the future, I might pull in libraries like spdlog. I also updated the demo to show how input can result in movement. Uhh, I also fixed a memory leak in which I never cleared the list of sprites to be rendered after each frame, so memory usage would slowly climb, and my fps would slowly drop. That’s an issue no more!
Ships:
I made a simple framework that builds on the Single DirectMedia Library (an existing library) which helps to take care of some boilerplate and streamline programming projects. I finished the basics like rendering and a component system, but I plan to add more soon! Attached is a rough design diagram (made in Microsoft Paint)...
|
1793005001.9867795
|
1793091401.9867795
|
|
62089
|
My first site by @Manu_Gurgel | Stardance
|
Manu_Gurgel
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T00:14:01Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created my first website to introduce myself using HTML and CSS; I had never programmed anything like this before, having previously only trained for C++ programming competitions. At first, I found it quite challenging, but with the help of AI to fix errors and understand how to use certain elements, the site began to take shape. On the site, you can find information about my academic background and a link to Neps Academy, where you can create an account to access programming exercises in various languages (C, C++, Python, etc.). I still think there is plenty of room for improvement—such as adding more information and features, and making it look better and more organized—but for now, this is how it stands.", "repo": "https://github.com/Manu-Gurgel/Teste-1", "demo": "https://manu-gurgel.github.io/Teste-1/"}]...
|
[{"post_id": 73323, "ts": "202 [{"post_id": 73323, "ts": "2026-09-24T21:25:12Z", "hours": 1.035, "text": "I’m thinking about more informations that I could add to the site to make a portifolio"}, {"post_id": 71716, "ts": "2026-09-21T11:24:41Z", "hours": 2.4125, "text": "I’m working on my first website to introduce myself and tell about my programming journey"}]...
|
Title: My first site by @Manu_Gurgel | Stardance
Title: My first site by @Manu_Gurgel | Stardance
Devlogs:
I’m working on my first website to introduce myself and tell about my programming journey
I’m thinking about more informations that I could add to the site to make a portifolio
Ships:
I created my first website to introduce myself using HTML and CSS; I had never programmed anything like this before, having previously only trained for C++ programming competitions. At first, I found it quite challenging, but with the help of AI to fix errors and understand how to use certain elements, the site began to take shape. On the site, you can find information about my academic background and a link to Neps Academy, where you can create an account to access programming exercises in various languages (C, C++, Python, etc.). I still think there is plenty of room for improvement—such as adding more information and features, and making it look better and more organized—but for now, this is how it stands....
|
1792964879.319854
|
1793051279.319854
|
|
64853
|
Smart Temp Fan by @MaxAA | Stardance
|
MaxAA
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T23:36:28Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A fan that turns on once it reaches a certain temperature, the code was a bit challenging but it was really fun to do! It took a lot of patient to do but i am really proud of the final product!", "repo": "https://github.com/aalaqqad0808-star/Smart-Temp-Fan/blob/main/Smart%20Fan", "demo": ""}]...
|
[{"post_id": 73195, "ts": "202 [{"post_id": 73195, "ts": "2026-09-24T15:58:37Z", "hours": 0.4075, "text": "Built and Tested a fan that turns on automatically once it reaches the desired temperature"}]...
|
Title: Smart Temp Fan by @MaxAA | Stardance
Devlo Title: Smart Temp Fan by @MaxAA | Stardance
Devlogs:
Built and Tested a fan that turns on automatically once it reaches the desired temperature
Ships:
A fan that turns on once it reaches a certain temperature, the code was a bit challenging but it was really fun to do! It took a lot of patient to do but i am really proud of the final product!...
|
1792965121.0704808
|
1793051521.0704808
|
|
47285
|
flyos by @Winny | Stardance
|
Winny
|
1
|
3.73
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T23:35:38Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I make a OS called flyos where each state I fly to ( aka click on), it should pop out a function that is suitable for that states.", "repo": "https://github.com/WinnyT/flyos", "demo": "https://winnyt.github.io/flyos/"}]...
|
[{"post_id": 74525, "ts": "202 [{"post_id": 74525, "ts": "2026-09-27T15:44:20Z", "hours": 0.7333, "text": "Because the reviewer screen and my screen are not the same size, we have clicking conflict ( they can’t open the window at “that” states because it’s somewhere else). Therefore, I used css to fixed the pin and the map. The pin will depends on the map image instead of the screen."}, {"post_id": 73341, "ts": "2026-09-24T22:39:09Z", "hours": 0.5661, "text": "I just added the close button, and planning to have each states is a window. Currently, the welcome window is GA xD"}, {"post_id": 67025, "ts": "2026-09-13T02:06:49Z", "hours": 1.3292, "text": "Just completed the drag function but it doesn’t seems to work so well. Changed back ground photo and added top bar time"}, {"post_id": 46664, "ts": "2026-08-14T03:04:42Z", "hours": 0.8914, "text": "Flyos- The OS system that make you want to fly. I just go through 2 part of the tutorial and here is the result. Nothing fancy, just copy - paste cuz I still don’t know how to style my OS yet!"}]...
|
Title: flyos by @Winny | Stardance
Devlogs:
Flyos Title: flyos by @Winny | Stardance
Devlogs:
Flyos- The OS system that make you want to fly. I just go through 2 part of the tutorial and here is the result. Nothing fancy, just copy - paste cuz I still don’t know how to style my OS yet!
Just completed the drag function but it doesn’t seems to work so well. Changed back ground photo and added top bar time
I just added the close button, and planning to have each states is a window. Currently, the welcome window is GA xD
Because the reviewer screen and my screen are not the same size, we have clicking conflict ( they can’t open the window at “that” states because it’s somewhere else). Therefore, I used css to fixed the pin and the map. The pin will depends on the map image instead of the screen.
Ships:
I make a OS called flyos where each state I fly to ( aka click on), it should pop out a function that is suitable for that states....
|
1793004504.209431
|
1793090904.209431
|
|
28240
|
My awesome macropad! by @Shlok_P | Stardance
|
Shlok_P
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T23:07:56Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Made a macropad- Learned a lot about coding and how to make a pcb and solder it", "repo": "https://github.com/shlokrpatel/Shlok-Superpad", "demo": ""}]...
|
[{"post_id": 73345, "ts": "202 [{"post_id": 73345, "ts": "2026-09-24T23:07:15Z", "hours": 0.9333, "text": "Coding some stuff and got it working"}, {"post_id": 26174, "ts": "2026-07-10T20:30:17Z", "hours": 2.3333, "text": "I finally finished my macropad. I troubleshooted my qmk so many times and finally found the problem and fixed with claude. I then spent some time compiling all my files into git and am currently working on the submission"}, {"post_id": 25660, "ts": "2026-07-10T02:16:54Z", "hours": 5.2308, "text": "Absolutely huge day for me. I finished my case after hours of working on it and started on my qmk coding. Coding is sooooo hard. I had to use 3 different websites and some AI to help me and still couldn’t get it right."}, {"post_id": 24790, "ts": "2026-07-08T16:15:31Z", "hours": 4.6169, "text": "First post! I have had some trouble with attaching my timelapses to my project but thanks to some amazing help in the slack I compiled all 3 of my current timelapses into my first devlog. These 3 timelapses include me making my pcb with 9 switches, a oled screen, and a rotary encoder. After I finished with the pcb I spend a lot of time looking at other projects that people made for some inspiration for my case. I finally started making my case and ran into problems with sizing and trying to get a 3 degree tilt on it. I still have to finish my case and will probably seek some help again."}]...
|
Title: My awesome macropad! by @Shlok_P | Stardanc Title: My awesome macropad! by @Shlok_P | Stardance
Devlogs:
First post! I have had some trouble with attaching my timelapses to my project but thanks to some amazing help in the slack I compiled all 3 of my current timelapses into my first devlog. These 3 timelapses include me making my pcb with 9 switches, a oled screen, and a rotary encoder. After I finished with the pcb I spend a lot of time looking at other projects that people made for some inspiration for my case. I finally started making my case and ran into problems with sizing and trying to get a 3 degree tilt on it. I still have to finish my case and will probably seek some help again.
Absolutely huge day for me. I finished my case after hours of working on it and started on my qmk coding. Coding is sooooo hard. I had to use 3 different websites and some AI to help me and still couldn’t get it right.
I finally finished my macropad. I troubleshooted my qmk so many times and finally found the problem and fixed with claude. I then spent some time compiling all my files into git and am currently working on the submission
Coding some stuff and got it working
Ships:
Made a macropad- Learned a lot about coding and how to make a pcb and solder it...
|
1793004928.2093728
|
1793091328.2093728
|
|
29817
|
Gleam by @arth_mi | Stardance
|
arth_mi
|
1
|
31.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T22:29:30Z", "hours": 31.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Gleam is a FastAPI backend driving RGBW strips through a generic plugin API, so effects are built on exposed primitives (color, intensity, dim) rather than hardcoded. The tricky part was getting the architecture right first: syncing modules through a shared clock and separating color/intensity/white as distinct render layers. I’m especially proud of the Ambilight module, which captures HDMI output live and mirrors it onto the strip in real time, fully on-device with no cloud dependency.", "repo": "https://github.com/arthmi/gleam", "demo": "https://gleam-virid.vercel.app/docs"}]...
|
[{"post_id": 72828, "ts": "202 [{"post_id": 72828, "ts": "2026-09-23T20:31:06Z", "hours": 10.8583, "text": "Just finished a new module! The module is called audio_reactive and, as its name suggests, it reacts to the audio input provided (system default if parameter = None). It lights up the selected target as the sound gets louder. It also features animations to make sudden transitions feel smoother.Here are the parameters for this module: device: Audio input device name, or a portion of it (empty = system default) color: Color of the light min_intensity: Intensity when the input is silent [0.0 - 1.0] max_intensity: Intensity at maximum volume [0.0 - 1.0] sensitivity: Gain applied to the normalized level [0.1 - 5.0] attack: Rise time in milliseconds (how quickly the light reacts to a louder sound) release: Fall time in milliseconds (how slowly the light fades when the sound drops)"}, {"post_id": 45228, "ts": "2026-08-11T15:51:49Z", "hours": 3.2964, "text": "Rewrite the entirety of the Ambilight module for better functionalities and performances. I wrote an advanced algorithm to get a smoother result in addition to more parameters : device_index edge reversed band_depth_percent weight_exponent sample_overlap_percent saturation_boost -temporal_smoothing_tau The main functionalities added are: Advanced Color Averaging: Improved methods to calculate smarter average colors, such as sampling larger color bands or allowing LEDs to influence adjacent colors. Temporal Smoothing: Introduction of “temporal_smoothing_tau” to ensure smoother, more natural color transitions over time. Enhanced Immersion: Addition of “saturation_boost” and “weight_exponent” parameters to deliver a more vibrant and immersive visual experience. For instance, the colors on the left terminal simulate the final result that would handle the left edge of the screen (using default parameters)."}, {"post_id": 34682, "ts": "2026-07-25T16:23:38Z", "hours": 16.5069, "text": "Just finished the main functionalities of the ambilight module of my LED controller. It takes a stream from the edge of the screen (HDMI to USB, for example), then processes each frame to get the average color of the surrounding area. I’m still working on a blur effect that would give a less detailed result for a better experience. (Sorry for the bad recording quality, this was made on an old laptop.)"}]...
|
Title: Gleam by @arth_mi | Stardance
Devlogs:
Jus Title: Gleam by @arth_mi | Stardance
Devlogs:
Just finished the main functionalities of the ambilight module of my LED controller. It takes a stream from the edge of the screen (HDMI to USB, for example), then processes each frame to get the average color of the surrounding area. I’m still working on a blur effect that would give a less detailed result for a better experience. (Sorry for the bad recording quality, this was made on an old laptop.)
Rewrite the entirety of the Ambilight module for better functionalities and performances. I wrote an advanced algorithm to get a smoother result in addition to more parameters : device_index edge reversed band_depth_percent weight_exponent sample_overlap_percent saturation_boost -temporal_smoothing_tau The main functionalities added are: Advanced Color Averaging: Improved methods to calculate smarter average colors, such as sampling larger color bands or allowing LEDs to influence adjacent colors. Temporal Smoothing: Introduction of “temporal_smoothing_tau” to ensure smoother, more natural color transitions over time. Enhanced Immersion: Addition of “saturation_boost” and “weight_exponent” parameters to deliver a more vibrant and immersive visual experience. For instance, the colors on the left terminal simulate the final result that would handle the left edge of the screen (using default parameters).
Just finished a new module! The module is called audio_reactive and, as its name suggests, it reacts to the audio input provided (system default if parameter = None). It lights up the selected target as the sound gets louder. It also features animations to make sudden transitions feel smoother.Here are the parameters for this module: device: Audio input device name, or a portion of it (empty = system default) color: Color of the light min_intensity: Intensity when the input is silent [0.0 - 1.0] max_intensity: Intensity at maximum volume [0.0 - 1.0] sensitivity: Gain applied to the normalized level [0.1 - 5.0] attack: Rise time in milliseconds (how quickly the light reacts to a louder sound) release: Fall time in milliseconds (how slowly the light fades when the sound drops)
Ships:
Gleam is a FastAPI backend driving RGBW strips through a generic plugin API, so effects are built on exposed primitives (color, intensity, dim) rather than hardcoded. The tricky part was getting the architecture right first: syncing modules through a shared clock and separating color/intensity/white as distinct render layers. I’m especially proud of the Ambilight module, which captures HDMI output live and mirrors it onto the strip in real time, fully on-device with no cloud dependency....
|
1793004957.4157271
|
1793091357.4157271
|
|
45734
|
LaserRay by @jonas_gaden | Stardance
|
jonas_gaden
|
2
|
21.32
|
249
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T22:09:15Z", "hours": 12.0, "multiplier": 11.1, "payout": 129, "blessing": "neutral", "text": "This update completely changes the way my game works. By introducing live service integration using Supabase everybody is now able to create, share and publish levels to every other player. While the content of the last ship was very limited, my app now has transformed into a platform, open for everyone to create new content within a few minutes. But only that would be not enough! That’s why i also added a brand new step-by-step interactive tutorial, to give everyone the ability to understand the game right of the start. Now all thats left for me to say: Have fun and please <3 give me a good score and let me know what to add next", "repo": "https://github.com/agentquackyt/LaserCircuit", "demo": "https://agentquackyt.github.io/LaserCircuit/"}, {"ship_num": 2, "ts": "2026-08-24T22:03:22Z", "hours": 9.0, "multiplier": 12.89, "payout": 120, "blessing": "neutral", "text": "LaserCircuit ist is clever out-of-the-box thinking game, made and optimized for mobile use. This version includes 12 level, handcrafted by myself, with various different difficulties. For some problems you will need to think out of the box, but you will figure it out. And you only need 6/9 to unlock Stage 2", "repo": "https://github.com/agentquackyt/LaserCircuit", "demo": "https://agentquackyt.github.io/LaserCircuit/"}]...
|
[{"post_id": 73602, "ts": "202 [{"post_id": 73602, "ts": "2026-09-25T13:39:28Z", "hours": 0.3169, "text": "I improved the tutorial flow, now saving the tutorial state"}, {"post_id": 73333, "ts": "2026-09-24T21:59:10Z", "hours": 2.5467, "text": "Final devlog This is the final devlog before shipping, packed with a load of new and improved features, including but not limited to: a new Tutorial, introducing you into the core features an updated UI to ensure the grid has always the aspect ratio 1/1 updated the symbols used on the game board to improve readability shareable links to community levels, like this one => “Traffic Jam” New levels And so much more …"}, {"post_id": 73068, "ts": "2026-09-24T09:52:51Z", "hours": 1.71, "text": "The discover community levels screen is now fully working, making this the first time the new live service intergration is fully finished. I will do another polishing devlog, where i will add a tutorial on how to play and refine my UI further"}, {"post_id": 72874, "ts": "2026-09-23T22:24:38Z", "hours": 1.2708, "text": "I improved the editor ui and added a few useful features and indicators. I also force reload the site now, should the user decide to log out (As the editor is only accessible when signed in). Next i will add the new table in the backend database and then build both the own level tab as well as the discover tab"}, {"post_id": 72791, "ts": "2026-09-23T18:59:51Z", "hours": 1.7267, "text": "I am now working on the first version of the community level editor. Currently it works more or less, but the live service integration is not done yet. I decided to separate the normal levels from the user levels (different database table) but its not wired in as of right now"}, {"post_id": 72576, "ts": "2026-09-23T08:31:51Z", "hours": 0.7675, "text": "I worked on improving my GUI, starting with the Discord login screen. I am quite happy with the outcome, and the visual look in general. Next i will start working on the level editor itself and an level discovery screen after that"}, {"post_id": 72430, "ts": "2026-09-22T22:46:53Z", "hours": 1.9322, "text": "I am currently working on implementing login via Discord for user generated levels. I am also introducing a more structured way for the app to work, however its a slow process. Atleast i got the basic version of the login with Discord working"}, {"post_id": 71951, "ts": "2026-09-21T20:45:42Z", "hours": 1.6481, "text": "I am currently migrating the level structure to a data-as-backend solution, coming from a static, file-based level system. This give me the ability quickly add new levels, modify and exchange old ones and add time-limited levels. I am also reviewing the option to create an level builder with sharable levels, but this is only an idea i might come back to in the future."}, {"post_id": 54101, "ts": "2026-08-24T22:00:25Z", "hours": 0.6958, "text": "I added many new levels as well as building a stable release version and setting up a new README file. This will be the final devlog before my first ship, i hope you like it"}, {"post_id": 54042, "ts": "2026-08-24T20:02:07Z", "hours": 0.8731, "text": "I added more levels as well as improving the completion UI. To improve the workflow, i added an editor to quickly develop new levels (i used the File System API for the first time, allowing me to edit files directly in the browser without handeling upload and download) https://lapse.hackclub.com/timelapse/-edas1fyH1rh"}, {"post_id": 53978, "ts": "2026-08-24T18:05:36Z", "hours": 1.2856, "text": "I added a new layout for the finish screen, brought the level title and id (calculated from “(id/3)+1”+.+”(id%3)+1”) to the game screen and overall improved the UI"}, {"post_id": 53650, "ts": "2026-08-24T09:44:17Z", "hours": 1.3772, "text": "after quite a good amount of pain, i finally figured out a way to save the highscores and create “sets” of 9 levels, which you need to complete 6/9 to unlock the next set. My next session will be to clean up the UI and optimize both for PC as well as mobile"}, {"post_id": 53610, "ts": "2026-08-24T07:51:30Z", "hours": 1.0131, "text": "I fixed a weird bug which was caused by using a false ctx.restore(); too much, which caused the beams to render in different colors, despite the game working properly. I also added a new piece: The Obstacle. this piece is exclusive to the level creator, the player can not modfiy nor delete the block, requiring a interesting challenge for some levels . Next i will be working on the level loader and will create a few levels"}, {"post_id": 52936, "ts": "2026-08-23T09:50:19Z", "hours": 2.2358, "text": "I implemented a first basic version of the LightRay Game i am working on. It now supports mirrors and splitters. I am now working on polishing as well as building a level loader (levels stored as json files, a custom level editor is planned)"}, {"post_id": 43587, "ts": "2026-08-08T22:43:51Z", "hours": 0.9517, "text": "I designed a very simple start page for my game template (and added a UIpatcher class, which handles interaction with the dom, especially spawning and removing buttons and changing text)"}, {"post_id": 43545, "ts": "2026-08-08T21:33:40Z", "hours": 0.8717, "text": "I started my project by setting up a reusable Github Template, which includes basic styling (e.g. buttons) as well as reusable code, such as a basic game engine for loading scenes, managing score and sound manager. (coming soon) For now i stuck with styling the buttons, which now have 5 different styles with a simple animation. Next i will build a level basic loader and a new framework for the UI. I will try to target both mobile and desktop for the app."}]...
|
Title: LaserRay by @jonas_gaden | Stardance
Devlo Title: LaserRay by @jonas_gaden | Stardance
Devlogs:
I started my project by setting up a reusable Github Template, which includes basic styling (e.g. buttons) as well as reusable code, such as a basic game engine for loading scenes, managing score and sound manager. (coming soon) For now i stuck with styling the buttons, which now have 5 different styles with a simple animation. Next i will build a level basic loader and a new framework for the UI. I will try to target both mobile and desktop for the app.
I designed a very simple start page for my game template (and added a UIpatcher class, which handles interaction with the dom, especially spawning and removing buttons and changing text)
I implemented a first basic version of the LightRay Game i am working on. It now supports mirrors and splitters. I am now working on polishing as well as building a level loader (levels stored as json files, a custom level editor is planned)
I fixed a weird bug which was caused by using a false ctx.restore(); too much, which caused the beams to render in different colors, despite the game working properly. I also added a new piece: The Obstacle. this piece is exclusive to the level creator, the player can not modfiy nor delete the block, requiring a interesting challenge for some levels . Next i will be working on the level loader and will create a few levels
after quite a good amount of pain, i finally figured out a way to save the highscores and create “sets” of 9 levels, which you need to complete 6/9 to unlock the next set. My next session will be to clean up the UI and optimize both for PC as well as mobile
I added a new layout for the finish screen, brought the level title and id (calculated from “(id/3)+1”+.+”(id%3)+1”) to the game screen and overall improved the UI
I added more levels as well as improving the completion UI. To improve the workflow, i added an editor to quickly develop new levels (i used the File System API for the first time, allowing me to edit files directly in the browser without handeling upload and download) https://lapse.hackclub.com/timelapse/-edas1fyH1rh
I added many new levels as well as building a stable release version and setting up a new README file. This will be the final devlog before my first ship, i hope you like it
I am currently migrating the level structure to a data-as-backend solution, coming from a static, file-based level system. This give me the ability quickly add new levels, modify and exchange old ones and add time-limited levels. I am also reviewing the option to create an level builder with sharable levels, but this is only an idea i might come back to in the future.
I am currently working on implementing login via Discord for user generated levels. I am also introducing a more structured way for the app to work, however its a slow process. Atleast i got the basic version of the login with Discord working
I worked on improving my GUI, starting with the Discord login screen. I am quite happy with the outcome, and the visual look in general. Next i will start working on the level editor itself and an level discovery screen after that
I am now working on the first version of the community level editor. Currently it works more or less, but the live service integration is not done yet. I decided to separate the normal levels from the user levels (different database table) but its not wired in as of right now
I improved the editor ui and added a few useful features and indicators. I also force reload the site now, should the user decide to log out (As the editor is only accessible when signed in). Next i will add the new table in the backend database and then build both the own level tab as well as the discover tab
The discover community levels screen is now fully working, making this the first time the new live service intergration is fully finished. I will do another polishing devlog, where i will add a tutorial on how to play and refine my UI further
Final devlog This is the final devlog before shipping, packed with a load of new and improved features, including but not limited to: a new Tutorial, introducing you into the core features an updated UI to ensure the grid has always the aspect ratio 1/1 updated the symbols used on the game board to improve readability shareable links to community levels, like this one => “Traffic Jam” New levels And so much more …
I improved the tutorial flow, now saving the tutorial state
Ships:
LaserCircuit ist is clever out-of-the-box thinking game, made and optimized for mobile use. This version includes 12 level, handcrafted by myself, with various different difficulties. For some problems you will need to think out of the box, but you will figure it out. And you only need 6/9 to unlock Stage 2
This update completely changes the way my game works. By introducing live service integration using Supabase everybody is now able to create, share and publish levels to every other player. While the content of the last ship was very limited, my app now has transformed into a platform, open for everyone to create new content within a few minutes. But only that would be not enough! That’s why i also added a brand new step-by-step interactive tutorial, to give everyone the ability to understand the game right of the start. Now all thats left for me to say: Have fun and please <3 give me a good score and let me know what to add next...
|
1793000998.3099036
|
1793087398.3099036
|
|
61021
|
Expenses-tracker by @kareemwaleed | Stardance
|
kareemwaleed
|
2
|
3.0
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T20:21:21Z", "hours": 1.0, "multiplier": 1.52, "payout": 1, "blessing": "neutral", "text": "I improved the ui /ux I made the site responsive I added animations on hovering", "repo": "https://github.com/kokx138/expenses-tracker", "demo": "https://kokx138.github.io/expenses-tracker/"}, {"ship_num": 2, "ts": "2026-09-21T10:56:20Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a complete working expenses tracker you can add income and expenses in it , it is fully working you can add income by entering positive values you can add expenses by adding - values it saves what you have entered in local storage I found it challenging to write js code and I got many bugs because I often forget the semi column", "repo": "https://github.com/kokx138/expenses-tracker", "demo": "https://kokx138.github.io/expenses-tracker/"}]...
|
[{"post_id": 73308, "ts": "202 [{"post_id": 73308, "ts": "2026-09-24T20:19:46Z", "hours": 1.045, "text": "I improved the ui of my expense tracker and I added some animations also I made it responsive"}, {"post_id": 71705, "ts": "2026-09-21T10:50:33Z", "hours": 0.5956, "text": "MY SITE IS FINALLY WORKING I ADDED JS"}, {"post_id": 67003, "ts": "2026-09-13T01:13:01Z", "hours": 1.5892, "text": "Thats expenses tracker"}]...
|
Title: Expenses-tracker by @kareemwaleed | Stardan Title: Expenses-tracker by @kareemwaleed | Stardance
Devlogs:
Thats expenses tracker
MY SITE IS FINALLY WORKING I ADDED JS
I improved the ui of my expense tracker and I added some animations also I made it responsive
Ships:
I made a complete working expenses tracker you can add income and expenses in it , it is fully working you can add income by entering positive values you can add expenses by adding - values it saves what you have entered in local storage I found it challenging to write js code and I got many bugs because I often forget the semi column
I improved the ui /ux I made the site responsive I added animations on hovering...
|
1792961711.7247036
|
1793048111.7247036
|
|
52019
|
Pointer Fighter (C based) by @nano | Stardance
|
nano
|
1
|
58.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T20:19:08Z", "hours": 58.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A roguelike room crawler completely built in C! What is in it? Randomly generated rooms with a fog of war for you to explore Three different enemy types with scaling difficulty Boss fights with unique item drop RPG Style fighting An interactive inventory that can be used during battle A battle log that tracks everything that happens in battle Items, pickups and a persistent highscore What am I proud of? The enemy pursuit and fleeing system. It was somewhat hard to implement but I think it made the game wayyyy better than before. I’m also proud of how the state machine turned out in the end. The game has strict separations between the different game states and first handles what the player/the game did during the game loop iteration and then after that is done draws it to the screen. That state machine was very prone to bugs and I had to spend a bunch of time to fix (fallthrough bug, etc. all talked about in devlogs). But I think the result that turned out at the end was great and I am very content with it How is it built? As said its completely built in C using ncurses as its graphics library using 12 source files (currently) with each one having a specific task only it does. The build is released using GitHub workflows and the binary can easily be downloaded and used on (almost) all glibc linux distros (the project was compiled for Ubuntu and you will have to install ncurses though) What I learned The game was actually my first real coding project ever apart from a few simple websites so I learned a bunch. I learned how to separate state transitions, I learned the importance of good and bad switch statements, bounds checking (really rough path) and I think most importantly: The power of code separation and making every file do its designated task. I often caught myself picking the easy and sloppy path and then fixing it properly and in retrospect helped with preventing a bunch of bugs Known limitations / plans for the future It’s my first project, so there are likely still issues I haven’t found. Even though I tried to find everything (a.e. using Valgrind told me there are no memory blocks definitely lost) there are still potentially memory safety issues or potential segfaults. It’s possible some edge cases might have slipped through. I’ve tested the project thoroughly and haven’t found any crashes since the last few debugging sessions but I cannot safely say it’s perfect. I think if I will find the time I will maybe add some new features like new special item related enemies or player status effects though I cannot safely say if i can Closing word I think building a game for my first real project was the right decision for me because I really had a bunch of fun building this project. I currently have some ideas for unrelated new projects (one is up on my profile check it out (; ) and I think this project was a really good pathway into coding for me. Check the GitHub and the demo video out and I hope you like the project", "repo": "https://github.com/skibidi-nano/Stardance-roguelike", "demo": "https://github.com/skibidi-nano/Stardance-roguelike/releases/tag/v1.0.1"}]...
|
[{"post_id": 73295, "ts": "202 [{"post_id": 73295, "ts": "2026-09-24T19:37:40Z", "hours": 3.1092, "text": "LOG 26: FINAL DEVLOG MAINLY BUG FIXES AND SOME MINOR CHANGES CHANGES Enemies previously scaled to strongly and beat you too hard after the boss fight. Also because it was hard to scale the opponents down i decided to make the hp of everyone higher (everything got stronger in theory, player has 100 starting hp, does 20 damage etc.) LATE ADDITIONS LICENSE I licensed the project under the MIT licesne because it seemed fitting BUILD FILE I added a build file for the repo so i could upload a release binary (ncurses is required tho) BUG FIXES HIGHSCORE BUG There was a bug with the highscore not being displayed when there was no highscore.txt file. I needed to change the handling of the fact that the open function returned NULL, because NULL either meant, no file was there or no file could be found which resulted in no file being created because the function exited when the open function returned NULL, the fix was pretty simple overall tho (just adding an extra if conditional to check) FULL INVENTORY BUG Previously when having a full inventory, you couldnt pick up new items, issue was when using items that state didnt reset so one full inventory meant no items anymore :( . The fix was just to reset the state after using items BOSS ITEM INVENTORY BUG I forgot to make the boss item return the correct state which resulted in the item sometimes not being put in the inventory. The fix was just to add return ENTER_LEGAL to the boss items if statement SET ROOM ISSUE Because of random rooms sometimes boss room dimensions where bigger than current room which resulted in bugs (see previous devlogs). My previous fix worked in theory but had more affinity for potential bugs so i changed the set room function from two static values to two values that get passed into the function"}, {"post_id": 71417, "ts": "2026-09-20T19:47:13Z", "hours": 5.0142, "text": "LOG 25: FLEEING ENEMIES (CONTAINS MANY CHANGES), BOSS ITEM REFACTOR FLEEING ENEMIES Enemies (except the boss) now have the ability to run away if the enemy would get killed by the next attack. The chance for this to happen is 10% and when they run away, they gain 1 HP per step they take and return to chasing the enemy if their hp is back at half of their max HP. FLEEING REWORK Before adding this feature, fleeing was the same practically as winning (the return type of the fight was STATE_VICTORY), i changed that to the proper STATE _FLED. Also before when fleeing, if you fled and another enemy of another type collided with you, he had normal stats but the enemy before that also got his stats reset. The same went for enemies of the same type. When fleeing from enemy A from type A and then colliding with enemy B from type A, he would have the stats of enemy A. The fix for both was to make a 2D Array of all enemies and their types, so each individual enemy stores its stats, not the battle function. PLAYER POSITION STRUCT Previously the player had ~ 8 different position variables, which was pretty clunky if i wanted to transport the player position to another function. Because of that i put all player positions into a singular struct, so i could pass all the player positions at once if i needed to. ENEMY PURSUIT FUNCTION REWORK Because enemies have to run away instead of chasing i had to rework the pursuit function a bit so it could also work in a reverse way. I had to make the function branch between the two states which took a bit more work than originally anticipated because i had a bunch of wrong ideas for how the function should work. Overall the function implementation was essentially to just use the inverse vector of the normal vector for the direction function BOSS ITEM FUNCTION/ITEM FUNCTION REFACTOR Because previously the boss item detection function and the item detection were separate the code didnt feel clean at all (felt like a lazy implementation for me), so i made the item function work with the boss item which makes the item function overall more open for new item types (if i will add any more)"}, {"post_id": 69703, "ts": "2026-09-17T16:40:29Z", "hours": 4.2308, "text": "LOG 24: BOSS ITEM DROP, CONTROLS SCREEN, NEW IN-GAME BANNER, ITEM TO INVENTORY REFACTOR, BUG FIXES FEATURES BOSS ITEM DROP I added an item that only the boss drops, when killed. Its ability is to make the enemy unable to attack for one turn. You will always get it when defeating the boss and has the ‘?’ glyph compare to regular items (‘+’). Its also the only item that can always be picked up (with normal items, if your inventory is full you cannot pick them up, with the boss item your first slot gets overwritten). CONTROLS SCREEN I added a basic controls screen so people that try the game out (now or when it ships), know what to do when playing. Currently most things are really straightforward but i added it just in case. The most important aspect will probably how to end the game because thats the most unintuitive one (even though i hope anyone testing the game doesnt want to quit it) ITEM TO INVENTORY REFACTOR I thought that the previous state of my item to inventory were pretty lazy so i changed the logic up a bit. Previously when picking up items the items would go into the spot after the last item that was picked up and when the inventory ran full the first item was swappped with the newly picked up item. I didnt like that looking back and because of that the logic now scans through the inventory until it finds an empty spot and puts the item in that empty slot. If the inventory is full no item can be picked up (except the boss item) and the player gets a message on their screen. They can then leave the item screen using ESC and the item is not removed and can be picked up later if you somehow make space in your inventory NEW IN-GAME BANNER Also pretty straightforward, i added a banner so the menu looks a little bit prettier :) BUG FIXES BOSS ROOM BUG Because of map and gamestates and me forgetting to implement a feature in the door collision checks, there was a bug when defeating the boss (the map stayed as it was, but had the usual visible map ‘#’ everywhere you hadnt already explored (you cant really explore much so there where many ‘#’ ’s around the map which was really ugly. The fix was to move a mapstate change from the function that is responsible for handling victory to the function handling doors BOSS BUG There was a bug after defeating the boss which resulted from the previous bug and its fix. Because i forgot an additional check in my door function when defeating the boss the boss would spawn again and overwrite your boss item. The boss also chased you (which normally doesnt happen) and you couldnt leave the room. The fix was just to add another condition to the if statement in the door function responsible for the boss room ENEMY REMOVAL BUG For some reason (i dont know how i made the bug happen), when defeating enemies the visible map lagged behind the normal map which resulted in defeated enemies appearing to still exist on the map for one iteration of the loop (pressing any button made them vanish). The fix was to add a call to the visible_map_init function after defeating enemies"}, {"post_id": 68741, "ts": "2026-09-15T17:34:46Z", "hours": 2.2667, "text": "LOG 23: BATTLE LOG FOR ITEMS, BUG FIXES, BUG FIXES, BUG FIXES, BUG FIXES FEATURE BATTLE LOG FOR ITEMS The previous battle log only logged attacks and the damage dealt, now the log also tracks if items are used or items deal damage BUG FIXES SEGFAULT There was a segfault when trying to render the bottom of deeper rooms because the render guard had a major fault (only disjunctions no conjunctions). Because of that the game tried to reach spaces of the visible_map array out of reach of the array which resulted in a segfault when trying to go into spaces out of reach of the array. The fix was changing the guard from if ((player_y + y) < MAX_HEIGHT || (player_x + x) < MAX_WIDTH || (player_y + y ) >= 0 || (player_x + x >= 0)) to if ((player_y + y) < MAX_HEIGHT && (player_x + x) < MAX_WIDTH && (player_y + y ) >= 0 && (player_x + x >= 0)) which fixed the issue BATTLE LOG NULL TERMINATOR FIX There was a bug with the battle log, where ^ were printed (NUL ascii in ncurses) because the battle log printed out every part of the string character by character (including the \\0 terminator). The fix was to just not print out the \\0 terminator to the screen BATTLE SELECTION BUG There was a bug with conflicting selection variables (multiple variables where named selection which resulted in wrong selections being displayed). The fix was to give every function their own selection variable which fixed the issue VISIBLE MAP GLITCH Because the visible map only updated itself in the perimeter you are standing in if you moved fast enough some characters lagged behind and made it look like there were way more enemies than there actually were. The fix was to update not only the perimeter on every movement but also update everything that had already been explored"}, {"post_id": 68208, "ts": "2026-09-14T18:13:59Z", "hours": 4.045, "text": "LOG 22: POISON ITEM, BATTLE LOG, MAIN LOOP AND ITEM SELECTION REWORK POISON ITEM A new item that does 3 tick damage every enemy turn, for 2 turns. Its the rarest item in the game as of right now and was somewhat complex to add (because of the tick damage and tracking how many turns have passed) BATTLE LOG A log that tracks the last two actions that have happened in the game. It currently only tracks damage and attacks but will track item usage and more detailed information in the future. It was a real headache to implement because i had contradictory logic between the log and my main loop and i had to reimplement it multiple times. But went well overall :) REWORKS MAIN LOOP REWORK I reworked the main loop a bit because even though it worked well in theory it was not really optimized and it was prone to bugs in the future which is why i felt like redoing it a bit. Now instead of every function handling their own init, every changing gamestate instantly also inits the state it was changed to. Because of this there are less possible bugs and its overall easier to do for future gamestates ITEM PICKUP REWORK I noticed that the logic for my items wasn’t really perfect and seemed unoptimized which is why i felt like changing it a bit. Because when picking up items there are only two possible things to do (which both result in the same exit scenario) i swapped my if/else if logic for a switch statement which made the code shorter, and more optimal"}, {"post_id": 67326, "ts": "2026-09-13T12:07:21Z", "hours": 3.1628, "text": "LOG 21: FOG OF WAR, HOMING ENEMIES, BATTLE LOGIC OVERALL AND BUG FIXES FEATURES HOMING ENEMIES The enemies now home on you with every step you take, meaning you actually have to think about where you will go or the enemies will catch up to you. This was implemented by adding a sign function that decide whether the enemy should move +1 or -1 and then moving the enemy by that value. There were some bugs regarding enemies in previous rooms which got fixed by resetting the whole array during map init FOG OF WAR I added a fog of war feature that obstructs everything in the map you haven’t explored yet. This also pairs very well with the homing enemies feature. You have to go around the map to look out for items and enemies which now also walk towards you, so every step matters now BATTLE LOGIC OVERHAUL After revisiting most of my code for commenting i realized how terrible most of my battle logic was so i made it a bit more efficient and most importantly more readable. Overall i realized how great switch statements are in the last few logs BUG FIXES DOOR BUG There was a bug with the map that was somewhat useful when testing but still was a bug. The issue was that if you tried to step into the door the game let you step onto that char. The issue was that i forgot to make the game think that the door (when closed) should behave exactly like a wall. So the fix was just to add the door char to the wall collision check function"}, {"post_id": 66634, "ts": "2026-09-12T14:15:36Z", "hours": 1.4594, "text": "LOG 20: DYNAMIC STATS, BUG FIXES, SMALL UPDATE TO DEBUG MODE AND MORE COMMENTS DYNAMIC STATS The stats of all enemies are now connected to the boss counter which is the number of boss fights that have been fought during the current run so there is real progression and you dont just get stupidly overpowered DEBUG MODE I basically just added the boss to the debug mode nothing much BUG FIXES There was a glitch with the boss room being cut off because the randomly generated room was smaller than the boss room. I had to push a few things around and put every type of map generation (standard, debug, boss) into a switch statement to make it work properly COMMENTS I pretty much forgot most of the comments in the game so i started adding way more comments where they should be so the code is hopefully more intuitive to follow NOTE I think the next update will be pretty big so watch out when it finally drops!!!"}, {"post_id": 66094, "ts": "2026-09-11T17:53:56Z", "hours": 3.0956, "text": "LOG 19: NEW ENEMY TYPE: BOSS FIGHTS, BETTER DOOR LOGIC, NEW SPRITES NEW ENEMY TYPE Because i thought that the normal enemies would be too easy to beat down the run i added the main boss (the pointer which stole the star sprite from the address enemy) and he will always be fought every 5-10 rooms (im not sure on the number) . Currently his stats are static but i plan on making them dynamic based on the number of rooms you went through. BOSS ROOM/BETTER DOOR LOGIC The old door logic practically only worked with a normal room and needed the regular enemies to all be defeated. I tweaked it a little so it works with boss triggers/defeating the boss NEW SPRITE(s) As i said the boss got the star sprite because he is the true pointer so i gave the address an ampersand sprite (which is way more fitting btw). But i am not completely satisfied with the current ampersand sprite (i will maybe change it sometime) NOTE This time there werent really any bugs except during building the boss logic but they got fixed along the way. This time it actually went rather smoothly :) Also ignore the absurd stats of the player"}, {"post_id": 65457, "ts": "2026-09-10T16:29:10Z", "hours": 1.7283, "text": "LOG 18: NEW ITEM AND BUG FIXES BUG FIXES BUG FIXES NEW ITEM DAMAGE POTION I added a new item that can be used in the inventory during battle which deals (currently) 4 damage to the opponent. Its the rarest item in the game right now (i think 1 in 11). Because of the new item i had to make a bunch of code more modular in the inventory logic (a trend in my code). But overall this was the reimplementation that went the smoothest BUG FIXES BATTLE INPUT BUG There was a bug in the battle screen that made the overall input very clunky and previously was only fixed by letting another bug happen but i fixed it by changing something in the switch statements of the battle logic INVENTORY ACCESS AND SELECTION BUG A bug that mainly happened because of the previous bug: When trying to access the inventory in battle the game automatically selected the first item and returned to battle and only after the second time accessing the inventory you could really use your items as you wished INVENTORY SELECTION BUG In the inventory itself a bug was caused by a lazy implementation which caused the display (not the real logic behind the inventory actually) to become very glitched out and very confusing. I just fixed this by fixing my old and bad implementation for a better more modular one (an overall trend in my code to be not that modular lol)"}, {"post_id": 64879, "ts": "2026-09-09T16:10:45Z", "hours": 2.0467, "text": "LOG 17: DEBUG MODE FOR FASTER TESTING DEBUG MODE I added a debug mode because i found that most of my testing time was wasted finding items or players in rooms (which was very annoying most of the time), so i added a debug room so that goes way faster. Though it is very useful it was somewhat hard to implement but it made the code modular the same way the enemy logic is modular now which is an improvement in two ways"}, {"post_id": 63783, "ts": "2026-09-07T18:59:06Z", "hours": 3.6586, "text": "LOG 16: NEW NPC, BETTER CODE MODULARITY, FIXED SOME BUGS NEW FEATURES New “Modulo” / % enemy (based on the modulo operator in c)! It has weaker stats but is way stronger in terms of attack power BETTER CODE MODULARITY Because at the start of the game my main idea was to only implement one enemy type (which was pretty dumb tbh), i had to rework most of the map and battle logic so it was more generic and welcoming to multiple entities (and will help me add more enemies in the future). BUG FIXES VISUAL GLITCH There was a bug for the most of the time in the game (an issue with unititialized variables being printed, which resulted in a visual glitch), which was actually a pretty easy fix (i had to change the switch statements that handle state input and drawing output a bit so that changing the gamestate doesn’t skip to drawing instantly) MEMORY LEAK Because of a dumb implementation of a function that was supposed to carry over the value of a variable in file A to file B which used pointers allocated with malloc i had a memory issue because in a common case i forgot to implement free which resulted in lost memory (the fix was actually just switching over to passing by value because it was just a single char being transported from file A to file B and passing by reference wasn’t necessary)"}, {"post_id": 62408, "ts": "2026-09-05T19:04:09Z", "hours": 2.9256, "text": "LOG 15: MAINLY BUG FIXES AND SOME MINOR NEW FEATURES NEW FEATURES Better life/strength display A feature that was originally used for debugging has turned out as a good feature for the game overall. It always displays your and the enemies HP, and attack power (even though the attack damage is partly random which i have to note somewhere so there will be no confusion) An item descriptor that tells you what the item you are looking at currently does There is only one item to be used in the inventory right now so you can only see what the heal item does but more will be added in the future. BUG FIXES Memory unsafety fixed There was an issue with unsafe memory access if the items in the inventory where bigger than 10. My fix is that if you have more than 10 items and you pick up a new one, the new item will replace the first item, the next one the second one etc. It also resolved a smaller issue with blank inventory space that ate up inventory space even though it was empty. Items not working fixed The functions responsible for changing your hp, healing you or making you stronger hat an issue with their pointer assignment (they were pointing to the wrong variable) which i fixed for all function which work great now. Bug with doors acting the same as item pickups Because of something what seemed to be a typo (a function returned 1 instead of 0), if you tried to go through a door and you haven’t beaten every enemy, instead of nothing happening you got a free item (which turned out to be a great testing feature for items, because i can get many items fast and easily). The fix was really easy (just swap the 1 for a 0) Health bar not drawing properly Because of a badly implemented function i added in the past which turned out to be completely redundant (got cut out) the current hp weren’t imported properly to the function that handles printing out the health bar which i fixed by using another variable responsible for storing the current hp of the player Misc fixes After having to audit most of the code again i noticed that there were some issues with the code (partly because it was fine as it was when it was written, part was just sloppy implementation) which i also fixed even though most of it was minor. CURRENT PLANS FOR THE FUTURE More items that can be used in battle MORE ENEMIES!!! Im planning to add more and stronger enemies in the future even though that will probably will be one of the biggest newfeatures as it requires rewriting most of the battle and map logic Enemies getting stronger if you get farther for better progression Overall some more optimization and bug fixes (there is always something to be fixed ;) )"}, {"post_id": 61748, "ts": "2026-09-04T20:04:49Z", "hours": 4.0994, "text": "LOG 14: Made the items more interactive and functional (items can now be picked up or ignored and will vanish if either is done) and i built a somewhat functional inventory accessible only in battle as of right now. I also had to clean up a bunch of code and had to re-implement some stuff as i implemented some things rather poorly before. There are still some things to be made a bit cleaner which will come in the next few devlogs but i felt like posting one for the current state of the game."}, {"post_id": 60461, "ts": "2026-09-02T19:58:48Z", "hours": 2.5567, "text": "LOG 13: Added items that are supposed to give you power-ups in the future. currently they dont really do anything except open a screen with a sprite for the corresponding item (SPRITES ARE AI GENERATED). The plan for the future is to deicde between regular and activatable items (the first give permanent buffs, the second can be activated) and to be able to choose the items while in battle. For now they can spawn on the map (anywhere except 1|1 and spots where enemies are) and open a random sprite of the 3 that are available right now!"}, {"post_id": 59815, "ts": "2026-09-01T19:33:57Z", "hours": 0.7692, "text": "LOG 12: This came quicker than i thought it would lol. I implemented the two things i spoke about in the last log. I added a highscore system so you can always see how far you came with beating the evil pointers and i also “locked” the rooms until youve beaten every enemy in the room. I plan on adding power ups and some other features (read the README in the repo). STAY UPDATED!!!"}, {"post_id": 59787, "ts": "2026-09-01T18:38:08Z", "hours": 1.3131, "text": "LOG 11: Im Back. After a short break i started to implement that enemies really “die” if you beat them! Now there is some kind of progress added into the game as you can actually beat the enemies!!! The next features will probably be a real highscore and restricitions in leaving the room until youve beaten every enemy. Till then stay updated!!!!"}, {"post_id": 55276, "ts": "2026-08-27T00:06:09Z", "hours": 1.4606, "text": "LOG 10: Added multiple enemies (dynamic based on room size) and stats get reset after battle. Battle still issnt finished yet as i think of two more things to add for every one thing i implement. Stay updated !!!"}, {"post_id": 54777, "ts": "2026-08-25T21:47:45Z", "hours": 1.3933, "text": "LOG 9: Battle now works better and you can see enemy h now. Code is way less tangled (though some stuff still needs to be improved and the battle still isnt fully polished). There are some bugs regarding memory right now (will be fixed ASAP). But as of now you can finally really battle the evil evil evil pointer!"}, {"post_id": 54087, "ts": "2026-08-24T21:27:57Z", "hours": 2.0, "text": "added the first implementation of working battle (taking and dealing damage, working health bar)! The main issues right now are that the code is a bit tangled and that the logic isnt polished at all. But after 2 hours of work i felt like i had to post a log so this is the current state (you can attack or try to run) (winning and running have the same effect as of now)"}, {"post_id": 52721, "ts": "2026-08-23T01:22:10Z", "hours": 1.3925, "text": "Kinda added a battle screen (not reactive yet but will happen soon) and made the ASCII designs for my characters with AI (i cannot make any good ASCII art sadly :( … yet). In the top left is what is supposed to resemble a health bar which also still needs to be implemented. Also made the code a bit cleaner added a few header guards and most importantly i added structs for the entities so their stats could be recorded. Thats it :)"}, {"post_id": 52658, "ts": "2026-08-22T22:08:53Z", "hours": 1.2631, "text": "Added a (somewhat) functional menu screen to view highscore and start the game (highscore function will be implemented soon!!!!. Also built the first prototype of the battle screen though it is no where near finished. I will probably make the menu screen a bit prettier in the future but the current design has to suffice for now. :)"}, {"post_id": 51911, "ts": "2026-08-21T20:21:08Z", "hours": 0.9469, "text": "Added “Npcs” (evil pointers/ampersands). Collision yet have to do something relevant (right now they only trigger a new room). Also fixed a few memory unsafeties."}, {"post_id": 51814, "ts": "2026-08-21T17:36:52Z", "hours": 1.5833, "text": "Implemented doors (currently a minus sign probably going to change that). If you collide with said door/minus sign you will enter a new, different sized room. I did that by choosing a random wall, a random spot on that wall which is the spot where the door will be and if you make contact with the door a new room will be initialized."}, {"post_id": 51346, "ts": "2026-08-20T23:28:52Z", "hours": 0.9203, "text": "Added collision checks for walls so you cant escape the rooms"}, {"post_id": 51318, "ts": "2026-08-20T22:03:55Z", "hours": 1.0767, "text": "Implemented functional Walking (even though there is no real border yet). I also fragmented the code a bit so its more readable!"}, {"post_id": 51226, "ts": "2026-08-20T19:16:10Z", "hours": 0.4381, "text": "“Roguelike” “Game” in C (neither of them has begun to be implemented. But i guess i have set up the very basics as of now"}]...
|
Title: Pointer Fighter (C based) by @nano | Starda Title: Pointer Fighter (C based) by @nano | Stardance
Devlogs:
“Roguelike” “Game” in C (neither of them has begun to be implemented. But i guess i have set up the very basics as of now
Implemented functional Walking (even though there is no real border yet). I also fragmented the code a bit so its more readable!
Added collision checks for walls so you cant escape the rooms
Implemented doors (currently a minus sign probably going to change that). If you collide with said door/minus sign you will enter a new, different sized room. I did that by choosing a random wall, a random spot on that wall which is the spot where the door will be and if you make contact with the door a new room will be initialized.
Added “Npcs” (evil pointers/ampersands). Collision yet have to do something relevant (right now they only trigger a new room). Also fixed a few memory unsafeties.
Added a (somewhat) functional menu screen to view highscore and start the game (highscore function will be implemented soon!!!!. Also built the first prototype of the battle screen though it is no where near finished. I will probably make the menu screen a bit prettier in the future but the current design has to suffice for now. :)
Kinda added a battle screen (not reactive yet but will happen soon) and made the ASCII designs for my characters with AI (i cannot make any good ASCII art sadly :( … yet). In the top left is what is supposed to resemble a health bar which also still needs to be implemented. Also made the code a bit cleaner added a few header guards and most importantly i added structs for the entities so their stats could be recorded. Thats it :)
added the first implementation of working battle (taking and dealing damage, working health bar)! The main issues right now are that the code is a bit tangled and that the logic isnt polished at all. But after 2 hours of work i felt like i had to post a log so this is the current state (you can attack or try to run) (winning and running have the same effect as of now)
LOG 9: Battle now works better and you can see enemy h now. Code is way less tangled (though some stuff still needs to be improved and the battle still isnt fully polished). There are some bugs regarding memory right now (will be fixed ASAP). But as of now you can finally really battle the evil evil evil pointer!
LOG 10: Added multiple enemies (dynamic based on room size) and stats get reset after battle. Battle still issnt finished yet as i think of two more things to add for every one thing i implement. Stay updated !!!
LOG 11: Im Back. After a short break i started to implement that enemies really “die” if you beat them! Now there is some kind of progress added into the game as you can actually beat the enemies!!! The next features will probably be a real highscore and restricitions in leaving the room until youve beaten every enemy. Till then stay updated!!!!
LOG 12: This came quicker than i thought it would lol. I implemented the two things i spoke about in the last log. I added a highscore system so you can always see how far you came with beating the evil pointers and i also “locked” the rooms until youve beaten every enemy in the room. I plan on adding power ups and some other features (read the README in the repo). STAY UPDATED!!!
LOG 13: Added items that are supposed to give you power-ups in the future. currently they dont really do anything except open a screen with a sprite for the corresponding item (SPRITES ARE AI GENERATED). The plan for the future is to deicde between regular and activatable items (the first give permanent buffs, the second can be activated) and to be able to choose the items while in battle. For now they can spawn on the map (anywhere except 1|1 and spots where enemies are) and open a random sprite of the 3 that are available right now!
LOG 14: Made the items more interactive and functional (items can now be picked up or ignored and will vanish if either is done) and i built a somewhat functional inventory accessible only in battle as of right now. I also had to clean up a bunch of code and had to re-implement some stuff as i implemented some things rather poorly before. There are still some things to be made a bit cleaner which will come in the next few devlogs but i felt like posting one for the current state of the game.
LOG 15: MAINLY BUG FIXES AND SOME MINOR NEW FEATURES NEW FEATURES Better life/strength display A feature that was originally used for debugging has turned out as a good feature for the game overall. It always displays your and the enemies HP, and attack power (even though the attack damage is partly random which i have to note somewhere so there will be no confusion) An item descriptor that tells you what the item you are looking at currently does There is only one item to be used in the inventory right now so you can only see what the heal item does but more will be added in the future. BUG FIXES Memory unsafety fixed There was an issue with unsafe memory access if the items in the inventory where bigger than 10. My fix is that if you have more than 10 items and you pick up a new one, the new item will replace the first item, the next one the second one etc. It also resolved a smaller issue with blank inventory space that ate up inventory space even though it was empty. Items not working fixed The functions responsible for changing your hp, healing you or making you stronger hat an issue with their pointer assignment (they were pointing to the wrong variable) which i fixed for all function which work great now. Bug with doors acting the same as item pickups Because of something what seemed to be a typo (a function returned 1 instead of 0), if you tried to go through a door and you haven’t beaten every enemy, instead of nothing happening you got a free item (which turned out to be a great testing feature for items, because i can get many items fast and easily). The fix was really easy (just swap the 1 for a 0) Health bar not drawing properly Because of a badly implemented function i added in the past which turned out to be completely redundant (got cut out) the current hp weren’t imported properly to the function that handles printing out the health bar which i fixed by using another variable responsible for storing the current hp of the player Misc fixes After having to audit most of the code again i noticed that there were some issues with the code (partly because it was fine as it was when it was written, part was just sloppy implementation) which i also fixed even though most of it was minor. CURRENT PLANS FOR THE FUTURE More items that can be used in battle MORE ENEMIES!!! Im planning to add more and stronger enemies in the future even though that will probably will be one of the biggest newfeatures as it requires rewriting most of the battle and map logic Enemies getting stronger if you get farther for better progression Overall some more optimization and bug fixes (there is always something to be fixed ;) )
LOG 16: NEW NPC, BETTER CODE MODULARITY, FIXED SOME BUGS NEW FEATURES New “Modulo” / % enemy (based on the modulo operator in c)! It has weaker stats but is way stronger in terms of attack power BETTER CODE MODULARITY Because at the start of the game my main idea was to only implement one enemy type (which was pretty dumb tbh), i had to rework most of the map and battle logic so it was more generic and welcoming to multiple entities (and will help me add more enemies in the future). BUG FIXES VISUAL GLITCH There was a bug for the most of the time in the game (an issue with unititialized variables being printed, which resulted in a visual glitch), which was actually a pretty easy fix (i had to change the switch statements that handle state input and drawing output a bit so that changing the gamestate doesn’t skip to drawing instantly) MEMORY LEAK Because of a dumb implementation of a function that was supposed to carry over the value of a variable in file A to file B which used pointers allocated with malloc i had a memory issue because in a common case i forgot to implement free which resulted in lost memory (the fix was actually just switching over to passing by value because it was just a single char being transported from file A to file B and passing by reference wasn’t necessary)
LOG 17: DEBUG MODE FOR FASTER TESTING DEBUG MODE I added a debug mode because i found that most of my testing time was wasted finding items or players in rooms (which was very annoying most of the time), so i added a debug room so that goes way faster. Though it is very useful it was somewhat hard to implement but it made the code modular the same way the enemy logic is modular now which is an improvement in two ways
LOG 18: NEW ITEM AND BUG FIXES BUG FIXES BUG FIXES NEW ITEM DAMAGE POTION I added a new item that can be used in the inventory during battle which deals (currently) 4 damage to the opponent. Its the rarest item in the game right now (i think 1 in 11). Because of the new item i had to make a bunch of code more modular in the inventory logic (a trend in my code). But overall this was the reimplementation that went the smoothest BUG FIXES BATTLE INPUT BUG There was a bug in the battle screen that made the overall input very clunky and previously was only fixed by letting another bug happen but i fixed it by changing something in the switch statements of the battle logic INVENTORY ACCESS AND SELECTION BUG A bug that mainly happened because of the previous bug: When trying to access the inventory in battle the game automatically selected the first item and returned to battle and only after the second time accessing the inventory you could really use your items as you wished INVENTORY SELECTION BUG In the inventory itself a bug was caused by a lazy implementation which caused the display (not the real logic behind the inventory actually) to become very glitched out and very confusing. I just fixed this by fixing my old and bad implementation for a better more modular one (an overall trend in my code to be not that modular lol)
LOG 19: NEW ENEMY TYPE: BOSS FIGHTS, BETTER DOOR LOGIC, NEW SPRITES NEW ENEMY TYPE Because i thought that the normal enemies would be too easy to beat down the run i added the main boss (the pointer which stole the star sprite from the address enemy) and he will always be fought every 5-10 rooms (im not sure on the number) . Currently his stats are static but i plan on making them dynamic based on the number of rooms you went through. BOSS ROOM/BETTER DOOR LOGIC The old door logic practically only worked with a normal room and needed the regular enemies to all be defeated. I tweaked it a little so it works with boss triggers/defeating the boss NEW SPRITE(s) As i said the boss got the star sprite because he is the true pointer so i gave the address an ampersand sprite (which is way more fitting btw). But i am not completely satisfied with the current ampersand sprite (i will maybe change it sometime) NOTE This time there werent really any bugs except during building the boss logic but they got fixed along the way. This time it actually went rather smoothly :) Also ignore the absurd stats of the player
LOG 20: DYNAMIC STATS, BUG FIXES, SMALL UPDATE TO DEBUG MODE AND MORE COMMENTS DYNAMIC STATS The stats of all enemies are now connected to the boss counter which is the number of boss fights that have been fought during the current run so there is real progression and you dont just get stupidly overpowered DEBUG MODE I basically just added the boss to the debug mode nothing much BUG FIXES There was a glitch with the boss room being cut off because the randomly generated room was smaller than the boss room. I had to push a few things around and put every type of map generation (standard, debug, boss) into a switch statement to make it work properly COMMENTS I pretty much forgot most of the comments in the game so i started adding way more comments where they should be so the code is hopefully more intuitive to follow NOTE I think the next update will be pretty big so watch out when it finally drops!!!
LOG 21: FOG OF WAR, HOMING ENEMIES, BATTLE LOGIC OVERALL AND BUG FIXES FEATURES HOMING ENEMIES The enemies now home on you with every step you take, meaning you actually have to think about where you will go or the enemies will catch up to you. This was implemented by adding a sign function that decide whether the enemy should move +1 or -1 and then moving the enemy by that value. There were some bugs regarding enemies in previous rooms which got fixed by resetting the whole array during map init FOG OF WAR I added a fog of war feature that obstructs everything in the map you haven’t explored yet. This also pairs very well with the homing enemies feature. You have to go around the map to look out for items and enemies which now also walk towards you, so every step matters now BATTLE LOGIC OVERHAUL After revisiting most of my code for commenting i realized how terrible most of my battle logic was so i made it a bit more efficient and most importantly more readable. Overall i realized how great switch statements are in the last few logs BUG FIXES DOOR BUG There was a bug with the map that was somewhat useful when testing but still was a bug. The issue was that if you tried to step into the door the game let you step onto that char. The issue was that i forgot to make the game think that the door (when closed) should behave exactly like a wall. So the fix was just to add the door char to the wall collision check function
LOG 22: POISON ITEM, BATTLE LOG, MAIN LOOP AND ITEM SELECTION REWORK POISON ITEM A new item that does 3 tick damage every enemy turn, for 2 turns. Its the rarest item in the game as of right now and was somewhat complex to add (because of the tick damage and tracking how many turns have passed) BATTLE LOG A log that tracks the last two actions that have happened in the game. It currently only tracks damage and attacks but will track item usage and more detailed information in the future. It was a real headache to implement because i had contradictory logic between the log and my main loop and i had to reimplement it multiple times. But went well overall :) REWORKS MAIN LOOP REWORK I reworked the main loop a bit because even though it worked well in theory it was not really optimized and it was prone to bugs in the future which is why i felt like redoing it a bit. Now instead of every function handling their own init, every changing gamestate instantly also inits the state it was changed to. Because of this there are less possible bugs and its overall easier to do for future gamestates ITEM PICKUP REWORK I noticed that the logic for my items wasn’t really perfect and seemed unoptimized which is why i felt like changing it a bit. Because when picking up items there are only two possible things to do (which both result in the same exit scenario) i swapped my if/else if logic for a switch statement which made the code shorter, and more optimal
LOG 23: BATTLE LOG FOR ITEMS, BUG FIXES, BUG FIXES, BUG FIXES, BUG FIXES FEATURE BATTLE LOG FOR ITEMS The previous battle log only logged attacks and the damage dealt, now the log also tracks if items are used or items deal damage BUG FIXES SEGFAULT There was a segfault when trying to render the bottom of deeper rooms because the render guard had a major fault (only disjunctions no conjunctions). Because of that the game tried to reach spaces of the visible_map array out of reach of the array which resulted in a segfault when trying to go into spaces out of reach of the array. The fix was changing the guard from if ((player_y + y) < MAX_HEIGHT || (player_x + x) < MAX_WIDTH || (player_y + y ) >= 0 || (player_x + x >= 0)) to if ((player_y + y) < MAX_HEIGHT && (player_x + x) < MAX_WIDTH && (player_y + y ) >= 0 && (player_x + x >= 0)) which fixed the issue BATTLE LOG NULL TERMINATOR FIX There was a bug with the battle log, where ^ were printed (NUL ascii in ncurses) because the battle log printed out every part of the string character by character (including the \0 terminator). The fix was to just not print out the \0 terminator to the screen BATTLE SELECTION BUG There was a bug with conflicting selection variables (multiple variables where named selection which resulted in wrong selections being displayed). The fix was to give every function their own selection variable which fixed the issue VISIBLE MAP GLITCH Because the visible map only updated itself in the perimeter you are standing in if you moved fast enough some characters lagged behind and made it look like there were way more enemies than there actually were. The fix was to update not only the perimeter on every movement but also update everything that had already been explored
LOG 24: BOSS ITEM DROP, CONTROLS SCREEN, NEW IN-GAME BANNER, ITEM TO INVENTORY REFACTOR, BUG FIXES FEATURES BOSS ITEM DROP I added an item that only the boss drops, when killed. Its ability is to make the enemy unable to attack for one turn. You will always get it when defeating the boss and has the ‘?’ glyph compare to regular items (‘+’). Its also the only item that can always be picked up (with normal items, if your inventory is full you cannot pick them up, with the boss item your first slot gets overwritten). CONTROLS SCREEN I added a basic controls screen so people that try the game out (now or when it ships), know what to do when playing. Currently most things are really straightforward but i added it just in case. The most important aspect will probably how to end the game because thats the most unintuitive one (even though i hope anyone testing the game doesnt want to quit it) ITEM TO INVENTORY REFACTOR I thought that the previous state of my item to inventory were pretty lazy so i changed the logic up a bit. Previously when picking up items the items would go into the spot after the last item that was picked up and when the inventory ran full the first item was swappped with the newly picked up item. I didnt like that looking back and because of that the logic now scans through the inventory until it finds an empty spot and puts the item in that empty slot. If the inventory is full no item can be picked up (except the boss item) and the player gets a message on their screen. They can then leave the item screen using ESC and the item is not removed and can be picked up later if you somehow make space in your inventory NEW IN-GAME BANNER Also pretty straightforward, i added a banner so the menu looks a little bit prettier :) BUG FIXES BOSS ROOM BUG Because of map and gamestates and me forgetting to implement a feature in the door collision checks, there was a bug when defeating the boss (the map stayed as it was, but had the usual visible map ‘#’ everywhere you hadnt already explored (you cant really explore much so there where many ‘#’ ’s around the map which was really ugly. The fix was to move a mapstate change from the function that is responsible for handling victory to the function handling doors BOSS BUG There was a bug after defeating the boss which resulted from the previous bug and its fix. Because i forgot an additional check in my door function when defeating the boss the boss would spawn again and overwrite your boss item. The boss also chased you (which normally doesnt happen) and you couldnt leave the room. The fix was just to add another condition to the if statement in the door function responsible for the boss room ENEMY REMOVAL BUG For some reason (i dont know how i made the bug happen), when defeating enemies the visible map lagged behind the normal map which resulted in defeated enemies appearing to still exist on the map for one iteration of the loop (pressing any button made them vanish). The fix was to add a call to the visible_map_init function after defeating enemies
LOG 25: FLEEING ENEMIES (CONTAINS MANY CHANGES), BOSS ITEM REFACTOR FLEEING ENEMIES Enemies (except the boss) now have the ability to run away if the enemy would get killed by the next attack. The chance for this to happen is 10% and when they run away, they gain 1 HP per step they take and return to chasing the enemy if their hp is back at half of their max HP. FLEEING REWORK Before adding this feature, fleeing was the same practically as winning (the return type of the fight was STATE_VICTORY), i changed that to the proper STATE _FLED. Also before when fleeing, if you fled and another enemy of another type collided with you, he had normal stats but the enemy before that also got his stats reset. The same went for enemies of the same type. When fleeing from enemy A from type A and then colliding with enemy B from type A, he would have the stats of enemy A. The fix for both was to make a 2D Array of all enemies and their types, so each individual enemy stores its stats, not the battle function. PLAYER POSITION STRUCT Previously the player had ~ 8 different position variables, which was pretty clunky if i wanted to transport the player position to another function. Because of that i put all player positions into a singular struct, so i could pass all the player positions at once if i needed to. ENEMY PURSUIT FUNCTION REWORK Because enemies have to run away instead of chasing i had to rework the pursuit function a bit so it could also work in a reverse way. I had to make the function branch between the two states which took a bit more work than originally anticipated because i had a bunch of wrong ideas for how the function should work. Overall the function implementation was essentially to just use the inverse vector of the normal vector for the direction function BOSS ITEM FUNCTION/ITEM FUNCTION REFACTOR Because previously the boss item detection function and the item detection were separate the code didnt feel clean at all (felt like a lazy implementation for me), so i made the item function work with the boss item which makes the item function overall more open for new item types (if i will add any more)
LOG 26: FINAL DEVLOG MAINLY BUG FIXES AND SOME MINOR CHANGES CHANGES Enemies previously scaled to strongly and beat you too hard after the boss fight. Also because it was hard to scale the opponents down i decided to make the hp of everyone higher (everything got stronger in theory, player has 100 starting hp, does 20 damage etc.) LATE ADDITIONS LICENSE I licensed the project under the MIT licesne because it seemed fitting BUILD FILE I added a build file for the repo so i could upload a release binary (ncurses is required tho) BUG FIXES HIGHSCORE BUG There was a bug with the highscore not being displayed when there was no highscore.txt file. I needed to change the handling of the fact that the open function returned NULL, because NULL either meant, no file was there or no file could be found which resulted in no file being created because the function exited when the open function returned NULL, the fix was pretty simple overall tho (just adding an extra if conditional to check) FULL INVENTORY BUG Previously when having a full inventory, you couldnt pick up new items, issue was when using items that state didnt reset so one full inventory meant no items anymore :( . The fix was just to reset the state after using items BOSS ITEM INVENTORY BUG I forgot to make the boss item return the correct state which resulted in the item sometimes not being put in the inventory. The fix was just to add return ENTER_LEGAL to the boss items if statement SET ROOM ISSUE Because of random rooms sometimes boss room dimensions where bigger than current room which resulted in bugs (see previous devlogs). My previous fix worked in theory but had more affinity for potential bugs so i changed the set room function from two static values to two values that get passed into the function
Ships:
A roguelike room crawler completely built in C! What is in it? Randomly generated rooms with a fog of war for you to explore Three different enemy types with scaling difficulty Boss fights with unique item drop RPG Style fighting An interactive inventory that can be used during battle A battle log that tracks everything that happens in battle Items, pickups and a persistent highscore What am I proud of? The enemy pursuit and fleeing system. It was somewhat hard to implement but I think it made the game wayyyy better than before. I’m also proud of how the state machine turned out in the end. The game has strict separations between the different game states and first handles what the player/the game did during the game loop iteration and then after that is done draws it to the screen. That state machine was very prone to bugs and I had to spend a bunch of time to fix (fallthrough bug, etc. all talked about in devlogs). But I think the result that turned out at the end was great and I am very content with it How is it built? As said its completely built in C using ncurses as its graphics library using 12 source files (currently) with each one having a specific task only it does. The build is released using GitHub workflows and the binary can easily be downloaded and used on (almost) all glibc linux distros (the project was compiled for Ubuntu and you will have to install ncurses though) What I learned The game was actually my first real coding project ever apart from a few simple websites so I learned a bunch. I learned how to separate state transitions, I learned the importance of good and bad switch statements, bounds checking (really rough path) and I think most importantly: The power of code separation and making every file do its designated task. I often caught myself picking the easy and sloppy path and then fixing it properly and in retrospect helped with preventing a bunch of bugs Known limitations / plans for the future It’s my first project, so there are likely still issues I haven’t found. Even though I tried to find everything (a.e. using Valgrind told me there are no memory blocks definitely lost) there are still potentially memory safety issues or potential segfaults. It’s possible some edge cases might have slipped through. I’ve tested the project thoroughly and haven’t found any crashes since the last few debugging sessions but I cannot safely say it’s perfect. I think if I will find the time I will maybe add some new features like new special item related enemies or player status effects though I cannot safely say if i can Closing word I think building a game for my first real project was the right decision for me because I really had a bunch of fun building this project. I currently have some ideas for unrelated new projects (one is up on my profile check it out (; ) and I think this project was a really good pathway into coding for me. Check the GitHub and the demo video out and I hope you like the project...
|
1793004940.3502064
|
1793091340.3502064
|
|
64739
|
WeatherFetch by @SilentVelocity | Stardance
|
SilentVelocity
|
1
|
9.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T20:19:04Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Welcome to Weather Fetch. This Website displays weather of a location by requesting permission for location of user and sends API requests to Open Meteo for weather information and a separate request to bigdatacloud.net for displaying the location. What I found challenging was making the AQI feature work and making the correct URLs for the API calls. I’m Proud of the structure that I’ve given to my JS. The JS is not messily tangled altogether but rather in neat blocks of code. This prevents everything from breaking if one thing breaks. Another thing is the way I’ve used THREE APIs for this. sounds big.", "repo": "https://github.com/VolarQuill/WeatherFetch", "demo": "https://weather-fetch-six.vercel.app/"}]...
|
[{"post_id": 73303, "ts": "202 [{"post_id": 73303, "ts": "2026-09-24T20:09:17Z", "hours": 1.7786, "text": "The project is officially done!!! I got over with the AQI, and went on to add some animations to the website and two separate alerts. One alert for high UV and one alert for high chance of rain."}, {"post_id": 73237, "ts": "2026-09-24T17:12:07Z", "hours": 6.6658, "text": "Okay. A lot has happened now actually. I’ve a big weather condition block, added time, location, added a lot more of CSS, added stickers too! Working on adding AQI and potentially FORECAST! i probably wont be doing forecast cuz AQI adding AQI has a lot more extra steps than adding the other stats, and i dont seem to figure it out. See the github commits for the proper progressions of features. i forgot about devlogs sorry"}, {"post_id": 72144, "ts": "2026-09-22T09:41:56Z", "hours": 0.8428, "text": "I finally got the browser to ask for the user’s permission for location. NOT a fan of making error messages work."}]...
|
Title: WeatherFetch by @SilentVelocity | Stardance Title: WeatherFetch by @SilentVelocity | Stardance
Devlogs:
I finally got the browser to ask for the user’s permission for location. NOT a fan of making error messages work.
Okay. A lot has happened now actually. I’ve a big weather condition block, added time, location, added a lot more of CSS, added stickers too! Working on adding AQI and potentially FORECAST! i probably wont be doing forecast cuz AQI adding AQI has a lot more extra steps than adding the other stats, and i dont seem to figure it out. See the github commits for the proper progressions of features. i forgot about devlogs sorry
The project is officially done!!! I got over with the AQI, and went on to add some animations to the website and two separate alerts. One alert for high UV and one alert for high chance of rain.
Ships:
Welcome to Weather Fetch. This Website displays weather of a location by requesting permission for location of user and sends API requests to Open Meteo for weather information and a separate request to bigdatacloud.net for displaying the location. What I found challenging was making the AQI feature work and making the correct URLs for the API calls. I’m Proud of the structure that I’ve given to my JS. The JS is not messily tangled altogether but rather in neat blocks of code. This prevents everything from breaking if one thing breaks. Another thing is the way I’ve used THREE APIs for this. sounds big....
|
1792965108.5631256
|
1793051508.5631256
|
|
61154
|
littleone by @fiddletwo | Stardance
|
fiddletwo
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T19:58:48Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This slack bot has some commands such as a command that lets you see the league standings of Europe’s top five football leagues. The most important thing I took away from this project was learning how to host via a server.", "repo": "https://github.com/fiddletwo/littleone", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 66927, "ts": "202 [{"post_id": 66927, "ts": "2026-09-12T22:01:33Z", "hours": 1.3317, "text": "Added a football league standings command. Currently only shows the points the club has. Working with the API was somewhat difficult because the stats were put into an array. Also added a help command that lists all commands."}, {"post_id": 66680, "ts": "2026-09-12T15:32:50Z", "hours": 1.4892, "text": "basic bot setup reminds me of the discord bot development i used to do, but i digress anyways i made a little dice rolling command"}]...
|
Title: littleone by @fiddletwo | Stardance
Devlog Title: littleone by @fiddletwo | Stardance
Devlogs:
basic bot setup reminds me of the discord bot development i used to do, but i digress anyways i made a little dice rolling command
Added a football league standings command. Currently only shows the points the club has. Working with the API was somewhat difficult because the stats were put into an array. Also added a help command that lists all commands.
Ships:
This slack bot has some commands such as a command that lets you see the league standings of Europe’s top five football leagues. The most important thing I took away from this project was learning how to host via a server....
|
1792961723.839008
|
1793048123.839008
|
|
28570
|
Natural Selection Simulation by @VasilyKrupenin | Natural Selection Simulation by @VasilyKrupenin | Stardance...
|
VasilyKrupenin
|
1
|
20.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T19:34:25Z", "hours": 20.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made the basics of a natural selection simulation, but it unfortunately is unfinished, and since Stardance is ending pretty soon, I want to publish this so if anyone wants to use my project for something, they are free to do so, since I will be unable to finish it before it ends.", "repo": "https://github.com/vkrpn/Natural-Selection-Simulation", "demo": "https://drive.google.com/drive/folders/1Ek7X9l--7f_XP9Hxx5AYiUP00q131n4a?usp=drive_link"}]...
|
[{"post_id": 73289, "ts": "202 [{"post_id": 73289, "ts": "2026-09-24T19:27:07Z", "hours": 1.3636, "text": "Stardance is about to end, so I might as well publish this to get my 20+ hours worth of stardust. I may finish this later, but it will probably won’t be finished by the time Stardance ends. Do whatever you want with my project. It needs a screenshot, so here’s a cool picture I took:"}, {"post_id": 43552, "ts": "2026-08-08T21:48:17Z", "hours": 2.4575, "text": "It’s been a while since I last posted a devlog because I was hoping to finish the project, but I am farther away than I thought, and I also could not work on any Stardance projects for 2 weeks, unfortunately. It’s been so long since I’ve worked that I forgot what I’ve made; I think I made size, color, and a few tree variants."}, {"post_id": 27445, "ts": "2026-07-13T00:41:49Z", "hours": 2.8772, "text": "I’ve been a bit lazy, but progress on procedural generation is coming along well. I finished it and tweaked it until I got a result I liked (there was more mathematics that I had to do, like I had to use the pythagorean theorem to figure out the distance away from the center and subtract that to ensure that edges are ocean). The way it works is by first creating ocean, beach, fertile land, and mountains from noise, then I use moisture and temperature to determine the biome. Temperature is calculated by getting the latitude, subtracting the elevation (to make higher areas naturally colder), and then a bit of noise is added on top of all of that. Moisture works similarly, minus the latitude part. I also started working on vegetation; see those savanna trees? But I do have to create plants for each biome (or the creatures will have nothing to eat) which I am too lazy to do (as you can see I just made a savanna tree), I do not know what I’ll do for that. There’s so much art I have to make; I’ll have to make the animals and all of the plants. I’m planning to code a bunch of traits gained from animal appearance as soon as I put in the work to create the animals, which will be really difficult to do. I’m finally moving away from MSFT Paint though!"}, {"post_id": 25459, "ts": "2026-07-09T18:57:48Z", "hours": 2.0503, "text": "I don’t have much to display at the moment, I’ve been optimizing the code (for example, I used for loops to repeat the same process with different variables used for graphing instead of having separate code for each variable to significantly shorten the code) and I’ve started working on biomes. Since it has been a while since I have last posted a devlog, I’ll post one, and since I have to attach a screenshot or video, here’s an demonstration of natural selection in my game. You can clearly see the memory trait rose a lot and certain traits balanced out at a certain level (the images are a bit low quality but the values tracked are speed, sight, metabolism, mutation, memory, and population)."}, {"post_id": 23670, "ts": "2026-07-06T19:40:33Z", "hours": 1.7361, "text": "I did a bit more work on the windows. Now you can select which stats to track (only sight and speed for now, but I’ll fix that) and you can track up to 2 stats (but it doesn’t take long to change how many stats you can track), and you can change the colors. In the video, I am tracking the average speed and sight (note that the graph is measuring not the value, but the change in value; sight is twice as large as speed by default). I also demonstrated some of the features of the windows in the video which I forgot to show in the last one."}, {"post_id": 23131, "ts": "2026-07-05T22:03:50Z", "hours": 2.2103, "text": "I haven’t posted much because there wasn’t a lot to display or show that I’ve gotten something to work. Anyway, I coded a mutation trait which modifies how much a child’s traits can change (I noticed something pretty cool; when setting the mutation value super high like 1, it almost always drops back down to around 0.3). Here’s how mutation works: you get a child’s genes by calculating the average of the 2 parents genes plus that same number multiplied by mutation value. With a mutation of value of 1, the highest amount genes can change is double the original value. And most noticeably, I started working on UI; I started making charts that display certain traits. It’s nowhere near done, but it is coming along quite nicely. In the video attached, a chart is tracking the average speed value of the population. I didn’t show in the video, but you can drag the windows around, but that’s about it; I can only manually set the tracked value in code and drag windows around, they don’t have much features. A lot of the work I can’t really show; I was working on tracking, originally it was mostly for debugging, but now I can actually display those values with the graphs I am coding. Sorry that the video’s a bit long, Haaland scored a goal against Brazil and I forgot I was recording; I had to see the replay. He also scored a second one while I was typing this devlog. Go Norway (I’d root for Russia but they got suspended)!"}, {"post_id": 22335, "ts": "2026-07-04T19:12:32Z", "hours": 0.4192, "text": "I didn’t do much coding, and the game still needs a lot of work, but I have reached a great milestone! The game naturally selects traits! I added some statistics and a new memory trait because the creatures could just set off on a journey and remember the exact position down to the decimal places of the last food and water it saw, so I fixed that and added a timer which wipes the memory of the food/water position once it times out. The default traits are: 75 speed, 150 sight, 1 metabolism, and 7 memory. The average traits after running the simulation for some time: 65 speed, 125 sight, similar metabolism, and 10 memory. This result is pretty consistent with the exact plant and water setup in the image, but if I change it to a sparser environment, I saw speed go up by 10, sight go up by 5, metabolism stay the same, and surprisingly, despite being a trait with no negatives implemented yet, memory go down by 0.25. I guess memory doesn’t matter if you are fast enough and see well."}, {"post_id": 22200, "ts": "2026-07-04T15:37:17Z", "hours": 0.7967, "text": "I’m a bit stuck. I don’t really like the gene system so I decided to code traits as numbers, but that needs a lot of balance and tweaking to properly implement, and all of this work is a bit overwhelming. I might take a break from this project for a few days."}, {"post_id": 21092, "ts": "2026-07-02T21:47:31Z", "hours": 0.7008, "text": "I did a LOT of debugging. Fixed the last bug and numerous more that caused things like food not giving any hunger, genes getting incorrect effects, and more. I also changed how metabolism works and nerfed it. Now, Mm = 0, mm = -1, and MM = 1. These values are “intensified” by the I/i alleles. These work the same way as metabolism worked before, but now the values can be negative leading to efficient but low capacity creatures. I had to nerf it because capacity was becoming negative and creatures were getting infinite food."}, {"post_id": 20930, "ts": "2026-07-02T17:37:15Z", "hours": 1.1336, "text": "I restored my work and added a new trait; metabolism. mm is default metabolism; 10 hunger/thirst capacity and normal depletion. Mm is higher metabolism with 12-15 capacity and increased depletion. MM is highest metabolism with 13-22.5 capacity and even more increased depletion. I also made growth smooth instead of how previously juveniles instantly became adults. There’s also a strange bug which I’m trying to fix. Sometimes, the metabolism genotype becomes part of the other genotype. “Qq” “Vv” “Mm” is default, but after a few generations, you start seeing things like “Qq” “vm” “Mm” and eventually, things like “mm” “MM” “Mm”"}, {"post_id": 20449, "ts": "2026-07-02T01:28:54Z", "hours": 0.2603, "text": "All of my progress since my last devlog is lost :( I’ll have to recode all of it, but it isn’t that much work. Probably happened because I set up Git incorrectly or something."}, {"post_id": 19963, "ts": "2026-07-01T12:53:28Z", "hours": 1.1578, "text": "I coded limited resources and juvenile creatures. When creatures spawn, they have to wait 15 seconds until they can mate (so they don’t start mating right out of the womb like last time), and now when food is eaten, it regrows after 7 seconds. I’ll probably add more genes next time, or maybe even expand the map and add new biomes and plants (which would be really easy because I can just drag the food scene onto any plant and the plant now has fruits that grow and regrow)."}, {"post_id": 19464, "ts": "2026-06-30T19:55:19Z", "hours": 1.9164, "text": "I added genetics and reproduction! You can see in the output that each new organism has 2 genotypes, one for Q/q (short for quickness, didn’t want to use S because it’s a common letter and I might need it later idk I forgot), and one for V/v (short for vision) alleles (probably using all the wrong vocabulary). These genes directly affect speed and vision (with some slight randomness) and speed and vision also affects hunger and thirst depletion, meaning that being fast and seeing well has a tradeoff. I really need to code limited resources and I really need to code juvenile creatures (they’re mating at birth 😭😭😭). Maybe I could even make something like eggs? The output got cut off in the image. Here’s what it’s supposed to say: Genetics: [“Qq”,“vv”] Speed: 92.3979906001719 Sight: 150 Genetics: [“qQ”,vv”] Speed: 83.9082190561058 Sight: 150 Genetics: [“QQ”,“vV”] Speed: 142.633334008872 Sight: 171.81141852858 Genetics: [“QQ”,“vv”] Speed: 110.227173121233 Sight: 150 …"}, {"post_id": 18864, "ts": "2026-06-30T02:01:05Z", "hours": 1.2911, "text": "Finished coding a lil guy with some slight (heavy emphasis on slight) survival instincts. You can watch his hunger and thirst go down in the Godot output and watch him race towards food and water (oh wait forgot to add a hungry state he just runs after water, oh well, I’ll just add that next dev log). I just started working on this, so basically everything’s a prototype. And I also had the bright idea of making prototype assets in MS Paint, that’s why the art looks so beautiful and astounding. I have a lot of ideas for the future; I’ll probably code genes and reproduction next, but I also have a ton of ideas for the future, like Perlin noise generated terrain (like in my last project), adding natural selection for plants, multiple biomes, several species, etc… Who knows how this project will turn out? Anyways, it’s 10 PM and I have spend over an hour coding, so I should definitely go to sleep. Or should I? I reallyyyy want to code genes and reproduction."}]...
|
Title: Natural Selection Simulation by @VasilyKrup Title: Natural Selection Simulation by @VasilyKrupenin | Stardance
Devlogs:
Finished coding a lil guy with some slight (heavy emphasis on slight) survival instincts. You can watch his hunger and thirst go down in the Godot output and watch him race towards food and water (oh wait forgot to add a hungry state he just runs after water, oh well, I’ll just add that next dev log). I just started working on this, so basically everything’s a prototype. And I also had the bright idea of making prototype assets in MS Paint, that’s why the art looks so beautiful and astounding. I have a lot of ideas for the future; I’ll probably code genes and reproduction next, but I also have a ton of ideas for the future, like Perlin noise generated terrain (like in my last project), adding natural selection for plants, multiple biomes, several species, etc… Who knows how this project will turn out? Anyways, it’s 10 PM and I have spend over an hour coding, so I should definitely go to sleep. Or should I? I reallyyyy want to code genes and reproduction.
I added genetics and reproduction! You can see in the output that each new organism has 2 genotypes, one for Q/q (short for quickness, didn’t want to use S because it’s a common letter and I might need it later idk I forgot), and one for V/v (short for vision) alleles (probably using all the wrong vocabulary). These genes directly affect speed and vision (with some slight randomness) and speed and vision also affects hunger and thirst depletion, meaning that being fast and seeing well has a tradeoff. I really need to code limited resources and I really need to code juvenile creatures (they’re mating at birth 😭😭😭). Maybe I could even make something like eggs? The output got cut off in the image. Here’s what it’s supposed to say: Genetics: [“Qq”,“vv”] Speed: 92.3979906001719 Sight: 150 Genetics: [“qQ”,vv”] Speed: 83.9082190561058 Sight: 150 Genetics: [“QQ”,“vV”] Speed: 142.633334008872 Sight: 171.81141852858 Genetics: [“QQ”,“vv”] Speed: 110.227173121233 Sight: 150 …
I coded limited resources and juvenile creatures. When creatures spawn, they have to wait 15 seconds until they can mate (so they don’t start mating right out of the womb like last time), and now when food is eaten, it regrows after 7 seconds. I’ll probably add more genes next time, or maybe even expand the map and add new biomes and plants (which would be really easy because I can just drag the food scene onto any plant and the plant now has fruits that grow and regrow).
All of my progress since my last devlog is lost :( I’ll have to recode all of it, but it isn’t that much work. Probably happened because I set up Git incorrectly or something.
I restored my work and added a new trait; metabolism. mm is default metabolism; 10 hunger/thirst capacity and normal depletion. Mm is higher metabolism with 12-15 capacity and increased depletion. MM is highest metabolism with 13-22.5 capacity and even more increased depletion. I also made growth smooth instead of how previously juveniles instantly became adults. There’s also a strange bug which I’m trying to fix. Sometimes, the metabolism genotype becomes part of the other genotype. “Qq” “Vv” “Mm” is default, but after a few generations, you start seeing things like “Qq” “vm” “Mm” and eventually, things like “mm” “MM” “Mm”
I did a LOT of debugging. Fixed the last bug and numerous more that caused things like food not giving any hunger, genes getting incorrect effects, and more. I also changed how metabolism works and nerfed it. Now, Mm = 0, mm = -1, and MM = 1. These values are “intensified” by the I/i alleles. These work the same way as metabolism worked before, but now the values can be negative leading to efficient but low capacity creatures. I had to nerf it because capacity was becoming negative and creatures were getting infinite food.
I’m a bit stuck. I don’t really like the gene system so I decided to code traits as numbers, but that needs a lot of balance and tweaking to properly implement, and all of this work is a bit overwhelming. I might take a break from this project for a few days.
I didn’t do much coding, and the game still needs a lot of work, but I have reached a great milestone! The game naturally selects traits! I added some statistics and a new memory trait because the creatures could just set off on a journey and remember the exact position down to the decimal places of the last food and water it saw, so I fixed that and added a timer which wipes the memory of the food/water position once it times out. The default traits are: 75 speed, 150 sight, 1 metabolism, and 7 memory. The average traits after running the simulation for some time: 65 speed, 125 sight, similar metabolism, and 10 memory. This result is pretty consistent with the exact plant and water setup in the image, but if I change it to a sparser environment, I saw speed go up by 10, sight go up by 5, metabolism stay the same, and surprisingly, despite being a trait with no negatives implemented yet, memory go down by 0.25. I guess memory doesn’t matter if you are fast enough and see well.
I haven’t posted much because there wasn’t a lot to display or show that I’ve gotten something to work. Anyway, I coded a mutation trait which modifies how much a child’s traits can change (I noticed something pretty cool; when setting the mutation value super high like 1, it almost always drops back down to around 0.3). Here’s how mutation works: you get a child’s genes by calculating the average of the 2 parents genes plus that same number multiplied by mutation value. With a mutation of value of 1, the highest amount genes can change is double the original value. And most noticeably, I started working on UI; I started making charts that display certain traits. It’s nowhere near done, but it is coming along quite nicely. In the video attached, a chart is tracking the average speed value of the population. I didn’t show in the video, but you can drag the windows around, but that’s about it; I can only manually set the tracked value in code and drag windows around, they don’t have much features. A lot of the work I can’t really show; I was working on tracking, originally it was mostly for debugging, but now I can actually display those values with the graphs I am coding. Sorry that the video’s a bit long, Haaland scored a goal against Brazil and I forgot I was recording; I had to see the replay. He also scored a second one while I was typing this devlog. Go Norway (I’d root for Russia but they got suspended)!
I did a bit more work on the windows. Now you can select which stats to track (only sight and speed for now, but I’ll fix that) and you can track up to 2 stats (but it doesn’t take long to change how many stats you can track), and you can change the colors. In the video, I am tracking the average speed and sight (note that the graph is measuring not the value, but the change in value; sight is twice as large as speed by default). I also demonstrated some of the features of the windows in the video which I forgot to show in the last one.
I don’t have much to display at the moment, I’ve been optimizing the code (for example, I used for loops to repeat the same process with different variables used for graphing instead of having separate code for each variable to significantly shorten the code) and I’ve started working on biomes. Since it has been a while since I have last posted a devlog, I’ll post one, and since I have to attach a screenshot or video, here’s an demonstration of natural selection in my game. You can clearly see the memory trait rose a lot and certain traits balanced out at a certain level (the images are a bit low quality but the values tracked are speed, sight, metabolism, mutation, memory, and population).
I’ve been a bit lazy, but progress on procedural generation is coming along well. I finished it and tweaked it until I got a result I liked (there was more mathematics that I had to do, like I had to use the pythagorean theorem to figure out the distance away from the center and subtract that to ensure that edges are ocean). The way it works is by first creating ocean, beach, fertile land, and mountains from noise, then I use moisture and temperature to determine the biome. Temperature is calculated by getting the latitude, subtracting the elevation (to make higher areas naturally colder), and then a bit of noise is added on top of all of that. Moisture works similarly, minus the latitude part. I also started working on vegetation; see those savanna trees? But I do have to create plants for each biome (or the creatures will have nothing to eat) which I am too lazy to do (as you can see I just made a savanna tree), I do not know what I’ll do for that. There’s so much art I have to make; I’ll have to make the animals and all of the plants. I’m planning to code a bunch of traits gained from animal appearance as soon as I put in the work to create the animals, which will be really difficult to do. I’m finally moving away from MSFT Paint though!
It’s been a while since I last posted a devlog because I was hoping to finish the project, but I am farther away than I thought, and I also could not work on any Stardance projects for 2 weeks, unfortunately. It’s been so long since I’ve worked that I forgot what I’ve made; I think I made size, color, and a few tree variants.
Stardance is about to end, so I might as well publish this to get my 20+ hours worth of stardust. I may finish this later, but it will probably won’t be finished by the time Stardance ends. Do whatever you want with my project. It needs a screenshot, so here’s a cool picture I took:
Ships:
I made the basics of a natural selection simulation, but it unfortunately is unfinished, and since Stardance is ending pretty soon, I want to publish this so if anyone wants to use my project for something, they are free to do so, since I will be unable to finish it before it ends....
|
1793004441.110025
|
1793090841.110025
|
|
47889
|
sorting algs by @Lumethra | Stardance
|
Lumethra
|
1
|
16.0
|
212
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T19:32:31Z", "hours": 16.0, "multiplier": 13.53, "payout": 212, "blessing": "neutral", "text": "A 3d sorting algorithm visualizer with NextJS and ThreeJS. Also its made with luve and happiness.", "repo": "https://github.com/Lumethra/sorting-algs", "demo": "https://lumethra-sorting-algs.vercel.app/"}]...
|
[{"post_id": 73291, "ts": "202 [{"post_id": 73291, "ts": "2026-09-24T19:30:47Z", "hours": 0.4911, "text": "I wrote my readme in this session, so nothing really to say. It was just typing typing typing and finishing this beautiful readme to be able to submit this project."}, {"post_id": 73279, "ts": "2026-09-24T18:57:15Z", "hours": 0.4069, "text": "Implemented pause logic. I implemented pause logic and added an indicator, which shows, which sorting algorithm is currently active. The pause logic was quite painful, cause it just didnt want to stop. Neither with break, nor with return. After a long long long trouble shooting session, I found out, that I forgot .current and it just wont detect correctly, what a stupid bug to troubleshoot 20 min for. Also I fixed an edge case in the demo vid xD"}, {"post_id": 73266, "ts": "2026-09-24T18:19:33Z", "hours": 2.58, "text": "FINALLYYYY Today was the final coding session. I finally got the UI right and am okay with it. Its not the best, but its acceptable. I decided to only use icons, to keep it clean, but I ran into the problem, that the icons arent clear enough to showcase the specific sorting algorithm. So I decided on making a tooltip. But the build in HTML tooltip is too ugly and the delay is annoying. I did some research and found a W3Schools tutorial, they are the goat ( here it is ). I didnt expect front end being so time intensive, but I did need to adjust every value so it looks good, which is very hard to do :(. Ah, I also fixed the bug that when there is the minimal amount of pillars, it will be weird while shuffling (that wasnt proper english). Also the icons changes depending if we are shuffling or sorting and the disables and reinables, which is cool. Uhh, I remembered sth, I need to implement canceling while sorting. Also the vid is one fix old, i did fix the typo in the sorting alg."}, {"post_id": 72326, "ts": "2026-09-22T17:49:27Z", "hours": 1.4453, "text": "Thats enough, Ima do CSS tomorrow. Today I added a slider style and 2 other sliders for the shuffling and sorting speed. Then I hid those 2 and the remove and adding pillar buttons. Also added some CSS for flex, justify content, space between, to seperate the drop down, which I added too. I tried to add a scrolling drop down thing, but failed, uhh, I also adjusted the pillar speed and camera angle. Also I found out, that I can call functions from an array, so I can store a function in an array and then call it like that, thats weird, but also huge. Dont wanna write too much today, cause I still have stuff to do. Ah, also added prevention of shuffling while sorting."}, {"post_id": 71209, "ts": "2026-09-20T13:27:14Z", "hours": 1.2819, "text": "Slider!! Today I added a slider that controls the adding and removing of pillars. I had some minor problems. (No, they were huge, but I feel better saying that they were minor ). First of all, I needed to figure out how to set default values. Normally its just value=””, but this doesnt work for a input type range. After some research I found out that its simply defaultValue, I feel dumb. Then I tried to add/remove pillars with useEffect and monitor the changes of the slider. This worked, but also didnt. I needed to manually update the pillars. It didnt do it automatically. Then my brain suggested something genius. Using onChange. But now I need to do an extra function for it. I thought, maybe I use a while loop once. While the number array is smaller run add function and while its bigger, the remove function. This was uhh, not that good, because it somehow resulted into an infinite while loop, because js is asynchronous. I also tried with a for loop. This threw the error, that I set the 2 useState too often. After some experimenting I ended up with my current solution. I also added 2 useState variables for the sorting delay and shuffling delay. I am still searching for a great mathematical, anti-proportional, linear function to adjust it corresponding to the pillars count. Ahh and I also updated the camera adjusting logic a bit."}, {"post_id": 70217, "ts": "2026-09-18T18:42:46Z", "hours": 1.0872, "text": "HOLY WAS THIS A STRUGGLE !! In this session I implemented adding and removing numbers for a slider in the future (hopefully tomorrow). THIS WAS A PAIN. Especially the camera handling. The very very basic adding and removing function was quite easy, since its only adding numbers or splicing numbers from the array (stack overflow my goat). The camera thing was quite hard though. When I add enough numbers it could make the pillars taller than the viewheight, making them sticking “off screen”. The fix was zooming out. But the fix on stack overflow needed to let it be a JSX element, which somehow didnt work. Finding the fix was one problem. The other problem is, that after finding the fix, it still didnt work and the camera “fell” down. After a long debugging session with various console.logs, I finally found the problem and it was one of the stupid ones. I used z, where it should have been y, thats dumb, but eyy, here we go. There were also a few other bugs, like having an infinite while loop when only having one pillar and shuffling. This was fixed by making the minimum number 2. The other bug was, weird camera behaviors happen, when reducing the number while its shuffled. Fixing it with an instant sort before reducing the number of pillars was my approach. Ya, that was about it. I am done for today."}, {"post_id": 70112, "ts": "2026-09-18T14:17:37Z", "hours": 1.1447, "text": "Better Shuffling logic!!! Before the refinement of the shuffling logic today I just simply randomized the numbers in the array, so that there are new numbers. That introduced one problem, actually two. Numbers could dupe!! I tried to fix it while using numbers with one decimal. The other problem was I could not add an animation anywhere. This is why I decided to make a brand new shuffling logic today. I first tried to fix the duping problem, by checking if this number already exists. This took a while, because I need to figure out how to only watch an array to a specific point, to ignore the upcoming numbers. This resulted in a growing or shrinking animation, which wasnt what I wanted. Then I thought, maybe I can shuffle in another way. Not by changing the value, rather by swapping numbers randomly. Just like in a deck of cards. So I loop through each digit and randomly choose a number in the whole array and then swapping those. This ensures every place got changed. Now there was another problem. It sometimes changed with it self causing it not to do anything. This was fixed by adding a while loop which generates new positions if the position is the own position. While writing this devlog I also thought of another problem. When the total count of numbers is very low, this shuffling method might not shuffle it enough, so I am looping it 2 times, if there are less then 10 numbers in it. Ya, thats about it. Now lets get to the slider which increases the blocks."}, {"post_id": 67381, "ts": "2026-09-13T14:07:06Z", "hours": 1.6225, "text": "Finally something after a long time. I was on vacation during that time, so I needed to use some time to understand what I have done before that. Then I implemented another sorting algorithm!! Selection Sort!! If you take a look inside my commits, you can see it being committed. After implementing selection sort I took a small break and didnt devlog, cause it didnt even took that long. After the break I decided to add a little highlighting animation, that changes the color of the pillars, that are being swapped. That took waay longer that expected, but was the easiest thing to do. I just had to save the 2 values being swapped and somehow pass it inside and get the colors changed. After the highlighting, I decided its time for another sorting alg. The Insertion Sort. That somehow took longer that selection sort. Due to it being almost the exact opposite of bubble sort, I always fell back to it. While researching for insertion sort, I found this great website and quite liked its finishing animation. I also felt that the selecting animation is kinda off for insertion sort. It shouldnt be 2 pillars that are selected. It should be 3 or 1, since one pillar is inserted between 2 other ones and not 2 pillars being swapped. So I made a highlighting version with only one pillar being highlighted and created an if statement of doom inside the meshStandartMaterial. I thought this version was also better for bubble sort than the selection one and switched it too. Ya, that was all of it, I think, Have a great day though :)"}, {"post_id": 48929, "ts": "2026-08-17T14:21:47Z", "hours": 1.9594, "text": "AHHHHHHHHHHHHHHHHHHHHHH Sorting algorithm was made today. I decided on the most basic bubble sort. It is basically just 2 nested for-loops. This wikipedia article ( https://en.wikipedia.org/wiki/Bubble_sort ) has a great code example for it. It was relative easy. But the hard part was to get the animation going. The second part of the vid shows how it was without the fix for the animation. Finding out what the error was, was the first major problem. Fixing it was also hard, because I needed to save the target position after the box was created. This doesnt work, because you cannot call things after a return. Then after a good half hour of struggling and no progress, I asked my father for help. He is a full time developer aaand I hoped, that we could fix this together. He did gave some good calls, but the coding is still done by myself. After some together struggling, that lasted around 30 to 40 min, he proposed something genius. Save a version of the array of numbers, before every sorting step. That meant we need to compare the 2 arrays to get the difference and how the numbers got moved. I then said we could use some complicated for loops and then comparing stuff. He smiled and let me do. After some programming it was finally done and worked. But it wasnt optimized at all and was a bit laggy. Then he couldnt hold on anymore, laughed and told me that there is a dedicated js function just for that. I almost crashed out . Ya, that was todays session. I only implemented the dedicated js function instead of that. Ahh and before asking my father I also found out that js async is weird and that we need to use useEffect, kinda an event listener to see when the useState value changes. Ya, now that was it. See u later or tmrw."}, {"post_id": 48190, "ts": "2026-08-16T14:16:24Z", "hours": 1.0175, "text": "Shuffle mechanism Today was very successful day. The two major breakthroughs are creating the boxes dynamically and shuffle the height by math.random. I am happy that I remembered, that I could use useState to make an array and use the Array.prototype.map() function to simultaneously create the different boxes. And I can change the order of the boxes with changing the order of the components in the array, sooooo, that should be quite easy to archive. The random shuffle thingi was also quite successful. I just Math.random’ed some value and floor it to 2 decimals. Then I do that for every place of the numbers array and set it as new numbers array. This will update the numbers array, because of useState and let React-Three-Fiber rerender the boxes, resulting in a shuffling. The sorting will need an async function though, or else it will be instant sorting, which isnt the goal of this sorting thing. Enough yap, back to coding, eventually, maybe."}, {"post_id": 47505, "ts": "2026-08-15T13:45:14Z", "hours": 1.2922, "text": "After messing around abit and finding out that it is possible to have multiple meshes, I finally started with the actual project and made a Box func. While making it I decided on doing it with an Interface to be able to learn that (the whole point of this proj was to learn ThreeJS and NextJS). This Box func can be reused and the properties of this box can also be parsed inside. Soo every Box is the same and makes animating easier. I also added a simple moving animation. Then the quest was to level the boxes on the bottom. After a whole 5 min of struggling, I found a random post saying I could do scale / 2, which also worked. The moving the box was the hard part, because NextJS requires me to use useState, or else it wont get updated. This took me very long, very very very long to get right. The moving seems abit laggy in the vid, but in real life its smooth, i dunno why, but ya. The last part, was centering this whole thing, because the camera always points to [0, 0, 0] which is strange, but whatever, so i needed to move the boxes collectively somewhere else. So I tried alot of stuff, but finally found out that groups have props too, so I can group them and move them to the left and down. This was great !! Later I need to find out how to do this automatically, but thats not present-me problem, its a future-me problem."}, {"post_id": 47096, "ts": "2026-08-14T18:50:47Z", "hours": 1.3286, "text": "First devlog My friend @Leon gave me this idea to work with ThreeJS in NextJS, so I can get familiar with both at the same time. And I said, fine whatever. I had the idea to do a sorting algorithm showcaser with pillars of different heights. And code different sorting methods to sort these pillars. Soo I created a Next instance like my personal site aaaand messed up. So I had to delete it and install again, WITHOUT TailwindCSS. Finally having a working NextJS instance I installed ThreeJS, but then I ran into the problem that ThreeJS didnt like pnpm, soo I reinstalled the whole shit with npm, which obviously didnt work. So I debugged the whole shit and every reddit post and stackoverflow post said to reinstall it again, so the installer cleanly installs the JSX module that was missing, which it didnt. So I decided to just paste the whole error message into google and there it was. The holy stackoverflow post that gave me a command to reinstall the dependencies and advised me to reload my vscode window to prevent cache. THIS WORKED!!! My next task was to read and follow the React Three Fiber docs, which is threejs but in better for react, so also for nextjs. I followed it (which was very hard, since its written unclearly, but I think when you know the normal threejs it should be fine, which I obviously am not familiar with) and after some time got an overall idea how this thing works. Then I found a task in this doc and it is to create a spinning cube. I took it seriously and made it todays goal. And here we are. To be fair, it was okay to finish, since there was already a sample code written in vite or whatever it was. I just needed to rewrite that for my nextjs instance. Ya that was todays progress. I think when I got the motivation to continue later, it will be waay easier to do, since I know the basics now. Holy yap, bye, see u later, maybe, well, bye"}]...
|
Title: sorting algs by @Lumethra | Stardance
Devl Title: sorting algs by @Lumethra | Stardance
Devlogs:
First devlog My friend @Leon gave me this idea to work with ThreeJS in NextJS, so I can get familiar with both at the same time. And I said, fine whatever. I had the idea to do a sorting algorithm showcaser with pillars of different heights. And code different sorting methods to sort these pillars. Soo I created a Next instance like my personal site aaaand messed up. So I had to delete it and install again, WITHOUT TailwindCSS. Finally having a working NextJS instance I installed ThreeJS, but then I ran into the problem that ThreeJS didnt like pnpm, soo I reinstalled the whole shit with npm, which obviously didnt work. So I debugged the whole shit and every reddit post and stackoverflow post said to reinstall it again, so the installer cleanly installs the JSX module that was missing, which it didnt. So I decided to just paste the whole error message into google and there it was. The holy stackoverflow post that gave me a command to reinstall the dependencies and advised me to reload my vscode window to prevent cache. THIS WORKED!!! My next task was to read and follow the React Three Fiber docs, which is threejs but in better for react, so also for nextjs. I followed it (which was very hard, since its written unclearly, but I think when you know the normal threejs it should be fine, which I obviously am not familiar with) and after some time got an overall idea how this thing works. Then I found a task in this doc and it is to create a spinning cube. I took it seriously and made it todays goal. And here we are. To be fair, it was okay to finish, since there was already a sample code written in vite or whatever it was. I just needed to rewrite that for my nextjs instance. Ya that was todays progress. I think when I got the motivation to continue later, it will be waay easier to do, since I know the basics now. Holy yap, bye, see u later, maybe, well, bye
After messing around abit and finding out that it is possible to have multiple meshes, I finally started with the actual project and made a Box func. While making it I decided on doing it with an Interface to be able to learn that (the whole point of this proj was to learn ThreeJS and NextJS). This Box func can be reused and the properties of this box can also be parsed inside. Soo every Box is the same and makes animating easier. I also added a simple moving animation. Then the quest was to level the boxes on the bottom. After a whole 5 min of struggling, I found a random post saying I could do scale / 2, which also worked. The moving the box was the hard part, because NextJS requires me to use useState, or else it wont get updated. This took me very long, very very very long to get right. The moving seems abit laggy in the vid, but in real life its smooth, i dunno why, but ya. The last part, was centering this whole thing, because the camera always points to [0, 0, 0] which is strange, but whatever, so i needed to move the boxes collectively somewhere else. So I tried alot of stuff, but finally found out that groups have props too, so I can group them and move them to the left and down. This was great !! Later I need to find out how to do this automatically, but thats not present-me problem, its a future-me problem.
Shuffle mechanism Today was very successful day. The two major breakthroughs are creating the boxes dynamically and shuffle the height by math.random. I am happy that I remembered, that I could use useState to make an array and use the Array.prototype.map() function to simultaneously create the different boxes. And I can change the order of the boxes with changing the order of the components in the array, sooooo, that should be quite easy to archive. The random shuffle thingi was also quite successful. I just Math.random’ed some value and floor it to 2 decimals. Then I do that for every place of the numbers array and set it as new numbers array. This will update the numbers array, because of useState and let React-Three-Fiber rerender the boxes, resulting in a shuffling. The sorting will need an async function though, or else it will be instant sorting, which isnt the goal of this sorting thing. Enough yap, back to coding, eventually, maybe.
AHHHHHHHHHHHHHHHHHHHHHH Sorting algorithm was made today. I decided on the most basic bubble sort. It is basically just 2 nested for-loops. This wikipedia article ( https://en.wikipedia.org/wiki/Bubble_sort ) has a great code example for it. It was relative easy. But the hard part was to get the animation going. The second part of the vid shows how it was without the fix for the animation. Finding out what the error was, was the first major problem. Fixing it was also hard, because I needed to save the target position after the box was created. This doesnt work, because you cannot call things after a return. Then after a good half hour of struggling and no progress, I asked my father for help. He is a full time developer aaand I hoped, that we could fix this together. He did gave some good calls, but the coding is still done by myself. After some together struggling, that lasted around 30 to 40 min, he proposed something genius. Save a version of the array of numbers, before every sorting step. That meant we need to compare the 2 arrays to get the difference and how the numbers got moved. I then said we could use some complicated for loops and then comparing stuff. He smiled and let me do. After some programming it was finally done and worked. But it wasnt optimized at all and was a bit laggy. Then he couldnt hold on anymore, laughed and told me that there is a dedicated js function just for that. I almost crashed out . Ya, that was todays session. I only implemented the dedicated js function instead of that. Ahh and before asking my father I also found out that js async is weird and that we need to use useEffect, kinda an event listener to see when the useState value changes. Ya, now that was it. See u later or tmrw.
Finally something after a long time. I was on vacation during that time, so I needed to use some time to understand what I have done before that. Then I implemented another sorting algorithm!! Selection Sort!! If you take a look inside my commits, you can see it being committed. After implementing selection sort I took a small break and didnt devlog, cause it didnt even took that long. After the break I decided to add a little highlighting animation, that changes the color of the pillars, that are being swapped. That took waay longer that expected, but was the easiest thing to do. I just had to save the 2 values being swapped and somehow pass it inside and get the colors changed. After the highlighting, I decided its time for another sorting alg. The Insertion Sort. That somehow took longer that selection sort. Due to it being almost the exact opposite of bubble sort, I always fell back to it. While researching for insertion sort, I found this great website and quite liked its finishing animation. I also felt that the selecting animation is kinda off for insertion sort. It shouldnt be 2 pillars that are selected. It should be 3 or 1, since one pillar is inserted between 2 other ones and not 2 pillars being swapped. So I made a highlighting version with only one pillar being highlighted and created an if statement of doom inside the meshStandartMaterial. I thought this version was also better for bubble sort than the selection one and switched it too. Ya, that was all of it, I think, Have a great day though :)
Better Shuffling logic!!! Before the refinement of the shuffling logic today I just simply randomized the numbers in the array, so that there are new numbers. That introduced one problem, actually two. Numbers could dupe!! I tried to fix it while using numbers with one decimal. The other problem was I could not add an animation anywhere. This is why I decided to make a brand new shuffling logic today. I first tried to fix the duping problem, by checking if this number already exists. This took a while, because I need to figure out how to only watch an array to a specific point, to ignore the upcoming numbers. This resulted in a growing or shrinking animation, which wasnt what I wanted. Then I thought, maybe I can shuffle in another way. Not by changing the value, rather by swapping numbers randomly. Just like in a deck of cards. So I loop through each digit and randomly choose a number in the whole array and then swapping those. This ensures every place got changed. Now there was another problem. It sometimes changed with it self causing it not to do anything. This was fixed by adding a while loop which generates new positions if the position is the own position. While writing this devlog I also thought of another problem. When the total count of numbers is very low, this shuffling method might not shuffle it enough, so I am looping it 2 times, if there are less then 10 numbers in it. Ya, thats about it. Now lets get to the slider which increases the blocks.
HOLY WAS THIS A STRUGGLE !! In this session I implemented adding and removing numbers for a slider in the future (hopefully tomorrow). THIS WAS A PAIN. Especially the camera handling. The very very basic adding and removing function was quite easy, since its only adding numbers or splicing numbers from the array (stack overflow my goat). The camera thing was quite hard though. When I add enough numbers it could make the pillars taller than the viewheight, making them sticking “off screen”. The fix was zooming out. But the fix on stack overflow needed to let it be a JSX element, which somehow didnt work. Finding the fix was one problem. The other problem is, that after finding the fix, it still didnt work and the camera “fell” down. After a long debugging session with various console.logs, I finally found the problem and it was one of the stupid ones. I used z, where it should have been y, thats dumb, but eyy, here we go. There were also a few other bugs, like having an infinite while loop when only having one pillar and shuffling. This was fixed by making the minimum number 2. The other bug was, weird camera behaviors happen, when reducing the number while its shuffled. Fixing it with an instant sort before reducing the number of pillars was my approach. Ya, that was about it. I am done for today.
Slider!! Today I added a slider that controls the adding and removing of pillars. I had some minor problems. (No, they were huge, but I feel better saying that they were minor ). First of all, I needed to figure out how to set default values. Normally its just value=””, but this doesnt work for a input type range. After some research I found out that its simply defaultValue, I feel dumb. Then I tried to add/remove pillars with useEffect and monitor the changes of the slider. This worked, but also didnt. I needed to manually update the pillars. It didnt do it automatically. Then my brain suggested something genius. Using onChange. But now I need to do an extra function for it. I thought, maybe I use a while loop once. While the number array is smaller run add function and while its bigger, the remove function. This was uhh, not that good, because it somehow resulted into an infinite while loop, because js is asynchronous. I also tried with a for loop. This threw the error, that I set the 2 useState too often. After some experimenting I ended up with my current solution. I also added 2 useState variables for the sorting delay and shuffling delay. I am still searching for a great mathematical, anti-proportional, linear function to adjust it corresponding to the pillars count. Ahh and I also updated the camera adjusting logic a bit.
Thats enough, Ima do CSS tomorrow. Today I added a slider style and 2 other sliders for the shuffling and sorting speed. Then I hid those 2 and the remove and adding pillar buttons. Also added some CSS for flex, justify content, space between, to seperate the drop down, which I added too. I tried to add a scrolling drop down thing, but failed, uhh, I also adjusted the pillar speed and camera angle. Also I found out, that I can call functions from an array, so I can store a function in an array and then call it like that, thats weird, but also huge. Dont wanna write too much today, cause I still have stuff to do. Ah, also added prevention of shuffling while sorting.
FINALLYYYY Today was the final coding session. I finally got the UI right and am okay with it. Its not the best, but its acceptable. I decided to only use icons, to keep it clean, but I ran into the problem, that the icons arent clear enough to showcase the specific sorting algorithm. So I decided on making a tooltip. But the build in HTML tooltip is too ugly and the delay is annoying. I did some research and found a W3Schools tutorial, they are the goat ( here it is ). I didnt expect front end being so time intensive, but I did need to adjust every value so it looks good, which is very hard to do :(. Ah, I also fixed the bug that when there is the minimal amount of pillars, it will be weird while shuffling (that wasnt proper english). Also the icons changes depending if we are shuffling or sorting and the disables and reinables, which is cool. Uhh, I remembered sth, I need to implement canceling while sorting. Also the vid is one fix old, i did fix the typo in the sorting alg.
Implemented pause logic. I implemented pause logic and added an indicator, which shows, which sorting algorithm is currently active. The pause logic was quite painful, cause it just didnt want to stop. Neither with break, nor with return. After a long long long trouble shooting session, I found out, that I forgot .current and it just wont detect correctly, what a stupid bug to troubleshoot 20 min for. Also I fixed an edge case in the demo vid xD
I wrote my readme in this session, so nothing really to say. It was just typing typing typing and finishing this beautiful readme to be able to submit this project.
Ships:
A 3d sorting algorithm visualizer with NextJS and ThreeJS. Also its made with luve and happiness....
|
1793004563.9530814
|
1793090963.9530814
|
|
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...
|
1792965163.5811973
|
1793051563.5811973
|
|
62105
|
space-dashboard by @abdulqadir | Stardance
|
abdulqadir
|
1
|
16.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T18:27:33Z", "hours": 16.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a customizable Space Dashboard using HTML, CSS, JavaScript and Vite. It uses NASA’s APOD API to show a new space background and also has a live customizable clock, Google search, quick shortcuts, random quotes, a draggable to-do list, custom space wallpapers and solid backgrounds. One of the most challenging parts was debugging the JavaScript, especially when a missing bracket broke both the clock and hamburger menu, and I also had some problems getting the Day/Night color toggle and wallpapers working correctly. I’m most proud of the custom Space Menu and how users can personalize the dashboard. When testing it, try changing the background, clock font and color, turning Day/Night mode on and off, and using the To-Do list and search.", "repo": "https://github.com/qadir-eng/space-dashboard", "demo": "https://qadir-eng.github.io/space-dashboard/"}]...
|
[{"post_id": 73257, "ts": "202 [{"post_id": 73257, "ts": "2026-09-24T18:04:25Z", "hours": 3.9967, "text": "Since the last devlog, I worked mainly on improving the customization and overall UI of the Space Dashboard. I added a Background section to the side menu. Users can now switch back to the NASA Daily image, choose from five selected space wallpapers, or use solid-color backgrounds. The wallpapers also have small previews so users can see them before selecting one. I also improved the clock customization. Users can now change the clock font using arrow buttons and choose between Digital Ops, Audiowide, Michroma, Bruno Ace, and Oxanium. I added a similar selector for clock colors, with options like White, Cyan, Blue, Purple, Solar, and Black. I added a Day/Night toggle for the clock too. When it is turned on, the clock automatically changes its color depending on the time of day. When it is turned off, the user can select their own clock color. I also improved the side menu so the clock font and color selectors open directly underneath their buttons instead of opening separate panels. This makes the menu simpler and keeps the main dashboard clean. Another addition was the loading screen. When the website starts, it shows “Loading Space…” while the NASA Daily background is being fetched and loaded. Once the image is ready, the loading screen disappears. It also disappears if the NASA request fails so the website doesn’t get stuck. There were several bugs while building these features. The biggest one was a misplaced } in the clock code, which caused the clock to stay at 00 00 and stopped the hamburger menu from working. I also had issues with the Day/Night toggle not visually turning off, wallpaper paths, and manual clock colors being overwritten by the automatic colors. I debugged these issues and got everything working properly. Overall, this update focused on making the Space Dashboard more customizable, cleaner, and easier to use."}, {"post_id": 72588, "ts": "2026-09-23T09:29:52Z", "hours": 3.6825, "text": "From last 2 days I was focusing on making the Space Dashboard more interactive and customizable. Space Menu I created a hamburger menu that opens a glass-style sidebar. This will act as the main control center for the dashboard, with options for the Quote of the Day, To-Do List, backgrounds, clock styles, and clock colors. I connected the Quote of the Day option to the sidebar. Users can now toggle the quote ON or OFF, depending on whether they want a cleaner dashboard or some inspiration on screen. I added a 4-task To-Do panel with a dark matte-glass design, background blur, rounded corners, and subtle transparency. I also made the panel draggable, so users can move it anywhere on their dashboard while still being able to type normally inside the task fields. and with that they can be on and off by clicking on to-do list button on sidebar"}, {"post_id": 71743, "ts": "2026-09-21T13:12:22Z", "hours": 0.7314, "text": "Today I worked on the search section of my Space Dashboard. I added a Google search bar so users can quickly search the web directly from the dashboard. I also added four shortcut buttons for YouTube, Gmail, Stardance, and Hackatime. I gave the search bar and shortcuts a glassmorphism/futuristic space design with transparent backgrounds, blur effects, and hover animations."}, {"post_id": 71683, "ts": "2026-09-21T09:35:02Z", "hours": 1.0897, "text": "add 5 different quotes each time randomly one from them will appear as it is appearing of top right if you think any changes feel free to give your changes"}, {"post_id": 71406, "ts": "2026-09-20T19:22:20Z", "hours": 2.0353, "text": "Set today’s NASA Astronomy Picture of the Day as the full-page background, with a dark overlay to keep everything readable regardless of what image NASA posts. Added a large glowing digital clock overlay showing the live time, styled with a soft black to match the space theme"}, {"post_id": 71105, "ts": "2026-09-20T09:38:25Z", "hours": 1.8103, "text": "🚀 Space Dashboard — Saving Notes with localStorageToday I worked on making the sticky notes in my Space Dashboard persistent.Before this, I could create NASA photo notes and drag them around, but whenever I refreshed the page, all the notes disappeared.💾 What I addedI implemented localStorage so the dashboard can remember the notes even after refreshing the page.For each note, I now save:📸 The NASA photo URL📍 The note’s position📝 The note’s shape/classI created a saveNotes() function that collects the information from every sticky note and stores it in the browser’s localStorage.I also added a restore system that runs when the page loads. It reads the saved notes, recreates them, restores their positions, and makes them draggable again.🖱️ Dragging + SavingI kept the existing drag system and connected it to the save function. Whenever I move a note, its new position is saved.This means I can:Add a NASA photo noteDrag it anywhereRefresh the pageGet the note back in the same position 🎯🧠 What I learnedThis part taught me more about:localStorageJSON.stringify()JSON.parse()datasetSaving JavaScript objectsRestoring DOM elements after a page reloadConnecting multiple features together✅ ResultThe Space Dashboard now remembers my NASA sticky notes instead of losing them every time the page refreshes.This makes the dashboard feel much more like a real usable application rather than just a temporary webpage. lwk this time no ss TT"}, {"post_id": 70069, "ts": "2026-09-18T12:00:27Z", "hours": 0.9089, "text": "Fixed a real-world problem: NASA’s official Mars Rover Photos API was returning 404 errors on every request — confirmed it wasn’t my code by testing the exact documented URL directly, even with their public demo key. Pivoted to reusing the same NASA APOD endpoint I’d already gotten working, but requesting a random historical date instead of today — gives varied real space photos on each sticky note while staying reliable. Learned how to generate a random date between two points using Date.getTime() and Math.random()."}, {"post_id": 69319, "ts": "2026-09-16T19:50:28Z", "hours": 1.2689, "text": "Wrote the core JavaScript for my Space Search project: a live fetch to NASA’s Astronomy Picture of the Day API. Learned how fetch() and .then() chains work — sending a request, converting the raw response with .json(), then using the data to build the page. Handled the case where NASA sometimes posts a video instead of an image (using an if statement and a media variable so I only set innerHTML once, instead of overwriting it multiple times). Added error handling with .catch() so the page shows a clear message instead of going blank if something fails. Toughest part was understanding why setting innerHTML multiple times wipes out previous content — had to actually see it break before it clicked. Screenshot: the page showing today’s NASA title, image, and description. Ik that it isn’t looking cool but trust the process buddies TT"}]...
|
Title: space-dashboard by @abdulqadir | Stardance
Title: space-dashboard by @abdulqadir | Stardance
Devlogs:
Wrote the core JavaScript for my Space Search project: a live fetch to NASA’s Astronomy Picture of the Day API. Learned how fetch() and .then() chains work — sending a request, converting the raw response with .json(), then using the data to build the page. Handled the case where NASA sometimes posts a video instead of an image (using an if statement and a media variable so I only set innerHTML once, instead of overwriting it multiple times). Added error handling with .catch() so the page shows a clear message instead of going blank if something fails. Toughest part was understanding why setting innerHTML multiple times wipes out previous content — had to actually see it break before it clicked. Screenshot: the page showing today’s NASA title, image, and description. Ik that it isn’t looking cool but trust the process buddies TT
Fixed a real-world problem: NASA’s official Mars Rover Photos API was returning 404 errors on every request — confirmed it wasn’t my code by testing the exact documented URL directly, even with their public demo key. Pivoted to reusing the same NASA APOD endpoint I’d already gotten working, but requesting a random historical date instead of today — gives varied real space photos on each sticky note while staying reliable. Learned how to generate a random date between two points using Date.getTime() and Math.random().
🚀 Space Dashboard — Saving Notes with localStorageToday I worked on making the sticky notes in my Space Dashboard persistent.Before this, I could create NASA photo notes and drag them around, but whenever I refreshed the page, all the notes disappeared.💾 What I addedI implemented localStorage so the dashboard can remember the notes even after refreshing the page.For each note, I now save:📸 The NASA photo URL📍 The note’s position📝 The note’s shape/classI created a saveNotes() function that collects the information from every sticky note and stores it in the browser’s localStorage.I also added a restore system that runs when the page loads. It reads the saved notes, recreates them, restores their positions, and makes them draggable again.🖱️ Dragging + SavingI kept the existing drag system and connected it to the save function. Whenever I move a note, its new position is saved.This means I can:Add a NASA photo noteDrag it anywhereRefresh the pageGet the note back in the same position 🎯🧠 What I learnedThis part taught me more about:localStorageJSON.stringify()JSON.parse()datasetSaving JavaScript objectsRestoring DOM elements after a page reloadConnecting multiple features together✅ ResultThe Space Dashboard now remembers my NASA sticky notes instead of losing them every time the page refreshes.This makes the dashboard feel much more like a real usable application rather than just a temporary webpage. lwk this time no ss TT
Set today’s NASA Astronomy Picture of the Day as the full-page background, with a dark overlay to keep everything readable regardless of what image NASA posts. Added a large glowing digital clock overlay showing the live time, styled with a soft black to match the space theme
add 5 different quotes each time randomly one from them will appear as it is appearing of top right if you think any changes feel free to give your changes
Today I worked on the search section of my Space Dashboard. I added a Google search bar so users can quickly search the web directly from the dashboard. I also added four shortcut buttons for YouTube, Gmail, Stardance, and Hackatime. I gave the search bar and shortcuts a glassmorphism/futuristic space design with transparent backgrounds, blur effects, and hover animations.
From last 2 days I was focusing on making the Space Dashboard more interactive and customizable. Space Menu I created a hamburger menu that opens a glass-style sidebar. This will act as the main control center for the dashboard, with options for the Quote of the Day, To-Do List, backgrounds, clock styles, and clock colors. I connected the Quote of the Day option to the sidebar. Users can now toggle the quote ON or OFF, depending on whether they want a cleaner dashboard or some inspiration on screen. I added a 4-task To-Do panel with a dark matte-glass design, background blur, rounded corners, and subtle transparency. I also made the panel draggable, so users can move it anywhere on their dashboard while still being able to type normally inside the task fields. and with that they can be on and off by clicking on to-do list button on sidebar
Since the last devlog, I worked mainly on improving the customization and overall UI of the Space Dashboard. I added a Background section to the side menu. Users can now switch back to the NASA Daily image, choose from five selected space wallpapers, or use solid-color backgrounds. The wallpapers also have small previews so users can see them before selecting one. I also improved the clock customization. Users can now change the clock font using arrow buttons and choose between Digital Ops, Audiowide, Michroma, Bruno Ace, and Oxanium. I added a similar selector for clock colors, with options like White, Cyan, Blue, Purple, Solar, and Black. I added a Day/Night toggle for the clock too. When it is turned on, the clock automatically changes its color depending on the time of day. When it is turned off, the user can select their own clock color. I also improved the side menu so the clock font and color selectors open directly underneath their buttons instead of opening separate panels. This makes the menu simpler and keeps the main dashboard clean. Another addition was the loading screen. When the website starts, it shows “Loading Space…” while the NASA Daily background is being fetched and loaded. Once the image is ready, the loading screen disappears. It also disappears if the NASA request fails so the website doesn’t get stuck. There were several bugs while building these features. The biggest one was a misplaced } in the clock code, which caused the clock to stay at 00 00 and stopped the hamburger menu from working. I also had issues with the Day/Night toggle not visually turning off, wallpaper paths, and manual clock colors being overwritten by the automatic colors. I debugged these issues and got everything working properly. Overall, this update focused on making the Space Dashboard more customizable, cleaner, and easier to use.
Ships:
I made a customizable Space Dashboard using HTML, CSS, JavaScript and Vite. It uses NASA’s APOD API to show a new space background and also has a live customizable clock, Google search, quick shortcuts, random quotes, a draggable to-do list, custom space wallpapers and solid backgrounds. One of the most challenging parts was debugging the JavaScript, especially when a missing bracket broke both the clock and hamburger menu, and I also had some problems getting the Day/Night color toggle and wallpapers working correctly. I’m most proud of the custom Space Menu and how users can personalize the dashboard. When testing it, try changing the background, clock font and color, turning Day/Night mode on and off, and using the To-Do list and search....
|
1792964883.8728957
|
1793051283.8728957
|
|
48199
|
UPS for Raspberry Pi by @Jovi | Stardance
|
Jovi
|
2
|
5.0
|
23
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T17:16:12Z", "hours": 1.0, "multiplier": 5.0, "payout": 3, "blessing": "neutral", "text": "I made a simple but working UPS for a raspberry pi(any raspberry pi) that works on a 1200mAh li-po battery, and can last an hour with strong load on the pi! You can also view the voltage of the battery, as shown below, so you would know when to stop before the pi shuts down edit: I edited the video this time, and added some comments", "repo": "https://github.com/TeenEngineer/RasPi_UPS", "demo": ""}, {"ship_num": 2, "ts": "2026-08-17T16:58:25Z", "hours": 4.0, "multiplier": 5.0, "payout": 20, "blessing": "neutral", "text": "I made a simple but working UPS for a raspberry pi(any raspberry pi) that works on a 1200mAh li-po battery, and can last an hour with strong load on the pi! You can also view the voltage of the battery, as shown below, so you would know when to stop before the pi shuts down", "repo": "https://github.com/TeenEngineer/RasPi_UPS", "demo": ""}]...
|
[{"post_id": 73239, "ts": "202 [{"post_id": 73239, "ts": "2026-09-24T17:13:22Z", "hours": 0.5344, "text": "Edited the initial video(i hope i get more payout this time)"}, {"post_id": 48414, "ts": "2026-08-16T19:07:04Z", "hours": 0.4003, "text": "Made the case"}, {"post_id": 47695, "ts": "2026-08-15T19:31:34Z", "hours": 3.5389, "text": "Made the UPS(TOOK TOO LONG, AND ACCIDENTALLY TRIED TO OVER-ENGINEER IT)… The final result is below. You can watch this timelapse to see what i was doing before switching to the current design: https://lapse.hackclub.com/timelapse/Mhi8F60c0BRf"}]...
|
Title: UPS for Raspberry Pi by @Jovi | Stardance
Title: UPS for Raspberry Pi by @Jovi | Stardance
Devlogs:
Made the UPS(TOOK TOO LONG, AND ACCIDENTALLY TRIED TO OVER-ENGINEER IT)… The final result is below. You can watch this timelapse to see what i was doing before switching to the current design: https://lapse.hackclub.com/timelapse/Mhi8F60c0BRf
Made the case
Edited the initial video(i hope i get more payout this time)
Ships:
I made a simple but working UPS for a raspberry pi(any raspberry pi) that works on a 1200mAh li-po battery, and can last an hour with strong load on the pi! You can also view the voltage of the battery, as shown below, so you would know when to stop before the pi shuts down
I made a simple but working UPS for a raspberry pi(any raspberry pi) that works on a 1200mAh li-po battery, and can last an hour with strong load on the pi! You can also view the voltage of the battery, as shown below, so you would know when to stop before the pi shuts down edit: I edited the video this time, and added some comments...
|
1792997595.2963405
|
1793083995.2963405
|
|
65488
|
TypeArena by @Xgly | Stardance
|
Xgly
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T17:09:25Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Typing Speed Testing website, I just bored using a simple speed testing website, so I decided to make my own with some cool features and yeah it’s not the end I will add many more cool features. It has many mode not just one simple typing for ex- it has a hardcore mode in this if u type 1 wrong word it’s over. I faces many problem but not gonna lie I use Ai to fix them…", "repo": "https://github.com/aquamystic7/Typing-Speed-Test", "demo": "https://typearena.xyz/"}]...
|
[{"post_id": 73230, "ts": "202 [{"post_id": 73230, "ts": "2026-09-24T17:04:25Z", "hours": 5.2956, "text": "I’m Just making a cool Typing Speed Testing website with cool features…"}]...
|
Title: TypeArena by @Xgly | Stardance
Devlogs:
I’ Title: TypeArena by @Xgly | Stardance
Devlogs:
I’m Just making a cool Typing Speed Testing website with cool features…
Ships:
I made a Typing Speed Testing website, I just bored using a simple speed testing website, so I decided to make my own with some cool features and yeah it’s not the end I will add many more cool features. It has many mode not just one simple typing for ex- it has a hardcore mode in this if u type 1 wrong word it’s over. I faces many problem but not gonna lie I use Ai to fix them…...
|
1792965173.5134785
|
1793051573.5134785
|
|
28981
|
My very own WebOS by @Nikks | Stardance
|
Nikks
|
2
|
18.0
|
14
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T17:07:34Z", "hours": 9.0, "multiplier": 1.52, "payout": 14, "blessing": "neutral", "text": "I made a breaking bad themed OS that’s running in a website. Also the part i was kind of stuck at was the terminal. It was hard trying to make it similar to a traditional on and that’s I’m most proud of too.", "repo": "https://github.com/Nikhil1059/BreakingBadOS", "demo": "https://nikhil1059.github.io/BreakingBadOS/"}, {"ship_num": 2, "ts": "2026-08-17T21:13:35Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I havent completed it but i think this is a good milestone to ship it ad work on it in the future.", "repo": "https://github.com/Nikhil1059/BreakingBadOS", "demo": "https://nikhil1059.github.io/BreakingBadOS/"}]...
|
[{"post_id": 73216, "ts": "202 [{"post_id": 73216, "ts": "2026-09-24T16:48:12Z", "hours": 1.4122, "text": "This time i have added the feature to resize windows. its similar to normal windows resizing windows or linux."}, {"post_id": 65951, "ts": "2026-09-11T13:08:39Z", "hours": 2.1336, "text": "So today i made some good and exciting changes. The changes that were made are: I made a Calendar that pops out when you click the date or time. I redesigned the topbar to kind of look like a taskbar I also made the buttons on the top bar better with animations and shadow. I hope whoever tries this out if any please give me some ideas to further add :)"}, {"post_id": 65322, "ts": "2026-09-10T12:15:23Z", "hours": 1.6089, "text": "So today I made some commands for the terminal. /help gives you all the commands that WORK so feel free to fidget and I’m sure there should be no bugs but please let me know if there are any;)"}, {"post_id": 64171, "ts": "2026-09-08T12:05:35Z", "hours": 1.5844, "text": "I further worked on the terminal. Today i have added two things: The way the input and output is given in the terminal. Its very close to a standard terminal and acts like it. The cursor bar. I have added a distinct function masking the normal cursor bar with a terminal style cursor bar that works so nice. also for now the output of the commands(for now just text) is the input itself but in the next session im going to add official commands and a /help too :)"}, {"post_id": 63473, "ts": "2026-09-07T10:55:18Z", "hours": 1.38, "text": "Today I made the terminal window. As usual it will has all the characteristics of the notes window and also I tried to replicate a terminal design as much as possible. For now the terminal doesn’t work and it just gives the same output as what we type but ill work on that. But I this this was a good front end work."}, {"post_id": 49887, "ts": "2026-08-18T20:56:35Z", "hours": 1.2892, "text": "These are the things i have done in this session: I created a terminal icon and gave it the same charecteristics as the notes icon. I added a reset button which makes the app icons go back to their previous place and this clears the local storage too. I significantly upgraded the dragging system and tbh i spent a really long time for this so please check this out. The icon won’t overlap now and also i gave them real desktop like behaviour. I also added desktop boundaries so that the icons dont go off screen."}, {"post_id": 47641, "ts": "2026-08-15T17:48:50Z", "hours": 1.0669, "text": "I have made the Icon movable like an actual icon on a desktop. Also added a grid so that the icon snapped to a place like again a normal desktop. Also i have added local storage for this icon position so when you change the position of the icon and reload the website the icon will stay at the place you left it. I though it was cool. also for the people who find the boot screen appearing every time you can just change the dev mode true in Script.js and it’ll be bypassed. I planned a solution for this so stay tuned :)"}, {"post_id": 39492, "ts": "2026-08-02T13:58:35Z", "hours": 6.0139, "text": "I have made a lot of changes and forgot to make devlogs. I made a beautiful booting screen and also a beautiful intro screen. I also added a notes app which saves automatically."}, {"post_id": 20284, "ts": "2026-07-01T20:44:38Z", "hours": 1.9125, "text": "I’m working on a os on a web as part of a mission in stardance. I have so far just added some introduction about myself and added a little time and date indicator on the top right. And yeah its Breaking Bad themed so stay tuned i have some good ideas to implement."}]...
|
Title: My very own WebOS by @Nikks | Stardance
De Title: My very own WebOS by @Nikks | Stardance
Devlogs:
I’m working on a os on a web as part of a mission in stardance. I have so far just added some introduction about myself and added a little time and date indicator on the top right. And yeah its Breaking Bad themed so stay tuned i have some good ideas to implement.
I have made a lot of changes and forgot to make devlogs. I made a beautiful booting screen and also a beautiful intro screen. I also added a notes app which saves automatically.
I have made the Icon movable like an actual icon on a desktop. Also added a grid so that the icon snapped to a place like again a normal desktop. Also i have added local storage for this icon position so when you change the position of the icon and reload the website the icon will stay at the place you left it. I though it was cool. also for the people who find the boot screen appearing every time you can just change the dev mode true in Script.js and it’ll be bypassed. I planned a solution for this so stay tuned :)
These are the things i have done in this session: I created a terminal icon and gave it the same charecteristics as the notes icon. I added a reset button which makes the app icons go back to their previous place and this clears the local storage too. I significantly upgraded the dragging system and tbh i spent a really long time for this so please check this out. The icon won’t overlap now and also i gave them real desktop like behaviour. I also added desktop boundaries so that the icons dont go off screen.
Today I made the terminal window. As usual it will has all the characteristics of the notes window and also I tried to replicate a terminal design as much as possible. For now the terminal doesn’t work and it just gives the same output as what we type but ill work on that. But I this this was a good front end work.
I further worked on the terminal. Today i have added two things: The way the input and output is given in the terminal. Its very close to a standard terminal and acts like it. The cursor bar. I have added a distinct function masking the normal cursor bar with a terminal style cursor bar that works so nice. also for now the output of the commands(for now just text) is the input itself but in the next session im going to add official commands and a /help too :)
So today I made some commands for the terminal. /help gives you all the commands that WORK so feel free to fidget and I’m sure there should be no bugs but please let me know if there are any;)
So today i made some good and exciting changes. The changes that were made are: I made a Calendar that pops out when you click the date or time. I redesigned the topbar to kind of look like a taskbar I also made the buttons on the top bar better with animations and shadow. I hope whoever tries this out if any please give me some ideas to further add :)
This time i have added the feature to resize windows. its similar to normal windows resizing windows or linux.
Ships:
I havent completed it but i think this is a good milestone to ship it ad work on it in the future.
I made a breaking bad themed OS that’s running in a website. Also the part i was kind of stuck at was the terminal. It was hard trying to make it similar to a traditional on and that’s I’m most proud of too....
|
1792990559.459615
|
1793076959.459615
|
|
65180
|
portfolio by @Erox | Stardance
|
Erox
|
1
|
5.88
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T16:55:51Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is my portfolio , i used tailwind + vite to build it . on the last devlog i added my projects and refined a bit more , check my git for more info", "repo": "https://github.com/Erox-02/portfolio", "demo": "https://erox.is-a.dev/"}]...
|
[{"post_id": 74145, "ts": "202 [{"post_id": 74145, "ts": "2026-09-26T19:29:52Z", "hours": 1.7297, "text": "heavily cleaned up the code , changed a lot of code too now heres the final lool"}, {"post_id": 73655, "ts": "2026-09-25T16:20:17Z", "hours": 0.305, "text": "added a logo but it felt way too odd bec of lower quality so i upscaled it , now it looks way better"}, {"post_id": 73639, "ts": "2026-09-25T15:45:25Z", "hours": 0.8453, "text": "Upgraded the overall project , last time i rushed , used my old project’s code but now i will be continuing the project no slop"}, {"post_id": 73219, "ts": "2026-09-24T16:51:11Z", "hours": 0.7719, "text": "done this time made it perfect"}, {"post_id": 73187, "ts": "2026-09-24T15:34:33Z", "hours": 0.2589, "text": "why am i gettin an err? my file exists for sure"}, {"post_id": 73167, "ts": "2026-09-24T14:56:19Z", "hours": 0.5142, "text": "changed the accent color and a lot but it still looks odd maybe i will do a much big change now"}, {"post_id": 73044, "ts": "2026-09-24T08:11:49Z", "hours": 0.3197, "text": "added setup session , but it doesnt look tht cool so i think i will change the #setup to a diff page"}, {"post_id": 73032, "ts": "2026-09-24T07:42:12Z", "hours": 0.3647, "text": "added status and my projects"}, {"post_id": 73014, "ts": "2026-09-24T06:58:57Z", "hours": 0.2783, "text": "added the hero portion also rewrote the hero portion with rajdhani font , yk the sans look too normal check the commits for more"}, {"post_id": 73003, "ts": "2026-09-24T06:17:33Z", "hours": 0.7739, "text": "started the work , currently i have only comps the tagged img shows tht , i will be addin things"}]...
|
Title: portfolio by @Erox | Stardance
Devlogs:
st Title: portfolio by @Erox | Stardance
Devlogs:
started the work , currently i have only comps the tagged img shows tht , i will be addin things
added the hero portion also rewrote the hero portion with rajdhani font , yk the sans look too normal check the commits for more
added status and my projects
added setup session , but it doesnt look tht cool so i think i will change the #setup to a diff page
changed the accent color and a lot but it still looks odd maybe i will do a much big change now
why am i gettin an err? my file exists for sure
done this time made it perfect
Upgraded the overall project , last time i rushed , used my old project’s code but now i will be continuing the project no slop
added a logo but it felt way too odd bec of lower quality so i upscaled it , now it looks way better
heavily cleaned up the code , changed a lot of code too now heres the final lool
Ships:
This is my portfolio , i used tailwind + vite to build it . on the last devlog i added my projects and refined a bit more , check my git for more info...
|
1792965143.1621752
|
1793051543.1621752
|
|
52241
|
DDSim by @yaasshh | Stardance
|
yaasshh
|
1
|
124.76
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T16:51:16Z", "hours": 87.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built DDSim, a program that simulates what happens inside the tiny parts that computer chips are made of, ie diodes, capacitors and transistors. You describe a device by its shape and which parts of the silicon have extra electrons or holes. DDSim then works out how those electrons and holes move, and draws the current and voltage curves. I didn’t fit anything to make the graphs look right. Everything comes straight from the physics equations. (NOTE: ITS STILL VERY CLUNKY SO ITS NOT GOING TO BE PERFECT AS OF RIGHT NOW. IF YOU FACE ANY TROUBLES IM REALLY SORRY) To make sure everything accurate, I checked it against textbook formulas and against DEVSIM, a simulator other people wrote. They agree to within a few percent, and the project has about 2,700 automated tests. You can try it in your browser at ddsim.fly.dev. Pick a device, press solve, and watch the answer draw itself. Every button and graph has a little “i” that explains what it means, and there are guided lessons if you’re new to this. It’s a school-level instrument, not a chip design tool. Below about 50 nanometers the physics it uses stops being accurate, so I didn’t go beyond that", "repo": "https://github.com/yaasshh09/DDSim", "demo": "https://ddsim.fly.dev"}]...
|
[{"post_id": 82276, "ts": "202 [{"post_id": 82276, "ts": "2026-10-24T13:22:27Z", "hours": 9.6742, "text": "Devlog #23 The trick for the MOS capacitor worked. Making the electrons react faster put the slow wiggles at a speed the computer can handle, and the answers came out right. That FINALLY finished the AC phase. I also added noise, a tiny random jitter in current that every device has. Next I added time. Now its possible to flip a diode from on to off and watch it recover. When you switch a diode off, it keeps conducting for a moment because of all the charge stored inside it. I compared that against DEVSIM, and our results were within 0.03% of each other which is quite frankly something im really proud off. Then I added a feature where the simulator shows how inaccurate it may be. It now checks its own answer against a finer mesh and puts a little error bar on every point in the plots. It can also improve its own mesh by adding points only where they’re needed. On 5 of my 8 test devices it hit the target accuracy with fewer points than my hand-made meshes. I was aiming for around 6, so that’s still doable. The newest addition is a bipolar transistor, where a small current into the middle layer controls a much bigger current through the whole device. I built a simple 1D version and a more realistic 2D one. The 1D version matches the textbook formula to within 0.03%. The best part is that its gain drops off at both very low and very high current, the way real transistors do, and I never told it to. It figured that out from the physics."}, {"post_id": 80341, "ts": "2026-10-17T10:12:36Z", "hours": 1.9553, "text": "Devlog #22 The long DEVSIM run finally finished. It took about 6 hours and matched the expert result almost exactly, which closes out the scoreboard phase. Then I started the next phase, which is about AC. That essentially means wiggling the voltage back and forth and watching how the device reacts at different speeds. Before, my simulator could only handle super slow wiggles, or fast ones where I froze some electrons by hand. Now it can handle any speed. To get there, I first taught the simulator how fast electrons and holes pile up or drain away over time. Then I wrote the part that works out how much current flows into each contact when one of them gets wiggled. I tested it on diodes, since they have textbook formulas to compare against. A long diode matched within about 1%, and a short one within 1.3%. Along the way I found a bug where my mesh maker gave up on very long devices, so I fixed that too. The MOS capacitor is giving me some trouble. At really slow wiggles, the math needs more precision than normal computer numbers have, so the answers came out wrong by up to 46%. Fast wiggles work fine. Right now I’m trying a trick where I make the electrons react faster, so the slow case happens at a speed the computer can handle. Below are some of the DEVSIM scoreboard values"}, {"post_id": 80105, "ts": "2026-10-16T07:52:45Z", "hours": 4.8328, "text": "Devlog #21 Since the last devlog I finished most of the temperature phases. First I compared the diode at 400 K against DEVSIM. I saved that result so my other tests compare with it from now on. Then I added two new sliders to the website. One sets the temperature, from 200 to 500 K. The other sets the fixed charge where the silicon meets the oxide. I picked both ranges by running the simulator across them. Each slider also has a short lesson that explains what it does. While I was writing those, I found some broken math formatting in the temperature lesson and fixed it. The biggest addition is freeze-out. To make silicon conduct, we add extra atoms that give up electrons. When it gets really cold, those atoms stop giving up their electrons. Before, my simulator assumed they always did. Now there’s a switch for it, and it works. At 100, 200 and 300 K it matches the textbook formula almost exactly. I also checked that a plain frozen silicon bar still follows Ohm’s law, and that the capacitance results still work at 150 K."}, {"post_id": 79306, "ts": "2026-10-13T13:29:32Z", "hours": 4.9631, "text": "Devlog #20 In this devlog i firstly fixed up the website. It now has a little icon in the browser tab, a terms page, a privacy page and a footer with a contact button. The icon didn’t show up on the live site at first, so I fixed that too. Then I started the next phase, which is all about fixing temperature related stuff. A lot of the calculations of the simulator took room temperature which might have led to some wrong calculations, so I’ve been fixing that. The gate’s energy level was stuck at its room-temperature value. it was a real bug and its fixed now. When the silicon gets hotter, electrons now max out at a lower speed, just like in real-life chips. From 250 to 400 K, the junction’s built-in voltage matches the textbook formula. From 300 to 400 K, the diode’s leakage current stays within 0.3% of the formula. I also added a fixed charge that sits where the silicon meets the oxide layer. Real chips always have some, and it changes the voltage where a transistor turns on. Next up are the big jobs. A long DEVSIM run is still going, and after that I’ll test the temperature effects on a full 2D transistor. I also still need to put the website changes live."}, {"post_id": 76513, "ts": "2026-10-03T19:43:47Z", "hours": 7.6606, "text": "Devlog #19 The speed and robustness numbers are now saved on the scoreboard. On the first 8 benchmarks, my solver takes about 1.6x less time per bias point than DEVSIM. I also added a test that reads the README and fails if the README claims anything the data doesn’t back up (I hate getting 100% vibe code assumptions on my readme btw). I renamed a lot of variables across the code (to pass the 30% ai rule that im apparently violating) to shorter names. That kind of change can break the tests if some of the variables reference each other across multiple files, so I checked that python turns the old code and the new code into exactly the same instructions. Thankfully it did. I also moved all the settings into one file. Things like how many tries the solver gets, how small the mesh can get, and the server limits used to be scattered across about 20 files. I checked that every single value stayed exactly the same after the move. I also deleted the last few leftover comments. Then I pushed everything. The tests ran on three Python versions, and 2,723 of 2,724 passed. The one that failed was a browser test on Python 3.11 that waited too long for the page to load. The same test passed on the other two versions, so it’s probably just a slow test machine, but I’m going to rerun it to make sure. My laptop ran out of memory again, which stopped me from finishing the type hints in the tests. That’s next, once I’m not running a bunch of other stuff at the same time."}, {"post_id": 74357, "ts": "2026-09-27T07:21:49Z", "hours": 2.1619, "text": "Devlog #18 The robustness runs are almost done. Robustness checks a simple concept, if I give the solver a device cold, with no warm-up, does it actually finish? I ran 200 test cases through my solver and through DEVSIM, each in a few different setups. The robustness numbers aren’t final yet. One DEVSIM result is still missing. The first time my laptop ran out of memory, and the second time it went to sleep overnight, so it’s running again now. I also found out DEVSIM acts much differently depending on how many CPU threads it gets. With only one, some solves failed or took forever which was kinda interesting to see. On the cleanup side, I turned on the strictest type checking across the whole project and fixed what it found. Every color on the website now comes from one file. I also deleted a bunch of old files nobody used and cut the README down."}, {"post_id": 73883, "ts": "2026-09-26T07:55:09Z", "hours": 4.0261, "text": "Devlog #17 I restarted the scoreboard runs, and before looking/mentioning any of the results I checked my own setup for DEVSIM. That showed a few bugs on my side. My starting guess for the voltage inside the device did a log of zero on heavily doped chips, so DEVSIM crashed INSTANTLY. I also wasn’t giving it enough steps to settle on some devices. I fixed both, because it wouldn’t be fair to count my mistakes as DEVSIM’s. I also cleaned up the code, I tried to ship all progress so far but there was just too much AI (guilty) so I am working on redoing the python, css and javascript code again mainly from scratch. (The image shows all the values from the DDSim tests)"}, {"post_id": 73631, "ts": "2026-09-25T15:22:18Z", "hours": 2.4842, "text": "Devlog #16 Now that DDSim is live, my next goal is to make it better than DEVSIM, a free, open-source simulator a lot of people already use. “Better” doesn’t count unless I can measure it, so I planned out the next 11 stages of the project, and the first one is a scoreboard. The scoreboard runs both simulators on the same set of devices and compares them in four ways: how often each one finishes a solve without crashing, how accurate the answers are, how fast they run, and what each one can do at all. Some of these runs take hours, and my laptop ran out of memory partway through, so I paused them. I’ll post the results once they’re done, even the parts where DEVSIM is better than mine. While building the accuracy check, I found a bug in my own math. Sometimes it reported numbers that didn’t make physical sense, so now it throws those out instead of trusting them. I also went through all the style files for the website. They’re about a third smaller now, and I checked that the page still looks exactly the same. Then I found a small bug that had been there all along. The little “i” buttons that explain each setting were supposed to turn blue when you hover over them, but a different style rule was overriding it. Last, I cleaned up the README again. The pictures are centered now, I took out the GIF, and I rewrote some of the text so it reads more naturally."}, {"post_id": 73215, "ts": "2026-09-24T16:47:16Z", "hours": 1.6669, "text": "Devlog #15 DDSim is FINALLY deployed and live! You can try it at ddsim.fly.dev Getting it online took one extra step. The cheap shared server was too slow: the hardest transistor solve takes about 50 seconds on my laptop and would have taken around 7 minutes there. That’s past the 5-minute limit I set, so it would have been stopped every time. I moved it to a faster server, and now it finishes in under a minute. Once it was up, I found a bug. When every contact on a transistor was at the same voltage, the picture still drew current flowing through it. That’s impossible, because with no voltage difference nothing moves. I fixed it, and now the page says “no current flows” instead of showing an empty plot with no explanation. Then I rewrote the README from scratch. The old one was over 500 lines and way too dense. The new one is about 200 lines, mostly screenshots from the live site plus a few tables, so someone can see what the project does in a couple of minutes. While doing that, I caught a mistake. One number in my results table didn’t match the graph right next to it. I reran the full simulation, which took 20 minutes, and fixed the table so it matches. Last, I took the deployment files out of the public code. Anyone who downloads it gets everything they need to run it on their own computer, but not the setup for putting it online. Next up, I might be thinking of getting a custom name for this simulator and my other atom simulator. If anyone knows where I can get free domains, lmk in the comments"}, {"post_id": 72803, "ts": "2026-09-23T19:24:31Z", "hours": 2.5789, "text": "Devlog #14 Since then, most of my work has been getting DDSim ready for other people to use. First I cleaned up the controls. Some sliders and number boxes let you pick values that made the solver fail, which just showed up as a red error. I went through the diode, the MOS capacitor, the transistor and the draw-your-own device and found the range where each setting actually works. The sliders now stay inside those ranges, so a beginner can’t break things by accident. Then I cleaned up the code. I deleted about 2,400 lines of comments that just repeated what the code already said and kept the ones that explain something nessessary. Next came the writing. The site has about 40 short articles that explain the physics, and a lot of them sounded stiff, so I rewrote all of them. I did the same for the project docs, and on the way I found a few places where the docs no longer matched what the code does, so I fixed those too. Now I’m working on putting it online. I picked Fly.io to host it, and I’m hoping to get a free custom name. Since anyone will be able to use it, I’m adding some safety limits first. Only a couple of solves can run at the same time, old results get cleared out after a while, and a solve that runs too long gets stopped with a message explaining why. I tested each limit by breaking it on purpose to make sure the test catches it. It isn’t live yet, but it’s close! [lazy pic, i dont wanna open server again :( ]"}, {"post_id": 72407, "ts": "2026-09-22T21:05:00Z", "hours": 1.9161, "text": "Devlog #13 This one is all about the page itself. The physics didn’t change, but you’ll notice everything else did. I rebuilt the whole look from scratch. The old version was only friendly if you already knew semiconductors, and I want someone who has never heard of a diode to open it and get somewhere. Now it opens by asking you to pick a device: a diode, a MOS capacitor, a transistor, or draw your own. Each one comes with a sentence or two on what it is. Every number and switch has a little “i” next to it that explains it, and an empty plot tells you what it’s waiting for instead of sitting blank. Drawing your own device used to happen in a tiny box off to the side. Now it gets the whole screen. Some layers are so thin they basically disappeared, so I stretch the picture up and down until you can see them, and a label says when it’s stretched. Doped areas get a soft color so you can tell them apart. I also changed the font a couple of times. It started in a terminal style that felt cold. I tried one replacement and ended on Poppins, which just feels warmer. My favorite change is in the runs panel. It used to list your old runs as text, like “doping 1e17.” Now every solve saves a little picture of its own curve, and they all share the same scale, so you can see at a glance how each change moved the result. I switched the license to CC BY-NC so that it still stays technically open source but I own intellectual property for commercial use. Anyone can use it and change it for free, as long as they credit me and don’t sell it. A bit of AI usage in the frontend i will agree but not overkill in terms of it."}, {"post_id": 72227, "ts": "2026-09-22T14:20:14Z", "hours": 2.8683, "text": "Devlog #12 Last time I left off with a transistor sitting on oxide that would not solve. I think ive fixed it. The silicon body had no contact touching it anywhere, so the solver had no idea what voltage that body should sit at. There is no single right answer, so it just wanders. That is not a bug I can fix, it is the physics of the thing, so now the simulator refuses that drawing up front and says why instead of grinding away at it. Then I went hunting for every other way someone could break it. I wrote something that tries every combination of settings the page can send and watched what fell over. A few things did: A gate metal with a work function no real metal has. Surface scattering asked for on a 1D device, which has no surface to scatter off. A shape so thin the grid ends up dividing by zero. All of them now get refused before the solve starts, with a sentence saying what to change. A few smaller ones. The device picture was drawn half a grid cell off, which threw off the line you drag across it to read values. That same line returned nothing at all where silicon meets oxide. And the explanations could load out of order and show you the wrong one. I think now i should wrap the version 1 of the project and finish polishing the frontend considering stardance is getting over soon. another lazy code pic btw cause i dont wanna open the servers again"}, {"post_id": 70662, "ts": "2026-09-19T15:24:06Z", "hours": 2.4228, "text": "Devlog #11 Since the last devlog, you can draw your own 2D devices, not just stack layers in a line. You draw rectangles of silicon and oxide, paint doping onto them, and place metal contacts along the edges. The simulator builds a grid that fits your drawing and solves it. Before it solves, it checks for mistakes and tells you what’s wrong in plain words: a piece of silicon with no contact touching it, a gate sitting right on silicon, or a shape too small for the grid to see. To make sure drawing works, I redrew the MOS capacitor and the transistor I already had and checked that they give the same answers. The capacitor matched almost exactly and the transistor was within about 1%. Testing it in a real browser caught two bugs. One made every solve hang forever. The other made the picture of the device grow every time it redrew on high resolution screens. Both seem to be fixed now but I’ll be on the lookout for similar bugs. Then I tried something new, a transistor sitting on a layer of oxide, the way a lot of modern chips are built. It won’t solve yet. I narrowed it down to the oxide underneath the silicon, and I’m still wondering how breaks things. More on that next time. random picture cause im too lazy to start the servers again"}, {"post_id": 70075, "ts": "2026-09-18T12:25:44Z", "hours": 3.6847, "text": "Devlog #10 Since the last devlog, the simulator has gone from explaining things to letting you play with them. First, you can now compare runs. Every time you solve, the curve stays on the plot, so you can change one thing and see exactly what moved. The diode also got live sliders. Drag the doping or voltage and the answer updates while you drag. The 2D devices like the MOSFET are too slow for that, so I added a quick mode that uses a rougher grid. It’s a little less accurate, and I wrote down exactly how much. Then I built five guided lessons: a diode sitting at rest, a diode with voltage on it, a MOS capacitor, a transistor turning on, and what goes wrong when transistors get really small. Each lesson walks you through experiments step by step. The important part is that every claim a lesson makes is checked by a test against the solver I developed as part of the project. For example: if a lesson says “the current goes up,” a test runs it and makes sure it actually does. The biggest addition is a device builder. You stack layers of doped silicon however you want, and the simulator solves whatever you made. You can also save a design and load it again later. I agree I used AI for the frontend but I did not go VERY heavy on it. Only to build upon the frontend base I coded"}, {"post_id": 69600, "ts": "2026-09-17T12:07:30Z", "hours": 6.0439, "text": "Devlog #9 Since my last devlog, my solver and DEVSIM have started to cooperate. All ten benchmark devices match, the MOSFETs included, so the physics phase is done. THANK THE LORD Now I’m working on the part I care about most personally, which is making the simulator teach. The browser used to be a wall of knobs and plots with no explanation. Now every knob and every plot has a small “i” button. Click it and a drawer slides out with a plain explanation first, then the real equations for anyone who wants to go deeper. I wrote 35 of these explanations covering the physics, how the solver works, the devices, and how to read each plot. Then I checked them against the code. One credited the diodes with an accuracy number that actually belonged to a different device. Another claimed that one failed point in a sweep doesn’t ruin the rest, but the code stops at the first failure. The equations turned out to be hard to figure. The markdown reader treated the backslashes inside the math as its own escape characters and deleted them, so 92 bits of spacing and notation came out messed up. Now I pull the math out before the markdown step and put it back after. I also bundled the math and markdown libraries into the project, so the page works with no internet. Next up are band diagrams, which show the energy levels electrons can sit at. The page will draw them straight from the solved device."}, {"post_id": 68669, "ts": "2026-09-15T14:33:26Z", "hours": 1.7181, "text": "Devlog #8 Really tired today. Just ran a bunch of tests today and got a bunch of values ill sort through tomorrow."}, {"post_id": 67223, "ts": "2026-09-13T08:42:33Z", "hours": 3.7983, "text": "Devlog #7 Since my last devlog I have been teaching DEVSIM to run the same physics my own solver runs. Before this it was on a stripped down model set, so the two codes had similar geometry and nothing about mobility. Now it runs the real thing: doping dependent mobility, surface scattering at the oxide, velocity saturation, and proper Fermi-Dirac statistics. Getting there meant three more small lies. DEVSIM will easily chain a derivative through one kind of model and silently return zero for another. No error, no warning. My solver just diverged on the first step. It took a dump of every derivative on the device to see a column of exact zeros where numbers should have been. Then a field magnitude written as a square root of a square. Mathematically, sounds good but numerically it produces a nan wherever the field is exactly zero, which in a neutral chunk of silicon is nearly every edge. Then the surface mobility. I was refreshing it on every pass, forever. That is not a converging loop, that is two numbers chasing each other. The gate walk climbed to 0.50 V and then refused 0.55 V at every step size I gave it, down to a tenth of a millivolt. A failure that ignores step size is not a step size problem. I gave the refresh a stopping rule and re-ran it. Same answer to the last digit, just reachable now. The 1 micron device now agrees between the two codes to under 3.3 percent at low drain and under 1.3 percent at high drain, across four decades of current. The remaining blocker is not code. My browser is holding 15 of the machine’s 16 GB."}, {"post_id": 66590, "ts": "2026-09-12T13:16:11Z", "hours": 3.9589, "text": "Devlog #6 Im not going to say much this devlog. I hate Github CI errors with a passion and everybody that creates software relates."}, {"post_id": 65940, "ts": "2026-09-11T12:39:46Z", "hours": 2.6142, "text": "Devlog #5 Since the license was added, all my time has gone into one stubborn thing, that is getting DEVSIM simulator, to produce trustworthy MOSFET curves. It has been a long journey of small lies the application tells you. DEVSIM’s solve doesn’t take a device argument, so it solves everything you’ve ever built in that process at once. I was building one device per curve and leaving them around, so the second curve was dragging a finished device along with it and ruining the shared error check. Deleting each device when its curve finishes fixed a whole family of weird failures. Then I found the equilibrium solve was starting from all zeros, which on this device is 0.6 V off. I supply it from charge neutrality now. Same final output but far less trouble getting there. 2 of my own ideas turned out wrong and got reverted, but I wrote the measurements rather than dropping them. Capping the solver’s pass budget moved the current by 0.4%. Pinning the math library to one thread made a four second step take three minutes. Big Ouch. Currently, the 1 micron transfer curve at 50 mV of drain runs end to end and confirms with my simulator to within 0.23% above threshold. The 1 V curve still stalls at 0.4 V of gate, and I checked it properly rather than simply loosening the tolerance, because it turns out DEVSIM isn’t converging there at all. My own code, for contrast, does the same curve in 4.6 seconds."}, {"post_id": 65618, "ts": "2026-09-10T21:14:24Z", "hours": 1.4086, "text": "Dev log #4 After the last devlog I pushed and CI went red on all three Python versions. One test, one solver that would not converge. I guessed this before and fixed the wrong line. Last time I saw the residual and assumed a gate step was missing the convergence basin, so I put continuation on the gate ramp. That was a real improvement, just not this bug. This time I actually read the CI log The failing solve was the one before the ramp even starts. Gate at zero, drain already at 1 V, starting from a cold guess. So I measured it instead of guessing. Cold at 0 V drain takes 1 step. At 1 V it takes 22, and 12 of those get clipped by the step limiter, which means the solver is being dragged the whole way instead of converging properly The fix walks the bias in from zero using the continuation I already had. I regenerated the whole roll-off table through the new path and every digit came out identical. Only the path changed, not the answer. Also added the Open-Source MIT license, and cleaned the commit history."}, {"post_id": 65362, "ts": "2026-09-10T13:29:09Z", "hours": 2.1169, "text": "Dev log #3 I found a bug that made every 2D current in the simulator wrong by a factor of about 245, WAY too big. The cause, i believe, was one missing conversion. The code turns an internal number into a real current, and in 2D that conversion needs an extra length factor that I never included. In 1D it happened to be right, which is why it went un-noticed. I fixed it and then wrote a test that compares a 2D current against Ohm’s law, worked out by hand with no solver involved. This test was missing before. The reassuring part: I measure the turn-on voltage two completely different ways. They used to differ by 180 mV, which I didnt pay much attention to previously. After the fix they agree to about 2 mV. I did not tune anything to make that happen, so I might have to start believing in miracles. I also fixed two divide-by-zero crashes in the surface mobility code that were blocking a whole test combination. Also updated the README numbers and the decisions log. The full test suite is still running, and I will push to github once done."}, {"post_id": 64702, "ts": "2026-09-09T10:05:49Z", "hours": 15.2131, "text": "Devlog #2 Two things this stretch, and both started as “that’s odd” rather than “that’s broken.” First, the solver was crawling. Every step up in voltage cost more than the last, and past a point it just gave up. I traced it back to the starting guess, which was asking what makes glass electrically neutral. That question has no answer, because glass has no charges to balance in the first place. The solver was grinding away at something stupid before it ever got to the real problem. I gave it a proper starting answer instead, and the slowdown disappeared entirely. Second, I stopped trusting my tests and went to check them. I broke my own code ten different ways on purpose, one at a time, and watched to see which breakages the suite would catch. 9/10 failed, which is what I wanted. 1 slipped through clean, and that is the interesting one, because a test that cannot fail is not a test. Chasing the one that got away turned up a real bug hiding underneath it. Setting the voltage on the bottom contact was silently doing nothing at all. The code ran, reported success, and ignored the value. One line to fix, and it would have been very hard to find any other way, since nothing about the output looked wrong. Heads up! Light AI usage to debug the tests and break code to find errors"}, {"post_id": 54968, "ts": "2026-08-26T12:21:42Z", "hours": 35.26, "text": "DDSim Devlog I’m building a chip simulator from scratch. Today I got it to simulate a MOS capacitor, a silicon slab with a thin glass layer and a metal plate on top. It’s the heart of every transistor ever made. What I built: I stacked two grids together: a fine one near the silicon surface where all the action is, and a coarse one for the glass where nothing happens. Then I wrote one function that builds the whole sandwich. I wrote every test before the code. This kind of maths loves to give you wrong answers that look perfectly reasonable, so I only trust it when it matches something I can work out on paper. I’m happy that the “flatband” voltage came out exact to 15 decimal places. The threshold voltage matched the textbook to 0.13 millivolts, 50 times better than I needed. I also identified a few problems; the solver was getting slower and slower at high voltage, then giving up. The starting guess was asking “what makes glass electrically neutral?”, a meaningless question, since glass has no charges. I gave it a proper answer instead and the slowdown vanished completely. Then I deliberately broke my own code ten ways to check the tests would catch it. Nine got caught. One didn’t. Chasing that turned up a real bug: the bottom-contact voltage setting was silently doing nothing. One line to fix. Current Position: 1339 tests passing, everything clean, C-V curve working across all three regimes."}]...
|
Title: DDSim by @yaasshh | Stardance
Devlogs:
DDS Title: DDSim by @yaasshh | Stardance
Devlogs:
DDSim Devlog I’m building a chip simulator from scratch. Today I got it to simulate a MOS capacitor, a silicon slab with a thin glass layer and a metal plate on top. It’s the heart of every transistor ever made. What I built: I stacked two grids together: a fine one near the silicon surface where all the action is, and a coarse one for the glass where nothing happens. Then I wrote one function that builds the whole sandwich. I wrote every test before the code. This kind of maths loves to give you wrong answers that look perfectly reasonable, so I only trust it when it matches something I can work out on paper. I’m happy that the “flatband” voltage came out exact to 15 decimal places. The threshold voltage matched the textbook to 0.13 millivolts, 50 times better than I needed. I also identified a few problems; the solver was getting slower and slower at high voltage, then giving up. The starting guess was asking “what makes glass electrically neutral?”, a meaningless question, since glass has no charges. I gave it a proper answer instead and the slowdown vanished completely. Then I deliberately broke my own code ten ways to check the tests would catch it. Nine got caught. One didn’t. Chasing that turned up a real bug: the bottom-contact voltage setting was silently doing nothing. One line to fix. Current Position: 1339 tests passing, everything clean, C-V curve working across all three regimes.
Devlog #2 Two things this stretch, and both started as “that’s odd” rather than “that’s broken.” First, the solver was crawling. Every step up in voltage cost more than the last, and past a point it just gave up. I traced it back to the starting guess, which was asking what makes glass electrically neutral. That question has no answer, because glass has no charges to balance in the first place. The solver was grinding away at something stupid before it ever got to the real problem. I gave it a proper starting answer instead, and the slowdown disappeared entirely. Second, I stopped trusting my tests and went to check them. I broke my own code ten different ways on purpose, one at a time, and watched to see which breakages the suite would catch. 9/10 failed, which is what I wanted. 1 slipped through clean, and that is the interesting one, because a test that cannot fail is not a test. Chasing the one that got away turned up a real bug hiding underneath it. Setting the voltage on the bottom contact was silently doing nothing at all. The code ran, reported success, and ignored the value. One line to fix, and it would have been very hard to find any other way, since nothing about the output looked wrong. Heads up! Light AI usage to debug the tests and break code to find errors
Dev log #3 I found a bug that made every 2D current in the simulator wrong by a factor of about 245, WAY too big. The cause, i believe, was one missing conversion. The code turns an internal number into a real current, and in 2D that conversion needs an extra length factor that I never included. In 1D it happened to be right, which is why it went un-noticed. I fixed it and then wrote a test that compares a 2D current against Ohm’s law, worked out by hand with no solver involved. This test was missing before. The reassuring part: I measure the turn-on voltage two completely different ways. They used to differ by 180 mV, which I didnt pay much attention to previously. After the fix they agree to about 2 mV. I did not tune anything to make that happen, so I might have to start believing in miracles. I also fixed two divide-by-zero crashes in the surface mobility code that were blocking a whole test combination. Also updated the README numbers and the decisions log. The full test suite is still running, and I will push to github once done.
Dev log #4 After the last devlog I pushed and CI went red on all three Python versions. One test, one solver that would not converge. I guessed this before and fixed the wrong line. Last time I saw the residual and assumed a gate step was missing the convergence basin, so I put continuation on the gate ramp. That was a real improvement, just not this bug. This time I actually read the CI log The failing solve was the one before the ramp even starts. Gate at zero, drain already at 1 V, starting from a cold guess. So I measured it instead of guessing. Cold at 0 V drain takes 1 step. At 1 V it takes 22, and 12 of those get clipped by the step limiter, which means the solver is being dragged the whole way instead of converging properly The fix walks the bias in from zero using the continuation I already had. I regenerated the whole roll-off table through the new path and every digit came out identical. Only the path changed, not the answer. Also added the Open-Source MIT license, and cleaned the commit history.
Devlog #5 Since the license was added, all my time has gone into one stubborn thing, that is getting DEVSIM simulator, to produce trustworthy MOSFET curves. It has been a long journey of small lies the application tells you. DEVSIM’s solve doesn’t take a device argument, so it solves everything you’ve ever built in that process at once. I was building one device per curve and leaving them around, so the second curve was dragging a finished device along with it and ruining the shared error check. Deleting each device when its curve finishes fixed a whole family of weird failures. Then I found the equilibrium solve was starting from all zeros, which on this device is 0.6 V off. I supply it from charge neutrality now. Same final output but far less trouble getting there. 2 of my own ideas turned out wrong and got reverted, but I wrote the measurements rather than dropping them. Capping the solver’s pass budget moved the current by 0.4%. Pinning the math library to one thread made a four second step take three minutes. Big Ouch. Currently, the 1 micron transfer curve at 50 mV of drain runs end to end and confirms with my simulator to within 0.23% above threshold. The 1 V curve still stalls at 0.4 V of gate, and I checked it properly rather than simply loosening the tolerance, because it turns out DEVSIM isn’t converging there at all. My own code, for contrast, does the same curve in 4.6 seconds.
Devlog #6 Im not going to say much this devlog. I hate Github CI errors with a passion and everybody that creates software relates.
Devlog #7 Since my last devlog I have been teaching DEVSIM to run the same physics my own solver runs. Before this it was on a stripped down model set, so the two codes had similar geometry and nothing about mobility. Now it runs the real thing: doping dependent mobility, surface scattering at the oxide, velocity saturation, and proper Fermi-Dirac statistics. Getting there meant three more small lies. DEVSIM will easily chain a derivative through one kind of model and silently return zero for another. No error, no warning. My solver just diverged on the first step. It took a dump of every derivative on the device to see a column of exact zeros where numbers should have been. Then a field magnitude written as a square root of a square. Mathematically, sounds good but numerically it produces a nan wherever the field is exactly zero, which in a neutral chunk of silicon is nearly every edge. Then the surface mobility. I was refreshing it on every pass, forever. That is not a converging loop, that is two numbers chasing each other. The gate walk climbed to 0.50 V and then refused 0.55 V at every step size I gave it, down to a tenth of a millivolt. A failure that ignores step size is not a step size problem. I gave the refresh a stopping rule and re-ran it. Same answer to the last digit, just reachable now. The 1 micron device now agrees between the two codes to under 3.3 percent at low drain and under 1.3 percent at high drain, across four decades of current. The remaining blocker is not code. My browser is holding 15 of the machine’s 16 GB.
Devlog #8 Really tired today. Just ran a bunch of tests today and got a bunch of values ill sort through tomorrow.
Devlog #9 Since my last devlog, my solver and DEVSIM have started to cooperate. All ten benchmark devices match, the MOSFETs included, so the physics phase is done. THANK THE LORD Now I’m working on the part I care about most personally, which is making the simulator teach. The browser used to be a wall of knobs and plots with no explanation. Now every knob and every plot has a small “i” button. Click it and a drawer slides out with a plain explanation first, then the real equations for anyone who wants to go deeper. I wrote 35 of these explanations covering the physics, how the solver works, the devices, and how to read each plot. Then I checked them against the code. One credited the diodes with an accuracy number that actually belonged to a different device. Another claimed that one failed point in a sweep doesn’t ruin the rest, but the code stops at the first failure. The equations turned out to be hard to figure. The markdown reader treated the backslashes inside the math as its own escape characters and deleted them, so 92 bits of spacing and notation came out messed up. Now I pull the math out before the markdown step and put it back after. I also bundled the math and markdown libraries into the project, so the page works with no internet. Next up are band diagrams, which show the energy levels electrons can sit at. The page will draw them straight from the solved device.
Devlog #10 Since the last devlog, the simulator has gone from explaining things to letting you play with them. First, you can now compare runs. Every time you solve, the curve stays on the plot, so you can change one thing and see exactly what moved. The diode also got live sliders. Drag the doping or voltage and the answer updates while you drag. The 2D devices like the MOSFET are too slow for that, so I added a quick mode that uses a rougher grid. It’s a little less accurate, and I wrote down exactly how much. Then I built five guided lessons: a diode sitting at rest, a diode with voltage on it, a MOS capacitor, a transistor turning on, and what goes wrong when transistors get really small. Each lesson walks you through experiments step by step. The important part is that every claim a lesson makes is checked by a test against the solver I developed as part of the project. For example: if a lesson says “the current goes up,” a test runs it and makes sure it actually does. The biggest addition is a device builder. You stack layers of doped silicon however you want, and the simulator solves whatever you made. You can also save a design and load it again later. I agree I used AI for the frontend but I did not go VERY heavy on it. Only to build upon the frontend base I coded
Devlog #11 Since the last devlog, you can draw your own 2D devices, not just stack layers in a line. You draw rectangles of silicon and oxide, paint doping onto them, and place metal contacts along the edges. The simulator builds a grid that fits your drawing and solves it. Before it solves, it checks for mistakes and tells you what’s wrong in plain words: a piece of silicon with no contact touching it, a gate sitting right on silicon, or a shape too small for the grid to see. To make sure drawing works, I redrew the MOS capacitor and the transistor I already had and checked that they give the same answers. The capacitor matched almost exactly and the transistor was within about 1%. Testing it in a real browser caught two bugs. One made every solve hang forever. The other made the picture of the device grow every time it redrew on high resolution screens. Both seem to be fixed now but I’ll be on the lookout for similar bugs. Then I tried something new, a transistor sitting on a layer of oxide, the way a lot of modern chips are built. It won’t solve yet. I narrowed it down to the oxide underneath the silicon, and I’m still wondering how breaks things. More on that next time. random picture cause im too lazy to start the servers again
Devlog #12 Last time I left off with a transistor sitting on oxide that would not solve. I think ive fixed it. The silicon body had no contact touching it anywhere, so the solver had no idea what voltage that body should sit at. There is no single right answer, so it just wanders. That is not a bug I can fix, it is the physics of the thing, so now the simulator refuses that drawing up front and says why instead of grinding away at it. Then I went hunting for every other way someone could break it. I wrote something that tries every combination of settings the page can send and watched what fell over. A few things did: A gate metal with a work function no real metal has. Surface scattering asked for on a 1D device, which has no surface to scatter off. A shape so thin the grid ends up dividing by zero. All of them now get refused before the solve starts, with a sentence saying what to change. A few smaller ones. The device picture was drawn half a grid cell off, which threw off the line you drag across it to read values. That same line returned nothing at all where silicon meets oxide. And the explanations could load out of order and show you the wrong one. I think now i should wrap the version 1 of the project and finish polishing the frontend considering stardance is getting over soon. another lazy code pic btw cause i dont wanna open the servers again
Devlog #13 This one is all about the page itself. The physics didn’t change, but you’ll notice everything else did. I rebuilt the whole look from scratch. The old version was only friendly if you already knew semiconductors, and I want someone who has never heard of a diode to open it and get somewhere. Now it opens by asking you to pick a device: a diode, a MOS capacitor, a transistor, or draw your own. Each one comes with a sentence or two on what it is. Every number and switch has a little “i” next to it that explains it, and an empty plot tells you what it’s waiting for instead of sitting blank. Drawing your own device used to happen in a tiny box off to the side. Now it gets the whole screen. Some layers are so thin they basically disappeared, so I stretch the picture up and down until you can see them, and a label says when it’s stretched. Doped areas get a soft color so you can tell them apart. I also changed the font a couple of times. It started in a terminal style that felt cold. I tried one replacement and ended on Poppins, which just feels warmer. My favorite change is in the runs panel. It used to list your old runs as text, like “doping 1e17.” Now every solve saves a little picture of its own curve, and they all share the same scale, so you can see at a glance how each change moved the result. I switched the license to CC BY-NC so that it still stays technically open source but I own intellectual property for commercial use. Anyone can use it and change it for free, as long as they credit me and don’t sell it. A bit of AI usage in the frontend i will agree but not overkill in terms of it.
Devlog #14 Since then, most of my work has been getting DDSim ready for other people to use. First I cleaned up the controls. Some sliders and number boxes let you pick values that made the solver fail, which just showed up as a red error. I went through the diode, the MOS capacitor, the transistor and the draw-your-own device and found the range where each setting actually works. The sliders now stay inside those ranges, so a beginner can’t break things by accident. Then I cleaned up the code. I deleted about 2,400 lines of comments that just repeated what the code already said and kept the ones that explain something nessessary. Next came the writing. The site has about 40 short articles that explain the physics, and a lot of them sounded stiff, so I rewrote all of them. I did the same for the project docs, and on the way I found a few places where the docs no longer matched what the code does, so I fixed those too. Now I’m working on putting it online. I picked Fly.io to host it, and I’m hoping to get a free custom name. Since anyone will be able to use it, I’m adding some safety limits first. Only a couple of solves can run at the same time, old results get cleared out after a while, and a solve that runs too long gets stopped with a message explaining why. I tested each limit by breaking it on purpose to make sure the test catches it. It isn’t live yet, but it’s close! [lazy pic, i dont wanna open server again :( ]
Devlog #15 DDSim is FINALLY deployed and live! You can try it at ddsim.fly.dev Getting it online took one extra step. The cheap shared server was too slow: the hardest transistor solve takes about 50 seconds on my laptop and would have taken around 7 minutes there. That’s past the 5-minute limit I set, so it would have been stopped every time. I moved it to a faster server, and now it finishes in under a minute. Once it was up, I found a bug. When every contact on a transistor was at the same voltage, the picture still drew current flowing through it. That’s impossible, because with no voltage difference nothing moves. I fixed it, and now the page says “no current flows” instead of showing an empty plot with no explanation. Then I rewrote the README from scratch. The old one was over 500 lines and way too dense. The new one is about 200 lines, mostly screenshots from the live site plus a few tables, so someone can see what the project does in a couple of minutes. While doing that, I caught a mistake. One number in my results table didn’t match the graph right next to it. I reran the full simulation, which took 20 minutes, and fixed the table so it matches. Last, I took the deployment files out of the public code. Anyone who downloads it gets everything they need to run it on their own computer, but not the setup for putting it online. Next up, I might be thinking of getting a custom name for this simulator and my other atom simulator. If anyone knows where I can get free domains, lmk in the comments
Devlog #16 Now that DDSim is live, my next goal is to make it better than DEVSIM, a free, open-source simulator a lot of people already use. “Better” doesn’t count unless I can measure it, so I planned out the next 11 stages of the project, and the first one is a scoreboard. The scoreboard runs both simulators on the same set of devices and compares them in four ways: how often each one finishes a solve without crashing, how accurate the answers are, how fast they run, and what each one can do at all. Some of these runs take hours, and my laptop ran out of memory partway through, so I paused them. I’ll post the results once they’re done, even the parts where DEVSIM is better than mine. While building the accuracy check, I found a bug in my own math. Sometimes it reported numbers that didn’t make physical sense, so now it throws those out instead of trusting them. I also went through all the style files for the website. They’re about a third smaller now, and I checked that the page still looks exactly the same. Then I found a small bug that had been there all along. The little “i” buttons that explain each setting were supposed to turn blue when you hover over them, but a different style rule was overriding it. Last, I cleaned up the README again. The pictures are centered now, I took out the GIF, and I rewrote some of the text so it reads more naturally.
Devlog #17 I restarted the scoreboard runs, and before looking/mentioning any of the results I checked my own setup for DEVSIM. That showed a few bugs on my side. My starting guess for the voltage inside the device did a log of zero on heavily doped chips, so DEVSIM crashed INSTANTLY. I also wasn’t giving it enough steps to settle on some devices. I fixed both, because it wouldn’t be fair to count my mistakes as DEVSIM’s. I also cleaned up the code, I tried to ship all progress so far but there was just too much AI (guilty) so I am working on redoing the python, css and javascript code again mainly from scratch. (The image shows all the values from the DDSim tests)
Devlog #18 The robustness runs are almost done. Robustness checks a simple concept, if I give the solver a device cold, with no warm-up, does it actually finish? I ran 200 test cases through my solver and through DEVSIM, each in a few different setups. The robustness numbers aren’t final yet. One DEVSIM result is still missing. The first time my laptop ran out of memory, and the second time it went to sleep overnight, so it’s running again now. I also found out DEVSIM acts much differently depending on how many CPU threads it gets. With only one, some solves failed or took forever which was kinda interesting to see. On the cleanup side, I turned on the strictest type checking across the whole project and fixed what it found. Every color on the website now comes from one file. I also deleted a bunch of old files nobody used and cut the README down.
Devlog #19 The speed and robustness numbers are now saved on the scoreboard. On the first 8 benchmarks, my solver takes about 1.6x less time per bias point than DEVSIM. I also added a test that reads the README and fails if the README claims anything the data doesn’t back up (I hate getting 100% vibe code assumptions on my readme btw). I renamed a lot of variables across the code (to pass the 30% ai rule that im apparently violating) to shorter names. That kind of change can break the tests if some of the variables reference each other across multiple files, so I checked that python turns the old code and the new code into exactly the same instructions. Thankfully it did. I also moved all the settings into one file. Things like how many tries the solver gets, how small the mesh can get, and the server limits used to be scattered across about 20 files. I checked that every single value stayed exactly the same after the move. I also deleted the last few leftover comments. Then I pushed everything. The tests ran on three Python versions, and 2,723 of 2,724 passed. The one that failed was a browser test on Python 3.11 that waited too long for the page to load. The same test passed on the other two versions, so it’s probably just a slow test machine, but I’m going to rerun it to make sure. My laptop ran out of memory again, which stopped me from finishing the type hints in the tests. That’s next, once I’m not running a bunch of other stuff at the same time.
Devlog #20 In this devlog i firstly fixed up the website. It now has a little icon in the browser tab, a terms page, a privacy page and a footer with a contact button. The icon didn’t show up on the live site at first, so I fixed that too. Then I started the next phase, which is all about fixing temperature related stuff. A lot of the calculations of the simulator took room temperature which might have led to some wrong calculations, so I’ve been fixing that. The gate’s energy level was stuck at its room-temperature value. it was a real bug and its fixed now. When the silicon gets hotter, electrons now max out at a lower speed, just like in real-life chips. From 250 to 400 K, the junction’s built-in voltage matches the textbook formula. From 300 to 400 K, the diode’s leakage current stays within 0.3% of the formula. I also added a fixed charge that sits where the silicon meets the oxide layer. Real chips always have some, and it changes the voltage where a transistor turns on. Next up are the big jobs. A long DEVSIM run is still going, and after that I’ll test the temperature effects on a full 2D transistor. I also still need to put the website changes live.
Devlog #21 Since the last devlog I finished most of the temperature phases. First I compared the diode at 400 K against DEVSIM. I saved that result so my other tests compare with it from now on. Then I added two new sliders to the website. One sets the temperature, from 200 to 500 K. The other sets the fixed charge where the silicon meets the oxide. I picked both ranges by running the simulator across them. Each slider also has a short lesson that explains what it does. While I was writing those, I found some broken math formatting in the temperature lesson and fixed it. The biggest addition is freeze-out. To make silicon conduct, we add extra atoms that give up electrons. When it gets really cold, those atoms stop giving up their electrons. Before, my simulator assumed they always did. Now there’s a switch for it, and it works. At 100, 200 and 300 K it matches the textbook formula almost exactly. I also checked that a plain frozen silicon bar still follows Ohm’s law, and that the capacitance results still work at 150 K.
Devlog #22 The long DEVSIM run finally finished. It took about 6 hours and matched the expert result almost exactly, which closes out the scoreboard phase. Then I started the next phase, which is about AC. That essentially means wiggling the voltage back and forth and watching how the device reacts at different speeds. Before, my simulator could only handle super slow wiggles, or fast ones where I froze some electrons by hand. Now it can handle any speed. To get there, I first taught the simulator how fast electrons and holes pile up or drain away over time. Then I wrote the part that works out how much current flows into each contact when one of them gets wiggled. I tested it on diodes, since they have textbook formulas to compare against. A long diode matched within about 1%, and a short one within 1.3%. Along the way I found a bug where my mesh maker gave up on very long devices, so I fixed that too. The MOS capacitor is giving me some trouble. At really slow wiggles, the math needs more precision than normal computer numbers have, so the answers came out wrong by up to 46%. Fast wiggles work fine. Right now I’m trying a trick where I make the electrons react faster, so the slow case happens at a speed the computer can handle. Below are some of the DEVSIM scoreboard values
Devlog #23 The trick for the MOS capacitor worked. Making the electrons react faster put the slow wiggles at a speed the computer can handle, and the answers came out right. That FINALLY finished the AC phase. I also added noise, a tiny random jitter in current that every device has. Next I added time. Now its possible to flip a diode from on to off and watch it recover. When you switch a diode off, it keeps conducting for a moment because of all the charge stored inside it. I compared that against DEVSIM, and our results were within 0.03% of each other which is quite frankly something im really proud off. Then I added a feature where the simulator shows how inaccurate it may be. It now checks its own answer against a finer mesh and puts a little error bar on every point in the plots. It can also improve its own mesh by adding points only where they’re needed. On 5 of my 8 test devices it hit the target accuracy with fewer points than my hand-made meshes. I was aiming for around 6, so that’s still doable. The newest addition is a bipolar transistor, where a small current into the middle layer controls a much bigger current through the whole device. I built a simple 1D version and a more realistic 2D one. The 1D version matches the textbook formula to within 0.03%. The best part is that its gain drops off at both very low and very high current, the way real transistors do, and I never told it to. It figured that out from the physics.
Ships:
I built DDSim, a program that simulates what happens inside the tiny parts that computer chips are made of, ie diodes, capacitors and transistors. You describe a device by its shape and which parts of the silicon have extra electrons or holes. DDSim then works out how those electrons and holes move, and draws the current and voltage curves. I didn’t fit anything to make the graphs look right. Everything comes straight from the physics equations. (NOTE: ITS STILL VERY CLUNKY SO ITS NOT GOING TO BE PERFECT AS OF RIGHT NOW. IF YOU FACE ANY TROUBLES IM REALLY SORRY) To make sure everything accurate, I checked it against textbook formulas and against DEVSIM, a simulator other people wrote. They agree to within a few percent, and the project has about 2,700 automated tests. You can try it in your browser at ddsim.fly.dev. Pick a device, press solve, and watch the answer draw itself. Every button and graph has a little “i” that explains what it means, and there are guided lessons if you’re new to this. It’s a school-level instrument, not a chip design tool. Below about 50 nanometers the physics it uses stops being accurate, so I didn’t go beyond that...
|
1793004958.5938606
|
1793091358.5938606
|