|
30295
|
Frictionless by @someguest | Stardance
|
someguest
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @someguest | Stardance
|
1793321590.2638795
|
1793926390.2638795
|
|
27509
|
WarioWare Game by @somebodysomeone | Stardance
|
somebodysomeone
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WarioWare Game by @somebodysomeone | Starda Title: WarioWare Game by @somebodysomeone | Stardance...
|
1793900900.520431
|
1794505700.520431
|
|
27567
|
Frictionless by @somebodysomeone | Stardance
|
somebodysomeone
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @somebodysomeone | Stardanc Title: Frictionless by @somebodysomeone | Stardance...
|
1793386128.3152316
|
1793990928.3152316
|
|
23908
|
Talking Tic-Tac-Toe by @somebodyouknow | Stardance
|
somebodyouknow
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Talking Tic-Tac-Toe by @somebodyouknow | St Title: Talking Tic-Tac-Toe by @somebodyouknow | Stardance...
|
1793393469.1508086
|
1793998269.1508086
|
|
45880
|
scriblinlife by @somebodyouknow | Stardance
|
somebodyouknow
|
3
|
17.0
|
149
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-30T06:35:50Z", "hours": 7.0, "multiplier": 12.02, "payout": 79, "blessing": "neutral", "text": "I was thinking of which project to build on Stardance and then came across and idea of scribbling on the website and then you see a hidden message. I have to admit that I was just trying to get my idea set up and was looking into as many shortcuts which led to alot of bugs, which include: A full screen canvas No responsiveness No idea of what to do (like a user starts and there is a blank page) The eraser cursor (stupid ahhh bug as it didn’t scribble on the right places) Bad scribbling sound I actually could see all the bugs, but I didn’t really want to fix them. My project was working on my end and that was actually enough for me. After submitting and getting feedback, I quickly realized that the game wasn’t working for anyone. I got extremely low ratings but I thought of making a peak comeback which I did. The comeback (updates): Foil layer (so the user knows where to scribble) Better cursor control lfo control on the sound timeout function so the user doesn’t scribble endlessly Two themes: chill & depressing Stars for the chill mode Another music track (i love it <3) another messages sets especially for the chill theme Complete responsiveness (some scaling issues with fireflies) I switched the canvas to a smaller foil layer that just was centered in the middle of the screen, it sends indications that you gotta scribble on it. Now if you don’t scribble on it you are really stupid, jk. Then I got the modes set up, I actually am in love with the chill mode. -written by me :) but stolen from my readme ;)", "repo": "https://github.com/somebodyouknow66/scriblinlife", "demo": "https://scriblinlife.somebodyouknow.com/"}, {"ship_num": 2, "ts": "2026-09-04T07:24:08Z", "hours": 2.0, "multiplier": 3.57, "payout": 6, "blessing": "neutral", "text": "I completed scriblinlife, once and for all. I added a few features and fixed the cursor issue by shifting it to html. I also broke my code by trying to make the canvas responsive, actually I wasted one hour trying to fix it. I also fixed the sound for my scriblinlife game. Check out the other devlogs tooo.", "repo": "https://github.com/somebodyouknow66/scriblinlife", "demo": "https://scriblinlife.somebodyouknow.com/"}, {"ship_num": 3, "ts": "2026-08-16T10:20:35Z", "hours": 8.0, "multiplier": 8.18, "payout": 64, "blessing": "neutral", "text": "I made a game. Not just any game, a game that lets you explore messages in a more meaningful way in which you scribble away the coating from a message and once it is visible you can move forward to the next message. The code has been simplified so anyone can understand it, anyhow I just want you to leave your message series on my website, create a PR and then make an array. All the instructions are in the README.md. I know the scribbling sound is not actually very satisfying but I didn’t want to do the math required. I will set it in v2. The game has been a roller-coaster and will continue to be updated with other people’s messages.", "repo": "https://github.com/somebodyouknow66/scriblinlife", "demo": "https://scriblinlife.somebodyouknow.com/"}]...
|
[{"post_id": 84752, "ts": "202 [{"post_id": 84752, "ts": "2026-10-30T06:33:08Z", "hours": 0.6825, "text": "added responsiveness and did font changes, i was supposed to do this a month ago, but i got busy organizing haven."}, {"post_id": 69289, "ts": "2026-09-16T19:03:07Z", "hours": 0.5594, "text": "wrote the best comeback readme ever!! i really hope you enjoy reading this"}, {"post_id": 69033, "ts": "2026-09-16T07:54:50Z", "hours": 0.5486, "text": "my final devlog (i guess) after doing all the tiny fixes, such as the next button background or the speed of the stars and a lot of other small things. i have done a complete revamp on the scriblinlife project, and i hope you enjoy it. LINK: scriblinlife"}, {"post_id": 66606, "ts": "2026-09-12T13:34:14Z", "hours": 2.6703, "text": "I made something great, I made my comeback. I recently shipped and I got extremely low rating which was kinda depressing. I didn’t let that stop me, the only thing that was going on my mind was to make a perfect comeback. I would say the feedback part was very great as it really helped me understand what i did wrong. The changes: Two themes (depressing & chill) Stars animation for chill mode Chill music Button to change mode and much more. I would like you to try scriblinlife!!"}, {"post_id": 62857, "ts": "2026-09-06T11:57:47Z", "hours": 1.6386, "text": "I made the tough decision and it turned out so well… I did almost everything specified in the previous devlog. I have to say that this has got really fun to play. Please add your messages (read the readme)"}, {"post_id": 62691, "ts": "2026-09-06T05:34:09Z", "hours": 0.5017, "text": "I felt my heart get heavier as I saw the bitter truth, I saw how heavy the decision I was about to make was. I knew it was going to be difficult but I had to do what was right. Let’s not forget that the most important decisions are the difficult ones. sigh Let me give a brief overview of my pain. I stripped almost all of the main features from the game, bcz I thought of taking this game to another direction. Steer it away from all the mess I had made… I have removed: The scribbling feature itself The coat layer The moon The fireflies and a few more things. What I plan to do: A splash screen that asks you the theme: sad happy aurora and it has a guide and start button. You get taken to the page, but now instead of having a full coat layer. We will have a thin foil coat layer that will sit above our text and then people can erase it to reveal the message. I will still encourage people to add their messages through the repo bcz I really want to increase the github contributors on the repo. It looks badass, believe me."}, {"post_id": 51518, "ts": "2026-08-21T08:54:31Z", "hours": 0.6711, "text": "i finally stopped using my css shortcut to add my cursor. I added a html based cursor, and it is pretty simple and it just renders the image while i added the css to hide the default cursor. after that I had to also fix the rendering it on both the splash screen and the canvas. i did that by adding operators and on the top we had our cursor. this actually took a while bcz there were a lot of bugs spawning from nowhere bcz of this stupid cursor"}, {"post_id": 51293, "ts": "2026-08-20T21:01:18Z", "hours": 0.9347, "text": "well, actually i was trying to make the canvas more responsive. and i messed everything up. i created a system that would automatically downscale the canvas size according to the screen size. i actually just tried to divide the availble width - the padding with the default width. IT WORKED. not exactly the way, i wanted, but it looks way better. Sounds like stupid rocket science, but it was a failure. Now I am going to clean up my code. also i am debugging on why my custom cursor won’t show on the live website but will show on the"}, {"post_id": 47964, "ts": "2026-08-16T07:36:49Z", "hours": 0.8028, "text": "Woooohooo! Almost done with v1 of scribblinlife… So I just set a timeout so users can’ scribble endlessly, also added a cool eraser cursor to the game. Fixed the dropdown array errors, and also fixed the go blank errors ( once the position of the mouse was set to null the entire would go blank/crash ). TRY IT NOW! Please read the readme and plz plz add your own messages github repo I also reset my laptop and now nothing looks the way it used too 😥"}, {"post_id": 46724, "ts": "2026-08-14T05:33:23Z", "hours": 0.8089, "text": "i just wrote the readme, just fyi, i don’t write much."}, {"post_id": 45618, "ts": "2026-08-12T07:07:55Z", "hours": 0.7028, "text": "I just styled the dropdown functionality and got everything to look neat and nice."}, {"post_id": 45572, "ts": "2026-08-12T04:55:08Z", "hours": 0.4314, "text": "I just completed the dropdown functionality, which means we can have more scribbls… YAY! So what I mean is now you could go to my repo and add your own scribbl and then it would show up in the dropdown and anybody could select and play it. Also writing a readme is really painful."}, {"post_id": 44136, "ts": "2026-08-09T18:15:44Z", "hours": 0.5914, "text": "tada, i was guessing this was going to be my final devlog, I added the splash screen. I know the game already feels quite meaningful. I am always looking forward at people actually connecting with my builds, there is no better way for people to connect with my game, then allowing them to add their own scribbl (messages). I am now creating a dropdown and people can send me a list of messages they want to add on the website. If someone clicks on their scribbl in the dropdown, it loads and VOILA! The player can now read your messages. Should I add a google form or what? I mean for collecting peoples responses!"}, {"post_id": 44022, "ts": "2026-08-09T15:04:35Z", "hours": 0.4156, "text": "I set up fireflies woohoo. More personality for the game. I also resized the canvas so the fireflies would have more space to fly. I used a little bit of AI to help me with the calculations and math."}, {"post_id": 43961, "ts": "2026-08-09T12:41:24Z", "hours": 0.7517, "text": "I added a cool moon to the game. The moon is there bcz the platform was pretty blank and I wanted to give it more life. I also set this up with Konva. I added a gradient and glow animation to stop it from looking like a stupid circle in the corner. I think it gives personality to the game, let me know your thoughts."}, {"post_id": 43886, "ts": "2026-08-09T10:19:08Z", "hours": 0.9669, "text": "Set up the music and scribbling sound. I used the Tone.js library to make the scribbling sound. I used the sound “white” + the filter “highpass”. After adjusting the values and sounds for a while, I got something pretty satisfying. I found a sound on incompetech.com in the classical category called Relent. I set up Tone.js to play the sound too but bcz I use IDM alot. IDM was interfering with my application which caused me to switch to the plain audio tag. I also learnt: You can’t play audios without a user gesture Instructions: Keep scribblin’ until you see a message, once you have scribbled a message you will be allowed to move forward with an arrow at the right bottom corner. Try it out at scriblinlife.vercel.app."}, {"post_id": 43774, "ts": "2026-08-09T06:23:35Z", "hours": 2.3208, "text": "I recently worked on a game for the jame gam, called Diaper Baby. So now I am making another more meaningful game, you scribble the canvas to reveal messages and then once you have revealed it you can move on. This is the MVP, so you will probably find workarounds in the game. How the game works: I used React-konva (a library that lets you set a canvas). I set two layers, one was of text and one was of the coat layer. The coat layer stays above the text and you have the eraser tool set up, and when you erase the coat layer it reveals the message. Once the message is partially or fully revealed, the arrow is shown."}]...
|
Title: scriblinlife by @somebodyouknow | Stardance Title: scriblinlife by @somebodyouknow | Stardance
Devlogs:
I recently worked on a game for the jame gam, called Diaper Baby. So now I am making another more meaningful game, you scribble the canvas to reveal messages and then once you have revealed it you can move on. This is the MVP, so you will probably find workarounds in the game. How the game works: I used React-konva (a library that lets you set a canvas). I set two layers, one was of text and one was of the coat layer. The coat layer stays above the text and you have the eraser tool set up, and when you erase the coat layer it reveals the message. Once the message is partially or fully revealed, the arrow is shown.
Set up the music and scribbling sound. I used the Tone.js library to make the scribbling sound. I used the sound “white” + the filter “highpass”. After adjusting the values and sounds for a while, I got something pretty satisfying. I found a sound on incompetech.com in the classical category called Relent. I set up Tone.js to play the sound too but bcz I use IDM alot. IDM was interfering with my application which caused me to switch to the plain audio tag. I also learnt: You can’t play audios without a user gesture Instructions: Keep scribblin’ until you see a message, once you have scribbled a message you will be allowed to move forward with an arrow at the right bottom corner. Try it out at scriblinlife.vercel.app.
I added a cool moon to the game. The moon is there bcz the platform was pretty blank and I wanted to give it more life. I also set this up with Konva. I added a gradient and glow animation to stop it from looking like a stupid circle in the corner. I think it gives personality to the game, let me know your thoughts.
I set up fireflies woohoo. More personality for the game. I also resized the canvas so the fireflies would have more space to fly. I used a little bit of AI to help me with the calculations and math.
tada, i was guessing this was going to be my final devlog, I added the splash screen. I know the game already feels quite meaningful. I am always looking forward at people actually connecting with my builds, there is no better way for people to connect with my game, then allowing them to add their own scribbl (messages). I am now creating a dropdown and people can send me a list of messages they want to add on the website. If someone clicks on their scribbl in the dropdown, it loads and VOILA! The player can now read your messages. Should I add a google form or what? I mean for collecting peoples responses!
I just completed the dropdown functionality, which means we can have more scribbls… YAY! So what I mean is now you could go to my repo and add your own scribbl and then it would show up in the dropdown and anybody could select and play it. Also writing a readme is really painful.
I just styled the dropdown functionality and got everything to look neat and nice.
i just wrote the readme, just fyi, i don’t write much.
Woooohooo! Almost done with v1 of scribblinlife… So I just set a timeout so users can’ scribble endlessly, also added a cool eraser cursor to the game. Fixed the dropdown array errors, and also fixed the go blank errors ( once the position of the mouse was set to null the entire would go blank/crash ). TRY IT NOW! Please read the readme and plz plz add your own messages github repo I also reset my laptop and now nothing looks the way it used too 😥
well, actually i was trying to make the canvas more responsive. and i messed everything up. i created a system that would automatically downscale the canvas size according to the screen size. i actually just tried to divide the availble width - the padding with the default width. IT WORKED. not exactly the way, i wanted, but it looks way better. Sounds like stupid rocket science, but it was a failure. Now I am going to clean up my code. also i am debugging on why my custom cursor won’t show on the live website but will show on the
i finally stopped using my css shortcut to add my cursor. I added a html based cursor, and it is pretty simple and it just renders the image while i added the css to hide the default cursor. after that I had to also fix the rendering it on both the splash screen and the canvas. i did that by adding operators and on the top we had our cursor. this actually took a while bcz there were a lot of bugs spawning from nowhere bcz of this stupid cursor
I felt my heart get heavier as I saw the bitter truth, I saw how heavy the decision I was about to make was. I knew it was going to be difficult but I had to do what was right. Let’s not forget that the most important decisions are the difficult ones. sigh Let me give a brief overview of my pain. I stripped almost all of the main features from the game, bcz I thought of taking this game to another direction. Steer it away from all the mess I had made… I have removed: The scribbling feature itself The coat layer The moon The fireflies and a few more things. What I plan to do: A splash screen that asks you the theme: sad happy aurora and it has a guide and start button. You get taken to the page, but now instead of having a full coat layer. We will have a thin foil coat layer that will sit above our text and then people can erase it to reveal the message. I will still encourage people to add their messages through the repo bcz I really want to increase the github contributors on the repo. It looks badass, believe me.
I made the tough decision and it turned out so well… I did almost everything specified in the previous devlog. I have to say that this has got really fun to play. Please add your messages (read the readme)
I made something great, I made my comeback. I recently shipped and I got extremely low rating which was kinda depressing. I didn’t let that stop me, the only thing that was going on my mind was to make a perfect comeback. I would say the feedback part was very great as it really helped me understand what i did wrong. The changes: Two themes (depressing & chill) Stars animation for chill mode Chill music Button to change mode and much more. I would like you to try scriblinlife!!
my final devlog (i guess) after doing all the tiny fixes, such as the next button background or the speed of the stars and a lot of other small things. i have done a complete revamp on the scriblinlife project, and i hope you enjoy it. LINK: scriblinlife
wrote the best comeback readme ever!! i really hope you enjoy reading this
added responsiveness and did font changes, i was supposed to do this a month ago, but i got busy organizing haven.
Ships:
I made a game. Not just any game, a game that lets you explore messages in a more meaningful way in which you scribble away the coating from a message and once it is visible you can move forward to the next message. The code has been simplified so anyone can understand it, anyhow I just want you to leave your message series on my website, create a PR and then make an array. All the instructions are in the README.md. I know the scribbling sound is not actually very satisfying but I didn’t want to do the math required. I will set it in v2. The game has been a roller-coaster and will continue to be updated with other people’s messages.
I completed scriblinlife, once and for all. I added a few features and fixed the cursor issue by shifting it to html. I also broke my code by trying to make the canvas responsive, actually I wasted one hour trying to fix it. I also fixed the sound for my scriblinlife game. Check out the other devlogs tooo.
I was thinking of which project to build on Stardance and then came across and idea of scribbling on the website and then you see a hidden message. I have to admit that I was just trying to get my idea set up and was looking into as many shortcuts which led to alot of bugs, which include: A full screen canvas No responsiveness No idea of what to do (like a user starts and there is a blank page) The eraser cursor (stupid ahhh bug as it didn’t scribble on the right places) Bad scribbling sound I actually could see all the bugs, but I didn’t really want to fix them. My project was working on my end and that was actually enough for me. After submitting and getting feedback, I quickly realized that the game wasn’t working for anyone. I got extremely low ratings but I thought of making a peak comeback which I did. The comeback (updates): Foil layer (so the user knows where to scribble) Better cursor control lfo control on the sound timeout function so the user doesn’t scribble endlessly Two themes: chill & depressing Stars for the chill mode Another music track (i love it <3) another messages sets especially for the chill theme Complete responsiveness (some scaling issues with fireflies) I switched the canvas to a smaller foil layer that just was centered in the middle of the screen, it sends indications that you gotta scribble on it. Now if you don’t scribble on it you are really stupid, jk. Then I got the modes set up, I actually am in love with the chill mode. -written by me :) but stolen from my readme ;)...
|
1793865141.934111
|
1793951541.934111
|
|
46597
|
diaper-baby by @somebodyouknow | Stardance
|
somebodyouknow
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: diaper-baby by @somebodyouknow | Stardance
|
1793390114.3396115
|
1793994914.3396115
|
|
52843
|
stupid-ahh-reminder by @somebodyouknow | Stardance
|
somebodyouknow
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-05T20:58:03Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a reminder app with customtkniter in Python. It is a fairly simple app with a simple purpose to ask me if I brought my keys or not. It logs everything into JSON. Finally it is supposed to be scheduled with a local scheduling app to run everyday whenever you return to your house (and i hope that you haven’t lost your keys.)", "repo": "https://github.com/somebodyouknow66/stupid-ahh-reminder", "demo": "https://github.com/somebodyouknow66/stupid-ahh-reminder/releases/tag/Important"}]...
|
[{"post_id": 53034, "ts": "202 [{"post_id": 53034, "ts": "2026-08-23T12:54:40Z", "hours": 1.3781, "text": "My Stupid Ahh Reminder Well, I actually forget my keys alot and whenever I am out, I have to stay extra aware of where my keys actually are. I have got them stuck to my bag, but still they get misplaced. So I thought of using python to build a notfication system. This is just a customtkniter script that is supposed to be run at a given time with the windows scheduler. I first of all had built the app with tkniter, but looking at how ugly and outdated it looked. I quickly changed my mind and switched to customtkniter. I built the core functionality: Two buttons (affirmative and negative) Text label Buttons functionality JSON logging. The major error I faced was when I switched from Tkniter to CTk. I just used the replace button, bcz to be honest I have never used CTk nor tkniter before. Well bcz of knowing python, I got the hang of it pretty soon. I had fun building this one. I also got pretty nostalgic, bcz the last time I wrote python was in 2023 when I was learning CS50. That was the first time I learn python. It is nostalgic bcz so much has changed in these 3 years, it is overwhelmingly shocking."}]...
|
Title: stupid-ahh-reminder by @somebodyouknow | St Title: stupid-ahh-reminder by @somebodyouknow | Stardance
Devlogs:
My Stupid Ahh Reminder Well, I actually forget my keys alot and whenever I am out, I have to stay extra aware of where my keys actually are. I have got them stuck to my bag, but still they get misplaced. So I thought of using python to build a notfication system. This is just a customtkniter script that is supposed to be run at a given time with the windows scheduler. I first of all had built the app with tkniter, but looking at how ugly and outdated it looked. I quickly changed my mind and switched to customtkniter. I built the core functionality: Two buttons (affirmative and negative) Text label Buttons functionality JSON logging. The major error I faced was when I switched from Tkniter to CTk. I just used the replace button, bcz to be honest I have never used CTk nor tkniter before. Well bcz of knowing python, I got the hang of it pretty soon. I had fun building this one. I also got pretty nostalgic, bcz the last time I wrote python was in 2023 when I was learning CS50. That was the first time I learn python. It is nostalgic bcz so much has changed in these 3 years, it is overwhelmingly shocking.
Ships:
I made a reminder app with customtkniter in Python. It is a fairly simple app with a simple purpose to ask me if I brought my keys or not. It logs everything into JSON. Finally it is supposed to be scheduled with a local scheduling app to run everyday whenever you return to your house (and i hope that you haven’t lost your keys.)...
|
1793951776.1719759
|
1794038176.1719759
|
|
63493
|
somebodyouknow-personal-website by @somebodyouknow somebodyouknow-personal-website by @somebodyouknow | Stardance...
|
somebodyouknow
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: somebodyouknow-personal-website by @somebod Title: somebodyouknow-personal-website by @somebodyouknow | Stardance...
|
1793663346.824613
|
1794268146.824613
|
|
3656
|
My awesome macropad! by @some_thing_1432 | Stardan My awesome macropad! by @some_thing_1432 | Stardance...
|
some_thing_1432
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @some_thing_1432 | Title: My awesome macropad! by @some_thing_1432 | Stardance...
|
1793368460.8630953
|
1793973260.8630953
|
|
25042
|
Untitled by @some_thing_1432 | Stardance
|
some_thing_1432
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @some_thing_1432 | Stardance
|
1793537665.3918872
|
1794142465.3918872
|
|
2519
|
Handcryption by @some_guy_named_joe | Stardance
|
some_guy_named_joe
|
1
|
34.0
|
168
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-18T19:51:05Z", "hours": 34.0, "multiplier": 5.0, "payout": 168, "blessing": "neutral", "text": "I made a hardware-based encrypted peer-to-peer messaging device built on CircuitPython (ESP32-S2). It is able to send text messages to others of this device over http using a Raspberry Pi Server. I have to hold off of the audio side, as this device uses an analog microphone, which does not record great audio. However, the texting portion works really well. I built all of this in less than two weeks in order to qualify for Hack Club Outpost. I hope you like it!", "repo": "https://github.com/Joethebeast-coder/Handheld-Encryption-Device", "demo": ""}]...
|
[{"post_id": 47644, "ts": "202 [{"post_id": 47644, "ts": "2026-08-15T17:51:11Z", "hours": 3.1564, "text": "FINAL Handcryption Build Sorry if its been so long, I have been doing a lot this summer, but here is what happened over the past month. (Time shown does not reflect time spent, as hackatime wasn’t working when I was coding and I didn’t record the building process) So, I was able to assemble 1 working device with the one working e-ink display I had left. I was on a time crunch as I was trying to qualify for Outpost. I was able to submit it in time, and I shipped it for Outpost. The device has all the previously specified features, such as peer-to-peer messaging and message history. The microphone and speaker are very weird, as they are analog, so the audio quality is questionable. However, the project works great! At Outpost, I had a really good time with my fellow Hack Clubbers. Thank you Hack Club for making this all possible. (P.S. You should allow me to remove my request for funding and submit it normally)."}, {"post_id": 13986, "ts": "2026-06-22T23:09:13Z", "hours": 1.3697, "text": "Handcryption Status Update 0.1.1 This is a short update. I am currently waiting for funding, but I was able to design some button caps in CAD. I really hope I get S tier so I can get to Open Sauce Update On Me: My schedule is super packed. I’m starting to regret taking on a lot of things this summer."}, {"post_id": 12557, "ts": "2026-06-20T14:46:54Z", "hours": 1.6814, "text": "Handcryption Status Update 0.1 What’s Happening? So, I have been able to clean up everything in my code. I have added comments and the ability to connect to Wi-Fi. All of my code has been uploaded to GitHub for review for funding. Also on GitHub are my 3D models. Be aware that the part models’ heights are an estimate based on the total height of the part given (if that makes sense). When printing the cover, I am planning to swap the filament from PLA to TPU to make the pads holding the buttons squishy. I am a little disappointed that the hackatime in my VS Code editor stopped recording time, and I lost 2 hours, but I will just use Lapse from now on. GitHub Repo"}, {"post_id": 11631, "ts": "2026-06-18T23:03:51Z", "hours": 1.6394, "text": "Hancryption Status Update 0.0.4 What Happened? So, I added in one last new feature to my code: voice messages. In order to play the audio, I have decided to ditch the piezo and use an actual speaker breakout, and I have updated the BOM on my Github as such (check the last devlog). Other than that, I have been cleaning and debugging the code, and adding in comments; all to get it ready to request for funding. For some reason, my hackatime on the Stardance website isn’t synced with what my Hackatime dashboard says. So, I’m posting this much eariler than I would have wanted in hopes to fix that issue. What’s Next? Sneak Peak at Funding Request Version Timeline"}, {"post_id": 9595, "ts": "2026-06-16T00:04:46Z", "hours": 3.2939, "text": "Handcryption Status Update 0.0.3.9 What Happened? Ok, big change to the workings of this device. Previously, this device could only work locally, but through my Raspberry Pi server and a domain through ngrok, I can make the device work on the cloud, and I have altered the server code and main device code to work this way. Also, instead of using IPs to identify devices, I am using my own identification system that is like a phone number, a sequence of 9 digits. I recognize that this may be a small number of available sequences, but for now, it is a good amount. I can change this later. So, to send messages now, instead of using a socket, the device sends an HTTP request to the ngrok domain hosted by the Pi. The request includes the message, the destination’s ID, and the sender’s (the device’s) ID. The server then stores this information in a “mailbox” -a collection of all sent messages. The receiving device, every 2 seconds, is sending an HTTP request to the server asking if there is anything in its mailbox. If so, the server returns the message(s) with the sender ID so the receiver can match that to a contact. The cloud update has made my overall code length shorter, as most of the long sequences of code have been simplified to shorter HTTP requests. Also, as promised, this is my part BOM: https://github.com/Joethebeast-coder/Handheld-Encryption-Device/tree/main/Hardware What’s Next in 0.0.4? - Extra Add-on Device Features - Maybe more website interactivity"}, {"post_id": 8069, "ts": "2026-06-13T14:05:00Z", "hours": 5.1436, "text": "Handcryption Status Update 0.0.3.6 What Happened? I added a cool new feature to the Handcryption device-GROUP CHATS!! This allows every user with a Handcryption device who opts to join the group to participate in conversations, fostering a more connected experience among users. I learned how to use Flask (thanks to GeeksforGeeks), which enabled me to seamlessly integrate the group chat feature into the server code running on the Raspberry Pi. In addition to the chat functionality, there is now a website hosted on the Raspberry Pi’s IP address that displays all the messages in the group chat. The caveat is that every message on the website is shown in its encrypted form to maintain security and confidentiality. Looking ahead, I plan to implement a feature that would allow Handcryption users to sign in to the website. This will enable them to view messages in a decrypted format, enhancing user experience while still prioritizing privacy. I believe these developments will significantly improve user engagement and create a more dynamic platform for communication. My device(s) are becoming more and more like a phone What’s next? - Preliminary BOM - Increase Website Functionality - Timeline Estimation - Code Cleanup and Extra Features Photo Description: Some of the server code for the group chat"}, {"post_id": 6401, "ts": "2026-06-10T19:27:12Z", "hours": 2.5883, "text": "Handcryption Status Update 0.0.3.5 What Happened? I was able to set up a server on my Raspberry Pi 4 with the help of Copilot (I do not know Flask in the slightest). So now, when a device wants to send a message, the audio recording is sent to the Pi, requesting that it be translated to text. I’ve been experimenting with Claude on making a website to monitor the server’s status, but I will talk about that more in a later update if I decide to go that route. Today, I was able to make a CAD model of the housing of the device (The process of which is posted on Lapse). I have to admit, it looks a lot like the phreakers from the early days of calling. What’s Next? - Decision on whether to pursue web monitoring - Preliminary BOM - Timeline Estimation - Extra Features for the Device"}, {"post_id": 5790, "ts": "2026-06-09T18:22:30Z", "hours": 4.0547, "text": "Handcryption Status Update 0.0.3.2 (Big News) What Happened? So, I was able to add in a UI that includes settings, contacts, message history, as well as battery status. In the settings, the user can change the volume of the piezo, as well as clear the files on their device (Contacts, Known IPs, and Message History. When hovering over a choice, the icon (the volume icon, for example) repeatedly switches from inverted to normal. However, while I was debugging, I found a MAJOR problem. My measly ESP32 microcontroller doesn’t have enough CPU and RAM to run the speech-to-text model. However, I can pivot from this by using the VOSK model paired with my Raspberry Pi 4 that I have on hand as a server to run the model for the microcontroller. This opens up a whole new possibility. We can now have a main hub that monitors the devices, serves the speech-to-text requests, and sends the text back. What’s Next? - Speech-to-text code for the Raspberry Pi - Communication Protocol between the device and Pi"}, {"post_id": 4972, "ts": "2026-06-08T16:55:09Z", "hours": 4.4942, "text": "Hancryption Status Update 0.0.3 (Combined) What Happened in 0.0.2.3? I have created a parts list for this project: Adafruit: - Adafruit Electret Microphone Amplifier - MAX4466 with Adjustable Gain - Adafruit 2.13” Monochrome eInk / ePaper Display with SRAM - 250x122 Monochrome with SSD1680 - Adafruit ESP32-S2 Feather - 4 MB Flash + 2 MB PSRAM - STEMMA QT / Qwiic - Lithium Ion Polymer Battery - 3.7v 100mAh - Tactile Button switch (6mm) x 20 pack - Small Enclosed Piezo w/Wires I have decided to use the Adafruit ESP32-S2 Feather as my microcontroller, as it takes care of the LiPoly battery charging, so I don’t have to buy extra parts for it. I can also charge the battery through the USB-C on the board. It also has many GPIO pins that I can give to my e-Ink display, as well as the switches (6). What Happened in 0.0.2.5? I created a wiring diagram for the components listed in the parts list. The time-lapse can be seen on Lapse*. *I forgot to add the piezo in the time-lapse, and I wired the SDA and SCL pins to buttons, which was not supposed to happen, so later, I added the piezo, and moved the button wires to spare analog pins. You can see these in the screenshot below. What Happened in 0.0.3? I made a complete draft of the code for the device. I added all of the button logic and basic e-ink display code. I added a loading screen with “HANCRYPTION” in block text and a sleep screen. To “power down”, when the user holds the power button for more than 1 second, it goes into deep-sleep, which is basically off for microcontrollers. If it is less than that, it just goes idle. Of course, this is not the final code. I will keep adding more and more features that are compatible with the current set of parts I already have. What’s Next in 0.0.4? -Extra UI Features -Possibility of Games"}, {"post_id": 3197, "ts": "2026-06-06T00:44:42Z", "hours": 2.9586, "text": "Hancryption Status Update 0.0.2.1 What Happened? I patched some bugs in the client class so I could add a main loop for the device. When the device is sending, it is the server, and in any other circumstance, it is the client, it is idle and waiting for a message. I added the button and microphone logic for the specific components. I need to add the logic for the eink display"}, {"post_id": 2526, "ts": "2026-06-05T01:55:38Z", "hours": 1.7911, "text": "Hancryption Status Update 0.0.2 What Happened? I added classes for server and client communication so the device could be either. I also added the encryption feature, which generates a unique key for each known IP address. The network also includes a client status check that occurs every 15 seconds, in which the client sends its IP address to the server. What’s Next in 0.0.3? Full draft code for a device. This will include all of the machine programming for the ESP32 chip, which is for the microphone, eink screen, and buttons. By 0.0.2.3, a draft parts list should be complete. By 0.0.2.5, a wiring diagram should be complete."}, {"post_id": 1210, "ts": "2026-06-03T02:05:14Z", "hours": 0.3333, "text": "Handcryption Status Update 0.0.1.5 What’s New? I created a rough sketch of the device. I also wrote down a tentative list of parts I would need. See Below 0.0.2 Should be released by 6/4/26. *Note: I completely forgot about the screen and the parts needed for that. LCD 3 buttons"}, {"post_id": 1073, "ts": "2026-06-02T21:44:37Z", "hours": 1.1033, "text": "Hancryption Status Update 0.0.1 I have created the basic logic framework for the speech-to-text with processing. I am currently using many placeholders, however. Will be updating that by 0.0.4 at the latest. For encryption, I am using my previously developed “Cencrypt” Python library. What’s Next in 0.0.2? Networking Framework Encryption Setup"}]...
|
Title: Handcryption by @some_guy_named_joe | Stard Title: Handcryption by @some_guy_named_joe | Stardance
Devlogs:
Hancryption Status Update 0.0.1 I have created the basic logic framework for the speech-to-text with processing. I am currently using many placeholders, however. Will be updating that by 0.0.4 at the latest. For encryption, I am using my previously developed “Cencrypt” Python library. What’s Next in 0.0.2? Networking Framework Encryption Setup
Handcryption Status Update 0.0.1.5 What’s New? I created a rough sketch of the device. I also wrote down a tentative list of parts I would need. See Below 0.0.2 Should be released by 6/4/26. *Note: I completely forgot about the screen and the parts needed for that. LCD 3 buttons
Hancryption Status Update 0.0.2 What Happened? I added classes for server and client communication so the device could be either. I also added the encryption feature, which generates a unique key for each known IP address. The network also includes a client status check that occurs every 15 seconds, in which the client sends its IP address to the server. What’s Next in 0.0.3? Full draft code for a device. This will include all of the machine programming for the ESP32 chip, which is for the microphone, eink screen, and buttons. By 0.0.2.3, a draft parts list should be complete. By 0.0.2.5, a wiring diagram should be complete.
Hancryption Status Update 0.0.2.1 What Happened? I patched some bugs in the client class so I could add a main loop for the device. When the device is sending, it is the server, and in any other circumstance, it is the client, it is idle and waiting for a message. I added the button and microphone logic for the specific components. I need to add the logic for the eink display
Hancryption Status Update 0.0.3 (Combined) What Happened in 0.0.2.3? I have created a parts list for this project: Adafruit: - Adafruit Electret Microphone Amplifier - MAX4466 with Adjustable Gain - Adafruit 2.13” Monochrome eInk / ePaper Display with SRAM - 250x122 Monochrome with SSD1680 - Adafruit ESP32-S2 Feather - 4 MB Flash + 2 MB PSRAM - STEMMA QT / Qwiic - Lithium Ion Polymer Battery - 3.7v 100mAh - Tactile Button switch (6mm) x 20 pack - Small Enclosed Piezo w/Wires I have decided to use the Adafruit ESP32-S2 Feather as my microcontroller, as it takes care of the LiPoly battery charging, so I don’t have to buy extra parts for it. I can also charge the battery through the USB-C on the board. It also has many GPIO pins that I can give to my e-Ink display, as well as the switches (6). What Happened in 0.0.2.5? I created a wiring diagram for the components listed in the parts list. The time-lapse can be seen on Lapse*. *I forgot to add the piezo in the time-lapse, and I wired the SDA and SCL pins to buttons, which was not supposed to happen, so later, I added the piezo, and moved the button wires to spare analog pins. You can see these in the screenshot below. What Happened in 0.0.3? I made a complete draft of the code for the device. I added all of the button logic and basic e-ink display code. I added a loading screen with “HANCRYPTION” in block text and a sleep screen. To “power down”, when the user holds the power button for more than 1 second, it goes into deep-sleep, which is basically off for microcontrollers. If it is less than that, it just goes idle. Of course, this is not the final code. I will keep adding more and more features that are compatible with the current set of parts I already have. What’s Next in 0.0.4? -Extra UI Features -Possibility of Games
Handcryption Status Update 0.0.3.2 (Big News) What Happened? So, I was able to add in a UI that includes settings, contacts, message history, as well as battery status. In the settings, the user can change the volume of the piezo, as well as clear the files on their device (Contacts, Known IPs, and Message History. When hovering over a choice, the icon (the volume icon, for example) repeatedly switches from inverted to normal. However, while I was debugging, I found a MAJOR problem. My measly ESP32 microcontroller doesn’t have enough CPU and RAM to run the speech-to-text model. However, I can pivot from this by using the VOSK model paired with my Raspberry Pi 4 that I have on hand as a server to run the model for the microcontroller. This opens up a whole new possibility. We can now have a main hub that monitors the devices, serves the speech-to-text requests, and sends the text back. What’s Next? - Speech-to-text code for the Raspberry Pi - Communication Protocol between the device and Pi
Handcryption Status Update 0.0.3.5 What Happened? I was able to set up a server on my Raspberry Pi 4 with the help of Copilot (I do not know Flask in the slightest). So now, when a device wants to send a message, the audio recording is sent to the Pi, requesting that it be translated to text. I’ve been experimenting with Claude on making a website to monitor the server’s status, but I will talk about that more in a later update if I decide to go that route. Today, I was able to make a CAD model of the housing of the device (The process of which is posted on Lapse). I have to admit, it looks a lot like the phreakers from the early days of calling. What’s Next? - Decision on whether to pursue web monitoring - Preliminary BOM - Timeline Estimation - Extra Features for the Device
Handcryption Status Update 0.0.3.6 What Happened? I added a cool new feature to the Handcryption device-GROUP CHATS!! This allows every user with a Handcryption device who opts to join the group to participate in conversations, fostering a more connected experience among users. I learned how to use Flask (thanks to GeeksforGeeks), which enabled me to seamlessly integrate the group chat feature into the server code running on the Raspberry Pi. In addition to the chat functionality, there is now a website hosted on the Raspberry Pi’s IP address that displays all the messages in the group chat. The caveat is that every message on the website is shown in its encrypted form to maintain security and confidentiality. Looking ahead, I plan to implement a feature that would allow Handcryption users to sign in to the website. This will enable them to view messages in a decrypted format, enhancing user experience while still prioritizing privacy. I believe these developments will significantly improve user engagement and create a more dynamic platform for communication. My device(s) are becoming more and more like a phone What’s next? - Preliminary BOM - Increase Website Functionality - Timeline Estimation - Code Cleanup and Extra Features Photo Description: Some of the server code for the group chat
Handcryption Status Update 0.0.3.9 What Happened? Ok, big change to the workings of this device. Previously, this device could only work locally, but through my Raspberry Pi server and a domain through ngrok, I can make the device work on the cloud, and I have altered the server code and main device code to work this way. Also, instead of using IPs to identify devices, I am using my own identification system that is like a phone number, a sequence of 9 digits. I recognize that this may be a small number of available sequences, but for now, it is a good amount. I can change this later. So, to send messages now, instead of using a socket, the device sends an HTTP request to the ngrok domain hosted by the Pi. The request includes the message, the destination’s ID, and the sender’s (the device’s) ID. The server then stores this information in a “mailbox” -a collection of all sent messages. The receiving device, every 2 seconds, is sending an HTTP request to the server asking if there is anything in its mailbox. If so, the server returns the message(s) with the sender ID so the receiver can match that to a contact. The cloud update has made my overall code length shorter, as most of the long sequences of code have been simplified to shorter HTTP requests. Also, as promised, this is my part BOM: https://github.com/Joethebeast-coder/Handheld-Encryption-Device/tree/main/Hardware What’s Next in 0.0.4? - Extra Add-on Device Features - Maybe more website interactivity
Hancryption Status Update 0.0.4 What Happened? So, I added in one last new feature to my code: voice messages. In order to play the audio, I have decided to ditch the piezo and use an actual speaker breakout, and I have updated the BOM on my Github as such (check the last devlog). Other than that, I have been cleaning and debugging the code, and adding in comments; all to get it ready to request for funding. For some reason, my hackatime on the Stardance website isn’t synced with what my Hackatime dashboard says. So, I’m posting this much eariler than I would have wanted in hopes to fix that issue. What’s Next? Sneak Peak at Funding Request Version Timeline
Handcryption Status Update 0.1 What’s Happening? So, I have been able to clean up everything in my code. I have added comments and the ability to connect to Wi-Fi. All of my code has been uploaded to GitHub for review for funding. Also on GitHub are my 3D models. Be aware that the part models’ heights are an estimate based on the total height of the part given (if that makes sense). When printing the cover, I am planning to swap the filament from PLA to TPU to make the pads holding the buttons squishy. I am a little disappointed that the hackatime in my VS Code editor stopped recording time, and I lost 2 hours, but I will just use Lapse from now on. GitHub Repo
Handcryption Status Update 0.1.1 This is a short update. I am currently waiting for funding, but I was able to design some button caps in CAD. I really hope I get S tier so I can get to Open Sauce Update On Me: My schedule is super packed. I’m starting to regret taking on a lot of things this summer.
FINAL Handcryption Build Sorry if its been so long, I have been doing a lot this summer, but here is what happened over the past month. (Time shown does not reflect time spent, as hackatime wasn’t working when I was coding and I didn’t record the building process) So, I was able to assemble 1 working device with the one working e-ink display I had left. I was on a time crunch as I was trying to qualify for Outpost. I was able to submit it in time, and I shipped it for Outpost. The device has all the previously specified features, such as peer-to-peer messaging and message history. The microphone and speaker are very weird, as they are analog, so the audio quality is questionable. However, the project works great! At Outpost, I had a really good time with my fellow Hack Clubbers. Thank you Hack Club for making this all possible. (P.S. You should allow me to remove my request for funding and submit it normally).
Ships:
I made a hardware-based encrypted peer-to-peer messaging device built on CircuitPython (ESP32-S2). It is able to send text messages to others of this device over http using a Raspberry Pi Server. I have to hold off of the audio side, as this device uses an analog microphone, which does not record great audio. However, the texting portion works really well. I built all of this in less than two weeks in order to qualify for Hack Club Outpost. I hope you like it!...
|
1793775565.0715365
|
1793861965.0715365
|
|
48457
|
S. S. L. A. M. (Stereo Simultaneous Localization a S. S. L. A. M. (Stereo Simultaneous Localization and Mapping) by @some_guy_named_joe | Stardance...
|
some_guy_named_joe
|
0
|
11.74
|
0
|
[]
|
[{"post_id": 51066, "ts": "202 [{"post_id": 51066, "ts": "2026-08-20T15:28:27Z", "hours": 5.0453, "text": "S. S. L. A. M. Update 2 Quick Overview Hello, for those who haven’t seen this project yet, I am creating a new way to create SLAM for robotics. Usually, to create SLAM, people have to spend tens of thousands of dollars on LiDAR. However, for my rookie FRC team, I am going to use a stereo (camera) system to find the 3d position of objects. What I Just Did I added in more location-finding systems. As I said in the previous log , I am taking advantage of the Apriltags that will be positioned around the arena so that the robot can find its position on the field using a coordinate system and its angle of orientation. I am also in the process of making a pathfinding system that takes into account every obstacle on the field. The function would take an arbitrary coordinate as the target and compute the direct line from the robot to the target. If there is an obstacle in the way (Computed mathematically), the program will estimate an arc around the obstacle to the target."}, {"post_id": 50323, "ts": "2026-08-19T14:25:05Z", "hours": 6.6975, "text": "S. S. L. A. M. Update 1 Quick Overview Hello, I am creating a new way to create SLAM for robotics. Usually, to create SLAM, people have to spend tens of thousands of dollars on LiDAR. However, for my rookie FRC team, I am going to use a stereo (camera) system to find the 3d position of objects. What I Just Did I laid out the basic computational framework for this project. I am going to be running the computation in Python, and the robot commands in C++. I am using OpenCV to do some of the math and taking advantage of the Apriltags to find the robot’s position on the field."}]...
|
Title: S. S. L. A. M. (Stereo Simultaneous Localiz Title: S. S. L. A. M. (Stereo Simultaneous Localization and Mapping) by @some_guy_named_joe | Stardance
Devlogs:
S. S. L. A. M. Update 1 Quick Overview Hello, I am creating a new way to create SLAM for robotics. Usually, to create SLAM, people have to spend tens of thousands of dollars on LiDAR. However, for my rookie FRC team, I am going to use a stereo (camera) system to find the 3d position of objects. What I Just Did I laid out the basic computational framework for this project. I am going to be running the computation in Python, and the robot commands in C++. I am using OpenCV to do some of the math and taking advantage of the Apriltags to find the robot’s position on the field.
S. S. L. A. M. Update 2 Quick Overview Hello, for those who haven’t seen this project yet, I am creating a new way to create SLAM for robotics. Usually, to create SLAM, people have to spend tens of thousands of dollars on LiDAR. However, for my rookie FRC team, I am going to use a stereo (camera) system to find the 3d position of objects. What I Just Did I added in more location-finding systems. As I said in the previous log , I am taking advantage of the Apriltags that will be positioned around the arena so that the robot can find its position on the field using a coordinate system and its angle of orientation. I am also in the process of making a pathfinding system that takes into account every obstacle on the field. The function would take an arbitrary coordinate as the target and compute the direct line from the robot to the target. If there is an obstacle in the way (Computed mathematically), the program will estimate an arc around the obstacle to the target....
|
1793973004.0854387
|
1794577804.0854387
|
|
58736
|
Joe's Personal Site by @some_guy_named_joe | S Joe's Personal Site by @some_guy_named_joe | Stardance...
|
some_guy_named_joe
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Joe's Personal Site by @some_guy_named_ Title: Joe's Personal Site by @some_guy_named_joe | Stardance...
|
1793509049.9544137
|
1794113849.9544137
|
|
38530
|
chat-app by @some1u | Stardance
|
some1u
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: chat-app by @some1u | Stardance
|
1793317758.4747028
|
1793922558.4747028
|
|
17373
|
Untitled project by @somanshahuja0 | Stardance
|
somanshahuja0
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @somanshahuja0 | Starda Title: Untitled project by @somanshahuja0 | Stardance...
|
1793371796.6861107
|
1793976596.6861107
|
|
12011
|
My awesome macropad! by @solxmn | Stardance
|
solxmn
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @solxmn | Stardance
|
1793397008.2711322
|
1794001808.2711322
|
|
50617
|
solxmn.me by @solxmn | Stardance
|
solxmn
|
2
|
4.0
|
27
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-22T12:19:18Z", "hours": 2.0, "multiplier": 14.86, "payout": 27, "blessing": "neutral", "text": "Easter egg done! I made another little thing for my site: a small top-down scene with a character, a tree, some particles, and a short interaction. I’m not going to spoil what actually happens in the scene. If you want to see that part, you’ll have to find it yourself. What it is It’s a single-page top-down scene made with vanilla JS and CSS. You can walk around, interact with things, and eventually get sent somewhere else. There’s also some collision, particles, animations, and a few other small details that make it feel a little less like a static webpage. Some problems I ran into One of the first problems was correctly setting the tree’s size. I had multiple things affecting its scale at once, which resulted in it being way bigger than it was supposed to be. Once I figured out what was actually controlling its size, it was a pretty easy fix. The collision was another one. The hitboxes didn’t always line up with what was actually on screen, so I ended up making a small hitbox editor to make placing them much easier. It can also save and export the hitbox data, which made testing things a lot less painful. I also had to figure out how to keep the world consistent when resizing the browser. This ended up being one of the more annoying parts, since quite a few things depended on the screen size. Getting the background, movement, and collision to all agree took a few attempts. There were also the usual animation problems. The character could keep walking against a wall, or quickly tapping a key could make the animation look weird, just your average game engine errors. Nothing particularly complicated, but definitely the kind of stuff you don’t notice until you actually start playing it. Then there was the tree layering. I wanted the character to be able to walk behind the tree while still appearing in front of the leaves, which took a surprisingly long time to get looking right. I ended up doing some slightly weird CSS/image layering instead of making completely separate sprites for everything. And, of course, there were a bunch of tiny mistakes along the way. Typos, duplicated code, things being in the wrong layer, and a few cases where something looked completely broken for no obvious reason. Basically, normal web development. What was easier than expected Once the basic systems were working, adding smaller things became pretty easy. The particle effects were simple to tweak, rectangular hitboxes were straightforward to add, and the dialogue UI was mostly just a matter of adjusting some CSS until it looked right. What was harder than expected The biggest surprise was how many things depended on the screen size. Something that sounds as simple as making the world stay the same size ended up affecting a lot more than I expected. There was also a lot more manual work involved than I originally thought, especially when preparing some of the visual assets and getting the different layers of the tree to work together. A few things I left as they are The world is based on the screen size when it’s first loaded, so it isn’t necessarily identical on every device and may break on some (sorry!). For something this small, I don’t really mind. It’s meant to be a little hidden scene on my website, not a full game. There’s also still a debug option for the hitboxes in the code. It’s useful when I’m working on the scene, so I kept it around. And yes, this is an easter egg. You’ll have to find it yourself.", "repo": "https://github.com/Fraczdev/Fraczdev.github.io", "demo": "https://solxmn.me"}, {"ship_num": 2, "ts": "2026-08-17T23:10:25Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "The Story Behind solxmn.me solxmn.me started long before the domain itself existed. The very first version of my website was created on an .is-a.dev subdomain on October 8, 2025. At the time, I was still figuring out how I wanted the site to look and how I wanted to approach web development. Initially, I used AI to help create a few different templates, then experimented with modifying the ones I liked most. Eventually, though, I stopped relying on templates and started actually learning HTML, CSS, and JavaScript myself. I also took inspiration from websites and services like Linktree and other personal websites I came across, while gradually developing my own style. A few months later, I applied for the GitHub Student Developer Pack. On July 15, 2026, I used it to claim my .me domain through Namecheap for one year. That was the point where the project started feeling much more like a real personal website rather than an experiment. For the redesign, I took a different approach. Before writing the code, I designed the entire website in Photoshop. I wanted to have a clear idea of the layout and the final concept before I started implementing it. Having the whole design in front of me made it much easier to turn the idea into an actual website. Once I had the motivation to work on it, I went all in. I spent around four to five hours a day working on the redesign, tweaking details, fixing things that bothered me, and gradually turning the original concept into something I was genuinely proud of. After the main redesign was finished, I started adding more personal touches and Easter eggs. Those small details became one of my favorite parts of the project because they made the site feel less like a generic portfolio and more like something that actually belonged to me. Despite using AI during the early stages of the project, I barely used it in the versions that were actually deployed. I only used it once or twice, mainly for debugging and for writing GitHub push descriptions. Most of the final website was built by me, through everything I learned while working on it, obviously taking much inspiration from Toby Fox and Temmie Chang’s works. This (and probably the final) version is made up of 2 main pages: A more “professional” index page, which has most of my socials, and some brief introductions, my skills, hobbies and whatnot; The redesign, the actual CORE ;) of the website, but I’m not going to tell you how to get to it or what’s in it :P, it’s up to you to figure out what else is there. Looking back, the project has been a really fun experience. It started as a simple personal website, but along the way it became a way for me to learn web development, experiment with design, and build something that I could genuinely call my own. I don’t think this will be the last project like this, either. Building this site made me want to create more things from scratch, and I’m definitely looking forward to seeing what I end up making next.", "repo": "https://github.com/Fraczdev/Fraczdev.github.io", "demo": "https://solxmn.me"}]...
|
[{"post_id": 50001, "ts": "202 [{"post_id": 50001, "ts": "2026-08-19T01:03:19Z", "hours": 1.7842, "text": "I am FINALLY done with this easter egg!! I added some finishing touches, but also fixed a lotta stuff. I mostly had some problems with trying to split the player’s hitbox in half (for z-index purposes) and I also had to split the tree gif 😭 . I’m unsure if I should tune the map hitboxes better, but I think I’ll keep it like this. Was VERY fun though, I definitely gained more experience with this. will ship soon :)"}, {"post_id": 49244, "ts": "2026-08-17T22:39:30Z", "hours": 2.2603, "text": "Worked on THE main easter egg (huge deltarune fan) Regained motivation to work on this. I had to rewrite a small part of the engine for this 😭 absolutely worth it tho. I’m like 80% done, I just have to add the map hitboxes and I’m golden!"}]...
|
Title: solxmn.me by @solxmn | Stardance
Devlogs:
Title: solxmn.me by @solxmn | Stardance
Devlogs:
Worked on THE main easter egg (huge deltarune fan) Regained motivation to work on this. I had to rewrite a small part of the engine for this 😭 absolutely worth it tho. I’m like 80% done, I just have to add the map hitboxes and I’m golden!
I am FINALLY done with this easter egg!! I added some finishing touches, but also fixed a lotta stuff. I mostly had some problems with trying to split the player’s hitbox in half (for z-index purposes) and I also had to split the tree gif 😭 . I’m unsure if I should tune the map hitboxes better, but I think I’ll keep it like this. Was VERY fun though, I definitely gained more experience with this. will ship soon :)
Ships:
The Story Behind solxmn.me solxmn.me started long before the domain itself existed. The very first version of my website was created on an .is-a.dev subdomain on October 8, 2025. At the time, I was still figuring out how I wanted the site to look and how I wanted to approach web development. Initially, I used AI to help create a few different templates, then experimented with modifying the ones I liked most. Eventually, though, I stopped relying on templates and started actually learning HTML, CSS, and JavaScript myself. I also took inspiration from websites and services like Linktree and other personal websites I came across, while gradually developing my own style. A few months later, I applied for the GitHub Student Developer Pack. On July 15, 2026, I used it to claim my .me domain through Namecheap for one year. That was the point where the project started feeling much more like a real personal website rather than an experiment. For the redesign, I took a different approach. Before writing the code, I designed the entire website in Photoshop. I wanted to have a clear idea of the layout and the final concept before I started implementing it. Having the whole design in front of me made it much easier to turn the idea into an actual website. Once I had the motivation to work on it, I went all in. I spent around four to five hours a day working on the redesign, tweaking details, fixing things that bothered me, and gradually turning the original concept into something I was genuinely proud of. After the main redesign was finished, I started adding more personal touches and Easter eggs. Those small details became one of my favorite parts of the project because they made the site feel less like a generic portfolio and more like something that actually belonged to me. Despite using AI during the early stages of the project, I barely used it in the versions that were actually deployed. I only used it once or twice, mainly for debugging and for writing GitHub push descriptions. Most of the final website was built by me, through everything I learned while working on it, obviously taking much inspiration from Toby Fox and Temmie Chang’s works. This (and probably the final) version is made up of 2 main pages: A more “professional” index page, which has most of my socials, and some brief introductions, my skills, hobbies and whatnot; The redesign, the actual CORE ;) of the website, but I’m not going to tell you how to get to it or what’s in it :P, it’s up to you to figure out what else is there. Looking back, the project has been a really fun experience. It started as a simple personal website, but along the way it became a way for me to learn web development, experiment with design, and build something that I could genuinely call my own. I don’t think this will be the last project like this, either. Building this site made me want to create more things from scratch, and I’m definitely looking forward to seeing what I end up making next.
Easter egg done! I made another little thing for my site: a small top-down scene with a character, a tree, some particles, and a short interaction. I’m not going to spoil what actually happens in the scene. If you want to see that part, you’ll have to find it yourself. What it is It’s a single-page top-down scene made with vanilla JS and CSS. You can walk around, interact with things, and eventually get sent somewhere else. There’s also some collision, particles, animations, and a few other small details that make it feel a little less like a static webpage. Some problems I ran into One of the first problems was correctly setting the tree’s size. I had multiple things affecting its scale at once, which resulted in it being way bigger than it was supposed to be. Once I figured out what was actually controlling its size, it was a pretty easy fix. The collision was another one. The hitboxes didn’t always line up with what was actually on screen, so I ended up making a small hitbox editor to make placing them much easier. It can also save and export the hitbox data, which made testing things a lot less painful. I also had to figure out how to keep the world consistent when resizing the browser. This ended up being one of the more annoying parts, since quite a few things depended on the screen size. Getting the background, movement, and collision to all agree took a few attempts. There were also the usual animation problems. The character could keep walking against a wall, or quickly tapping a key could make the animation look weird, just your average game engine errors. Nothing particularly complicated, but definitely the kind of stuff you don’t notice until you actually start playing it. Then there was the tree layering. I wanted the character to be able to walk behind the tree while still appearing in front of the leaves, which took a surprisingly long time to get looking right. I ended up doing some slightly weird CSS/image layering instead of making completely separate sprites for everything. And, of course, there were a bunch of tiny mistakes along the way. Typos, duplicated code, things being in the wrong layer, and a few cases where something looked completely broken for no obvious reason. Basically, normal web development. What was easier than expected Once the basic systems were working, adding smaller things became pretty easy. The particle effects were simple to tweak, rectangular hitboxes were straightforward to add, and the dialogue UI was mostly just a matter of adjusting some CSS until it looked right. What was harder than expected The biggest surprise was how many things depended on the screen size. Something that sounds as simple as making the world stay the same size ended up affecting a lot more than I expected. There was also a lot more manual work involved than I originally thought, especially when preparing some of the visual assets and getting the different layers of the tree to work together. A few things I left as they are The world is based on the screen size when it’s first loaded, so it isn’t necessarily identical on every device and may break on some (sorry!). For something this small, I don’t really mind. It’s meant to be a little hidden scene on my website, not a full game. There’s also still a debug option for the hitboxes in the code. It’s useful when I’m working on the scene, so I kept it around. And yes, this is an easter egg. You’ll have to find it yourself....
|
1793958865.0213804
|
1794045265.0213804
|
|
51160
|
Mee7 by @solxmn | Stardance
|
solxmn
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T16:46:34Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Mee7 Shipped mee7, a small Slack bot built with Node.js and Slack Bolt. This was definitely one of the easier projects I’ve worked on compared to some of my other recent ones, but I still had a lot of fun making it. The main challenge wasn’t really the bot itself, but getting everything working together properly. The most interesting part was handling APIs. mee7 uses several public APIs for things like cat facts, dog images, jokes, useless facts, and quotes, so I got to learn how to make requests to different endpoints and handle their responses inside a Slack bot. I also learned more about structuring a Node.js project around Slack Bolt and how to host the bot continuously with Nest. Overall, it was a simpler project than some of the others I’ve shipped, but it was still a really fun one to build. It gave me a better understanding of APIs and how they can be combined with other services to make something actually useful (or at least entertaining) inside Slack.", "repo": "https://github.com/Fraczdev/SlackBot-Mee7", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 50039, "ts": "202 [{"post_id": 50039, "ts": "2026-08-19T02:11:07Z", "hours": 0.3575, "text": "done with the commands (for now)! working with apis is really fun"}]...
|
Title: Mee7 by @solxmn | Stardance
Devlogs:
done Title: Mee7 by @solxmn | Stardance
Devlogs:
done with the commands (for now)! working with apis is really fun
Ships:
Mee7 Shipped mee7, a small Slack bot built with Node.js and Slack Bolt. This was definitely one of the easier projects I’ve worked on compared to some of my other recent ones, but I still had a lot of fun making it. The main challenge wasn’t really the bot itself, but getting everything working together properly. The most interesting part was handling APIs. mee7 uses several public APIs for things like cat facts, dog images, jokes, useless facts, and quotes, so I got to learn how to make requests to different endpoints and handle their responses inside a Slack bot. I also learned more about structuring a Node.js project around Slack Bolt and how to host the bot continuously with Nest. Overall, it was a simpler project than some of the others I’ve shipped, but it was still a really fun one to build. It gave me a better understanding of APIs and how they can be combined with other services to make something actually useful (or at least entertaining) inside Slack....
|
1793868850.6702106
|
1793955250.6702106
|
|
52614
|
UNDERTAB by @solxmn | Stardance
|
solxmn
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-22T02:01:26Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "The UNDERTALE Based New Tab page is here! This one was honestly a lot easier to put together than the portfolio. Some of the structure and little snippets came from things I had already written there, so I didn’t have to reinvent everything from scratch. Once the main layout was in place, most of it was just connecting everything together and making it feel like one cohesive page. It ended up becoming a little more than just a new tab page, too. You’ve got search engines, shortcuts, a to-do list, a calendar, a journal, seasonal borders and particles, a clock, and now a seasonal music player. And yes, you should still look around. There are some easter eggs hidden here and there. One thing is probably only going to make sense if you’ve seen some of my other projects. I’m not going to spoil them, though. That’s half the fun. Built with plain HTML, CSS, and JavaScript. No frameworks, no build system. Have fun finding things.", "repo": "https://github.com/Fraczdev/UNDERTAB", "demo": "https://solxmn.me/newtab"}]...
|
[{"post_id": 52023, "ts": "202 [{"post_id": 52023, "ts": "2026-08-22T01:53:35Z", "hours": 1.4014, "text": "i’m lowkey done, will ship and talk about everything :)"}]...
|
Title: UNDERTAB by @solxmn | Stardance
Devlogs:
i Title: UNDERTAB by @solxmn | Stardance
Devlogs:
i’m lowkey done, will ship and talk about everything :)
Ships:
The UNDERTALE Based New Tab page is here! This one was honestly a lot easier to put together than the portfolio. Some of the structure and little snippets came from things I had already written there, so I didn’t have to reinvent everything from scratch. Once the main layout was in place, most of it was just connecting everything together and making it feel like one cohesive page. It ended up becoming a little more than just a new tab page, too. You’ve got search engines, shortcuts, a to-do list, a calendar, a journal, seasonal borders and particles, a clock, and now a seasonal music player. And yes, you should still look around. There are some easter eggs hidden here and there. One thing is probably only going to make sense if you’ve seen some of my other projects. I’m not going to spoil them, though. That’s half the fun. Built with plain HTML, CSS, and JavaScript. No frameworks, no build system. Have fun finding things....
|
1793890147.734336
|
1793976547.734336
|
|
53451
|
Cookiecuttr by @solxmn | Stardance
|
solxmn
|
1
|
4.59
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T08:07:33Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I’m done! The basic idea is still pretty small: get cookie banners out of the way, show how long an article might take, and help me find my place again when I have to stop reading. The cookie skipper took more work than I expected. It had to recognize common consent platforms while searching for the deny button. Some reject buttons were titled I do not agree , which is easy to miss if you only look for buttons named “reject” or “decline”, and not even mentioning the localization options. I ended up checking the surrounding markup and several kinds of button metadata while keeping the actual click logic reject-only. The reading badge had its own set of edge cases. Articles do not all use the same HTML, and some of them fill in their content after the page loads. I added duplicate protection, a force-show action, and a guard against counting the same badge repeatedly when the toggle is switched on and off. The marker feature grew out of a practical annoyance: closing a tab should not mean losing the article and the exact place I reached. There are now three slots, each with a name and optional timestamp. Returning to one finds the original tab if it is still open, otherwise opens the page and restores the saved position. Chrome needed an extra fix here because the popup closes as soon as a new tab is created, so the background script has to finish the handoff. I kept the Chrome and Firefox versions in sync as I went. They share the popup, content, and background behaviour, with the expected Manifest V3 difference in Firefox’s background setup. Firefox also required the local-only data collection declaration before the add-on could be submitted, however it is not present as of version v1.0.0 if you download it via github. The popup went through a surprising number of small redesigns. I started with a dark three-stat layout, then moved toward the more formal looking version that is there now. It is not trying to be flashy; it just makes the automation visible and gives you control over it. Settings, markers, and stats stay in local extension storage. After the tests passed and the Firefox submission was accepted, I finally called it finished. It is a small tool, but it removes what I think are a few annoyances that show up every time I read online.", "repo": "https://github.com/Fraczdev/CookieCuttr/tree/master", "demo": "https://addons.mozilla.org/en-US/firefox/addon/cookiecuttr/"}]...
|
[{"post_id": 73728, "ts": "202 [{"post_id": 73728, "ts": "2026-09-25T19:53:56Z", "hours": 1.5869, "text": "Adjusted a few inconsistencies in the overall logic, updated the manifest.json to include the necessary permissions, and made some other changes to ensure the extension complies with the Firefox Add-on Marketplace requirements."}, {"post_id": 64082, "ts": "2026-09-08T07:48:39Z", "hours": 1.2419, "text": "This will be my last devlog for this project :] I: Added everything needed in manifest.json in order to actually upload the project; Uploaded the Firefox extension to Firefox Add-ons marketplace, and it got accepted; Revised the banner detection logic so the extension can handle more consent platforms and common variations in their markup; Checked and fixed inconsistencies between the chrome and firefox version while respecting the differences between their manifest v3 implementations, and more will ship soon"}, {"post_id": 60733, "ts": "2026-09-03T09:15:58Z", "hours": 1.0414, "text": "General Improvements, UI and Features Reworked the popup layout, gave it a more formal look with wider spacing. Redesigned sections, improved the logic, and made the reset action smaller and cleaner. Added reading markers with three save slots, editable names, optional timestamps, site labels, and cross-tab return support. You can now save a position, switch tabs, and jump back to the checkpoint later. Improved the cookie skipper logic with site-specific handling, broader cookie-control detection, debounced mutation scans, and safer reject-only behavior. - Also fixed reading-badge stats related bugs, added a force-show badge button, and made settings update without refreshing the page. Added contract tests for both Chrome and Firefox builds. Features The extension currently has 3 main features: 1. Cookie Banner Skipper Automatically detects cookie and consent banners, then selects reject or necessary-only options instead of accepting tracking cookies. It supports common consent platforms, site-specific handling, and broader detection based on cookie-related buttons, IDs, classes, and labels. 2. Reading Time Badge Displays an estimated reading time and word count on longer articles. The badge can be dismissed, and the Show reading badge button can force it to appear when automatic detection doesn’t recognize the page. 3. Reading markers/Timestamps Provides three customizable save slots for reading positions. Each marker can have its own name, optional timestamp and scroll position marker. The URL is still kept next to the name, in case you forget. Markers CAN be used from another tab or reopened automatically in a new tab when the original page is no longer open."}, {"post_id": 53269, "ts": "2026-08-23T18:37:35Z", "hours": 0.4694, "text": "Getting started Worked on the UI, Logo and reading logic. Simplified it a lot, because otherwise it’d be too complex for such a simple,short project like this. So far it’s going great, haven’t encountered a lot of issues/bugs yet."}]...
|
Title: Cookiecuttr by @solxmn | Stardance
Devlogs Title: Cookiecuttr by @solxmn | Stardance
Devlogs:
Getting started Worked on the UI, Logo and reading logic. Simplified it a lot, because otherwise it’d be too complex for such a simple,short project like this. So far it’s going great, haven’t encountered a lot of issues/bugs yet.
General Improvements, UI and Features Reworked the popup layout, gave it a more formal look with wider spacing. Redesigned sections, improved the logic, and made the reset action smaller and cleaner. Added reading markers with three save slots, editable names, optional timestamps, site labels, and cross-tab return support. You can now save a position, switch tabs, and jump back to the checkpoint later. Improved the cookie skipper logic with site-specific handling, broader cookie-control detection, debounced mutation scans, and safer reject-only behavior. - Also fixed reading-badge stats related bugs, added a force-show badge button, and made settings update without refreshing the page. Added contract tests for both Chrome and Firefox builds. Features The extension currently has 3 main features: 1. Cookie Banner Skipper Automatically detects cookie and consent banners, then selects reject or necessary-only options instead of accepting tracking cookies. It supports common consent platforms, site-specific handling, and broader detection based on cookie-related buttons, IDs, classes, and labels. 2. Reading Time Badge Displays an estimated reading time and word count on longer articles. The badge can be dismissed, and the Show reading badge button can force it to appear when automatic detection doesn’t recognize the page. 3. Reading markers/Timestamps Provides three customizable save slots for reading positions. Each marker can have its own name, optional timestamp and scroll position marker. The URL is still kept next to the name, in case you forget. Markers CAN be used from another tab or reopened automatically in a new tab when the original page is no longer open.
This will be my last devlog for this project :] I: Added everything needed in manifest.json in order to actually upload the project; Uploaded the Firefox extension to Firefox Add-ons marketplace, and it got accepted; Revised the banner detection logic so the extension can handle more consent platforms and common variations in their markup; Checked and fixed inconsistencies between the chrome and firefox version while respecting the differences between their manifest v3 implementations, and more will ship soon
Adjusted a few inconsistencies in the overall logic, updated the manifest.json to include the necessary permissions, and made some other changes to ensure the extension complies with the Firefox Add-on Marketplace requirements.
Ships:
I’m done! The basic idea is still pretty small: get cookie banners out of the way, show how long an article might take, and help me find my place again when I have to stop reading. The cookie skipper took more work than I expected. It had to recognize common consent platforms while searching for the deny button. Some reject buttons were titled I do not agree , which is easy to miss if you only look for buttons named “reject” or “decline”, and not even mentioning the localization options. I ended up checking the surrounding markup and several kinds of button metadata while keeping the actual click logic reject-only. The reading badge had its own set of edge cases. Articles do not all use the same HTML, and some of them fill in their content after the page loads. I added duplicate protection, a force-show action, and a guard against counting the same badge repeatedly when the toggle is switched on and off. The marker feature grew out of a practical annoyance: closing a tab should not mean losing the article and the exact place I reached. There are now three slots, each with a name and optional timestamp. Returning to one finds the original tab if it is still open, otherwise opens the page and restores the saved position. Chrome needed an extra fix here because the popup closes as soon as a new tab is created, so the background script has to finish the handoff. I kept the Chrome and Firefox versions in sync as I went. They share the popup, content, and background behaviour, with the expected Manifest V3 difference in Firefox’s background setup. Firefox also required the local-only data collection declaration before the add-on could be submitted, however it is not present as of version v1.0.0 if you download it via github. The popup went through a surprising number of small redesigns. I started with a dark three-stat layout, then moved toward the more formal looking version that is there now. It is not trying to be flashy; it just makes the automation visible and gives you control over it. Settings, markers, and stats stay in local extension storage. After the tests passed and the Firefox submission was accepted, I finally called it finished. It is a small tool, but it removes what I think are a few annoyances that show up every time I read online....
|
1793854049.3870296
|
1793940449.3870296
|
|
59279
|
DELTAOS by @solxmn | Stardance
|
solxmn
|
0
|
2.9
|
0
|
[]
|
[{"post_id": 73743, "ts": "202 [{"post_id": 73743, "ts": "2026-09-25T20:25:55Z", "hours": 2.8978, "text": "Finally set up the essentials Started working on styling the OS (Windows, settings, personalization etc…). Came up with custom logic for rendering personalized window borders (as shown), worked on themes and added animated backgrounds support."}]...
|
Title: DELTAOS by @solxmn | Stardance
Devlogs:
Fi Title: DELTAOS by @solxmn | Stardance
Devlogs:
Finally set up the essentials Started working on styling the OS (Windows, settings, personalization etc…). Came up with custom logic for rendering personalized window borders (as shown), worked on themes and added animated backgrounds support....
|
1793544489.2371528
|
1794149289.2371528
|
|
46721
|
My awesome macropad! by @solvespace001 | Stardance
|
solvespace001
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @solvespace001 | St Title: My awesome macropad! by @solvespace001 | Stardance...
|
1793785988.0120032
|
1794390788.0120032
|
|
23213
|
Soir by @solus | Stardance
|
solus
|
0
|
1.46
|
0
|
[]
|
[{"post_id": 15800, "ts": "202 [{"post_id": 15800, "ts": "2026-06-25T18:00:16Z", "hours": 1.4622, "text": "I just started training my LLM and have the very basic transformer code right now. The results are looking fairly promising so far! Even though it looks like gibberish right now, it is truly learning from the training data!!!!"}]...
|
Title: Soir by @solus | Stardance
Devlogs:
I just Title: Soir by @solus | Stardance
Devlogs:
I just started training my LLM and have the very basic transformer code right now. The results are looking fairly promising so far! Even though it looks like gibberish right now, it is truly learning from the training data!!!!...
|
1793267675.859622
|
1793872475.859622
|
|
23223
|
LiRover by @solus | Stardance
|
solus
|
0
|
6.45
|
0
|
[]
|
[{"post_id": 21290, "ts": "202 [{"post_id": 21290, "ts": "2026-07-03T04:27:08Z", "hours": 4.0964, "text": "so i finally finished designing the pcb for the lidar things. it might need some touching up, but i’m done for today after working on this for 4 more hours…"}, {"post_id": 19575, "ts": "2026-06-30T22:19:43Z", "hours": 0.9906, "text": "I finally got some soldering done (though some mistakes were made along the way, mistakes which I need to fix later)"}, {"post_id": 18079, "ts": "2026-06-29T02:19:42Z", "hours": 1.3653, "text": "i started to try making a pcb for the first time. all i can say is: why is making a pcb so difficult? it took me an hour just to figure out how to place a raspberry pi pico on the workspace 😭"}]...
|
Title: LiRover by @solus | Stardance
Devlogs:
i s Title: LiRover by @solus | Stardance
Devlogs:
i started to try making a pcb for the first time. all i can say is: why is making a pcb so difficult? it took me an hour just to figure out how to place a raspberry pi pico on the workspace 😭
I finally got some soldering done (though some mistakes were made along the way, mistakes which I need to fix later)
so i finally finished designing the pcb for the lidar things. it might need some touching up, but i’m done for today after working on this for 4 more hours…...
|
1793479869.330671
|
1794084669.330671
|
|
4414
|
Remote Access Trojan by @soloplanet | Stardance
|
soloplanet
|
1
|
38.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-01T00:05:54Z", "hours": 38.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a RAT and experimented with shellcode loading. Things I found hard were obfuscating the app, learning how to use indirect syscalls and trying to evade detection. I am proud of getting my best attempt (tar2.0) at best to evade 4/71 detections which were primarily high positive ML engines and Crowdstrike (only 60% confidence) (this eventually increased to 9/71 due to signatures).", "repo": "https://github.com/MasterGoop2000/rat-project/", "demo": "https://github.com/MasterGoop2000/rat-project/releases/tag/v1.0"}]...
|
[{"post_id": 75757, "ts": "202 [{"post_id": 75757, "ts": "2026-09-30T23:54:04Z", "hours": 35.9075, "text": "Shellcode loader"}, {"post_id": 1353, "ts": "2026-06-03T09:49:17Z", "hours": 1.8203, "text": "Remote Access Trojan"}]...
|
Title: Remote Access Trojan by @soloplanet | Stard Title: Remote Access Trojan by @soloplanet | Stardance
Devlogs:
Remote Access Trojan
Shellcode loader
Ships:
I made a RAT and experimented with shellcode loading. Things I found hard were obfuscating the app, learning how to use indirect syscalls and trying to evade detection. I am proud of getting my best attempt (tar2.0) at best to evade 4/71 detections which were primarily high positive ML engines and Crowdstrike (only 60% confidence) (this eventually increased to 9/71 due to signatures)....
|
1793796866.033887
|
1793883266.033887
|
|
68032
|
Following everyone in StarDance by @soloplanet | S Following everyone in StarDance by @soloplanet | Stardance...
|
soloplanet
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Following everyone in StarDance by @solopla Title: Following everyone in StarDance by @soloplanet | Stardance...
|
1793735761.0901604
|
1794340561.0901604
|
|
1541
|
My first slack bot! by @solomonmuwongeofficial | S My first slack bot! by @solomonmuwongeofficial | Stardance...
|
solomonmuwongeofficial
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @solomonmuwongeoffic Title: My first slack bot! by @solomonmuwongeofficial | Stardance...
|
1793797145.8834884
|
1794401945.8834884
|
|
38664
|
My own site! by @solomonalem192 | Stardance
|
solomonalem192
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @solomonalem192 | Stardance
|
1793288950.2022057
|
1793893750.2022057
|
|
40284
|
income tax by @solo_ | Stardance
|
solo_
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: income tax by @solo_ | Stardance
|
1793814785.6328113
|
1794419585.6328113
|
|
6684
|
Le Setup by @solo | Stardance
|
solo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Le Setup by @solo | Stardance
|
1793505097.6001437
|
1794109897.6001437
|
|
44623
|
My cool macropad! by @solmavo | Stardance
|
solmavo
|
0
|
15.38
|
0
|
[]
|
[{"post_id": 47477, "ts": "202 [{"post_id": 47477, "ts": "2026-08-15T12:27:54Z", "hours": 1.4833, "text": "wrote some code and finished otganising my github repo"}, {"post_id": 47155, "ts": "2026-08-14T20:48:18Z", "hours": 1.4333, "text": "started kmk coding"}, {"post_id": 47089, "ts": "2026-08-14T18:40:44Z", "hours": 3.9503, "text": "started organizing files and created GitHub repo. Also fixed same stuff"}, {"post_id": 43538, "ts": "2026-08-08T21:24:08Z", "hours": 2.2167, "text": "Finished doing the CAD case for macro pad"}, {"post_id": 43186, "ts": "2026-08-08T09:43:19Z", "hours": 1.0167, "text": "Trying to create cad case for macropad. Reverse engineering Orpheuspad, going pretty good tho"}, {"post_id": 42910, "ts": "2026-08-07T21:18:55Z", "hours": 5.2836, "text": "Made a PCB design for my Macro-pad and exported step file in to Fusion 360. Tomorrow I will do the case"}]...
|
Title: My cool macropad! by @solmavo | Stardance
Title: My cool macropad! by @solmavo | Stardance
Devlogs:
Made a PCB design for my Macro-pad and exported step file in to Fusion 360. Tomorrow I will do the case
Trying to create cad case for macropad. Reverse engineering Orpheuspad, going pretty good tho
Finished doing the CAD case for macro pad
started organizing files and created GitHub repo. Also fixed same stuff
started kmk coding
wrote some code and finished otganising my github repo...
|
1793285609.9864233
|
1793890409.9864233
|
|
49695
|
Web site by @solmavo | Stardance
|
solmavo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Web site by @solmavo | Stardance
|
1793299670.2926602
|
1793904470.2926602
|
|
59548
|
Cyber deck buddy by @solmavo | Stardance
|
solmavo
|
0
|
12.55
|
0
|
[]
|
[{"post_id": 72789, "ts": "202 [{"post_id": 72789, "ts": "2026-09-23T18:56:11Z", "hours": 4.5336, "text": "Case for electronics"}, {"post_id": 66902, "ts": "2026-09-12T21:08:06Z", "hours": 4.2169, "text": "Tried different cad variants"}, {"post_id": 66199, "ts": "2026-09-11T21:24:00Z", "hours": 2.8503, "text": "Made an eye cad model and decided which parts to use"}, {"post_id": 63826, "ts": "2026-09-07T19:59:26Z", "hours": 0.945, "text": "made a plan for desktop robot"}]...
|
Title: Cyber deck buddy by @solmavo | Stardance
D Title: Cyber deck buddy by @solmavo | Stardance
Devlogs:
made a plan for desktop robot
Made an eye cad model and decided which parts to use
Tried different cad variants
Case for electronics...
|
1793566092.650133
|
1794170892.650133
|
|
60166
|
My own site! by @sole | Stardance
|
sole
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @sole | Stardance
|
1793641723.7155797
|
1794246523.7155797
|
|
51459
|
C# code for a simple calculator by @solarpavle | S C# code for a simple calculator by @solarpavle | Stardance...
|
solarpavle
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: C# code for a simple calculator by @solarpa Title: C# code for a simple calculator by @solarpavle | Stardance...
|
1793393416.08473
|
1793998216.08473
|
|
54432
|
My awesome macropad! by @solarnetworks | Stardance
|
solarnetworks
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @solarnetworks | St Title: My awesome macropad! by @solarnetworks | Stardance...
|
1793541122.3587708
|
1794145922.3587708
|
|
7458
|
My first slack bot! by @solarlunarr | Stardance
|
solarlunarr
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @solarlunarr | Stard Title: My first slack bot! by @solarlunarr | Stardance...
|
1793465340.0281322
|
1794070140.0281322
|
|
28974
|
My very own WebOS by @solarlunarr | Stardance
|
solarlunarr
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @solarlunarr | Stardan Title: My very own WebOS by @solarlunarr | Stardance...
|
1793526920.1276608
|
1794131720.1276608
|
|
42841
|
tower defense by @solarlunarr | Stardance
|
solarlunarr
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: tower defense by @solarlunarr | Stardance
|
1793901276.627841
|
1794506076.627841
|
|
42842
|
tower defense by @solarlunarr | Stardance
|
solarlunarr
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: tower defense by @solarlunarr | Stardance
|
1793901278.5476573
|
1794506078.5476573
|
|
3893
|
My first slack bot! by @solareclipse467 | Stardanc My first slack bot! by @solareclipse467 | Stardance...
|
solareclipse467
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @solareclipse467 | S Title: My first slack bot! by @solareclipse467 | Stardance...
|
1793314319.6744025
|
1793919119.6744025
|
|
29521
|
My own site! by @solareclipse467 | Stardance
|
solareclipse467
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @solareclipse467 | Stardanc Title: My own site! by @solareclipse467 | Stardance...
|
1793530603.7230554
|
1794135403.7230554
|
|
29589
|
My awesome macropad! by @solareclipse467 | Stardan My awesome macropad! by @solareclipse467 | Stardance...
|
solareclipse467
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @solareclipse467 | Title: My awesome macropad! by @solareclipse467 | Stardance...
|
1793533740.9983623
|
1794138540.9983623
|
|
42241
|
My awesome macropad! by @solar15 | Stardance
|
solar15
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @solar15 | Stardanc Title: My awesome macropad! by @solar15 | Stardance...
|
1793832894.0661688
|
1794437694.0661688
|
|
47166
|
My own site! by @solana_gunasekara | Stardance
|
solana_gunasekara
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @solana_gunasekara | Starda Title: My own site! by @solana_gunasekara | Stardance...
|
1793843663.7407207
|
1794448463.7407207
|
|
33381
|
My own site! by @sol_tagari | Stardance
|
sol_tagari
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @sol_tagari | Stardance
|
1793433114.5391052
|
1794037914.5391052
|
|
9570
|
Capital Chaos by @sol4r_on_hackclub | Stardance
|
sol4r_on_hackclub
|
1
|
171.6
|
3336
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-22T19:42:41Z", "hours": 171.0, "multiplier": 19.54, "payout": 3336, "blessing": "neutral", "text": "Welcome to Capital Chaos! One of Stardance’s most awaited projects ;) (hopefully anyways) We’ve got chaos, a bunch of random events, a boss fight and so much more for you to explore. SKIP if you are on Linux/MacOS (or you can vote based on the videos - completely up to you) as I only have a windows executable for now. I am honestly super proud of this, and the community built around this game. I hope you enjoy it as well. There have been TONNES of challenges, such as pathfinding, the initial grid also seemed really daunting. To the vacancy count which was literally plaguing me for the past MONTH and got fixed today (it was one line… i know.. maybe I should have used AI). But besides, it’s a sick project. I hope you all love it. Unzip the file in the release and it should be good to go. READ THE README FOR INSTRUCTIONS AND CONTROLS!! THERE IS NO TUTORIAL Read the story, watch the videos if you can and just enjoy the game! It will be on steam in 8-9 months so maybe subscribe?", "repo": "https://github.com/Sol4rOnGit/PocketCity", "demo": "https://github.com/Sol4rOnGit/PocketCity/releases"}]...
|
[{"post_id": 57569, "ts": "202 [{"post_id": 57569, "ts": "2026-08-29T19:13:24Z", "hours": 0.5961, "text": "Thank you all so much for the support! Framework 12 is on it’s way (and this wait is painful). After 171 hours! 19.54x is actually insane and I appreciate it a lot. Join the Discord! I made a discord (click above) and i’ll give you all an early supporter role before I put it out on YouTube and stuff for the “wishlist” when the full game comes out (if you want to stay in touch after stardance is done. ALSO IF YOU COMMENTED WHILE THE GAME WAS STILL CALLED POCKET CITY DM ME ILL GIVE U A SPECIAL ROLE The game beta is still up and you can try it out Currently just doing some minor stuff to the game (Fixed some normal/easy mode not settings correct phases. B2 Bomber should destroy itself and stop the nuke siren once launched), and slowly adding a tutorial but I’m like 90% focused on revising for uni entrance exams"}, {"post_id": 52586, "ts": "2026-08-22T19:35:44Z", "hours": 3.4139, "text": "BETA TEST! Nvm I have to devlog my final changes But lemme talk to those stardance reviewers real quick. Scroll down to see the endless content of my story, and all the community feedback (also on my youtube). Playing the game is a bit of a learning curve so you can watch my videos and stuff on it as well. I’d say watch this one: Boss Fight for the boss fight and maybe one of the other ones that you find interesting. Maybe this one because it has over 1,000 views and still climbing! The game is released there but it is windows only for now (i will release linux and maybe mac on the actual release game don’t worry but I’m super restricted for time right now) SKIP IF YOU’RE ON LINUX / MAC For everyone: Changes: Amended GameAudioManager to adjust for max voices which uses a List based system that appends and unappends. Boss fight also toggles and untoggles the game audio dependant on each audio source, because the game could currently have hundreds or even thousands of audio source which is really bad optimisation. So each audio source that I want to track has a ManagedAudioSource attached which automatically registers and unregisters itself from the GameAudioManager. I also edited the boss fight to make it a touch harder and amended the moves ;) And come and beta test NOWWW. leave all your comments, suggestions etc. on THE NEW DISCORD COMMUNITY!! or youtube, i’ll read it all and, again, thank you all for your support . I don’t know what to put as the image so here."}, {"post_id": 51908, "ts": "2026-08-21T20:18:25Z", "hours": 8.8033, "text": "Final DevLog before First Ship - Boss Battle I don’t think words can explain what I made so click here to watch a video on my probably final major addition (no pressure) & also help with a small dilemma I have. NO!! that does not mean this game will stop development, but i think i finally have enough hours (+10-15 more safety) to get a Framework 12! (and then i will be able to crack on with entrance exams - so i guess development will slow a touch). Of course I’ll ship once the game is polished enough. You might see a devlog or two from the “Capital Chaos Website” - follow me ;) I really hope you guys all enjoy it and now I need to do the readme and stuff. I also realised I was one of the most viewed on Stardance which is honestly amazing and I appreciate all of the support :) And thank you to all the new friends I’ve made and all the followers and commenters. It’s honestly been insane."}, {"post_id": 49800, "ts": "2026-08-18T18:52:58Z", "hours": 3.8472, "text": "Game Sountrack? But before I talk about that, lemme just say the game audio is almost finished, we have menu sounds for clicks and stuff, and i added support for main menu music. The firetruck hoses actually do stuff, floods sound like floods, theres some peaceful background nature sounds and yeah it makes the game feel so much nicer. although i forgot place sounds which was a massive oversight. also my wifi is still working. no idea why, but not complaining. and i’m cooking on a soundtrack lowk although none of it seems correlated in any way and idk how i’ll make it fit into this game but you know what maybe it’ll just all go into some random album. None of the hours put into these songs count but its okay. i’m no pro tho so. all i’ll say is i love some bass"}, {"post_id": 49147, "ts": "2026-08-17T19:36:51Z", "hours": 2.6206, "text": "I’m getting new wifi lol, & 150 hours so yeah i won’t be here and probably will have to post a 10 hour thing BUT on the plus side, we got a nice death screen that has a bunch of quotes that you can read below [SerializeField] private string[] quotes = { \"Opportunities multiply as they are seized \\n - Sun Tzu\", \"If you are going through hell, keep going \\n - Winston Churchill\", \"No empire was built on the first draft\", \"Fall seven times, stand up eight\", \"That which does not kill us, makes us stronger \\n - Friedrich Nietzsche\", \"Out of ash, a new foundation\", \"I have not failed. I just found 10,000 ways that don't work \\n - Thomas Edison\", \"A man is not finished when he is defeated. He is finished when he quits \\n - Richard M. Nixon\", \"It does not matter how slowly you go as long as you do not stop \\n - Confucius\", \"Out of difficulties grow miracles \\n - Jean de La Bruyère\", \"The greater the obstactle, the more glory in overcoming it \\n - Molière\", \"A Pocket Sized City is too small for your ambition. Build again \\n - The Dev\", \"Success usually comes to those who are too busy to be looking for it \\n - Henry David Thoreau\", \"Go big or go home\", \"You can't give up just yet. Stay determined... \\n - Undertale\" }; Maybe you’ll catch the little easter egg there as well ;) Working on adding game audio!! and probably finally enough hours to get the framework 12 (btw I wouldn’t recommend this as a daily laptop (f13 better), I just want something I can write on lol)"}, {"post_id": 48073, "ts": "2026-08-16T11:08:59Z", "hours": 3.8794, "text": "INSANE tree optimisations Went from 60-80 fps @ 4K to 400-450 (in game). Yes a 6 to 7x increase. How you ask? GPU Mesh Instance drawing offloading the CPU work of handling thousands of game objects. In English, I’m no longer spawning thousands of tree objects, but instead telling the GPU to draw the tree instances every frame. This seems quite unintuitive because you’re now drawing thousands of things every second. BUT this means that there are no game objects, so the CPU doesn’t even know that these exist. Also the GPU draws it thousands of times anyways. A game object handles transforms, rotations, etc. that the CPU has to keep track of whether it is active or not. This had the added benefit of the trees having no overhead when the trees are disabled, so you regain all of your framerate! Also I used some neat little script that combined the meshes all together in the GameObject prefab. Now it really should be able to run on your potato PC/Laptop. Combine script using UnityEngine; public class MeshCombineUtility : MonoBehaviour { [ContextMenu(\"Combine Children Meshes\")] public void Combine() { MeshFilter[] meshFilters = GetComponentsInChildren<MeshFilter>(); CombineInstance[] combine = new CombineInstance[meshFilters.Length]; Matrix4x4 matrix = transform.worldToLocalMatrix; for (int i = 0; i < meshFilters.Length; i++) { if (meshFilters[i].gameObject == gameObject) continue; combine[i].mesh = meshFilters[i].sharedMesh; combine[i].transform = matrix * meshFilters[i].transform.localToWorldMatrix; } Mesh combinedMesh = new Mesh(); combinedMesh.CombineMeshes(combine, true, true); #if UNITY_EDITOR string directory = $\"Assets/Assets/Mesh/Tree/{gameObject.name}.asset\"; UnityEditor.AssetDatabase.CreateAsset(combinedMesh, directory); UnityEditor.AssetDatabase.SaveAssets(); Debug.Log($\"Combined mesh saved to {directory}\"); #endif } } Draw section of GPU Mesh Instancing private void DrawTreeMeshes() { if (treeMesh == null || treeMaterial == null) return; foreach (var kvp in generatedChunks) { ChunkData chunk = kvp.Value; if (chunk.spawnedTrees == null || chunk.spawnedTrees.Count == 0) continue; int batchSize = 1023; int totalTrees = chunk.spawnedTrees.Count; for(int i = 0; i < totalTrees; i+=batchSize) { int length = Mathf.Min(batchSize, totalTrees - i); Matrix4x4[] subMatrices = new Matrix4x4[length]; for (int j = 0; j < length; j++) { subMatrices[j] = chunk.spawnedTrees[i + j].matrix; } int meshIndex = Mathf.Abs(chunk.chunkCord.GetHashCode() + i) % treeMesh.Length; Graphics.DrawMeshInstanced(treeMesh[meshIndex], 0, treeMaterial, subMatrices, length); } } }"}, {"post_id": 47547, "ts": "2026-08-15T14:59:51Z", "hours": 1.4756, "text": "You won’t believe it. I got it working FIRST TRY That’s actually crazy to be honest. Tells you how much expirience those 8 hours of menu development have given me. Someone give me a Unity menu doctorate or sum But on a serious note, we have game difficulty selection and its all nice and self contained. With controller support of course. You can see we have Previous Saves but that isn’t really functional yet. One of the things I learnt is to never rely on the UI giving you the data, only the click, so you’d manually add the elements and then call .value or .isOn respective to the component, and the same goes for dropdowns although I didn’t use one here. Let me know if you think it looks clean or any improvements to the UI readability, etc."}, {"post_id": 47161, "ts": "2026-08-14T20:58:41Z", "hours": 10.3042, "text": "I HATE Menus (in Unity at least) Genuinely hate them. But yeah we got settings menu working (which genuinely took like 5-6 hours because of stupid unity legacy stuff vs new stuff and then unity 6 vs 2023 version stuff i was used to) AHHHH I don’t remember it being this painful in Godot to be honest so maybe Godot is better for that? i had to get rid of VSync because it only worked on refresh. Created a debug menu to test performance, just to see that the only useful thing there was FPS and like RAM usage, and some engine stuff like active Rigidbodys. I couldn’t see the CPU utilisation or GPU utilisation which was… the thing I wanted to see. Although don’t worry performance does seem to be reasonable and early to mid game I can push over 1000 FPS on potato settings (specs at bottom if you care about them). It does obviously go down as the game continues on, but I think it’s quite optimised. Even with shadows its on 500+ FPS with a mid sized down. Although adding trees will quarter your FPS numbers. but it looks pretty so there’s your tradeoff. Although problematically if you turn trees off and you had already generated trees the fps stays low even though you’re not rendering it? I don’t know why unity is so weird. The game is quite unbalanced, but we’re in the final polishing stages (my target is 150 hours for the framework and hopefully it’s secure! (vote nice and high thanks - i did put a lot of effort into this game.) Up next: Difficulty selection Polishing Rebalancing updates Release!"}, {"post_id": 45186, "ts": "2026-08-11T14:41:21Z", "hours": 5.9322, "text": "NEW NAME!!! Flash Floods + Main Menu If you remember, Pocket City is a game that already exists so now it’s called Capital Chaos. Thank you YouTube comments! And all of you as well, for the suggestions. Ofc new video to go with it: watch by clicking here! I created flash floods that.. well flood the entire map. It’s meant to be a little toned down of a disaster, thats more survivable because it gives the game a touch more balance. It stops all services from working, so that could be detrimental during a virus attack. But on the other hand, it stops every single fire and prevents new ones and explosions. A lifesaver if theres a nuke, it gets completely nullified. Also new main menu, I think it looks pretty neat. Especially compared to the old one."}, {"post_id": 43501, "ts": "2026-08-08T20:10:46Z", "hours": 9.3828, "text": "Nukes… from a plane A famous plane. The B2 Bomber. Idk gng I got bored. No but it drops a nuke that decimates everything in a decent radius and then sets everything in a bigger radius on fire, and now we have a new rare event called a “military invasion”.. that spawns like 8 helicotpers AS WELL as the b2 bomber. The B2 Bomber starts a few clicks out and then flies toward the set target building. Then it drops the nuke, and you have a few seconds to try and kill the nuke before it kills you, and on impact (yes we are finally using rigidbodys as they are intended) it explodes. You better have that turret system ready. Of course, it’s clearly not enough. So maybe I’ll add a anti-missile system as a YouTube comment said. Speaking of YouTube, thank you for all the support :) 100+ comments goes crazy, and we’re on 73 subs up from the previous 29 literally 3 weeks ago. Not subscribed? Help a fellow dev out: TechScope Channel"}, {"post_id": 36089, "ts": "2026-07-27T23:24:15Z", "hours": 6.7969, "text": "WORKING AIR DEFENCE + ATTACK HELICOPTERS So we got working air defence turrets with some predictive aiming, and attack helicopters that shoot missiles at random buildings. Although you’re unlikely to get 3 attack helicopters at once… for now. The helicopters blades do spin, they bob up and down, they go towards buildings. They shoot out these missiles, which pathfind their way to the targetted building. They all have a healthsystem which means that the turrets do some damage on collisions only though, one turret might take a while but two (or the 7 you see below) will MOW them down. Still have to hook it all up to the Finance Manager, Special Building placement and other boring stuff, but… I need more IDEAS!! (read this thx) …for more Military stuff that can be added. Tank wars? Who knows. I was thinking of a military invasion as being one of the rare events which spawns like 10 missiles and 5 attack helicopters and maybe a B2 bomber or some stuff. I also need more allied options, maybe I’ll add like an anti-bomb turret that is specifically for the B2 bomber or something and does 100000 damage. Or maybe your own airbase that spawns an allied helicopter and now you have dogwars. or maybe your own plane. idk So yes @Adam_Lotfalla this is what the helicopter was for. Yay more things to worry about!!! Still have integrations left! I’ll see you (hopefully) tomorrow once that’s done. but its midnight now so goodbye."}, {"post_id": 35447, "ts": "2026-07-26T21:18:10Z", "hours": 1.8178, "text": "Hmmmm… What’s cooking? (Blender just WON’T count toward my hours but prolly spent 2-3 extra hours here) The helicopter blades actually spin. And W Unity particle system for the missile."}, {"post_id": 33603, "ts": "2026-07-23T17:37:47Z", "hours": 2.6228, "text": "I NEED YOUR HELP Pocket City already exists as a game. I know this is stupid and I should have checked this before starting since I had the intention of publishing it to steam but here we are. If you want more details, or more knowledge about the game check this video out: Video Oops…"}, {"post_id": 32074, "ts": "2026-07-20T23:48:35Z", "hours": 6.6703, "text": "UFOs in an Alien Invasion 💔💔 The second rare event addition to Pocket City! Get a chunk of your population zapped up by some not so friendly aliens… Any more ideas, let me know below! But it was pretty neat to implement. 3D modelled it and everything. 3 hours of doing god knows what. Tried to figure quality settings out and probably did smth else but was too busy with the World Cup to remember what I did. Probably bug fixes and stuff. Oh yeah and you see a pretty cool ripple pulse thing that propogates through the map. Although it is a little weak right now but i’ll fix that next time. Super tired. mb"}, {"post_id": 27226, "ts": "2026-07-12T16:41:03Z", "hours": 4.4661, "text": "Bugs are genuinely taking the life out of me Genuinely the worst thing ever. I STILL can’t figure it out but I had to post my weekly devlog anyways. Can you believe we’re 28 weeks into 2026??! Here’s the chaos where I accidentally created a “Pocket Empire” (Day 1105) Watch the video (click the title) if you wanna see how I ended up here and a minor crash out. very minor."}, {"post_id": 26578, "ts": "2026-07-11T14:19:18Z", "hours": 9.2114, "text": "I’m being forced to post Yeah thanks stardance. 10 hour limit for what. Probably spam filter. Also MASSIVE BUG(s). One is that the game just randomly deletes all the buildings from a chunk. No idea why, I’ve been at it for so long. Another issue is the stupid vacancy counter which has been broken FOREVER but atleast now it doesn’t go negative. I have a serious feeling I will have to spend a week just POLISHING the game. Whatever, Currently working through a new feature of allowing you to use your money that you spent so long accumulating to try and fix the chaos that you went through. This is done through the “Council FX” which I may rename if you guys can think of a better name, and you can see the countless things to do such as: Taking On DEBT!! YAY!! 100k that gains 1% every day. Seems low.. but it will pile up very quickly since it’s compound interest. Overclocking the grid for free placement + infinite water/power Maximising Housing/Business revenue Curing all infections … and many more as well as the ??? at level 100… who knows what that does. £2.5 million btw. Of course, those levels are the XP, which has finally given that a use. And no you wont be at level 11000 just like that, i’m just being lazy for testing. Also rebalanced so that all of the commercial buildings have ~10-15% of their previous employment caps. So that you’re not just spamming residential. It also makes industrial more useful as they have more employers even though they produce less money."}, {"post_id": 23054, "ts": "2026-07-05T19:50:43Z", "hours": 2.3469, "text": "Main menu 👀 I need help. UI clearly isn’t for me"}, {"post_id": 22419, "ts": "2026-07-04T21:33:08Z", "hours": 7.5172, "text": "CRIME!!! + C# Generics I added Arson and added a Police manager that goes out and solves these crimes. Lots more to come, let me know of any ideas you have! But before that let me teach you ALL something. C# Generics. I had a bunch of scripts that all did ABOUT the same thing but with different. This was FindClosestHospital, FindClosestFireStation and the thing I was adding which was FindClosestPoliceStation. It felt quire redundant to copy the same lines but instead of Hopsital it was replaced with FireStation or PoliceStation. //Generic functions private T FindClosestReachableService<T>(Vector2Int targetPos, Func<T, bool> hasAvailableVehicles, out List<Vector2Int> bestRoute) where T : Building { T closestBuilding = null; bestRoute = null; int shortestRouteLength = int.MaxValue; bool foundBuildingOfThisType = false; foreach (var kvp in gridManager.GetMapGrid()) { GridManager.GridTile tile = kvp.Value; if (tile.buildingScript != null && tile.buildingScript is T serviceBuilding) { foundBuildingOfThisType = true; if (!hasAvailableVehicles(serviceBuilding)) continue; List<Vector2Int> testRoute = CalculateRoadPath(tile.buildingScript.gridPos, targetPos); if (testRoute == null || testRoute.Count == 0) continue; if (testRoute.Count < shortestRouteLength) { shortestRouteLength = testRoute.Count; bestRoute = testRoute; closestBuilding = serviceBuilding; } } } if (!foundBuildingOfThisType) { bestRoute = null; return null; } return closestBuilding; } Above is an example of the C# generic. We have “T” type, and I think this is a good place to learn about them. Instead of defining the function as returning something like Building , we make T a type. and you can see it passed in a little <T> after the function name. We can also pass in entire functions like Func<T, bool> which is utilised as shown below: Building bestStation = FindClosestReachableService<PoliceStation>(building.gridPos, ps => ps.HasPolice(), out route); you can see ps => ps.HasPolice() calls that out. And finally, to define what T is meant to be, I’ve added where T : Building . You can do this many times, such as by having both a T as well as a U! and you’d have a repeated where T : Building where U: PotatoChips or something idk what U is meant to be bro. This was my first time using it but it’s pretty cool and if you’re using C# I’d recommend learning it as it saved me like 200 lines of code and changing something 3 times to change the same thing! And yes, I added a third thing which is Arson! which is a crime based thing, and you have a visual that shows up as a timer. if a police doesn’t solve the crime it sets on fire. It’s not too bad but it adds a use for the police, with much more to come for the police to deal with in the future! Also added asteroid BOMBARDMENT as a debuff. Yeah it’s brutal. 3 strikes… thats up to 108 tiles DESTROYED and set on fire. And of course, the image is from a youtube video: Click me!"}, {"post_id": 20327, "ts": "2026-07-01T22:02:59Z", "hours": 4.1806, "text": "BETTER UI + XP At the top of the image you can see a little progress bar… yep I’ve added XP now. Got plans for that, probably going to allow you to unlock stuff later. Like the lockdown ability etc. The UI has been overhauled. The actual images are a touch on the placeholder side apart from the road but it looks pretty good. You cycle between road, zoning and special building placement with 1, 2 and 3. Use R to rotate between the modes like residential, commercial and industrial zoning as well as Utilities & Emergency for the special buildings. Then finally T to rotate between those specific buildings. Complicated? Maybe? But it’s also a lot faster. I have completely lost my muscle memory of spamming R like the “good old days” though. Looks good? Bad? Horrible update and the game should never be changed ever again? Best update in the world and I should win £1 trillion? What do you think?"}, {"post_id": 17186, "ts": "2026-06-27T21:52:31Z", "hours": 9.9433, "text": "MAKE IT RAIN ASTEROIDS Pretty long run honestly. But before that, let’s talk about retrofitting your buildings. Earthquakes are pretty bad. Very bad when you loose your 100k building in a moment. So upgrade it. Yes it’ll cost you 35 to 55k now. But is your peace of mind worth that? And I added asteroids! These fly down and annihilate everything in a 3 unit radius and then set everything else in the 6 unit radius on fire. Lots of minor bug fixes as well, trying to get the game really polished now. Some rejigging of the game’s back end, such as creating a new abstract class for employer and reworking the systems to ensure that they run more smoothly and I believe almost finally fixing the unemployment/vacancy problem. I say almost because every 5 runs I see the game yell at me that it didn’t count something correctly but honestly I’ve spent so long on this I don’t even know if it’d be harder to just rewrite the entire employment system. For more detail, see my video linked below! See if you guys like it, my first proper long form I Added ASTEROIDS that ANNIHILATE your Adorable City And boy will this thing cook your economy."}, {"post_id": 15293, "ts": "2026-06-24T20:46:40Z", "hours": 7.6331, "text": "POLITICS!! + Debugging Hell v2 I mean I guess it is? Not too sure. Event Manager completely overhauled. Double events now no longer have the chance of repeating the same event. Created a new GameEffects script which just takes a bunch of simple code away from EventManager and plays the basic functions such as the “tax revenue increases” which you see below. This was quite a headache to create, and I severely underestimated how much time this would take. I have 2 extra nested classes inside of EventManager for Political Question and Political Scenario. [... inside EventManager.cs ...] public class PoliticalQuestion { public string Question; public TaskCompletionSource<bool> TaskCompletionSource = new TaskCompletionSource<bool>(); public Action onAccept; public PoliticalQuestion(string question, Action onAccept) { Question = question; this.onAccept = onAccept; } } public class PoliticalScenario { public string description; public Action runnable; public PoliticalScenario(string featureDescription, Action functionality) { description = featureDescription; runnable = functionality; } } [Header(\"Political Question Variables\")] public List<PoliticalQuestion> PendingQuestions = new List<PoliticalQuestion>(); public event Action onQueueChanged; private PoliticalScenario[] goodFeatures; private PoliticalScenario[] badFeatures; The political question is sent off to the UI manager, which displays it as shown below. Then it handles user input pressing Y/Enter or N/Esc to accept the user choice, and returns it back to the Event Manager. Seems simple enough, yet there are many ways to do it but I think that the above implementation works the best out of all the ones that I tried. I attempted to use Game Manager as a middleman but that did not work out - so I resorted to passing an entire class. The political scenario allows for the string to actually do something, so that the game knows what to process and what the user agreed to without creating a bunch of variables, and can allow for stacked political question events which is nice. Game’s looking really neat, and the multipliers and stuff can make the game go very crazy very quickly. Too much of a good thing is a bad thing!! Debugged the entire system for like a solid 3 hours it was actually bad. Came first in the UK tho!! I’m back after those 6 exams are done. Yes I know the UI looks pretty bad but it’s good enough for pre-beta testing. Oh yeah, speaking of UI everything is more bold. Figured out how to do that."}, {"post_id": 14641, "ts": "2026-06-23T20:29:50Z", "hours": 2.74, "text": "I HAVE A PLANN For the spinal sprint toward completion. Should end up taking me to hour 70-75? Then we polish the UI and add a main menu… lacking feature I guess. Anyways, reorganised the code base and split game manager up, created folders and fixed dependencies for everything. There is now an event manager, which handles all of the events separately, and as you can see from this simple to-do list (should my next project be the to do list to end all to do lists with calendar integration and stuff???) that I have completed the first bit “Weighted Event system”. So now nothing has an equal chance of happening! Also as a side effect made adding new effects a lot easier due to the nested WeightedEvents class which was similar to an idea I had in my old minecraft mod plugin and transferred the skills across the languages. Quite nice neat code actually, that isn’t 600 lines long, so I can quickly show it to you below. It’s very applicable and I believe I have used it twice or three times in the past 4 months alone. The declarations for the events now look like this, very centralised and easy to add/remove events and modify the weightings. Called in the Start() function. weightedEvents.Add(new WeightedEvent(\"Nothing\", 20, () => { })); weightedEvents.Add(new WeightedEvent(\"Earthquake\", 5, Earthquake)); weightedEvents.Add(new WeightedEvent(\"Fire\", 40, SetBuildingOnFire)); weightedEvents.Add(new WeightedEvent(\"Virus\", 20, () => { TriggerVirusOutbreak(); } )); and the class is just simply storing the name, the weight and a weighted Event. public class WeightedEvent { public string name; public int weight; public Action weightedEvent; public WeightedEvent(string name, int weight, Action weightedEvent) { this.name = name; this.weight = weight; this.weightedEvent = weightedEvent; } } we do need to store the total weight which happens on the Start() function currently. When playRandomEvent() is called, we increase the cursor by the event’s weight until it is greater than the rolled random number between 0 and the total weight, at which point the class’ event is called. Broke nothing in the end! That’s great isn’t it, especially after migrating a bunch of “legacy” code. Hopefully didn’t jinx it."}, {"post_id": 12737, "ts": "2026-06-20T20:33:13Z", "hours": 4.3403, "text": "Okay now i SUCK at my own video game. Don’t worry it’s hard mode. Also lost 2 hours of work somewhere cuz it didn’t save? Don’t understand how. That’s always great isn’t it. But still, 62 days in and I’m fried because of one silly mistake I made 40 days ago. Really teaches you consequences I guess. Spent my time completely overhauling how everything works. You used to make too much money, so I made the revenue even more population based, by making the max revenue a multiplier of the max population. Completely rewrote the losing population, unemployment and vacancy calculations to prevent strange negative numbers which was irritating me for the past one and a half weeks. Also overhauled the inflation to use a formula instead of a very rudimentary lookup table from if statements which is staged into a end-game (130 days+) and early game stage with 20% and 2% simple interest respectively (no not compound for once - that would make the game too hard. Extreme mode?) The game is actually like a good game now. I don’t know how to explain apart from that though."}, {"post_id": 11524, "ts": "2026-06-18T20:22:52Z", "hours": 2.1214, "text": "I FINALLY LOST IN MY OWN GAME!! Rebalancing the game slowly but surely. Currently added inflation, which increases the price of everything as the days go by. It gets less severe the longer you play but the inflation rate stays high. The game days now vary, take 5 seconds at the start and slowly get faster and faster toward 1.5s linearly. The inflation rate also increases with bands as the game progresses so you need to keep up. This makes the game a good progression, but make one mistake during an earthquake and it might be ggs for you. There is now finally a game over function… although no restart but don’t worry about it. It just pauses the game and tells you that the game is finished. Next up: Detailed Finances, Rubbish? (follow thx)"}, {"post_id": 10848, "ts": "2026-06-17T19:53:45Z", "hours": 1.2564, "text": "Currently rebalancing the video game to make the game progression more realistic as it is currently extremely difficult at the start and stupidly impossible to die toward the end. Completely forgot to tell you guys that you can follow my projects on my YouTube: Video Like & sub if you can… mb for the self promo though. Sadly I have 6 exams next week so the next 2 weeks are most likely going to be slow ones… not dominating the leaderboards anymore."}, {"post_id": 10754, "ts": "2026-06-17T17:25:21Z", "hours": 4.8722, "text": "Working healthcare! The game now has a virus… and it spreads pretty quickly. Houses get infected, added to the random event chances on top of earthquakes and fires. I created hospitals that dispatch ambulances as required. Now all services cost money. Using the same A* algorithm from last time, but a little more complex due to the nature of the virus spreading to random buildings. This requires the game to check for any viruses. I created an UI that displays the day progression, using actions & delegates again. The day length is now no longer fixed, but instead it becomes smaller the longer you stay on the map, to try and add difficulty ramping. The game is currently very difficult at the start and incredibly easy at the end, so I’m trying to reverse this a bit and make it hard at the start but terrible towards the end. Also just realised there’s no ending lol - you just become broke and softlock yourself. Never done it to myself which really speaks out about how UNBALANCED the game is. I think it’s time to work on game balancing now before implementing new features, and over half way to shipping? maybe at 65-80 hours in at this rate?"}, {"post_id": 8771, "ts": "2026-06-14T16:10:08Z", "hours": 4.5692, "text": "WORKING PATHFINDING ON THE GRID! Created new assets so the game looks complete now! You can see the firetruck going from the Fire station all the way to the burning building where it will extinguish it. Yes, it follows the roads as intended and uses the A* algorithm to figure out the best path. And they shoot water out, so visual feedback for everything. This was super fun as it was the first time I’ve implemented the A* in a video game on a grid that procedurally generated. The coal power generator, fire station and fire trucks have models now, I think I made them good enough to fit with the game. Police station and healthcare to still be implemented but it’s looking good so far. This required creating a new services manager, creating a pathfinding script, updating global services and how everything interacts with the fire, and creating reverse pathfinding and small details. It’s coming together really cleanly now."}, {"post_id": 8393, "ts": "2026-06-13T23:23:02Z", "hours": 7.1706, "text": "Debugging HELL I added fires, which you can see in the corner. Unity Particle system actually really cool for that by the way. This forced me to rewrite how fires work and add new bits to the Building parent class. That was fine. Had to update the UI to show you that an earthquake was happening, which works more reliably than last time and I figured the ghost error out. I decided to implement water & energy requirements. Overhauled ChunkManager to allow for this, as each chunk needs enough. If it doesn’t produce enough, it imports from other chunks. If it can’t do that, everyone starts packing it up and leaving. Added this to city stats. Then modelled a cute little water tower as you can see below. Then I added energy, lots of chaos. Trying really hard to avoid circular loops to avoid a stack overflow, but it’s looking pretty good. User warnings now show up, like when an earthquake happens, or if a building burns down or if you can’t do something or don’t have money for something. Now I think I have time to do the fun part - creating chaotic fun stuff to make the city feel even more alive. But it’s looking pretty good right now. It’s getting close to being shipped, almost 40 hours in. Like & follow for the link ;) Now I really need to sleep. OH NO AND REVISE FOR THE PHYSICS TEST ON TUESDAY"}, {"post_id": 8051, "ts": "2026-06-13T13:04:47Z", "hours": 2.0944, "text": "It’s been a really long time since I’ve posted. Some progress going on here. Little sneak peak of the fires… yep. You thought the game was gonna be peaceful? On another 7+ hour sprint today"}, {"post_id": 7093, "ts": "2026-06-11T21:27:16Z", "hours": 4.3672, "text": "Clean codebase always pays off (unless you want to keep your job apparently?) Fixed the vacancies counter, as before I was using = instead of +=. Told you it’s the little things that catch you out. Created a safer version of the draft forceRemoveElement() that accounts for jobs and residents when destroying a building (houses/shops/industry). This now updates the game realistically, e.g. if you destroy a house, then you reduce from the population. If the residents were employed, then it removes positions from buildings. If they were unemployed, then we remove it from the stats. Since I am not storing direct references between buildings but creating a game pool for performance, this makes the operations require lots of calling. This could probably be optimised in the future but I will do that near the first release due to the ever-changing code base. This required updating GameManager.cs to have LosePopulation(), LoseJobs() with a helper RemoveWorkersFromBuildings() function. Luckily the lists in GridMananger that I made like 20 hours ago for “future proofing” came in useful. Finally, you can press F to show city statistics and it updates in real time."}, {"post_id": 6481, "ts": "2026-06-10T22:00:31Z", "hours": 1.0161, "text": "What’s the difference between these two: int maxEmployees = 50; int employees = 25; float taxRevenue = 1500.0f; ONE : float revenue = (employees / maxEmployees) * taxRevenue; TWO: float revenue = (employees * taxRevenue) / maxEmployees; Mathematically, they’re the same. a/b * c = c/b * a However, I missed one thing while coding (a lot harder to see when it’s not just this). They’re both integers. now what C# does is it divides 25/50. we get 0.5. but they’re both integers, so it tries to store it as an integer, which floors it to a 0. Therefore, it’ll suddenly jump to max revenue when the company is full. obviously not what was intended. Option 2 makes you multiply the integer with a float, and stores 25 * 1500 as a float, which can now be nicely divided by 50 to get the value that we inteded. Sometimes… actually, no MOST of the time it’s the little things that catch you out. Anyways, this has very much balanced the game. The companies get as many employees as they can, then grow by 1 employee each day. Their revenue scales with the employee count, so now residential houses are useful for once. If anything, essential. Next up: Road tax, Land tax. This might be the one time you want tax… or maybe it’s too much?"}, {"post_id": 6445, "ts": "2026-06-10T20:48:12Z", "hours": 1.1464, "text": "Sometimes, the most productive thing you can do is destroying everything for a clean slate. So that’s what I did and refactored my codebase, painting my GitHub red. The old city generation code ended up becoming messy spaghetti code that made it difficult to debug and work on it. And that sort of legacy code when I look back in a month is what ends up shelving projects for years on end. This half an hour will save me many in the future. I also removed the cluster expansion method of building expansion completely as it created annoying expansions that didn’t make sense of everything being 1 square off a road. Also created a GameManager and moved aspects of GridManager and FinanceManager to the new script, to try and centralise the logic and stop having random bits such as the day manager in the FinanceMananger, which didn’t make an sense. Also yes, I wasted 20 minutes trying to figure out what was going wrong when I forgot to add GameManager.cs to the scene 💔"}, {"post_id": 6367, "ts": "2026-06-10T18:39:39Z", "hours": 3.0794, "text": "It can’t POSSIBLY BE THAT HARD CAN IT? No but you have to mix up TAGS AND LAYERS. There’s some error you got 5 builds ago but NEVER APPEARED AGAIN. EVEN HOURS INTO TESTING. HOW DID IT FIX ITSELF?! The UI now updates how much you gained in the past day! But anyways, you can finally toggle between the layers… after too much debugging (and realising it was just me being stupid). But it’s okay I’ll hopefully get that laptop from this blood sweat and tears. Look how gorgeous it looks now!"}, {"post_id": 5918, "ts": "2026-06-09T22:00:15Z", "hours": 5.0561, "text": "Did you know it costs more to remove a road than create one?! Strange… Finally have a working economy in the game now! It’s VERY unbalanced. You WILL become very rich. And residential is currently useless, and everything just has a set employee count for now. But that will change soon, and we’ll make the game intelligent. Also the game clock is currently in the Finance Manager which is a little odd so maybe I’ll fix that later. But, I have used actions & delegates to optimise the game handling of the ridiculous amount of scripts for each building that will be running once the cities become larger and larger. Created a UI manager to update the script, which uses the above actions & delegates from the script manager. Created a Finance Manager which led me to have to recode GridManager for monetary support, but that was honestly less painful than it sounds. I also spent a considerable amount of time debugging last post’s Zoning. The code has multiple ways of producing a building and this caused me to have to go back and go through all of the code line by line to figure all the pathways out and debug it eventually. And yes, as promised I made it cost money to zone. Every action, such as creating a road and destroying them cost money and using my amazing research skills of using the first google result, destroying a road costs double placing a road! I think I should sleep. See you soon!"}, {"post_id": 5134, "ts": "2026-06-08T20:27:14Z", "hours": 2.4142, "text": "CITY ZONING! Annoyed that a massive skyscraper decided to spawn right next to a nice cozy cottage? Not anymore! You can zone areas by residential, commercial and industrial. There is also a “No Build” zone for areas that you just want to keep clear for now. This will eventually cost you money, because paperwork is really expensive apparently. (And to keep the game balanced of course). But there’s no money yet. I think you should like & follow to see how the game’s economy works."}, {"post_id": 4989, "ts": "2026-06-08T17:13:15Z", "hours": 2.5267, "text": "Pocket City Dev 5 The terrain was a little bland, so I decided to spice it up with nature. To fill the grid up, I decided to implement trees. Created a few basic tree grid varieties and implemented it into GridManager.cs. However, this forced me to spawn all of the trees in the Start() function which causes a longer loading time, CPU spike and worst of all it makes it so that after the initial radius no more trees spawn. Increasing the radius exponentially increases the amount of trees being added (because each ring has more grid sections to cover). So i had to pivot. I created a new Chunk Manager, split the main grid up into 16x16 chunks, and checked the player camera and only loaded the surrounding chunks. This makes trees spawn around the player continuously. However, this would become laggy as it would happen every frame. Two ways I decided to prevent this: Check if the player had changed chunks. If it’s still the same chunk, early return to skip the entire code process. Check if the nature has already been loaded. Only load if not loaded. This obviously saves on time complexity, and allows me to have the freedom of creating varying tree density. It also makes it so that the trees do not regenerate constantly. And that completes the visuals for now. Probably will add more foliage and other variety in the future, but for now this will suffice. Finally, this has a severe performance penalty. To cater for lower-end devices, I added a toggle which will later come to a settings menu for ~4x the performance without impacting gameplay. Optimisations, such as chunkloading and LODs will be added later to increase the performance with trees, but that will come after the core game is finalised."}, {"post_id": 3868, "ts": "2026-06-06T23:09:38Z", "hours": 2.8567, "text": "Hello everyone! The city is finally generating. They automatically generate alongside roads or try grow in clusters with each other. Game looks pretty sweet. Almost 9 hours in, I think it’s time to get some sleep now."}, {"post_id": 3730, "ts": "2026-06-06T19:33:02Z", "hours": 4.095, "text": "Coming first in the UK leaderboard is pretty honourable. Anyways, working on Pocket City and we’ve almost got generation of buildings and I’ve got a lot of things lined up for this project. I really need that framework 12 💔. The roads have a cursor and you can destroy and create them in a row as well, camera movement is more polished with a sprint key. Got all the building assets and everything ready. What a entry to stardance & hackclub!"}, {"post_id": 3473, "ts": "2026-06-06T12:53:43Z", "hours": 1.3806, "text": "Procedural road addition, so that when you add a tile (which is still done through code currently), it will decide which road layout to add, be it an intersection, 4 way, 3 way, a road turn or anything else. Added clean camera movement with WSAD + scroll as well."}, {"post_id": 3429, "ts": "2026-06-06T11:20:47Z", "hours": 1.0264, "text": "Hello! I’m working on creating a top-down 2D-styled but 3D game where you control a city. I’ve got this grid layout so far and it works fabulously and I somehow got the rotations correct on the first try 🤣"}]...
|
Title: Capital Chaos by @sol4r_on_hackclub | Stard Title: Capital Chaos by @sol4r_on_hackclub | Stardance
Devlogs:
Hello! I’m working on creating a top-down 2D-styled but 3D game where you control a city. I’ve got this grid layout so far and it works fabulously and I somehow got the rotations correct on the first try 🤣
Procedural road addition, so that when you add a tile (which is still done through code currently), it will decide which road layout to add, be it an intersection, 4 way, 3 way, a road turn or anything else. Added clean camera movement with WSAD + scroll as well.
Coming first in the UK leaderboard is pretty honourable. Anyways, working on Pocket City and we’ve almost got generation of buildings and I’ve got a lot of things lined up for this project. I really need that framework 12 💔. The roads have a cursor and you can destroy and create them in a row as well, camera movement is more polished with a sprint key. Got all the building assets and everything ready. What a entry to stardance & hackclub!
Hello everyone! The city is finally generating. They automatically generate alongside roads or try grow in clusters with each other. Game looks pretty sweet. Almost 9 hours in, I think it’s time to get some sleep now.
Pocket City Dev 5 The terrain was a little bland, so I decided to spice it up with nature. To fill the grid up, I decided to implement trees. Created a few basic tree grid varieties and implemented it into GridManager.cs. However, this forced me to spawn all of the trees in the Start() function which causes a longer loading time, CPU spike and worst of all it makes it so that after the initial radius no more trees spawn. Increasing the radius exponentially increases the amount of trees being added (because each ring has more grid sections to cover). So i had to pivot. I created a new Chunk Manager, split the main grid up into 16x16 chunks, and checked the player camera and only loaded the surrounding chunks. This makes trees spawn around the player continuously. However, this would become laggy as it would happen every frame. Two ways I decided to prevent this: Check if the player had changed chunks. If it’s still the same chunk, early return to skip the entire code process. Check if the nature has already been loaded. Only load if not loaded. This obviously saves on time complexity, and allows me to have the freedom of creating varying tree density. It also makes it so that the trees do not regenerate constantly. And that completes the visuals for now. Probably will add more foliage and other variety in the future, but for now this will suffice. Finally, this has a severe performance penalty. To cater for lower-end devices, I added a toggle which will later come to a settings menu for ~4x the performance without impacting gameplay. Optimisations, such as chunkloading and LODs will be added later to increase the performance with trees, but that will come after the core game is finalised.
CITY ZONING! Annoyed that a massive skyscraper decided to spawn right next to a nice cozy cottage? Not anymore! You can zone areas by residential, commercial and industrial. There is also a “No Build” zone for areas that you just want to keep clear for now. This will eventually cost you money, because paperwork is really expensive apparently. (And to keep the game balanced of course). But there’s no money yet. I think you should like & follow to see how the game’s economy works.
Did you know it costs more to remove a road than create one?! Strange… Finally have a working economy in the game now! It’s VERY unbalanced. You WILL become very rich. And residential is currently useless, and everything just has a set employee count for now. But that will change soon, and we’ll make the game intelligent. Also the game clock is currently in the Finance Manager which is a little odd so maybe I’ll fix that later. But, I have used actions & delegates to optimise the game handling of the ridiculous amount of scripts for each building that will be running once the cities become larger and larger. Created a UI manager to update the script, which uses the above actions & delegates from the script manager. Created a Finance Manager which led me to have to recode GridManager for monetary support, but that was honestly less painful than it sounds. I also spent a considerable amount of time debugging last post’s Zoning. The code has multiple ways of producing a building and this caused me to have to go back and go through all of the code line by line to figure all the pathways out and debug it eventually. And yes, as promised I made it cost money to zone. Every action, such as creating a road and destroying them cost money and using my amazing research skills of using the first google result, destroying a road costs double placing a road! I think I should sleep. See you soon!
It can’t POSSIBLY BE THAT HARD CAN IT? No but you have to mix up TAGS AND LAYERS. There’s some error you got 5 builds ago but NEVER APPEARED AGAIN. EVEN HOURS INTO TESTING. HOW DID IT FIX ITSELF?! The UI now updates how much you gained in the past day! But anyways, you can finally toggle between the layers… after too much debugging (and realising it was just me being stupid). But it’s okay I’ll hopefully get that laptop from this blood sweat and tears. Look how gorgeous it looks now!
Sometimes, the most productive thing you can do is destroying everything for a clean slate. So that’s what I did and refactored my codebase, painting my GitHub red. The old city generation code ended up becoming messy spaghetti code that made it difficult to debug and work on it. And that sort of legacy code when I look back in a month is what ends up shelving projects for years on end. This half an hour will save me many in the future. I also removed the cluster expansion method of building expansion completely as it created annoying expansions that didn’t make sense of everything being 1 square off a road. Also created a GameManager and moved aspects of GridManager and FinanceManager to the new script, to try and centralise the logic and stop having random bits such as the day manager in the FinanceMananger, which didn’t make an sense. Also yes, I wasted 20 minutes trying to figure out what was going wrong when I forgot to add GameManager.cs to the scene 💔
What’s the difference between these two: int maxEmployees = 50; int employees = 25; float taxRevenue = 1500.0f; ONE : float revenue = (employees / maxEmployees) * taxRevenue; TWO: float revenue = (employees * taxRevenue) / maxEmployees; Mathematically, they’re the same. a/b * c = c/b * a However, I missed one thing while coding (a lot harder to see when it’s not just this). They’re both integers. now what C# does is it divides 25/50. we get 0.5. but they’re both integers, so it tries to store it as an integer, which floors it to a 0. Therefore, it’ll suddenly jump to max revenue when the company is full. obviously not what was intended. Option 2 makes you multiply the integer with a float, and stores 25 * 1500 as a float, which can now be nicely divided by 50 to get the value that we inteded. Sometimes… actually, no MOST of the time it’s the little things that catch you out. Anyways, this has very much balanced the game. The companies get as many employees as they can, then grow by 1 employee each day. Their revenue scales with the employee count, so now residential houses are useful for once. If anything, essential. Next up: Road tax, Land tax. This might be the one time you want tax… or maybe it’s too much?
Clean codebase always pays off (unless you want to keep your job apparently?) Fixed the vacancies counter, as before I was using = instead of +=. Told you it’s the little things that catch you out. Created a safer version of the draft forceRemoveElement() that accounts for jobs and residents when destroying a building (houses/shops/industry). This now updates the game realistically, e.g. if you destroy a house, then you reduce from the population. If the residents were employed, then it removes positions from buildings. If they were unemployed, then we remove it from the stats. Since I am not storing direct references between buildings but creating a game pool for performance, this makes the operations require lots of calling. This could probably be optimised in the future but I will do that near the first release due to the ever-changing code base. This required updating GameManager.cs to have LosePopulation(), LoseJobs() with a helper RemoveWorkersFromBuildings() function. Luckily the lists in GridMananger that I made like 20 hours ago for “future proofing” came in useful. Finally, you can press F to show city statistics and it updates in real time.
It’s been a really long time since I’ve posted. Some progress going on here. Little sneak peak of the fires… yep. You thought the game was gonna be peaceful? On another 7+ hour sprint today
Debugging HELL I added fires, which you can see in the corner. Unity Particle system actually really cool for that by the way. This forced me to rewrite how fires work and add new bits to the Building parent class. That was fine. Had to update the UI to show you that an earthquake was happening, which works more reliably than last time and I figured the ghost error out. I decided to implement water & energy requirements. Overhauled ChunkManager to allow for this, as each chunk needs enough. If it doesn’t produce enough, it imports from other chunks. If it can’t do that, everyone starts packing it up and leaving. Added this to city stats. Then modelled a cute little water tower as you can see below. Then I added energy, lots of chaos. Trying really hard to avoid circular loops to avoid a stack overflow, but it’s looking pretty good. User warnings now show up, like when an earthquake happens, or if a building burns down or if you can’t do something or don’t have money for something. Now I think I have time to do the fun part - creating chaotic fun stuff to make the city feel even more alive. But it’s looking pretty good right now. It’s getting close to being shipped, almost 40 hours in. Like & follow for the link ;) Now I really need to sleep. OH NO AND REVISE FOR THE PHYSICS TEST ON TUESDAY
WORKING PATHFINDING ON THE GRID! Created new assets so the game looks complete now! You can see the firetruck going from the Fire station all the way to the burning building where it will extinguish it. Yes, it follows the roads as intended and uses the A* algorithm to figure out the best path. And they shoot water out, so visual feedback for everything. This was super fun as it was the first time I’ve implemented the A* in a video game on a grid that procedurally generated. The coal power generator, fire station and fire trucks have models now, I think I made them good enough to fit with the game. Police station and healthcare to still be implemented but it’s looking good so far. This required creating a new services manager, creating a pathfinding script, updating global services and how everything interacts with the fire, and creating reverse pathfinding and small details. It’s coming together really cleanly now.
Working healthcare! The game now has a virus… and it spreads pretty quickly. Houses get infected, added to the random event chances on top of earthquakes and fires. I created hospitals that dispatch ambulances as required. Now all services cost money. Using the same A* algorithm from last time, but a little more complex due to the nature of the virus spreading to random buildings. This requires the game to check for any viruses. I created an UI that displays the day progression, using actions & delegates again. The day length is now no longer fixed, but instead it becomes smaller the longer you stay on the map, to try and add difficulty ramping. The game is currently very difficult at the start and incredibly easy at the end, so I’m trying to reverse this a bit and make it hard at the start but terrible towards the end. Also just realised there’s no ending lol - you just become broke and softlock yourself. Never done it to myself which really speaks out about how UNBALANCED the game is. I think it’s time to work on game balancing now before implementing new features, and over half way to shipping? maybe at 65-80 hours in at this rate?
Currently rebalancing the video game to make the game progression more realistic as it is currently extremely difficult at the start and stupidly impossible to die toward the end. Completely forgot to tell you guys that you can follow my projects on my YouTube: Video Like & sub if you can… mb for the self promo though. Sadly I have 6 exams next week so the next 2 weeks are most likely going to be slow ones… not dominating the leaderboards anymore.
I FINALLY LOST IN MY OWN GAME!! Rebalancing the game slowly but surely. Currently added inflation, which increases the price of everything as the days go by. It gets less severe the longer you play but the inflation rate stays high. The game days now vary, take 5 seconds at the start and slowly get faster and faster toward 1.5s linearly. The inflation rate also increases with bands as the game progresses so you need to keep up. This makes the game a good progression, but make one mistake during an earthquake and it might be ggs for you. There is now finally a game over function… although no restart but don’t worry about it. It just pauses the game and tells you that the game is finished. Next up: Detailed Finances, Rubbish? (follow thx)
Okay now i SUCK at my own video game. Don’t worry it’s hard mode. Also lost 2 hours of work somewhere cuz it didn’t save? Don’t understand how. That’s always great isn’t it. But still, 62 days in and I’m fried because of one silly mistake I made 40 days ago. Really teaches you consequences I guess. Spent my time completely overhauling how everything works. You used to make too much money, so I made the revenue even more population based, by making the max revenue a multiplier of the max population. Completely rewrote the losing population, unemployment and vacancy calculations to prevent strange negative numbers which was irritating me for the past one and a half weeks. Also overhauled the inflation to use a formula instead of a very rudimentary lookup table from if statements which is staged into a end-game (130 days+) and early game stage with 20% and 2% simple interest respectively (no not compound for once - that would make the game too hard. Extreme mode?) The game is actually like a good game now. I don’t know how to explain apart from that though.
I HAVE A PLANN For the spinal sprint toward completion. Should end up taking me to hour 70-75? Then we polish the UI and add a main menu… lacking feature I guess. Anyways, reorganised the code base and split game manager up, created folders and fixed dependencies for everything. There is now an event manager, which handles all of the events separately, and as you can see from this simple to-do list (should my next project be the to do list to end all to do lists with calendar integration and stuff???) that I have completed the first bit “Weighted Event system”. So now nothing has an equal chance of happening! Also as a side effect made adding new effects a lot easier due to the nested WeightedEvents class which was similar to an idea I had in my old minecraft mod plugin and transferred the skills across the languages. Quite nice neat code actually, that isn’t 600 lines long, so I can quickly show it to you below. It’s very applicable and I believe I have used it twice or three times in the past 4 months alone. The declarations for the events now look like this, very centralised and easy to add/remove events and modify the weightings. Called in the Start() function. weightedEvents.Add(new WeightedEvent("Nothing", 20, () => { })); weightedEvents.Add(new WeightedEvent("Earthquake", 5, Earthquake)); weightedEvents.Add(new WeightedEvent("Fire", 40, SetBuildingOnFire)); weightedEvents.Add(new WeightedEvent("Virus", 20, () => { TriggerVirusOutbreak(); } )); and the class is just simply storing the name, the weight and a weighted Event. public class WeightedEvent { public string name; public int weight; public Action weightedEvent; public WeightedEvent(string name, int weight, Action weightedEvent) { this.name = name; this.weight = weight; this.weightedEvent = weightedEvent; } } we do need to store the total weight which happens on the Start() function currently. When playRandomEvent() is called, we increase the cursor by the event’s weight until it is greater than the rolled random number between 0 and the total weight, at which point the class’ event is called. Broke nothing in the end! That’s great isn’t it, especially after migrating a bunch of “legacy” code. Hopefully didn’t jinx it.
POLITICS!! + Debugging Hell v2 I mean I guess it is? Not too sure. Event Manager completely overhauled. Double events now no longer have the chance of repeating the same event. Created a new GameEffects script which just takes a bunch of simple code away from EventManager and plays the basic functions such as the “tax revenue increases” which you see below. This was quite a headache to create, and I severely underestimated how much time this would take. I have 2 extra nested classes inside of EventManager for Political Question and Political Scenario. [... inside EventManager.cs ...] public class PoliticalQuestion { public string Question; public TaskCompletionSource<bool> TaskCompletionSource = new TaskCompletionSource<bool>(); public Action onAccept; public PoliticalQuestion(string question, Action onAccept) { Question = question; this.onAccept = onAccept; } } public class PoliticalScenario { public string description; public Action runnable; public PoliticalScenario(string featureDescription, Action functionality) { description = featureDescription; runnable = functionality; } } [Header("Political Question Variables")] public List<PoliticalQuestion> PendingQuestions = new List<PoliticalQuestion>(); public event Action onQueueChanged; private PoliticalScenario[] goodFeatures; private PoliticalScenario[] badFeatures; The political question is sent off to the UI manager, which displays it as shown below. Then it handles user input pressing Y/Enter or N/Esc to accept the user choice, and returns it back to the Event Manager. Seems simple enough, yet there are many ways to do it but I think that the above implementation works the best out of all the ones that I tried. I attempted to use Game Manager as a middleman but that did not work out - so I resorted to passing an entire class. The political scenario allows for the string to actually do something, so that the game knows what to process and what the user agreed to without creating a bunch of variables, and can allow for stacked political question events which is nice. Game’s looking really neat, and the multipliers and stuff can make the game go very crazy very quickly. Too much of a good thing is a bad thing!! Debugged the entire system for like a solid 3 hours it was actually bad. Came first in the UK tho!! I’m back after those 6 exams are done. Yes I know the UI looks pretty bad but it’s good enough for pre-beta testing. Oh yeah, speaking of UI everything is more bold. Figured out how to do that.
MAKE IT RAIN ASTEROIDS Pretty long run honestly. But before that, let’s talk about retrofitting your buildings. Earthquakes are pretty bad. Very bad when you loose your 100k building in a moment. So upgrade it. Yes it’ll cost you 35 to 55k now. But is your peace of mind worth that? And I added asteroids! These fly down and annihilate everything in a 3 unit radius and then set everything else in the 6 unit radius on fire. Lots of minor bug fixes as well, trying to get the game really polished now. Some rejigging of the game’s back end, such as creating a new abstract class for employer and reworking the systems to ensure that they run more smoothly and I believe almost finally fixing the unemployment/vacancy problem. I say almost because every 5 runs I see the game yell at me that it didn’t count something correctly but honestly I’ve spent so long on this I don’t even know if it’d be harder to just rewrite the entire employment system. For more detail, see my video linked below! See if you guys like it, my first proper long form I Added ASTEROIDS that ANNIHILATE your Adorable City And boy will this thing cook your economy.
BETTER UI + XP At the top of the image you can see a little progress bar… yep I’ve added XP now. Got plans for that, probably going to allow you to unlock stuff later. Like the lockdown ability etc. The UI has been overhauled. The actual images are a touch on the placeholder side apart from the road but it looks pretty good. You cycle between road, zoning and special building placement with 1, 2 and 3. Use R to rotate between the modes like residential, commercial and industrial zoning as well as Utilities & Emergency for the special buildings. Then finally T to rotate between those specific buildings. Complicated? Maybe? But it’s also a lot faster. I have completely lost my muscle memory of spamming R like the “good old days” though. Looks good? Bad? Horrible update and the game should never be changed ever again? Best update in the world and I should win £1 trillion? What do you think?
CRIME!!! + C# Generics I added Arson and added a Police manager that goes out and solves these crimes. Lots more to come, let me know of any ideas you have! But before that let me teach you ALL something. C# Generics. I had a bunch of scripts that all did ABOUT the same thing but with different. This was FindClosestHospital, FindClosestFireStation and the thing I was adding which was FindClosestPoliceStation. It felt quire redundant to copy the same lines but instead of Hopsital it was replaced with FireStation or PoliceStation. //Generic functions private T FindClosestReachableService<T>(Vector2Int targetPos, Func<T, bool> hasAvailableVehicles, out List<Vector2Int> bestRoute) where T : Building { T closestBuilding = null; bestRoute = null; int shortestRouteLength = int.MaxValue; bool foundBuildingOfThisType = false; foreach (var kvp in gridManager.GetMapGrid()) { GridManager.GridTile tile = kvp.Value; if (tile.buildingScript != null && tile.buildingScript is T serviceBuilding) { foundBuildingOfThisType = true; if (!hasAvailableVehicles(serviceBuilding)) continue; List<Vector2Int> testRoute = CalculateRoadPath(tile.buildingScript.gridPos, targetPos); if (testRoute == null || testRoute.Count == 0) continue; if (testRoute.Count < shortestRouteLength) { shortestRouteLength = testRoute.Count; bestRoute = testRoute; closestBuilding = serviceBuilding; } } } if (!foundBuildingOfThisType) { bestRoute = null; return null; } return closestBuilding; } Above is an example of the C# generic. We have “T” type, and I think this is a good place to learn about them. Instead of defining the function as returning something like Building , we make T a type. and you can see it passed in a little <T> after the function name. We can also pass in entire functions like Func<T, bool> which is utilised as shown below: Building bestStation = FindClosestReachableService<PoliceStation>(building.gridPos, ps => ps.HasPolice(), out route); you can see ps => ps.HasPolice() calls that out. And finally, to define what T is meant to be, I’ve added where T : Building . You can do this many times, such as by having both a T as well as a U! and you’d have a repeated where T : Building where U: PotatoChips or something idk what U is meant to be bro. This was my first time using it but it’s pretty cool and if you’re using C# I’d recommend learning it as it saved me like 200 lines of code and changing something 3 times to change the same thing! And yes, I added a third thing which is Arson! which is a crime based thing, and you have a visual that shows up as a timer. if a police doesn’t solve the crime it sets on fire. It’s not too bad but it adds a use for the police, with much more to come for the police to deal with in the future! Also added asteroid BOMBARDMENT as a debuff. Yeah it’s brutal. 3 strikes… thats up to 108 tiles DESTROYED and set on fire. And of course, the image is from a youtube video: Click me!
Main menu 👀 I need help. UI clearly isn’t for me
I’m being forced to post Yeah thanks stardance. 10 hour limit for what. Probably spam filter. Also MASSIVE BUG(s). One is that the game just randomly deletes all the buildings from a chunk. No idea why, I’ve been at it for so long. Another issue is the stupid vacancy counter which has been broken FOREVER but atleast now it doesn’t go negative. I have a serious feeling I will have to spend a week just POLISHING the game. Whatever, Currently working through a new feature of allowing you to use your money that you spent so long accumulating to try and fix the chaos that you went through. This is done through the “Council FX” which I may rename if you guys can think of a better name, and you can see the countless things to do such as: Taking On DEBT!! YAY!! 100k that gains 1% every day. Seems low.. but it will pile up very quickly since it’s compound interest. Overclocking the grid for free placement + infinite water/power Maximising Housing/Business revenue Curing all infections … and many more as well as the ??? at level 100… who knows what that does. £2.5 million btw. Of course, those levels are the XP, which has finally given that a use. And no you wont be at level 11000 just like that, i’m just being lazy for testing. Also rebalanced so that all of the commercial buildings have ~10-15% of their previous employment caps. So that you’re not just spamming residential. It also makes industrial more useful as they have more employers even though they produce less money.
Bugs are genuinely taking the life out of me Genuinely the worst thing ever. I STILL can’t figure it out but I had to post my weekly devlog anyways. Can you believe we’re 28 weeks into 2026??! Here’s the chaos where I accidentally created a “Pocket Empire” (Day 1105) Watch the video (click the title) if you wanna see how I ended up here and a minor crash out. very minor.
UFOs in an Alien Invasion 💔💔 The second rare event addition to Pocket City! Get a chunk of your population zapped up by some not so friendly aliens… Any more ideas, let me know below! But it was pretty neat to implement. 3D modelled it and everything. 3 hours of doing god knows what. Tried to figure quality settings out and probably did smth else but was too busy with the World Cup to remember what I did. Probably bug fixes and stuff. Oh yeah and you see a pretty cool ripple pulse thing that propogates through the map. Although it is a little weak right now but i’ll fix that next time. Super tired. mb
I NEED YOUR HELP Pocket City already exists as a game. I know this is stupid and I should have checked this before starting since I had the intention of publishing it to steam but here we are. If you want more details, or more knowledge about the game check this video out: Video Oops…
Hmmmm… What’s cooking? (Blender just WON’T count toward my hours but prolly spent 2-3 extra hours here) The helicopter blades actually spin. And W Unity particle system for the missile.
WORKING AIR DEFENCE + ATTACK HELICOPTERS So we got working air defence turrets with some predictive aiming, and attack helicopters that shoot missiles at random buildings. Although you’re unlikely to get 3 attack helicopters at once… for now. The helicopters blades do spin, they bob up and down, they go towards buildings. They shoot out these missiles, which pathfind their way to the targetted building. They all have a healthsystem which means that the turrets do some damage on collisions only though, one turret might take a while but two (or the 7 you see below) will MOW them down. Still have to hook it all up to the Finance Manager, Special Building placement and other boring stuff, but… I need more IDEAS!! (read this thx) …for more Military stuff that can be added. Tank wars? Who knows. I was thinking of a military invasion as being one of the rare events which spawns like 10 missiles and 5 attack helicopters and maybe a B2 bomber or some stuff. I also need more allied options, maybe I’ll add like an anti-bomb turret that is specifically for the B2 bomber or something and does 100000 damage. Or maybe your own airbase that spawns an allied helicopter and now you have dogwars. or maybe your own plane. idk So yes @Adam_Lotfalla this is what the helicopter was for. Yay more things to worry about!!! Still have integrations left! I’ll see you (hopefully) tomorrow once that’s done. but its midnight now so goodbye.
Nukes… from a plane A famous plane. The B2 Bomber. Idk gng I got bored. No but it drops a nuke that decimates everything in a decent radius and then sets everything in a bigger radius on fire, and now we have a new rare event called a “military invasion”.. that spawns like 8 helicotpers AS WELL as the b2 bomber. The B2 Bomber starts a few clicks out and then flies toward the set target building. Then it drops the nuke, and you have a few seconds to try and kill the nuke before it kills you, and on impact (yes we are finally using rigidbodys as they are intended) it explodes. You better have that turret system ready. Of course, it’s clearly not enough. So maybe I’ll add a anti-missile system as a YouTube comment said. Speaking of YouTube, thank you for all the support :) 100+ comments goes crazy, and we’re on 73 subs up from the previous 29 literally 3 weeks ago. Not subscribed? Help a fellow dev out: TechScope Channel
NEW NAME!!! Flash Floods + Main Menu If you remember, Pocket City is a game that already exists so now it’s called Capital Chaos. Thank you YouTube comments! And all of you as well, for the suggestions. Ofc new video to go with it: watch by clicking here! I created flash floods that.. well flood the entire map. It’s meant to be a little toned down of a disaster, thats more survivable because it gives the game a touch more balance. It stops all services from working, so that could be detrimental during a virus attack. But on the other hand, it stops every single fire and prevents new ones and explosions. A lifesaver if theres a nuke, it gets completely nullified. Also new main menu, I think it looks pretty neat. Especially compared to the old one.
I HATE Menus (in Unity at least) Genuinely hate them. But yeah we got settings menu working (which genuinely took like 5-6 hours because of stupid unity legacy stuff vs new stuff and then unity 6 vs 2023 version stuff i was used to) AHHHH I don’t remember it being this painful in Godot to be honest so maybe Godot is better for that? i had to get rid of VSync because it only worked on refresh. Created a debug menu to test performance, just to see that the only useful thing there was FPS and like RAM usage, and some engine stuff like active Rigidbodys. I couldn’t see the CPU utilisation or GPU utilisation which was… the thing I wanted to see. Although don’t worry performance does seem to be reasonable and early to mid game I can push over 1000 FPS on potato settings (specs at bottom if you care about them). It does obviously go down as the game continues on, but I think it’s quite optimised. Even with shadows its on 500+ FPS with a mid sized down. Although adding trees will quarter your FPS numbers. but it looks pretty so there’s your tradeoff. Although problematically if you turn trees off and you had already generated trees the fps stays low even though you’re not rendering it? I don’t know why unity is so weird. The game is quite unbalanced, but we’re in the final polishing stages (my target is 150 hours for the framework and hopefully it’s secure! (vote nice and high thanks - i did put a lot of effort into this game.) Up next: Difficulty selection Polishing Rebalancing updates Release!
You won’t believe it. I got it working FIRST TRY That’s actually crazy to be honest. Tells you how much expirience those 8 hours of menu development have given me. Someone give me a Unity menu doctorate or sum But on a serious note, we have game difficulty selection and its all nice and self contained. With controller support of course. You can see we have Previous Saves but that isn’t really functional yet. One of the things I learnt is to never rely on the UI giving you the data, only the click, so you’d manually add the elements and then call .value or .isOn respective to the component, and the same goes for dropdowns although I didn’t use one here. Let me know if you think it looks clean or any improvements to the UI readability, etc.
INSANE tree optimisations Went from 60-80 fps @ 4K to 400-450 (in game). Yes a 6 to 7x increase. How you ask? GPU Mesh Instance drawing offloading the CPU work of handling thousands of game objects. In English, I’m no longer spawning thousands of tree objects, but instead telling the GPU to draw the tree instances every frame. This seems quite unintuitive because you’re now drawing thousands of things every second. BUT this means that there are no game objects, so the CPU doesn’t even know that these exist. Also the GPU draws it thousands of times anyways. A game object handles transforms, rotations, etc. that the CPU has to keep track of whether it is active or not. This had the added benefit of the trees having no overhead when the trees are disabled, so you regain all of your framerate! Also I used some neat little script that combined the meshes all together in the GameObject prefab. Now it really should be able to run on your potato PC/Laptop. Combine script using UnityEngine; public class MeshCombineUtility : MonoBehaviour { [ContextMenu("Combine Children Meshes")] public void Combine() { MeshFilter[] meshFilters = GetComponentsInChildren<MeshFilter>(); CombineInstance[] combine = new CombineInstance[meshFilters.Length]; Matrix4x4 matrix = transform.worldToLocalMatrix; for (int i = 0; i < meshFilters.Length; i++) { if (meshFilters[i].gameObject == gameObject) continue; combine[i].mesh = meshFilters[i].sharedMesh; combine[i].transform = matrix * meshFilters[i].transform.localToWorldMatrix; } Mesh combinedMesh = new Mesh(); combinedMesh.CombineMeshes(combine, true, true); #if UNITY_EDITOR string directory = $"Assets/Assets/Mesh/Tree/{gameObject.name}.asset"; UnityEditor.AssetDatabase.CreateAsset(combinedMesh, directory); UnityEditor.AssetDatabase.SaveAssets(); Debug.Log($"Combined mesh saved to {directory}"); #endif } } Draw section of GPU Mesh Instancing private void DrawTreeMeshes() { if (treeMesh == null || treeMaterial == null) return; foreach (var kvp in generatedChunks) { ChunkData chunk = kvp.Value; if (chunk.spawnedTrees == null || chunk.spawnedTrees.Count == 0) continue; int batchSize = 1023; int totalTrees = chunk.spawnedTrees.Count; for(int i = 0; i < totalTrees; i+=batchSize) { int length = Mathf.Min(batchSize, totalTrees - i); Matrix4x4[] subMatrices = new Matrix4x4[length]; for (int j = 0; j < length; j++) { subMatrices[j] = chunk.spawnedTrees[i + j].matrix; } int meshIndex = Mathf.Abs(chunk.chunkCord.GetHashCode() + i) % treeMesh.Length; Graphics.DrawMeshInstanced(treeMesh[meshIndex], 0, treeMaterial, subMatrices, length); } } }
I’m getting new wifi lol, & 150 hours so yeah i won’t be here and probably will have to post a 10 hour thing BUT on the plus side, we got a nice death screen that has a bunch of quotes that you can read below [SerializeField] private string[] quotes = { "Opportunities multiply as they are seized \n - Sun Tzu", "If you are going through hell, keep going \n - Winston Churchill", "No empire was built on the first draft", "Fall seven times, stand up eight", "That which does not kill us, makes us stronger \n - Friedrich Nietzsche", "Out of ash, a new foundation", "I have not failed. I just found 10,000 ways that don't work \n - Thomas Edison", "A man is not finished when he is defeated. He is finished when he quits \n - Richard M. Nixon", "It does not matter how slowly you go as long as you do not stop \n - Confucius", "Out of difficulties grow miracles \n - Jean de La Bruyère", "The greater the obstactle, the more glory in overcoming it \n - Molière", "A Pocket Sized City is too small for your ambition. Build again \n - The Dev", "Success usually comes to those who are too busy to be looking for it \n - Henry David Thoreau", "Go big or go home", "You can't give up just yet. Stay determined... \n - Undertale" }; Maybe you’ll catch the little easter egg there as well ;) Working on adding game audio!! and probably finally enough hours to get the framework 12 (btw I wouldn’t recommend this as a daily laptop (f13 better), I just want something I can write on lol)
Game Sountrack? But before I talk about that, lemme just say the game audio is almost finished, we have menu sounds for clicks and stuff, and i added support for main menu music. The firetruck hoses actually do stuff, floods sound like floods, theres some peaceful background nature sounds and yeah it makes the game feel so much nicer. although i forgot place sounds which was a massive oversight. also my wifi is still working. no idea why, but not complaining. and i’m cooking on a soundtrack lowk although none of it seems correlated in any way and idk how i’ll make it fit into this game but you know what maybe it’ll just all go into some random album. None of the hours put into these songs count but its okay. i’m no pro tho so. all i’ll say is i love some bass
Final DevLog before First Ship - Boss Battle I don’t think words can explain what I made so click here to watch a video on my probably final major addition (no pressure) & also help with a small dilemma I have. NO!! that does not mean this game will stop development, but i think i finally have enough hours (+10-15 more safety) to get a Framework 12! (and then i will be able to crack on with entrance exams - so i guess development will slow a touch). Of course I’ll ship once the game is polished enough. You might see a devlog or two from the “Capital Chaos Website” - follow me ;) I really hope you guys all enjoy it and now I need to do the readme and stuff. I also realised I was one of the most viewed on Stardance which is honestly amazing and I appreciate all of the support :) And thank you to all the new friends I’ve made and all the followers and commenters. It’s honestly been insane.
BETA TEST! Nvm I have to devlog my final changes But lemme talk to those stardance reviewers real quick. Scroll down to see the endless content of my story, and all the community feedback (also on my youtube). Playing the game is a bit of a learning curve so you can watch my videos and stuff on it as well. I’d say watch this one: Boss Fight for the boss fight and maybe one of the other ones that you find interesting. Maybe this one because it has over 1,000 views and still climbing! The game is released there but it is windows only for now (i will release linux and maybe mac on the actual release game don’t worry but I’m super restricted for time right now) SKIP IF YOU’RE ON LINUX / MAC For everyone: Changes: Amended GameAudioManager to adjust for max voices which uses a List based system that appends and unappends. Boss fight also toggles and untoggles the game audio dependant on each audio source, because the game could currently have hundreds or even thousands of audio source which is really bad optimisation. So each audio source that I want to track has a ManagedAudioSource attached which automatically registers and unregisters itself from the GameAudioManager. I also edited the boss fight to make it a touch harder and amended the moves ;) And come and beta test NOWWW. leave all your comments, suggestions etc. on THE NEW DISCORD COMMUNITY!! or youtube, i’ll read it all and, again, thank you all for your support . I don’t know what to put as the image so here.
Thank you all so much for the support! Framework 12 is on it’s way (and this wait is painful). After 171 hours! 19.54x is actually insane and I appreciate it a lot. Join the Discord! I made a discord (click above) and i’ll give you all an early supporter role before I put it out on YouTube and stuff for the “wishlist” when the full game comes out (if you want to stay in touch after stardance is done. ALSO IF YOU COMMENTED WHILE THE GAME WAS STILL CALLED POCKET CITY DM ME ILL GIVE U A SPECIAL ROLE The game beta is still up and you can try it out Currently just doing some minor stuff to the game (Fixed some normal/easy mode not settings correct phases. B2 Bomber should destroy itself and stop the nuke siren once launched), and slowly adding a tutorial but I’m like 90% focused on revising for uni entrance exams
Ships:
Welcome to Capital Chaos! One of Stardance’s most awaited projects ;) (hopefully anyways) We’ve got chaos, a bunch of random events, a boss fight and so much more for you to explore. SKIP if you are on Linux/MacOS (or you can vote based on the videos - completely up to you) as I only have a windows executable for now. I am honestly super proud of this, and the community built around this game. I hope you enjoy it as well. There have been TONNES of challenges, such as pathfinding, the initial grid also seemed really daunting. To the vacancy count which was literally plaguing me for the past MONTH and got fixed today (it was one line… i know.. maybe I should have used AI). But besides, it’s a sick project. I hope you all love it. Unzip the file in the release and it should be good to go. READ THE README FOR INSTRUCTIONS AND CONTROLS!! THERE IS NO TUTORIAL Read the story, watch the videos if you can and just enjoy the game! It will be on steam in 8-9 months so maybe subscribe?...
|
1793951686.1158721
|
1794038086.1158721
|
|
34944
|
Peripheral Website by @sol4r_on_hackclub | Stardan Peripheral Website by @sol4r_on_hackclub | Stardance...
|
sol4r_on_hackclub
|
1
|
1.0
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-14T08:52:56Z", "hours": 1.0, "multiplier": 1.82, "payout": 2, "blessing": "neutral", "text": "I created a nice modern website for my IBM work experience group project. The website itself was made solely by me, but the designs and stuff were AI generated. It actually has a semi-functional front-end checkout and stuff.", "repo": "https://github.com/Sol4rOnGit/peripheral-website", "demo": "https://peripheral-website-eta.vercel.app/"}]...
|
[{"post_id": 28157, "ts": "202 [{"post_id": 28157, "ts": "2026-07-14T08:46:51Z", "hours": 1.2311, "text": "The worst devlog I’ve made Last week, I had a work experience placement @ IBM (Cool init) We had a group project and I created a website for it. I was told to put this on stardance by my friends i’m sorry for whoever reviewing this mb for wasting your time."}]...
|
Title: Peripheral Website by @sol4r_on_hackclub | Title: Peripheral Website by @sol4r_on_hackclub | Stardance
Devlogs:
The worst devlog I’ve made Last week, I had a work experience placement @ IBM (Cool init) We had a group project and I created a website for it. I was told to put this on stardance by my friends i’m sorry for whoever reviewing this mb for wasting your time.
Ships:
I created a nice modern website for my IBM work experience group project. The website itself was made solely by me, but the designs and stuff were AI generated. It actually has a semi-functional front-end checkout and stuff....
|
1793858059.7617817
|
1793944459.7617817
|
|
37350
|
Math Society Website by @sol4r_on_hackclub | Stard Math Society Website by @sol4r_on_hackclub | Stardance...
|
sol4r_on_hackclub
|
0
|
4.02
|
0
|
[]
|
[{"post_id": 31392, "ts": "202 [{"post_id": 31392, "ts": "2026-07-19T18:38:11Z", "hours": 4.0183, "text": "Microsoft Authentication + Firestore DB I’m currently working on my school website, which I decided to completely recreate and make it run for free indefinitely instead of just carrying on maintenance from the previous year because I had the know how and talent I guess to do so. But I can’t be asked to deal with frontend. Designed something up in figma, sent it over to claude and let it cook. It actually did a decent job although touch ups were required. (But if you’re new to frontend do NOT do this - learn it first) I’m mostly learning about the dev environment here, and if I really would enjoy the vibe and stuff. Also learning how to use git branches and collaborate with other devs, so this is pretty cool and a really new experience for me for the first time in like 10 years. So below you can check out the old prod [here](UCGS Maths Society). This is very maintainer design oriented, and I feel like this is the closest I’ve been to real production environments. +3-4 hours working on firebase + azure"}]...
|
Title: Math Society Website by @sol4r_on_hackclub Title: Math Society Website by @sol4r_on_hackclub | Stardance
Devlogs:
Microsoft Authentication + Firestore DB I’m currently working on my school website, which I decided to completely recreate and make it run for free indefinitely instead of just carrying on maintenance from the previous year because I had the know how and talent I guess to do so. But I can’t be asked to deal with frontend. Designed something up in figma, sent it over to claude and let it cook. It actually did a decent job although touch ups were required. (But if you’re new to frontend do NOT do this - learn it first) I’m mostly learning about the dev environment here, and if I really would enjoy the vibe and stuff. Also learning how to use git branches and collaborate with other devs, so this is pretty cool and a really new experience for me for the first time in like 10 years. So below you can check out the old prod [here](UCGS Maths Society). This is very maintainer design oriented, and I feel like this is the closest I’ve been to real production environments. +3-4 hours working on firebase + azure...
|
1793569795.4156594
|
1794174595.4156594
|
|
50585
|
Capital Chaos Website by @sol4r_on_hackclub | Star Capital Chaos Website by @sol4r_on_hackclub | Stardance...
|
sol4r_on_hackclub
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Capital Chaos Website by @sol4r_on_hackclub Title: Capital Chaos Website by @sol4r_on_hackclub | Stardance...
|
1793948009.524927
|
1794812009.524927
|