|
540
|
Uncertain decisions by @brunodevdrums | Stardance
|
brunodevdrums
|
1
|
2.0
|
3
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-01T13:07:24Z", "hours": 2.0, "multiplier": 1.58, "payout": 3, "blessing": "neutral", "text": "I created a website where you receive a random answer to your question. This time, I challenged myself to do this by creating an API written in Python, something simple that fulfills your idea. It was somewhat challenging because I’m not yet 100% comfortable working with fetch() in JavaScript, so this also helped me strengthen my knowledge in that area.", "repo": "https://github.com/BrundevCoder/decisions", "demo": "https://brundevcoder.github.io/decisions/"}]...
|
[{"post_id": 130, "ts": "2026- [{"post_id": 130, "ts": "2026-05-31T21:44:42Z", "hours": 0.8611, "text": "I just finished my project! Here’s what I updated: The API was created using Python, and I deployed it using Render. I connected the API to JS. I added the README. I also added a notice to the website because, unfortunately, it will be temporarily “disabled” if nobody uses it for a while :( I hope you like my project!"}, {"post_id": 118, "ts": "2026-05-31T20:37:10Z", "hours": 0.4117, "text": "I’ve finished the HTML and CSS, and I’ve already prepared the JavaScript to receive my API, which I still need to create!"}, {"post_id": 112, "ts": "2026-05-31T19:41:57Z", "hours": 0.4342, "text": "I’ve already started working on the site’s foundation, the HTML and CSS. I’m trying to create a minimalist and pleasing design, and for the main font, I chose “Prompt,” imported directly from Google Fonts."}]...
|
Title: Uncertain decisions by @brunodevdrums | Sta Title: Uncertain decisions by @brunodevdrums | Stardance
Devlogs:
I’ve already started working on the site’s foundation, the HTML and CSS. I’m trying to create a minimalist and pleasing design, and for the main font, I chose “Prompt,” imported directly from Google Fonts.
I’ve finished the HTML and CSS, and I’ve already prepared the JavaScript to receive my API, which I still need to create!
I just finished my project! Here’s what I updated: The API was created using Python, and I deployed it using Render. I connected the API to JS. I added the README. I also added a notice to the website because, unfortunately, it will be temporarily “disabled” if nobody uses it for a while :( I hope you like my project!
Ships:
I created a website where you receive a random answer to your question. This time, I challenged myself to do this by creating an API written in Python, something simple that fulfills your idea. It was somewhat challenging because I’m not yet 100% comfortable working with fetch() in JavaScript, so this also helped me strengthen my knowledge in that area....
|
1792979468.9488485
|
1793065868.9488485
|
|
543
|
ICare by @SilentSword | Stardance
|
SilentSword
|
1
|
63.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T07:36:22Z", "hours": 63.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "ICare is an eye break reminder app that FORCES you to take your breaks, and not just that, it adapts to YOUR needs. Overlay warnings, notifications, dark/light theme, automatic start, idle detection, Fullscreen detection, meeting trackers and more! ICare has them all. It started with my eye doctor telling me to start using the 20/20/20 rule, but it was hard to keep consistency, so I started building an app, and then added a new feature, and another one, and so on until we are here XD! I strongly recommend you read the readme file from GitHub, I explained everything in depth there. IMPORTANT - WINDOWS 10/11 ONLY", "repo": "https://github.com/SilentSword123456/ICare", "demo": "https://github.com/SilentSword123456/ICare/releases/latest"}]...
|
[{"post_id": 71035, "ts": "202 [{"post_id": 71035, "ts": "2026-09-20T07:25:47Z", "hours": 2.3283, "text": "Hi there, I realized that I won’t have enough time to build all the features I want for ICare, so I updated the readme, polished some things, temporarily disabled the AppsView since it still needs a lot of work on animations and other stuff, and I’m ready to ship!"}, {"post_id": 58216, "ts": "2026-08-30T16:00:39Z", "hours": 9.3022, "text": "Okkkkkkkay. I finally finished making two more views and linked the logic of the app groups/folders with their specific rules to the actual app timer. Even though the GUI isn’t pretty to look at, I just focused on getting it working. I did a terrific job at sniping all the bugs (took me 9h man😭😭), but I did also use a Claude’s help when I couldn’t find the root cause. The core ideea of the app works right now, what I do have left is fixing the UI for the newly added views (i have a LOT of work to do here) and implementing the rest of the “small” features I have in mind. Right now, it’s not pleasant to look at, but this is not what this devlog is about, it’s about the functionality I added to the app. To explain it in more detail, you can now create groups/folders with different apps inside of them and different rules applied for each group , meaning that if you don’t want the app to track the time you spend in let’s say Slack and other messaging apps, you can create a folder with that rule, and thats it. There are still bugs, like it not saving its config file 100% of the time or the fact that you can’t delete folders, or that you can add an app to multiple folders, etc… But I was getting close to the 10h mark and I had to post a devlog. See ya next time!"}, {"post_id": 55676, "ts": "2026-08-27T17:15:36Z", "hours": 3.0956, "text": "Holla dear readers! In this devlog I’m happy to announce that I finally added tests to the app, and they are great, they helped me debug much faster, and that’s not the only feature I added. But by far the most important feature added is that now the break warning will also be displayed if there is currently a full screen app opened, which might be the most important feature of the hole app. As you can see in the screenshot below, I modified the break overlay warning message box to be a floating island with a see trough background with rounded corners! Also, when it gets down to 3 seconds, the timer turns red , and I’m super happy with how it turned out! That’s it for this devlog, enjoy the new version!"}, {"post_id": 49818, "ts": "2026-08-18T19:21:11Z", "hours": 9.6128, "text": "Hi there, I’m writing this from my laptop since the PC is used right now, I hope the recording still looks smooth :) I took a break for a few weeks; therefore, I don’t remember what the first few hours of this devlog went into, I recon I might have just fixed some bugs I found while using the app. Buuuuuuut I do know the latest feature I’ve been working on, right now it’s just a menu with the apps installed (almost all), and the target functionality is to be able to create multiple apps groups in which the app will either just pause or alert you with a message similar to the meeting overlay. While implementing this new window, I learned about ObservableCollection and ListBox s, which were new concepts to me, but I love how they nicely combine together. For the ObservableCollecton specifically, I created a new data model called InstalledApp, which has a Name, a ExePath and an Icon field. After hitting random bugs, such as the view (an ListCollectionView ) not being initialized fast enough, I finally got a bare-bones version working. It’s ugly, it’s messy, but I’m hitting the 10h mark and I have to write this devlog."}, {"post_id": 29652, "ts": "2026-07-16T18:34:43Z", "hours": 3.4758, "text": "Holla, I’ve been working on a kind of useless bug that took me a long time to fix. The problem was that when the app was enabled to start automatically, you could still disable it from task manager. The bad thing is, I had no way of knowing if it was enabled or disabled from task manager, so I build one, and after that, I wanted a way to get notified when the user changed the disabled/enabled state, so I used a function named RegNotifyChangeKeyValue witch I’ve configured to notify the app when ICare’s state changed. I created a hole separate class for that named AutostartWatcher.cs, and it works flawlessly! Thanks for reading!"}, {"post_id": 29347, "ts": "2026-07-16T07:18:02Z", "hours": 8.2497, "text": "Hy there, I implemented two major things, those being a dark theme and an actual installer and updater. The dark theme: For this, I created two xaml files with the same SolidColorBrush names but with different colors, then I used ResourceDictionary and MergedDictionaries to change the current used file for the theme. After this I had to play with the color values because apparently you have to have layers to your app and yeah, it was a long and boring process of running the app, thinking if it needs to be darker or lighter, then going to the color picker and changing the value accordantly, then copying that into the program and repeating, but it worked! To make the title bar change color I found out that you need to import some of those weird libraries, again. I don’t understand every part of that function, but it does work. To change the theme, I removed the custom message box from settings and replaced it with a light/dark toggle for the theme. The installer and updater: For this, I used Velopack, which is great! It doesn’t require admin to install, it also has an updater, and it just works! Unfortunately, for the GitHub build action, I had no ideea how to write it, so just used Claude to do it for me, but that’s not really part of the app so it’s ok (I think?). Then, I wanted to have a way for the user to update the app with some confirmation things, because before I just had one button that you clicked, it shows no progress, and if it did find an update it would immediately restart the app, no questions asked. Now, in the bottom right of settings, there is some text that acts like a button which has all the states from let’s say no update found to ready to download to ready to install and more. That’s pretty much it, thanks for reading!"}, {"post_id": 26803, "ts": "2026-07-11T20:06:42Z", "hours": 7.1014, "text": "Dear reader, thank you for reading. I promise this devlog is gonna be fun to read trough. The biggest utility change is that the timer now pauses when the screen goes to sleep. To do this, I had to use some low-level hooks that I’m not a master in, but it was fun to use them and debug the errors. Then I wandered about how I could make the app report errors it had back to me while also putting YOUR 🫵 privacy on the first place. I found Sentry, an app which has a more than enough free plan for this use case. What Sentry does it’s that it collects all the errors and stores them in one dashboard, along with many other features. The setup was fairly simple; it wasn’t that big of a hustle. Next, I also added a darker picture for the background for when the pc is in dark mode so that you don’t get flash banged when a break suddenly starts and its 3am. To choose the correct picture, it checks a specific value from a specific path where Windows keeps the current theme. Here I had a problem with memory leak which required more debugging because the images were being kept in memory, twice, and they would also get deleted after each use? It was a mess, but now its fixed. The last change is in the UI. I decided to keep ICare at a fixed size so that the layout is more consistent, and then I adapted the Settings view to the new dimensions. Thank you so much for staying! I’m sure I have a long way to go until ICare reaches a reasonable standard, but I hope you had fun reading through my journey. Thanks again! P.S: You can show me that you’re interested in this by just leaving a like on this devlog and it will make me happy to know that someone read it!"}, {"post_id": 22053, "ts": "2026-07-04T09:34:51Z", "hours": 2.8311, "text": "Hello there, I added a few features that I needed while I was using ICare, and those being a nice background because the black one was just too basic and the timer stopping when the screen goes to sleep or when I lock the pc. To know when the pc went to sleep or the user locked the pc, I attached a listener to a SystemEvents thing, I don’t really know what it is, and now it constantly checks for SessionLock and SessionUnlock and pauses and starts the timer accordantly. For the pausing and starting the timer, I have redone its logic. Now, instead of calculating the exact time the break should start I use a stopwatch to track how much time has passed and when it reaches the desired time it triggers the break. It wasn’t easy because I runed into many bugs where, for example, it would just instantly start the break once the app launched and many such errors, but the latest version works flawlessly! Thanks for reading! Consider leaving a like or a comment if you enjoyed this devlog q(≧▽≦q)!"}, {"post_id": 17587, "ts": "2026-06-28T13:22:58Z", "hours": 3.1553, "text": "Holla, I worked on some core features but also some little improvements. The biggest change is that the app can now automatically start and this is a togglable feature from the settings with also has a nice toggle. It wasn’t hard to implement it science there is already api for it and all I had to do is create some basic functions to use it. Next, I added dismiss buttons in the notification for 5 and 10 minutes respectively. I also fixed the bug where when dismissing the break, it would only add the minutes to the visual timer, but it wouldn’t actually dismiss the break. Also, I figured that the break message and the countdown timer during the blackout (the break) was a bit distracting, so now only the primary monitor has the break message and the countdown, the rest are just blacked out. I added some small coloring touches to the Work time and the Break time, and they now look so much better. The final feature I added is a warning when the break time is smaller than the worktime; I figured that if you work or game or just use your computer for 60min, you should take a 60sec break, so for every X minutes of screentime you should take at least X seconds of break, so now that’s what the break message says. Thank you for reading, I appreciate all feedback! Bye!"}, {"post_id": 16424, "ts": "2026-06-26T18:37:55Z", "hours": 3.3353, "text": "Hey there! I have been working on quality-of-life improvements, such as adding a nice visual indicator when the next break is skipped by making the timer red, adding dismiss buttons to the notification, making the hotkey field automatically register the key pressed and adding the option to write a custom break message. Behind the scenes I also made some quality-of-life changes to the codebase. Now the configuration autosaves after each change, so I don’t need to worry about losing the config, and thats the only big change to the codebase. Im also proud to report that now the icon is also present on the notification, which is a small but important and elegant addition😆 Now I want to focus on making the app automaticly start on user login and figuring out how to properly install it on the computer."}, {"post_id": 4359, "ts": "2026-06-07T17:32:16Z", "hours": 6.6033, "text": "I decided that python wasn’t going to cut it anymore, so I decided to learn some basic C# (I was already pretty familiar with cpp, so it wasn’t that hard) and build the program in C#. It was so much fun, and it was also simpler, because it was VERY, VERY easy with C# to do a lot of things that with python required me to use a backdoor or something. I used Rider from IntelliJ to create my project that is using WPF, a thing for designing windows apps so easily. I also used some templates I found online to just get it working (and ok, I’m guilty, I used AI for the math on the circle, and good thing I did because I have no idea how that math works) and then tried to get them working together. For the notification, well, I almost committed a crime while coding it (for legal reasons, this is a joke(●’◡’●) ) because there is always a catch with windows APIs. Either I couldn’t have a button on the notification, or I had to have a notification manager instance (or something similar, I don’t remember), or I just needed to install yet another library for it. Fortunately, it worked! It doesn’t have an icon, don’t even get me started on the icon because I don’t want to break my computer😭. Anyway, for the keyboard handler, I was blessed enough to find a template on the web for it (apparently it is standard to do it that way), and I just got it, tweaked it a little bit, and it worked! The rest just went smoothly, with a bug here… a bug there… but it worked! It works and I’m so happy! I kind of want to improve the design of the dashboard a little bit, because even though it’s clean, it still could use a little work. And if u got here, ayyy, thank you for reading. Just comment something, anything, it would make me so happy to know someone else read this whole thing! Thank you!"}, {"post_id": 3380, "ts": "2026-06-06T08:45:00Z", "hours": 0.8103, "text": "Hi there! I worked a little bit on the app and added two core features: a Config class and a way to make the program launch as admin every time. I made the config class generate a file named config.json to store all the data, and I made a function to read the data from it. I also added setters for the current hotkey, break time, work time and other fields, and it worked after fixing a few bugs. Then I focused on the program launching as admin, for which I created two new functions, one to check if the program is already running as admin (which uses a long command to check it, I found it online) and another big command to relaunch the script with admin privileges(witch I also found online). Everything works well as shown in the video!"}, {"post_id": 310, "ts": "2026-06-01T15:57:53Z", "hours": 0.4147, "text": "I added support to skip the break with a hotkey combination “Ctrl+Shift+S”. I also used a library I found online for this, and it works! I’m so happy with how this is coming together!"}, {"post_id": 289, "ts": "2026-06-01T15:07:51Z", "hours": 0.4244, "text": "I added a function to send notifications so that you can dismiss the break if you’re in a meeting or in the middle of a game. It was actually the most fun part of the program! I sed a library with a weird name I found online; win11toast. Then all I had to do is to call a method, and then questioning reality because the on_click method didn’t work, but now it does! I even added an icon to the notification! I LOVE IT!"}, {"post_id": 274, "ts": "2026-06-01T14:35:56Z", "hours": 0.6642, "text": "I made the black screen work. I used a fancy library called tkinter to create a black screen on every monitor, and to get all the monitors I used the screeninfo library. Then I looped trough every screen and added a new window to it using that tkinter class. After this, I created two methods that block and unblock some keys on the keyboard, specifically the win key, the alt key and the control key so that you can’t exit the screen and cheat your way through the break"}, {"post_id": 263, "ts": "2026-06-01T13:42:16Z", "hours": 0.305, "text": "I improved the time tracking feature. I noticed that it before it was always ~1 second late and stacked up the more time it had to track. Now I’m using time.time() function to keep track of the exact start time so that it’s always exact, compared to waiting 1 second and incrementing a counter"}, {"post_id": 209, "ts": "2026-06-01T08:33:42Z", "hours": 1.2725, "text": "I got started by creating the GitHub repo, creating the IntelliJ project, then creating multiple .py files to separate their functionalities clearly. I had to search and learn how to use the threading class, which is pretty complicated in my option, but it works, and you know what they say: “If it works, don’t touch it”. Then I found a closed eye icon on the internet and used it as the ico for the systemtray. For now, it’s just in cli, but after I make the blackout screen work, I’m going to add a nice gui."}]...
|
Title: ICare by @SilentSword | Stardance
Devlogs: Title: ICare by @SilentSword | Stardance
Devlogs:
I got started by creating the GitHub repo, creating the IntelliJ project, then creating multiple .py files to separate their functionalities clearly. I had to search and learn how to use the threading class, which is pretty complicated in my option, but it works, and you know what they say: “If it works, don’t touch it”. Then I found a closed eye icon on the internet and used it as the ico for the systemtray. For now, it’s just in cli, but after I make the blackout screen work, I’m going to add a nice gui.
I improved the time tracking feature. I noticed that it before it was always ~1 second late and stacked up the more time it had to track. Now I’m using time.time() function to keep track of the exact start time so that it’s always exact, compared to waiting 1 second and incrementing a counter
I made the black screen work. I used a fancy library called tkinter to create a black screen on every monitor, and to get all the monitors I used the screeninfo library. Then I looped trough every screen and added a new window to it using that tkinter class. After this, I created two methods that block and unblock some keys on the keyboard, specifically the win key, the alt key and the control key so that you can’t exit the screen and cheat your way through the break
I added a function to send notifications so that you can dismiss the break if you’re in a meeting or in the middle of a game. It was actually the most fun part of the program! I sed a library with a weird name I found online; win11toast. Then all I had to do is to call a method, and then questioning reality because the on_click method didn’t work, but now it does! I even added an icon to the notification! I LOVE IT!
I added support to skip the break with a hotkey combination “Ctrl+Shift+S”. I also used a library I found online for this, and it works! I’m so happy with how this is coming together!
Hi there! I worked a little bit on the app and added two core features: a Config class and a way to make the program launch as admin every time. I made the config class generate a file named config.json to store all the data, and I made a function to read the data from it. I also added setters for the current hotkey, break time, work time and other fields, and it worked after fixing a few bugs. Then I focused on the program launching as admin, for which I created two new functions, one to check if the program is already running as admin (which uses a long command to check it, I found it online) and another big command to relaunch the script with admin privileges(witch I also found online). Everything works well as shown in the video!
I decided that python wasn’t going to cut it anymore, so I decided to learn some basic C# (I was already pretty familiar with cpp, so it wasn’t that hard) and build the program in C#. It was so much fun, and it was also simpler, because it was VERY, VERY easy with C# to do a lot of things that with python required me to use a backdoor or something. I used Rider from IntelliJ to create my project that is using WPF, a thing for designing windows apps so easily. I also used some templates I found online to just get it working (and ok, I’m guilty, I used AI for the math on the circle, and good thing I did because I have no idea how that math works) and then tried to get them working together. For the notification, well, I almost committed a crime while coding it (for legal reasons, this is a joke(●’◡’●) ) because there is always a catch with windows APIs. Either I couldn’t have a button on the notification, or I had to have a notification manager instance (or something similar, I don’t remember), or I just needed to install yet another library for it. Fortunately, it worked! It doesn’t have an icon, don’t even get me started on the icon because I don’t want to break my computer😭. Anyway, for the keyboard handler, I was blessed enough to find a template on the web for it (apparently it is standard to do it that way), and I just got it, tweaked it a little bit, and it worked! The rest just went smoothly, with a bug here… a bug there… but it worked! It works and I’m so happy! I kind of want to improve the design of the dashboard a little bit, because even though it’s clean, it still could use a little work. And if u got here, ayyy, thank you for reading. Just comment something, anything, it would make me so happy to know someone else read this whole thing! Thank you!
Hey there! I have been working on quality-of-life improvements, such as adding a nice visual indicator when the next break is skipped by making the timer red, adding dismiss buttons to the notification, making the hotkey field automatically register the key pressed and adding the option to write a custom break message. Behind the scenes I also made some quality-of-life changes to the codebase. Now the configuration autosaves after each change, so I don’t need to worry about losing the config, and thats the only big change to the codebase. Im also proud to report that now the icon is also present on the notification, which is a small but important and elegant addition😆 Now I want to focus on making the app automaticly start on user login and figuring out how to properly install it on the computer.
Holla, I worked on some core features but also some little improvements. The biggest change is that the app can now automatically start and this is a togglable feature from the settings with also has a nice toggle. It wasn’t hard to implement it science there is already api for it and all I had to do is create some basic functions to use it. Next, I added dismiss buttons in the notification for 5 and 10 minutes respectively. I also fixed the bug where when dismissing the break, it would only add the minutes to the visual timer, but it wouldn’t actually dismiss the break. Also, I figured that the break message and the countdown timer during the blackout (the break) was a bit distracting, so now only the primary monitor has the break message and the countdown, the rest are just blacked out. I added some small coloring touches to the Work time and the Break time, and they now look so much better. The final feature I added is a warning when the break time is smaller than the worktime; I figured that if you work or game or just use your computer for 60min, you should take a 60sec break, so for every X minutes of screentime you should take at least X seconds of break, so now that’s what the break message says. Thank you for reading, I appreciate all feedback! Bye!
Hello there, I added a few features that I needed while I was using ICare, and those being a nice background because the black one was just too basic and the timer stopping when the screen goes to sleep or when I lock the pc. To know when the pc went to sleep or the user locked the pc, I attached a listener to a SystemEvents thing, I don’t really know what it is, and now it constantly checks for SessionLock and SessionUnlock and pauses and starts the timer accordantly. For the pausing and starting the timer, I have redone its logic. Now, instead of calculating the exact time the break should start I use a stopwatch to track how much time has passed and when it reaches the desired time it triggers the break. It wasn’t easy because I runed into many bugs where, for example, it would just instantly start the break once the app launched and many such errors, but the latest version works flawlessly! Thanks for reading! Consider leaving a like or a comment if you enjoyed this devlog q(≧▽≦q)!
Dear reader, thank you for reading. I promise this devlog is gonna be fun to read trough. The biggest utility change is that the timer now pauses when the screen goes to sleep. To do this, I had to use some low-level hooks that I’m not a master in, but it was fun to use them and debug the errors. Then I wandered about how I could make the app report errors it had back to me while also putting YOUR 🫵 privacy on the first place. I found Sentry, an app which has a more than enough free plan for this use case. What Sentry does it’s that it collects all the errors and stores them in one dashboard, along with many other features. The setup was fairly simple; it wasn’t that big of a hustle. Next, I also added a darker picture for the background for when the pc is in dark mode so that you don’t get flash banged when a break suddenly starts and its 3am. To choose the correct picture, it checks a specific value from a specific path where Windows keeps the current theme. Here I had a problem with memory leak which required more debugging because the images were being kept in memory, twice, and they would also get deleted after each use? It was a mess, but now its fixed. The last change is in the UI. I decided to keep ICare at a fixed size so that the layout is more consistent, and then I adapted the Settings view to the new dimensions. Thank you so much for staying! I’m sure I have a long way to go until ICare reaches a reasonable standard, but I hope you had fun reading through my journey. Thanks again! P.S: You can show me that you’re interested in this by just leaving a like on this devlog and it will make me happy to know that someone read it!
Hy there, I implemented two major things, those being a dark theme and an actual installer and updater. The dark theme: For this, I created two xaml files with the same SolidColorBrush names but with different colors, then I used ResourceDictionary and MergedDictionaries to change the current used file for the theme. After this I had to play with the color values because apparently you have to have layers to your app and yeah, it was a long and boring process of running the app, thinking if it needs to be darker or lighter, then going to the color picker and changing the value accordantly, then copying that into the program and repeating, but it worked! To make the title bar change color I found out that you need to import some of those weird libraries, again. I don’t understand every part of that function, but it does work. To change the theme, I removed the custom message box from settings and replaced it with a light/dark toggle for the theme. The installer and updater: For this, I used Velopack, which is great! It doesn’t require admin to install, it also has an updater, and it just works! Unfortunately, for the GitHub build action, I had no ideea how to write it, so just used Claude to do it for me, but that’s not really part of the app so it’s ok (I think?). Then, I wanted to have a way for the user to update the app with some confirmation things, because before I just had one button that you clicked, it shows no progress, and if it did find an update it would immediately restart the app, no questions asked. Now, in the bottom right of settings, there is some text that acts like a button which has all the states from let’s say no update found to ready to download to ready to install and more. That’s pretty much it, thanks for reading!
Holla, I’ve been working on a kind of useless bug that took me a long time to fix. The problem was that when the app was enabled to start automatically, you could still disable it from task manager. The bad thing is, I had no way of knowing if it was enabled or disabled from task manager, so I build one, and after that, I wanted a way to get notified when the user changed the disabled/enabled state, so I used a function named RegNotifyChangeKeyValue witch I’ve configured to notify the app when ICare’s state changed. I created a hole separate class for that named AutostartWatcher.cs, and it works flawlessly! Thanks for reading!
Hi there, I’m writing this from my laptop since the PC is used right now, I hope the recording still looks smooth :) I took a break for a few weeks; therefore, I don’t remember what the first few hours of this devlog went into, I recon I might have just fixed some bugs I found while using the app. Buuuuuuut I do know the latest feature I’ve been working on, right now it’s just a menu with the apps installed (almost all), and the target functionality is to be able to create multiple apps groups in which the app will either just pause or alert you with a message similar to the meeting overlay. While implementing this new window, I learned about ObservableCollection and ListBox s, which were new concepts to me, but I love how they nicely combine together. For the ObservableCollecton specifically, I created a new data model called InstalledApp, which has a Name, a ExePath and an Icon field. After hitting random bugs, such as the view (an ListCollectionView ) not being initialized fast enough, I finally got a bare-bones version working. It’s ugly, it’s messy, but I’m hitting the 10h mark and I have to write this devlog.
Holla dear readers! In this devlog I’m happy to announce that I finally added tests to the app, and they are great, they helped me debug much faster, and that’s not the only feature I added. But by far the most important feature added is that now the break warning will also be displayed if there is currently a full screen app opened, which might be the most important feature of the hole app. As you can see in the screenshot below, I modified the break overlay warning message box to be a floating island with a see trough background with rounded corners! Also, when it gets down to 3 seconds, the timer turns red , and I’m super happy with how it turned out! That’s it for this devlog, enjoy the new version!
Okkkkkkkay. I finally finished making two more views and linked the logic of the app groups/folders with their specific rules to the actual app timer. Even though the GUI isn’t pretty to look at, I just focused on getting it working. I did a terrific job at sniping all the bugs (took me 9h man😭😭), but I did also use a Claude’s help when I couldn’t find the root cause. The core ideea of the app works right now, what I do have left is fixing the UI for the newly added views (i have a LOT of work to do here) and implementing the rest of the “small” features I have in mind. Right now, it’s not pleasant to look at, but this is not what this devlog is about, it’s about the functionality I added to the app. To explain it in more detail, you can now create groups/folders with different apps inside of them and different rules applied for each group , meaning that if you don’t want the app to track the time you spend in let’s say Slack and other messaging apps, you can create a folder with that rule, and thats it. There are still bugs, like it not saving its config file 100% of the time or the fact that you can’t delete folders, or that you can add an app to multiple folders, etc… But I was getting close to the 10h mark and I had to post a devlog. See ya next time!
Hi there, I realized that I won’t have enough time to build all the features I want for ICare, so I updated the readme, polished some things, temporarily disabled the AppsView since it still needs a lot of work on animations and other stuff, and I’m ready to ship!
Ships:
ICare is an eye break reminder app that FORCES you to take your breaks, and not just that, it adapts to YOUR needs. Overlay warnings, notifications, dark/light theme, automatic start, idle detection, Fullscreen detection, meeting trackers and more! ICare has them all. It started with my eye doctor telling me to start using the 20/20/20 rule, but it was hard to keep consistency, so I started building an app, and then added a new feature, and another one, and so on until we are here XD! I strongly recommend you read the readme file from GitHub, I explained everything in depth there. IMPORTANT - WINDOWS 10/11 ONLY...
|
1793001178.0328083
|
1793087578.0328083
|
|
544
|
My first hackpad! by @D4LM | Stardance
|
D4LM
|
1
|
1.0
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-09T01:01:39Z", "hours": 1.0, "multiplier": 1.3, "payout": 1, "blessing": "neutral", "text": "I made my first hackpad! Challenging aspects: Done in Onshape instead of Fusion 360. Notes: Sadly I did not record everything I did in Lapse 😢", "repo": "https://github.com/D4LMwastaken/Hackpad", "demo": ""}]...
|
[{"post_id": 5299, "ts": "2026 [{"post_id": 5299, "ts": "2026-06-09T00:53:39Z", "hours": 0.5567, "text": "Made my First Hackpad!"}]...
|
Title: My first hackpad! by @D4LM | Stardance
Dev Title: My first hackpad! by @D4LM | Stardance
Devlogs:
Made my First Hackpad!
Ships:
I made my first hackpad! Challenging aspects: Done in Onshape instead of Fusion 360. Notes: Sadly I did not record everything I did in Lapse 😢...
|
1792997502.2180774
|
1793083902.2180774
|
|
562
|
Chess in Python Turtle 🐢 by @Mehmet | Stardance
|
Mehmet
|
1
|
7.0
|
80
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T21:01:01Z", "hours": 7.0, "multiplier": 12.05, "payout": 80, "blessing": "neutral", "text": "I built pure chess inside Python Turtle. The entire idea of making a fully fledged game in Python’s Turtle seemed absurd, but there is tangible proof now. I’m proud of how I handled the piece moving and square highlighting code snippets; those were really fun to work on. Here are some tests you can do to see if my project holds up: Try clicking outside the board to move a piece, and you’ll see that it doesn’t. Try moving a piece outside the board. Try moving kings to squares that opposing pieces see. Try double pushing pawns. Right now, I haven’t added en passant or castling, but a 99% fledged chess game inside Python Turtle is ready for you to play.", "repo": "https://github.com/SameRainbows/Python-Turtle-Chess", "demo": "https://github.com/SameRainbows/Python-Turtle-Chess/releases/tag/V1"}]...
|
[{"post_id": 8112, "ts": "2026 [{"post_id": 8112, "ts": "2026-06-13T15:19:39Z", "hours": 1.8964, "text": "Finally, I can say that I’ve built chess—fully fledged chess—in Python Turtle. I added check, checks, checkmates, and all the logic that makes them up. I also created a new function called has_legal_moves, which takes one parameter to see if the attacker is white. In total, I defined 11 functions back to back in the Python file. It seems funny, but that’s what was needed. Thank you, every1!"}, {"post_id": 7080, "ts": "2026-06-11T21:14:12Z", "hours": 0.5017, "text": "Added basic promotions when the pawns go to the opposite side (for now they default to only queen promotions, more coming soon) and right now started working on the final boss of chess programming… Checks and checkmates. Wish me luck!"}, {"post_id": 5677, "ts": "2026-06-09T15:40:24Z", "hours": 0.9253, "text": "Welcome back to my pit of inevitable doom, where I’m trying to build fully fledged chess inside pure Python turtle. This devlog is because I finally managed to get a glimpse of the sunlight and add the special moves and captures for pawns. Before right now, pawns could only move one step forward no matter the place, and they actually captured by going forward into the enemy. If you play chess, you know it’s not like that. I have now implemented the following: Two-step support for pawns going on their first move. Logic so that pawns cannot capture pieces directly in front of them. Support for pawns capturing pieces only on their front diagonals. Follow along if you want to see if I ever get out of this!!! :D"}, {"post_id": 2915, "ts": "2026-06-05T20:22:29Z", "hours": 0.9917, "text": "Added legal moves and support for the knight, king, rook and pawn. The bishop is on the way"}, {"post_id": 2776, "ts": "2026-06-05T16:03:50Z", "hours": 0.7839, "text": "Added coordinates for the chessboard with a new function called print_coordinates. I also added a bouncer function to check if a piece is trying to move to a square that has a piece of the same color. If it’s trying to capture its own piece, it doesn’t allow the move. I implemented this by creating a new function called is_legal_move."}, {"post_id": 2264, "ts": "2026-06-04T17:37:49Z", "hours": 1.1539, "text": "Created functions for repeated tasks."}, {"post_id": 980, "ts": "2026-06-02T19:18:29Z", "hours": 0.47, "text": "Making fully fledged chess inside Python Turtle."}]...
|
Title: Chess in Python Turtle 🐢 by @Mehmet | Stard Title: Chess in Python Turtle 🐢 by @Mehmet | Stardance
Devlogs:
Making fully fledged chess inside Python Turtle.
Created functions for repeated tasks.
Added coordinates for the chessboard with a new function called print_coordinates. I also added a bouncer function to check if a piece is trying to move to a square that has a piece of the same color. If it’s trying to capture its own piece, it doesn’t allow the move. I implemented this by creating a new function called is_legal_move.
Added legal moves and support for the knight, king, rook and pawn. The bishop is on the way
Welcome back to my pit of inevitable doom, where I’m trying to build fully fledged chess inside pure Python turtle. This devlog is because I finally managed to get a glimpse of the sunlight and add the special moves and captures for pawns. Before right now, pawns could only move one step forward no matter the place, and they actually captured by going forward into the enemy. If you play chess, you know it’s not like that. I have now implemented the following: Two-step support for pawns going on their first move. Logic so that pawns cannot capture pieces directly in front of them. Support for pawns capturing pieces only on their front diagonals. Follow along if you want to see if I ever get out of this!!! :D
Added basic promotions when the pawns go to the opposite side (for now they default to only queen promotions, more coming soon) and right now started working on the final boss of chess programming… Checks and checkmates. Wish me luck!
Finally, I can say that I’ve built chess—fully fledged chess—in Python Turtle. I added check, checks, checkmates, and all the logic that makes them up. I also created a new function called has_legal_moves, which takes one parameter to see if the attacker is white. In total, I defined 11 functions back to back in the Python file. It seems funny, but that’s what was needed. Thank you, every1!
Ships:
I built pure chess inside Python Turtle. The entire idea of making a fully fledged game in Python’s Turtle seemed absurd, but there is tangible proof now. I’m proud of how I handled the piece moving and square highlighting code snippets; those were really fun to work on. Here are some tests you can do to see if my project holds up: Try clicking outside the board to move a piece, and you’ll see that it doesn’t. Try moving a piece outside the board. Try moving kings to squares that opposing pieces see. Try double pushing pawns. Right now, I haven’t added en passant or castling, but a 99% fledged chess game inside Python Turtle is ready for you to play....
|
1792994131.9901175
|
1793080531.9901175
|
|
571
|
test project ? by @qcoral | Stardance
|
qcoral
|
1
|
27.1
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-01T14:46:25Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "testing ship", "repo": "https://github.com/hackclub/hackpad", "demo": ""}]...
|
[{"post_id": 38280, "ts": "202 [{"post_id": 38280, "ts": "2026-07-31T16:21:53Z", "hours": 25.0969, "text": "hihihih"}, {"post_id": 270, "ts": "2026-06-01T14:20:58Z", "hours": 2.0525, "text": "testing"}]...
|
Title: test project ? by @qcoral | Stardance
Devl Title: test project ? by @qcoral | Stardance
Devlogs:
testing
hihihih
Ships:
testing ship...
|
1792979557.2420874
|
1793065957.2420874
|
|
576
|
Ghost Proxy by @MH | Stardance
|
MH
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-08T18:08:58Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a proxy hub and game site.", "repo": "https://github.com/amazingcoder132/Ghost-Proxy", "demo": "https://amazingcoder132.github.io/Ghost-Proxy/"}]...
|
[{"post_id": 140, "ts": "2026- [{"post_id": 140, "ts": "2026-05-31T22:36:26Z", "hours": 0.3214, "text": "A Website that allows people to find games and proxies"}]...
|
Title: Ghost Proxy by @MH | Stardance
Devlogs:
A Title: Ghost Proxy by @MH | Stardance
Devlogs:
A Website that allows people to find games and proxies
Ships:
I made a proxy hub and game site....
|
1792975750.1550493
|
1793062150.1550493
|
|
594
|
man by @not-willem | Stardance
|
not-willem
|
1
|
2.0
|
4
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-03T01:53:07Z", "hours": 2.0, "multiplier": 1.83, "payout": 4, "blessing": "neutral", "text": "i made a silly game about a man kinda just testing this rn but yeah kinda fun game idk", "repo": "https://github.com/not-willem/man", "demo": "https://not-willem.github.io/man/"}]...
|
[{"post_id": 153, "ts": "2026- [{"post_id": 153, "ts": "2026-05-31T23:55:12Z", "hours": 0.8272, "text": "added picle falvoured water"}, {"post_id": 143, "ts": "2026-05-31T22:58:16Z", "hours": 0.2833, "text": "horray! now you can put down eggs but i still need to make it so you can stack them :/"}, {"post_id": 138, "ts": "2026-05-31T22:29:47Z", "hours": 0.6928, "text": "wowo he can move now :3"}, {"post_id": 129, "ts": "2026-05-31T21:35:32Z", "hours": 0.3486, "text": "gameplay peak"}]...
|
Title: man by @not-willem | Stardance
Devlogs:
ga Title: man by @not-willem | Stardance
Devlogs:
gameplay peak
wowo he can move now :3
horray! now you can put down eggs but i still need to make it so you can stack them :/
added picle falvoured water
Ships:
i made a silly game about a man kinda just testing this rn but yeah kinda fun game idk...
|
1792993882.730843
|
1793080282.730843
|
|
596
|
ai without ai by @lazerkat | Stardance
|
lazerkat
|
1
|
6.73
|
93
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-02T23:05:02Z", "hours": 6.0, "multiplier": 15.16, "payout": 93, "blessing": "neutral", "text": "I made an “ai” which can respond to simple questions using pre-written answers. I am proud of the time I spent writing it. I might update it more.", "repo": "https://github.com/betelguesestudios/coolrepoforstardance", "demo": "https://betelguesestudios.github.io/coolrepoforstardance/"}]...
|
[{"post_id": 1910, "ts": "2026 [{"post_id": 1910, "ts": "2026-06-04T04:12:43Z", "hours": 0.4253, "text": "268 q&a’s… people have asked it some… interesting things…"}, {"post_id": 1860, "ts": "2026-06-04T02:13:21Z", "hours": 0.3033, "text": "adding someone’s inputs :)"}, {"post_id": 1085, "ts": "2026-06-02T22:01:25Z", "hours": 0.4047, "text": "207 q&a’s….. very cool"}, {"post_id": 497, "ts": "2026-06-01T23:39:41Z", "hours": 0.3811, "text": "there are now 196 answers and questions. also miracle musical reference"}, {"post_id": 486, "ts": "2026-06-01T23:08:56Z", "hours": 0.4564, "text": "server has been set up for messages i haven’t made responses for"}, {"post_id": 466, "ts": "2026-06-01T22:29:37Z", "hours": 0.6047, "text": "more (many more) inputs :)"}, {"post_id": 167, "ts": "2026-06-01T02:26:13Z", "hours": 0.3389, "text": "added bro variants"}, {"post_id": 164, "ts": "2026-06-01T01:54:33Z", "hours": 1.0786, "text": "jumpscare part :3"}, {"post_id": 160, "ts": "2026-06-01T00:43:51Z", "hours": 0.3953, "text": "august 12 2036 the heat death of the universe (added lore)"}, {"post_id": 156, "ts": "2026-06-01T00:14:26Z", "hours": 0.5928, "text": "secret things you can say to it"}, {"post_id": 147, "ts": "2026-05-31T23:10:02Z", "hours": 0.3008, "text": "styling the page ( https://betelguesestudios.github.io/coolrepoforstardance/ )"}, {"post_id": 142, "ts": "2026-05-31T22:47:09Z", "hours": 0.5422, "text": "more answers to questions! there are now 67 answers :)"}, {"post_id": 133, "ts": "2026-05-31T22:02:33Z", "hours": 1.0258, "text": "adding tons of responses :)"}]...
|
Title: ai without ai by @lazerkat | Stardance
Dev Title: ai without ai by @lazerkat | Stardance
Devlogs:
adding tons of responses :)
more answers to questions! there are now 67 answers :)
styling the page ( https://betelguesestudios.github.io/coolrepoforstardance/ )
secret things you can say to it
august 12 2036 the heat death of the universe (added lore)
jumpscare part :3
added bro variants
more (many more) inputs :)
server has been set up for messages i haven’t made responses for
there are now 196 answers and questions. also miracle musical reference
207 q&a’s….. very cool
adding someone’s inputs :)
268 q&a’s… people have asked it some… interesting things…
Ships:
I made an “ai” which can respond to simple questions using pre-written answers. I am proud of the time I spent writing it. I might update it more....
|
1792990418.2554278
|
1793076818.2554278
|
|
615
|
Website Bio by @Sydney | Stardance
|
Sydney
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-21T22:46:37Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a website that tells you all about myself. A challenge I had was doing the repository correctly. I am proud that I think I did the repo correctly. And it’s pretty straight forward, you view the website and read the information.", "repo": "https://github.com/KatyKat9712/Personal-Website", "demo": "https://studio.code.org/projects/weblab2/110ed96b-6380-4024-b0eb-55b88d82579b"}]...
|
[{"post_id": 13386, "ts": "202 [{"post_id": 13386, "ts": "2026-06-21T22:40:41Z", "hours": 0.8211, "text": "I finished the website and made a repo! I hope I did the repo correctly!!"}, {"post_id": 1137, "ts": "2026-06-02T23:41:58Z", "hours": 1.1961, "text": "I’m adding to the home page right now, I just got a picture added."}]...
|
Title: Website Bio by @Sydney | Stardance
Devlogs Title: Website Bio by @Sydney | Stardance
Devlogs:
I’m adding to the home page right now, I just got a picture added.
I finished the website and made a repo! I hope I did the repo correctly!!
Ships:
I made a website that tells you all about myself. A challenge I had was doing the repository correctly. I am proud that I think I did the repo correctly. And it’s pretty straight forward, you view the website and read the information....
|
1792979295.835891
|
1793065695.835891
|
|
624
|
Fx InvoiceGenerator by @SupremeSamurai | Stardance
|
SupremeSamurai
|
1
|
9.86
|
96
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-26T15:56:24Z", "hours": 9.0, "multiplier": 10.29, "payout": 96, "blessing": "neutral", "text": "I made an invoice generator, which, after filling in the necessary details, generates an invoice that can be downloaded as well as printed directly after the generation.", "repo": "https://github.com/Arhan-fx/Fx-InvoiceGenerator", "demo": "https://fx-invoice-generator.vercel.app"}]...
|
[{"post_id": 55394, "ts": "202 [{"post_id": 55394, "ts": "2026-08-27T06:11:01Z", "hours": 0.8572, "text": "I have changed the appearance of the invoice generator to make it more simple and clean."}, {"post_id": 55093, "ts": "2026-08-26T15:23:46Z", "hours": 3.0283, "text": "Fixed some issues with the printing option; now I think it’s good to go! And there was an issue with tax calculation which I fixed too. And added a branding type thing too in the end of the invoice; initially, I was thinking to name it Ledger Studio, but at the last second before uploading Devlog #1, I decided to go with Fx. Arhan-fx is my GitHub, so why not keep its name fx invoicegenerator. And after this, I tried my best to make a login page where individual user can see their invoice history, and directly print or download them."}, {"post_id": 54945, "ts": "2026-08-26T11:17:08Z", "hours": 6.2683, "text": "I am making my very own invoice generator Fx InvoiceGenerator. So initially I was going to upload a devlog, but sadly hackatime was down at that moment. So after all this, I have successfully created the appearance of this website, which I tried my best to give an clean look. Currently, this thing is functional, but there are few bugs in pdf download and printing system. So after writing this devlog I am going to fix those and try some more features in it! If I like then I’ll make sure to upload another devlog with the updates, before shipping this project!"}]...
|
Title: Fx InvoiceGenerator by @SupremeSamurai | St Title: Fx InvoiceGenerator by @SupremeSamurai | Stardance
Devlogs:
I am making my very own invoice generator Fx InvoiceGenerator. So initially I was going to upload a devlog, but sadly hackatime was down at that moment. So after all this, I have successfully created the appearance of this website, which I tried my best to give an clean look. Currently, this thing is functional, but there are few bugs in pdf download and printing system. So after writing this devlog I am going to fix those and try some more features in it! If I like then I’ll make sure to upload another devlog with the updates, before shipping this project!
Fixed some issues with the printing option; now I think it’s good to go! And there was an issue with tax calculation which I fixed too. And added a branding type thing too in the end of the invoice; initially, I was thinking to name it Ledger Studio, but at the last second before uploading Devlog #1, I decided to go with Fx. Arhan-fx is my GitHub, so why not keep its name fx invoicegenerator. And after this, I tried my best to make a login page where individual user can see their invoice history, and directly print or download them.
I have changed the appearance of the invoice generator to make it more simple and clean.
Ships:
I made an invoice generator, which, after filling in the necessary details, generates an invoice that can be downloaded as well as printed directly after the generation....
|
1792878667.0532045
|
1793742667.0532045
|
|
633
|
Guess The Brainrot! by @Rezz | Stardance
|
Rezz
|
1
|
24.0
|
71
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-21T21:50:20Z", "hours": 24.0, "multiplier": 3.03, "payout": 71, "blessing": "neutral", "text": "GUESS THE BRAINROT! Before making this I did not even know basic syntax and I had a lot of problems because of jumping directly into a project rather than starting from basics. I had to understand as the tutorial went and in the end I was not confident in anything. So I decided to tear it apart and rebuild it. After trying it a few times I could not do anything so I lost hope and stopped working on it for more than a month. After that I decided to use AI as a teacher to explain whatever is in the code and help me understand all the concepts I need to know to understand my code. It gave me a lot of exercises to do as well as questions and after all that I can understand everything in the code and can make something like this again without needing a tutorial. Due to procrastination there were multiple times when I forgot what I had learned and had to re learn it, that being the reason for the amount of time spent on this project. A lot more time was spent trying to learn about the code than what has been logged. The tutorial was a basic quiz game but I decided to add multiple new features after I understood the code. I decided to turn this into an Italian Brainrot quiz because I has a few ideas I could use with it which I have implemented. I added images of each brainrot getting rid of the text based questions. (I had a lot of trouble with it as I had procrastinated a lot before it so I kept breaking the code instead of adding the image) I added audio to signify whether the answer selected was correct or not. I added completion sound which is customised based on how many questions the user answered correctly. I added the audio of each brainrot which plays whenever the user hover overs an option. ( I thought this would take a lot of time to do but surprisingly I ran into the least amount of trouble doing this.) Fixed the issue of overlapping sound and made sure sound stops playing as the hover stops. Deployed it on GitHub Pages. Added preloading of images and sounds because they were taking to long to load when deployed. It took a lot of effort for me as a complete beginner to make this and learn this. I hope everyone likes this project and can have a little laugh with it. I will not stop here and start a new project.", "repo": "https://github.com/KartikeyaMishra-Ark/Quiz-Game", "demo": "https://kartikeyamishra-ark.github.io/Quiz-Game/"}]...
|
[{"post_id": 51937, "ts": "202 [{"post_id": 51937, "ts": "2026-08-21T21:27:04Z", "hours": 2.4336, "text": "I have finally completed my FIRST EVER HTML, CSS and JavaScript project. I did not know much coding before this and in terms of those three languages I did not even know the Syntax. But now I can confidently say I can make a project like this. I have added audio for correct and incorrect answers. Completion audio customised based on correct and incorrect answers. Added all the audios of the brainrots which play when you hover over the option. Changed the entire theme from before to match the brainrot theme. I see so many people have uploaded such great projects in the amount of time I took to make a simple one like this. But in the future I won’t procrastinate like I did before. Started this project on 1st June and now September is almost here. If I had not skipped for one month I could have completed it in less than ten hours. But here I am finally completing my first ever project and I am really excited to see what you all think of it."}, {"post_id": 51128, "ts": "2026-08-20T17:01:39Z", "hours": 3.0467, "text": "Finally figured out how to add images. Added the images into my answer state so it fit neatly into my quiz question object. I ran into a problem where the images were too large and clipping out of the screen. Most of my time was spent trying to figure the CSS out to contain them all inside the img I made for them. Made it so that the entire container including the answers, question and all other elements adapt to fit the image so it doesn’t look weird if the image is too wide or too thin. Re made all the questions to match the new theme. Fixed a few CSS bugs I created while trying to fit the image in. Next step is going to be adding sounds whenever an answer is clicked. I plan on adding the sound of the correct brainrot. After that I will change the colours to match match the theme. Hopefully this project will be completed soon after months. I started this as soon as this event started. And because of my procrastination I am here. Thank you for reading!"}, {"post_id": 44492, "ts": "2026-08-10T09:18:10Z", "hours": 5.8814, "text": "Sad update. I procrastinated a lot and forgot everything I had learnt up to now. I just skimmed through my code and decided it would be a great idea to add images and sounds to the quiz and make it into something a little more unique than a generic quiz game. But because I procrastinated for an entire month I did not remember anything I did or learnt which led to me breaking the code instead of adding any features. Thankfully I had a commit so it’s not like I lost everything but I had to re learn everything which has taken away so many hours. My aim from this is to be able to retain all the things I learn and so I will try to do that. I was unable to add anything and instead wasted hours just breaking and failing to fix. I have done a lot of revision and have revised everything related to my javascript code. I have used artificial intelligence and made it act as a teacher to explain the code to me. It kind of does an amazing job at explaining concepts. Of course no code was written by AI as what is the point of spending hours to learn something just to have AI do it. I could do a few changes in the existing code of the tutorial and ship the project but I will not give up until the learn everything about what I did in the project and make it completely my own. And I will make sure I add images and sounds to it as well. Also for some reason the project has started displaying a folder instead of directly opening when I use live server I don’t know why this has happened. Maybe because I opened the previous folder as well.🤧"}, {"post_id": 28618, "ts": "2026-07-14T23:43:23Z", "hours": 5.235, "text": "Well it has been a while since the last devlog. I got a new device to work on. Anyways now I completed the javascript part of the quiz. It was very complicated as I am a beginner and I am sure I won’t be able to replicate most of it if I tried blindly. Still I am going to try because why not? This is the point of the event anyway. A lot of logic was written a lot of things were used which I could not understand. I ran into a lot of bugs because my dumb brain thought it was a good idea to use my own variables instead of following the tutorial. Try out different things instead of doing what the tutorial said. Now I have made the commit and am going to break it all up and try to see how much I understood. Main goal will be to at least redo the UI and use my own themes and give it my touch through CSS and then I will change the questions and answers to a different topic then I will try to break the javascript and fix it. This is a bad idea but praise git. EDIT:Just realised videos are not working in devlogs so replaced it."}, {"post_id": 2359, "ts": "2026-06-04T20:18:01Z", "hours": 2.6528, "text": "The CSS part is turning out to be way easier than the html part. Maybe because most of it is just styling choices but i learnt a lot from this. I learnt that the browsers by default have their own margins so you first have to universally erase it. Then i learnt about the “box-sizing: border box” thing which is used so that the browser doesn’t increase the size of the box when padding is added. Then i learnt that we use the flex display to place the box perfectly in the centre. Then i experimented with the newly found units like rem, vh and px. Then i followed the tutorial to make the screen in the screenshot which is way better than what only html had to offer. Then i used AI to explain to me why the code was written this way and all the thoughts behind the decisions made. After that i remade everything on my own to see if i could think the way i am supposed to. After that i have also made the other screens like the question page, result page, the answer containers and a lot more. I learnt to add transition effect for hovering and also learnt how to adjust the media according to the pixels available which are supposed to be used but according to the tutorial we will see them only after we move on to JS so i am looking forward to it. The parts i have not seen are not really solidified into my memory yet as i have not seen the results my inputs are producing so i will re write that part myself after i complete the JS part so that i am able to decide what the size of everything should be on my own as i will be able to visualise the size. I have properly done the first screen tho. Next devlog after completing the JS part. :0 EDIT: Just realised the vids are not working anymore so added a SS"}, {"post_id": 1331, "ts": "2026-06-03T08:36:44Z", "hours": 4.2744, "text": "So this is the first time i have ever tried html. My mistake was i jumped directly into projects without any basic learning of HTML because i knew basic coding already. But damn was i wrong, i had to use AI to help me understand each and every command used by the tutorial. Took me an hour just to follow along the tutorial while pausing and asking AI to explain what just happened. Then I tried to erase the code and remake it myself. After a full afternoon of trying i have finally understood the concept and what a developer is supposed to think step by step and i created the entire HTML part alone without the help of anything else and am finally confident i can remake this. Though i am yet to explore all that is possible as this is a very simple project. Gonna move on to CSS next and see what is it about. Hopefully I don’t spend as much time on it as i did with HTML with a code this small. Next devlog after completing the CSS portion. PS:It’s kinda embarrassing that i only have this to show after four hours of work(it was way more than four hours as this doesn’t count me searching the internet and asking AI for explanations). I uploaded it because the resources said that i should upload once every 3 or 4 hours and i had finally completed the html part so i thought this is the time."}]...
|
Title: Guess The Brainrot! by @Rezz | Stardance
D Title: Guess The Brainrot! by @Rezz | Stardance
Devlogs:
So this is the first time i have ever tried html. My mistake was i jumped directly into projects without any basic learning of HTML because i knew basic coding already. But damn was i wrong, i had to use AI to help me understand each and every command used by the tutorial. Took me an hour just to follow along the tutorial while pausing and asking AI to explain what just happened. Then I tried to erase the code and remake it myself. After a full afternoon of trying i have finally understood the concept and what a developer is supposed to think step by step and i created the entire HTML part alone without the help of anything else and am finally confident i can remake this. Though i am yet to explore all that is possible as this is a very simple project. Gonna move on to CSS next and see what is it about. Hopefully I don’t spend as much time on it as i did with HTML with a code this small. Next devlog after completing the CSS portion. PS:It’s kinda embarrassing that i only have this to show after four hours of work(it was way more than four hours as this doesn’t count me searching the internet and asking AI for explanations). I uploaded it because the resources said that i should upload once every 3 or 4 hours and i had finally completed the html part so i thought this is the time.
The CSS part is turning out to be way easier than the html part. Maybe because most of it is just styling choices but i learnt a lot from this. I learnt that the browsers by default have their own margins so you first have to universally erase it. Then i learnt about the “box-sizing: border box” thing which is used so that the browser doesn’t increase the size of the box when padding is added. Then i learnt that we use the flex display to place the box perfectly in the centre. Then i experimented with the newly found units like rem, vh and px. Then i followed the tutorial to make the screen in the screenshot which is way better than what only html had to offer. Then i used AI to explain to me why the code was written this way and all the thoughts behind the decisions made. After that i remade everything on my own to see if i could think the way i am supposed to. After that i have also made the other screens like the question page, result page, the answer containers and a lot more. I learnt to add transition effect for hovering and also learnt how to adjust the media according to the pixels available which are supposed to be used but according to the tutorial we will see them only after we move on to JS so i am looking forward to it. The parts i have not seen are not really solidified into my memory yet as i have not seen the results my inputs are producing so i will re write that part myself after i complete the JS part so that i am able to decide what the size of everything should be on my own as i will be able to visualise the size. I have properly done the first screen tho. Next devlog after completing the JS part. :0 EDIT: Just realised the vids are not working anymore so added a SS
Well it has been a while since the last devlog. I got a new device to work on. Anyways now I completed the javascript part of the quiz. It was very complicated as I am a beginner and I am sure I won’t be able to replicate most of it if I tried blindly. Still I am going to try because why not? This is the point of the event anyway. A lot of logic was written a lot of things were used which I could not understand. I ran into a lot of bugs because my dumb brain thought it was a good idea to use my own variables instead of following the tutorial. Try out different things instead of doing what the tutorial said. Now I have made the commit and am going to break it all up and try to see how much I understood. Main goal will be to at least redo the UI and use my own themes and give it my touch through CSS and then I will change the questions and answers to a different topic then I will try to break the javascript and fix it. This is a bad idea but praise git. EDIT:Just realised videos are not working in devlogs so replaced it.
Sad update. I procrastinated a lot and forgot everything I had learnt up to now. I just skimmed through my code and decided it would be a great idea to add images and sounds to the quiz and make it into something a little more unique than a generic quiz game. But because I procrastinated for an entire month I did not remember anything I did or learnt which led to me breaking the code instead of adding any features. Thankfully I had a commit so it’s not like I lost everything but I had to re learn everything which has taken away so many hours. My aim from this is to be able to retain all the things I learn and so I will try to do that. I was unable to add anything and instead wasted hours just breaking and failing to fix. I have done a lot of revision and have revised everything related to my javascript code. I have used artificial intelligence and made it act as a teacher to explain the code to me. It kind of does an amazing job at explaining concepts. Of course no code was written by AI as what is the point of spending hours to learn something just to have AI do it. I could do a few changes in the existing code of the tutorial and ship the project but I will not give up until the learn everything about what I did in the project and make it completely my own. And I will make sure I add images and sounds to it as well. Also for some reason the project has started displaying a folder instead of directly opening when I use live server I don’t know why this has happened. Maybe because I opened the previous folder as well.🤧
Finally figured out how to add images. Added the images into my answer state so it fit neatly into my quiz question object. I ran into a problem where the images were too large and clipping out of the screen. Most of my time was spent trying to figure the CSS out to contain them all inside the img I made for them. Made it so that the entire container including the answers, question and all other elements adapt to fit the image so it doesn’t look weird if the image is too wide or too thin. Re made all the questions to match the new theme. Fixed a few CSS bugs I created while trying to fit the image in. Next step is going to be adding sounds whenever an answer is clicked. I plan on adding the sound of the correct brainrot. After that I will change the colours to match match the theme. Hopefully this project will be completed soon after months. I started this as soon as this event started. And because of my procrastination I am here. Thank you for reading!
I have finally completed my FIRST EVER HTML, CSS and JavaScript project. I did not know much coding before this and in terms of those three languages I did not even know the Syntax. But now I can confidently say I can make a project like this. I have added audio for correct and incorrect answers. Completion audio customised based on correct and incorrect answers. Added all the audios of the brainrots which play when you hover over the option. Changed the entire theme from before to match the brainrot theme. I see so many people have uploaded such great projects in the amount of time I took to make a simple one like this. But in the future I won’t procrastinate like I did before. Started this project on 1st June and now September is almost here. If I had not skipped for one month I could have completed it in less than ten hours. But here I am finally completing my first ever project and I am really excited to see what you all think of it.
Ships:
GUESS THE BRAINROT! Before making this I did not even know basic syntax and I had a lot of problems because of jumping directly into a project rather than starting from basics. I had to understand as the tutorial went and in the end I was not confident in anything. So I decided to tear it apart and rebuild it. After trying it a few times I could not do anything so I lost hope and stopped working on it for more than a month. After that I decided to use AI as a teacher to explain whatever is in the code and help me understand all the concepts I need to know to understand my code. It gave me a lot of exercises to do as well as questions and after all that I can understand everything in the code and can make something like this again without needing a tutorial. Due to procrastination there were multiple times when I forgot what I had learned and had to re learn it, that being the reason for the amount of time spent on this project. A lot more time was spent trying to learn about the code than what has been logged. The tutorial was a basic quiz game but I decided to add multiple new features after I understood the code. I decided to turn this into an Italian Brainrot quiz because I has a few ideas I could use with it which I have implemented. I added images of each brainrot getting rid of the text based questions. (I had a lot of trouble with it as I had procrastinated a lot before it so I kept breaking the code instead of adding the image) I added audio to signify whether the answer selected was correct or not. I added completion sound which is customised based on how many questions the user answered correctly. I added the audio of each brainrot which plays whenever the user hover overs an option. ( I thought this would take a lot of time to do but surprisingly I ran into the least amount of trouble doing this.) Fixed the issue of overlapping sound and made sure sound stops playing as the hover stops. Deployed it on GitHub Pages. Added preloading of images and sounds because they were taking to long to load when deployed. It took a lot of effort for me as a complete beginner to make this and learn this. I hope everyone likes this project and can have a little laugh with it. I will not stop here and start a new project....
|
1792986471.9903495
|
1793072871.9903495
|
|
634
|
Dungen Escape 2 by @Ahmed_Gayipov | Stardance
|
Ahmed_Gayipov
|
1
|
5.0
|
10
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-01T22:55:08Z", "hours": 5.0, "multiplier": 2.01, "payout": 10, "blessing": "neutral", "text": "I am building a game like Tower Defense where you have 5 towers, you place your towers, upgrade them, and try not to let the enemy in.", "repo": "https://github.com/Cr7-is-the-best/Dungeon-Escape2", "demo": "https://github.com/Cr7-is-the-best/Dungeon-Escape2/releases/tag/Dungen-Escape2"}]...
|
[{"post_id": 20361, "ts": "202 [{"post_id": 20361, "ts": "2026-07-01T22:50:42Z", "hours": 5.1314, "text": "I am building a game like Tower Defense where you have 5 towers, you place your towers, upgrade them, and try not to let the enemy in."}]...
|
Title: Dungen Escape 2 by @Ahmed_Gayipov | Stardan Title: Dungen Escape 2 by @Ahmed_Gayipov | Stardance
Devlogs:
I am building a game like Tower Defense where you have 5 towers, you place your towers, upgrade them, and try not to let the enemy in.
Ships:
I am building a game like Tower Defense where you have 5 towers, you place your towers, upgrade them, and try not to let the enemy in....
|
1792878868.4043698
|
1793742868.4043698
|
|
637
|
A Mayor Game by @Ahmed_Gayipov | Stardance
|
Ahmed_Gayipov
|
1
|
10.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-26T18:03:38Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a game where you are the mayor and build a city where your residents work and pay taxes, and you upgrade your city to make it better.", "repo": "https://github.com/Cr7-is-the-best/Mayer-Similator", "demo": "https://city-builder-simulat-jjxk.bolt.host"}]...
|
[{"post_id": 16400, "ts": "202 [{"post_id": 16400, "ts": "2026-06-26T18:00:43Z", "hours": 10.1672, "text": "I made a game where you are the mayor and build a city where your residents work and pay taxes, and you upgrade your city to make it better."}]...
|
Title: A Mayor Game by @Ahmed_Gayipov | Stardance
Title: A Mayor Game by @Ahmed_Gayipov | Stardance
Devlogs:
I made a game where you are the mayor and build a city where your residents work and pay taxes, and you upgrade your city to make it better.
Ships:
I made a game where you are the mayor and build a city where your residents work and pay taxes, and you upgrade your city to make it better....
|
1792878849.3509147
|
1793742849.3509147
|
|
647
|
Space Travel by @Vishy | Stardance
|
Vishy
|
1
|
66.0
|
1260
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-25T22:55:07Z", "hours": 66.0, "multiplier": 19.04, "payout": 1260, "blessing": "neutral", "text": "Hello everyone, this is my first ship for Stardance, and let me introduce you to Space Travel. Space travel is an 2D game I have spent this whole month on creating. I have used tile maps, parallax 2D nodes, pixel art, and many features to create this game. Even though it is a work in progress and a test run for me I would like to congratulate my self on spending over 60 hours for a project. This is the longest I have ever spent on the project, and this is as complex as it gets. Some cool things I think would wow you guys are Parallax 2D nodes, theses give the background life, the make it look like the clouds are moving. Ray Casts, to create avalanches. In this game I have made many types of aliens for the user to battle. I am so proud of my self for finding the time to make this wonder full game. I have had people test it so I could polish it up for the first test run. I know it could be better, but I am planning on adding an Alien Universe. Users will have laser items, pick the planets to travel to, choose their character and much more. I am very motivated to continue this project and push it to it’s absolute max. This game features multiples levels, Level 1 (Earth) your goal is to escape the alien invasion you woke up to. Level 2 (Mars) you travel to an burning hot planet to find out more aliens live their, including goo types. Finally Level 3 (Neptune) you visit this icy place and find icicles, ice balls, avalanches, and ice bunnies waiting for you. This game took a lot of thought and time to create, as it is not as simple as it looks. The code was very complex as I had to calculate speed, and shooting distance (for the goo ball and ice balls). I am so glad I can share this hard worked project with you guys. I hope you enjoy it!", "repo": "https://github.com/fishygaminglife-del/Space-Travel", "demo": "https://fishyyyyyyy-life.itch.io/space-travel"}]...
|
[{"post_id": 15968, "ts": "202 [{"post_id": 15968, "ts": "2026-06-25T22:42:07Z", "hours": 2.2925, "text": "Finishing Up Hello everyone, I have been fixing bugs today and adding items I forgot. Examples are audio, bugs, end scene, making harder levels easier (I was the only one able to beat it) and make text clearer. Bugs Today, I fixed mainly bugs because I am going to ship right after this devlog (my work has payed off). First I am going to talk about the skipping text bug. When I do the dialogue at any part of the level/game, and then press esccape button, (pausing game/pausemenu) and then I press home inside the pause menu, the whole game crashes, and I just figured out why. When ever im doing text I call $MC.wait_for_skip() this is a function, and in the function it has await get_tree().process_frame the bug with this, is that when ever the text is running and wait_for_skip() is called it is waiting and calculating every single frame, so when the user presses home, the player is gone, and that process_frame was never finished, so the game bugs out and ends. Well to counter this, I didn’t really do anything. I am really busy right now, and am trying to make the game good for the first ship, as much as I want to work on this bug I have to set it aside. In short terms, I got rid of the home button. If the player wants to go home they have to close the game and open it (reload page). Bug Two For the second bug, it really confused me. When I restarted the game, and went through level one (keep in mind I only picked up one coin) and then went to the second level, it said I had 30 coins. I saw my error, and it was that I was manually setting it to 30 coins when the game starts, so I then set that value to 0, so user starts with no coins. I thought all was solved, but it now showed five hundred and forty seven coins. I looked closely in the save_game function. I saw that I had set global.coins (the coins for the whole game collected) to what ever was in the label. And it might seem okay, but the label had manually been set to five hundred and forty seven coins. I just delteded that line of code because whenever the player picks up coins, it automatically goes into the global variable, so there was no point in having that line (since it only bugged out the game). Audio I forgot about the audio/sound effects/ background music until the end of the game (today, since I am going to ship). Because of this I had to rush through it, and I am going to warn you, some of the audio in the game might sound… wonky. Anyways I recorded me making the audio, like an alien shooting, icicles falling, avalanches moving. I just realized while writing this devlog, in the game I misspelled avalanche, and I have already exported it and uploaded the game 😭. Difficulty I had some people test out my game, and they had alot of good feedback that I implemented today. I still have not done some of it, but that is for next time. First they said level 1 was harder than level 3. I tested it out but didn’t find any problem, I realize that I play this game everyday to test so it must be easy. I made the boss fight for level 1 easier so the user can get through. To do this, I made the goo rise slower, and added more stepping points on the ground. Then I was told level three’s avalanche was too slow. I had to manually change the speed, but this was easy since I had incorporated a ray cast into the avalanche."}, {"post_id": 15628, "ts": "2026-06-25T12:49:57Z", "hours": 4.1514, "text": "Adding Touches Hello everyone, it has been some time since I have devolved, and I want to talk about what I have been doing, some goals I have, and some deadlines. For the past few days I have not been shipping because I have been working on level 3. From the screenshot you might be able to see the avalanche and the map for the avalanche. So I fixed a bug with the icicle, so even if it touched the ground and then you touched it. You would lose a life. For the collision shape of the icicle whenever it touched the ground I did set_deffered(\"disabled\", true) so this would disabled it, and I would reenable it whenever it starts falling again. Also there was a bug where the aliens could shoot through walls, to solve that I just decreased the time pass value (time pass checks how long it has been running before it can do body checks) and kept time pass the same value for on enemy touched. Finally the avalanche, during the process of this I learned some pretty cool things. So the avalanche. This would be hard to animate, but apparently Godot has something for this. It is called a ray cast, and is brings the items with it down until a collision body. So what I did, is just like my alien script, I made it move right with speed * delta . And the ray cast handled itself, because it was down hill. I am still learning how to properly use a ray cast but for down hill situations I think I now know. When I was putting the animation for the space ship enter and leave. I wanted to reuse previous animations I have made. So I went to level 2 and realized I hadn’t finished it. But level 1 had it. This is where things get interesting, I brought out my calculator, duplicated the values into level 2 and 3, and subtracted the first keyframe from where I wanted the player to start. This allowed me to subtract 1454 from the X value and 104 from the Y value. So I did that for each of the key frames for both level 2 and 3 (keep in mind I wanted them in different places) and I had my animation finished. I tried adding a pause menu for when the player dies or pauses (esc) but I guess it didn’t turn out well it looks grainy and unprofessional, but I really need to ship, because I wont be available for the next few days and I can’t work on it. Future Items Before Ship Before I ship I want to add a few things that have been suggested. First of when testing it was realized that when the shield breaks, there was no pop up or anything indicating that it had broken. So I will have to now go and fix that. Second, I need to add sound. I always add sound at the end of the game, and I completely forgot to. Overall I think that this first ship will tell me a lot on what I have to work on for this game, I think I could do some better improvements if I wait some time then ship. But I think it will do great, and people will see the hard work I put into this game. Thankyou everyone!"}, {"post_id": 13452, "ts": "2026-06-22T01:06:27Z", "hours": 6.0436, "text": "Level 3 Major Changes Hello everyone, today was by far the most productive day I have ever had in all of star dance, and possibly previous Hackclub events I have done. I almost finished level 3 in one day! This was a massive accomplishment for me as for the other levels took at least 3 days to do. An overview of what I did today were, map, icicles, ice skates, new alien, asset placing, inside space ship scene, space ship traveling planet’s scene. New Features Ice Shooter Alien , First I want to talk about the ice shooter I made today. So for every new level, I always add a new alien, and while I was still working on level 2 I was contemplating what new features I should add to the game for level 3, and since I thought I should do an ice planet because I was on mars (fire) and earth (neutral), I thought I might want something cold then I thought of this planet Neptune (I don’t have planet names yet)! So today I made the Ice Shooter Alien , This alien shoots snow which slows the user down for 3 seconds. While the cool down is not slow, there is only a 1 in 10 chance the player looses health to the snow (a rock could be in it). Icicles , it was recommended to me to add icicles to the game since it is an icy biome and there should be some structural relation to the biome and features. So I just used an area 2d as the base structure, and just detected if it touches the player or something else (like the enemy or structure). To make this icicle fall, I couldn’t give it a character body then there would be gravity, and it would keep moving even if I stopped it, there is a way to work but I figured out an clever way. I subtracted the distance between itself and the player using position.x and subtracted to see if the player was in range, and if it was I was changing the position with speed and delta coming down. And I just reset it to the original position because in the ready script I assigned it the starting position. Ice Skates , Ice skates were actually pretty easy, I duplicated the players idle and movement assets, and redrew them to have skates on the bottom, and once the player buys skates from the shop I make has_skate = true then in the physics process whether the player is idle or moving, it changes the sprite sheet to the one with ice skates, and when I disable it, it goes back to the original sprite sheet with no skates. Overall I think I did so much today, I around an hour drawing the art for the spaceship this morning (both the scenes of changing worlds and inside spaceship) because I had to add a new section and duplicate move, and modulate the planets to look like a new space travel. I think tomorrow I should finish or get close to finishing level 3 because I have to create the boss fight. Thankyou, bye guys!"}, {"post_id": 12834, "ts": "2026-06-21T00:31:05Z", "hours": 5.2153, "text": "Level 2 & 3 Updates Hello everyone, I have alot to talk about, especially since I recently just finished level 2 and am starting on level 3. I still need Planet Names waiting for suggestions but so far I am just using analogies in my game like earth (this is going to be the real planet) mars and Neptune. This helps players understand and relate to the geography and climate of the planet. For example in the screen shot you see it is an icy artic place like the planet Neptune. Let’s get started and talk about today! Level 2 Bugs, I was not so lucky, this paragraph is about bugs and fixes, well I am not happy to say that my animations from my text animation player all deleted, and since I didn’t commit to GitHub for the day, when I restored it, all the changes I made went away… I had to remake everything that I changed, and I still have some bugs, but I forgot some items, so it is hard. But I mainly just fixed placement. When I came back home to Godot, some items were gone, some part of the tile map disappeared I had to put the tiles in the right spot, and the code was all messed up. I currently still have no idea what happened, but I fixed it all and I have not had bugs since. Today I got a suggestion to make a cutscene of the level 2 alien boss burning. As you guys know yesterday I changed the goo/lava color to white so I can manually modulate it in the editor because I am reusing assets (this makes it so easy for me 👍). Well now I made a cutscene of the alien boss burning, I would have had to redraw everything, but instead I duplicated the animated sprite (the alien boss in the cutscene) and modulated to low transparency and red, so it looks like the alien boss has a lava shadow. Level 3, Alright I know you guys saw the screen shot, so you saw the icy biome. I am now going to explain my ideas that I plan to add to level 3. First, Ice Shooters , hear me out. I recently added goo shooters to the game, and since this is artic biome ice shooters to slow the player down, and gradually decrease health if they don’t find heat could be an awesome idea! Second actual ice . There are going to be like ice pits/platforms when the player walks on, it is all slippery. And I also might add moving platforms, but these probably will be saved for level 4 but I am still deciding. Space Ship Scene As you guys know, after each level I make a cutscene/scene of the player in their alien spaceship. I think for this one (right after level 2) the player will explore more of the spaceship, and learn something about the aliens. I am still deciding but currently that is my ideas. If you guys have any suggestions feel free to recommend them. Thanks, bye guys !"}, {"post_id": 12264, "ts": "2026-06-20T00:59:37Z", "hours": 5.025, "text": "Level 2 Hello everyone, sit back and get ready for a long devlog, because today I have alot to talk about. Okay, so guys now we have finished level 2, it is fully completed, I just need to add one line of code (changing the scene to the right scene the next one) and then I am done and probably wont touch it. Since I have not devloged in a few days (I did little time and was busy) I will talk about alot of items which is basically what I did for the past few days. Shield Alright I really want to talk about the shield first. So if you guys watch the video you can see how the shield works. Obviously it doesn’t have the code, but I will talk about how I integrated it with the shop and how that works. So I have 2 items in my global script, shield enabled, and shield dead. If I go to the boss fight of my game (where the shield is not allowed and users dont get it) I say Global.shield_enabled = false . This allows me to set if the user can use the shield or not through out the game. And if you guys made games previously or used Godot, you know about func_process() this allows me to simultaneously run items. You might be wondering, how does this simultaneously running fuction affect the shield for the player, and why would I do this. Remember earlier when I used the Global shield enable to turn it on and off, well the process checks it and if it is false, then it makes the shield not visible and not work. I mainly was relying on this for the past few days, because I was working on the shield. I also used process to modulate and change the size of the shield bar shield durability based on how many hits the shield has taken and how many hits it can take, I divide it to get a percentage. I also added the feature that if the player dies, they lose the shield, for the player to get the shield back, they have to buy it again for 15 coins. I plan to add an animation at the beginning of the level showing the shield coming onto the player. The Shop If you guys saw in the video, you saw the shop is accessible from anywhere in the game. This was easy all I had to do was add a button with the shop icon, and make the shop items visible. But I also have to account for mobs aliens shooting the player while they are in the shop. Luckily godot has an in built function called get_tree().paused if I set this to true every item will become paused. But luckily I can set the shop node’s process mode to always so it works even when the game is paused. This solved my problem of the aliens shooting and moving while the player is in shop. Boss Fight If you guys didn’t know, for the past few days I have been working on the boss fight, I have not got enough time to finish it but today I finally finished it today! So in level one, there is a scene with the boss fight for goo rising, and now that is level 2 and the player is on mars I wanted lava. But I didn’t want to redraw it so I just modulated the goo (I now realize that was a bad idea). Because the goo was not originally white, the modulating color started green, so what ever I chose was darker and not the right color. So because of that I had to spend my time fixing the goo and changing it to white and grey. This way for my level 1 goo rise, I just modulate it to the goo green I want and for level 2 I modulate it for the lava. Also for the boss fight, I added it so the shield disappears when the player has to fight, and made the animations more clear. Anyways guys I think this game will turn out great, I am always looking for suggestions especially for level 3 , bye guys!"}, {"post_id": 11042, "ts": "2026-06-18T02:18:53Z", "hours": 2.3531, "text": "Level 2 Boss Fight Hello everyone, I am coming close to an end of my level 2 of Space Travel. So currently I have made the boss and am working on the animation and how the boss fight is, so first I am going to explain the logic, then I will talk about timelines and how I have acomplished, and third I will start the alien UNIVERSE So what I have done today was finish up the shop (I barley did anything to it) and I also worked on the alien. The first part of today I spent a good amount of time creating the alien boss, and it doesn’t even look good 😭, so I became demotivated for today and only did 2 and a half hours. But the day is not over yet, so much left to explain. To continue, I created the animations for this boss, such as the text, and the anime animations, but I am still not done and have not fully tested it so there are bugs, but I will try to fix it. So I think I am good on time, so far I have been trying to finish up 4 levels then ship. For level 1 was follow and static aliens (walk in place). Level 2 was goo spit shooting aliens. I have no idea what to do for level 3 and 4, I really appreciate any suggestions on new items/things to add🙏. Also to clarify my solar system ending (part 1 of game) the user will go back to earth for level 4 and dodge the hardest of items and talk to the alien knight, there would be some type of dialogue like “ I never wanted to do this…” And that will be the end of level 4, and that is part 1 which I would ship my project for the first time, looking at the time line, I probably will get 60 hours when I ship, I hope I do good. But I really appreciate any suggestions, but to conclude, I am working on level 2 boss right now, debugging and making the animations more smoother. For level 3 and 4 I will talk all suggestions . Thank you everyone, bye!"}, {"post_id": 10409, "ts": "2026-06-17T03:09:38Z", "hours": 4.5614, "text": "Level 2 Touches Hello everyone, I have done a lot to my game for Level 2 im almost done. I’ve basically been stacking a bunch of systems together and fixing a lot of the smaller problems I ran into over the last few devlogs (especially with goo, shields, and collisions), and it’s finally starting to feel like an actual full level instead of just a test area. Shop System Fully Finished First of all, I have finished the shop and now it is fully functional and actually works the way I wanted it to.You can now walk up to it and use it properly, and I added a lot of UI polish so it doesn’t feel dead or static. I added a hover function so when the mouse is over an item, it actually reacts (like spinning or doing a small animation), which makes it feel way more alive instead of just a menu.I also added different text responses depending on what happens: if you don’t have enough coins it tells you if you already own the item it tells you and when you buy something it gives proper feedback. This also ties into the coin system I’ve been using in the HUD, which now updates properly every frame so the shop always shows the correct value. Goo + Shield System Improvements (big fixes from earlier devlogs) I also fixed a lot of issues with the goo system that I was struggling with in earlier updates. Before, the goo had problems like hitting the player instantly when spawning shield reflection being inconsistent and weird collision timing issues. So I added a small delay (around 0.2 seconds using time checks) so the goo doesn’t detect itself or instantly trigger collisions when it spawns. I also improved the shield logic so now when the shield is active, the goo can actually be reflected back properly instead of just always damaging the player. I also added a durability feature, it is not visible yet but i am currently working on it. Now the hits count and soon it will be a visible feature. On top of that, I cleaned up how goo behaves when it hits enemies. Instead of doing messy collision disabling and weird states, I simplified it so enemies can just be removed cleanly with queue free, which makes everything way more stable and less buggy. Boss Fight Setup (Level 2 main objective) I’ve also started the boss fight for Level 2. Right now, there is an obby section where the boss is attacking with goo balls that can pass through parts of the environment, which makes dodging them actually important instead of just standing still and tanking hits. The player’s goal in the boss fight is to dodge the goo while making their way through the obstacle area and then press a special button (which has a cool animation). When the button is activated, it triggers lava flow across the map (since the level is on Mars), which is going to be the main mechanic used to defeat the boss. So instead of just fighting directly, it becomes more of a movement + timing fight where you have to avoid attacks and activate the environment against the boss. Overall Progress Overall, Level 2 is finally starting to feel like a real level instead of just a prototype. I’ve fixed a lot of the earlier problems with the goo collision timing shield reflection enemy interactions and UI consistency. And now I’m moving into more “game design” work instead of just fixing bugs, which is a good sign. Next steps are finishing the lava system for the boss fight polishing the obby section adding boss behavior and attack patterns and improving visuals and feedback so everything feels better."}, {"post_id": 9014, "ts": "2026-06-15T01:07:13Z", "hours": 3.6569, "text": "Level 2 Hello everyone, I did major updates and changes to Level 2 and this was the longest I have worked in Stardance in a single day so far! I worked for about 5 and a half hours today and made some really solid progress. Level 2 Setup + Map Design So I officially started Level 2. I created the base map and started building out the layout. I also added aliens around the map to start filling the world and make it feel more alive and challenging.Right now the level is still in early stages, but the structure is there. I still need to add fire/lava sections, more environmental hazards, and set up the boss fight with the goo enemies. I also want to add extra mechanics in Level 2 so it feels like a big step up from Level 1 instead of just a copy. Goo Enemy + Shield System Improvements I also fixed a lot of issues with the goo shooting system and improved how the shield works. Before, the goo had problems with detecting collisions too early, so I added a small delay using get_tree().create_timer() logic so it doesn’t instantly detect its own body when it spawns. I also adjusted the collision timing using a small time check (around 0.2 seconds) so it only starts interacting properly after it has actually left the enemy. The shield system now works with the goo reflection mechanic. When the player shield is active, the goo can sometimes be reflected back instead of dealing damage. I also improved how it visually flips and stays centered so it doesn’t look weird when the player changes direction or moves. Combat + Collision Fixes I also spent time cleaning up how the goo interacts with enemies and the player. Now when the goo hits the player without shield, it properly plays the splat animation, stops movement, and deals damage using the degrade() system. I also made sure it doesn’t instantly re-trigger collisions by adding timing protection so it feels more consistent. For enemies, I started experimenting with making them react when hit by reflected goo. The idea is that when they get hit, their collision gets disabled so they can fall down instead of just standing there, which will make combat feel more dynamic once gravity is properly set up on them. Overall Progress Overall, Level 2 is starting to take shape. The map exists, enemies are placed, and the core systems (goo shooting, shield reflection, and collision handling) are way more stable now. Next steps are: finishing the lava/fire areas improving enemy fall + death behavior adding the boss fight mechanics for goo polishing shield visuals so it feels smoother and making Level 2 feel more intense than Level 1"}, {"post_id": 8791, "ts": "2026-06-14T16:28:33Z", "hours": 4.76, "text": "Level 1 Complete Hello everyone, I just completed level 1, adding the finishing details fixing bugs, and adding a very cool parallax background. Major Bugs, I didn’t have major bugs but I had many bugs, for instance I had a scene change after the player enters the spaceship, this was for them to escape earth, but for some reason the scene change never worked, and it kept saying null, even when I printed this function. To fix this bug I made a variable and before the function was called I set it, so ** var tree = get_tree() ** this allowed me to call the functions without it becoming null, I still have no idea why the function was null but I guess I will have to figure that out. Another bug was my alien. So for my level one I have moving aliens, following aliens, and I was going to have moles, but I think I will add them in level 2 to keep it simple. But the problem was my following aliens, whenever they land on the player they never made the player lose a life or disappear. I looked at the collision bodies, and the one that gives the alien it’s shape was larger than the area 2d’s body, so therefore it would have never made contact with the player and would have not done anything to the player. To fix this, I adjusted the body size of both collision bodies. Parallax Background, a parallax background is basically different parts of the background moving at different speeds when the player moves. I made 7-8 layers of background, trees, clouds, bg colors, floor. To use them I used the parallax 2d in godot and set the scroll speed to different values for each, the farther away the bg element the lower the value, then you get the result as clouds moving at different paces of other elements as shown in the video. But this was not all that easy, I had a bug where the parallax elements went down so much when I started the game, I am pretty sure I am starting the player in the air, and when he falls so does the elements, so I have to place him down, also it is automatically adjusting my scroll offset. Summary/Level 2 That is about it for level 1, I also fixed the coins in the corner, and added more story. For level 2, I am going to start with making a parallax background, and make the actual game. Thank you, bye!"}, {"post_id": 7253, "ts": "2026-06-12T03:06:01Z", "hours": 3.1069, "text": "Shooting, Level 2 Hello everyone, I recently finished level 1 and started building level 2, there are many new things that I am proud to announce. Level 2 Intro Animation I added an introduction to level 2, so after we leave earth, we end up in the alien spaceship, where the player vows to come back to earth and save his home planet because he couldnt do anything on the planet. Then he is in the spaceship and looks around, then he goes to the other planet. Alien Space Shooter So this is the new character the ALien Space Shooter, idk what to call him yet, the acronym for Alien Space Shooter is pretty bad… Anways it gets the difference from the player and the alien, and it shoots the ball that way, but if the alien is on the other side the difference is negative so the code figures out the position and where to shoot, currently I am working on the splat feature on if it touches the shield or the player or a wall/item it splats and stops moving. Shield + MC Adding’s I am adding a shield to the main character, so here is the plan, when the alien shoots out the goo, if the player is presssing the button to use the shield, (I am probably thinking control button) then they are blocking, the shield will have a durability, and they can use the shield for as long as they dont use all the durability. But here is the good thing, if they block the goo then there is a 1 in 5 chance it reflects the goo and it hits the alien and makes it vanish. This is a realy useful feature as the only other way to destroy an alien currently is the walk into and lose a heart. Summary + Updates I plan to make this more polished, as the splat for the alien’s goo shooting, and the shield for the character. I also need to make these all clear, and make the animations much more better and professional, bye guys!"}, {"post_id": 6633, "ts": "2026-06-11T03:51:17Z", "hours": 3.1117, "text": "Level 2 Hello everyone, I am starting Level 2. For the past few days Lapse has not been loading on any of my browsers, and I had no idea why. Then today I tried Chrome and it finally worked, so now I can actually post updates again. Anyways, today I was mostly fixing bugs and finishing up Level 1. I had a weird bug with an Area2D where it kept triggering when it shouldn’t have been. I spent a while checking collision bodies, Area2Ds, animations, and positions. In the end I just rewrote the code and renamed some things, because I think Godot was getting confused about which body was which. After that it started working normally. I also finished the boss section. The Alien Knight now has an introduction cutscene, camera changes, animations, and the goo obstacle that chases the player. There were a lot of small bugs involving AnimationPlayers, Area2Ds, collision shapes, and things resetting to the wrong position. Some of them took way longer than they should have, but eventually I got everything working. I also added some more details to the ending of Level 1. The character now says, “Where am I, what happened to my home Earth?” before leaving on the spaceship. It is only a small detail, but I think it makes the game feel more connected and gives a better transition into the next part of the story. The boss fight is also much better than it was before. Originally all you had to do was sprint and hold the key down. Now there are obstacles, platforming, timing, and hazards that make it feel more like an actual challenge. I think it is way more engaging than just running in a straight line. I also spent some time working on hearts, checkpoints, and restarting parts of the level. I am still deciding exactly how I want that system to work, but I think it is heading in the right direction. Now that Level 1 is basically finished, I am starting work on Level 2. Right now my plan is to have a scene inside the spaceship before the next level begins. I want it to explain more about the aliens, what happened to Earth, and what is actually going on. I think having some story between levels will make the game a lot more interesting instead of just jumping straight into another map. Overall, after spending so much time fixing bugs, collision issues, Area2Ds, animations, and cutscenes, it feels good to finally move on and start making new content. I am excited to start building Level 2 and expanding the story of Space Travel."}, {"post_id": 6023, "ts": "2026-06-10T03:07:19Z", "hours": 2.4161, "text": "Anime Intro Hello everyone, after what I did today I feel so motivated. Let me explain it to you guys. If you see the video, you will see a very professional introduction to our character, Alien Knight, along with his message. Someone recommended that I do this type of thing, so I spent about an hour creating it, and I think it looks really nice. It makes the boss feel much more important, and gives him a proper introduction instead of just appearing out of nowhere. I also worked on the boss cutscene itself. I learned how to switch between cameras during cutscenes, make animations play multiple times, and get everything to happen in the correct order. There were a few bugs where animations would instantly skip or stop after running once, but after a lot of testing I got it working. Besides that, I was fine tuning the map, getting rid of what we don’t need, making it shorter, and making the game make more sense because I don’t want the first level to be overwhelming. At one point I even misplaced about half of the TileMap and had to move it back where it belonged. It was annoying, but the level flows much better now. I also spent a lot of time fixing collision bugs. Some Area2Ds were detecting StaticBody2Ds instead of the player, which caused things like random restarts and enemies triggering when they shouldn’t. After adding proper player group checks and fixing collision layers and masks, everything is working much more consistently. Another bug I tracked down was with animations moving my character to the wrong place. For some reason the player kept spawning where an old animation had moved them. After a lot of confusion, I found out it was caused by a RESET track inside the AnimationPlayer. Once I removed it, the player spawned where they were supposed to again. Overall, I feel like today’s work made the game much more polished. The boss introduction feels better, the map is cleaner, the cutscenes work properly, and a lot of annoying bugs are gone. There is still a lot to do, but seeing everything come together is really motivating."}, {"post_id": 5340, "ts": "2026-06-09T02:28:23Z", "hours": 1.9058, "text": "Boss Fight Hello everyone, as usual I am just fixing bugs and making my game better. “I have some ideas, a couple of suggestions, to fight instead of fleeing west.” Just a quote, but it perfectly matches my game right now. So currently I had sprint, and it was required to hold it down to beat the boss. All you had to do before was run, but now you have to do an obby, in a certain amount of time, while dodging the boss. If you complete all of that, you get to the spaceship. This is much better and more engaging than just holding sprint and running. I also added heart pickups. If you don’t already have 4 hearts, you can pick one up and restore your health. While adding this, I fixed a bunch of bugs with collision layers, Area2Ds, and enemy detection. Some enemies weren’t detecting the player correctly, and at one point they were even falling through the map because I forgot to give them the right collision setup. After a lot of debugging, everything is working properly now. I also improved some of the enemies. The aliens now stop following the player if they get too far away, and I worked on patrol enemies that move left and right. There were some issues where they would get stuck on walls and spam flip back and forth, but that is fixed now. Another thing I spent a lot of time on was cutscenes and dialogue. I added text that the player can skip with Tab, boss dialogue, and a boss intro cutscene. I also learned a lot about AnimationPlayers, AnimatedSprites, camera movement, and even how reset tracks can accidentally move your character to places you didn’t expect. For the boss fight itself, I am still thinking about lives. Right now, if you die, you restart the level. One idea I have is giving the player two lives. If you lose the first life, you restart the level, but if you lose the second life, you restart the entire game. I might stick to restarting levels, but I haven’t decided yet. Right now my main goal is just making the game more fun and polished. Every time I add a new feature, I end up finding three more bugs to fix, but that’s just part of making games. Overall, the boss fight is much more engaging than before, and I think the game is improving a lot with every update."}, {"post_id": 4697, "ts": "2026-06-08T03:50:09Z", "hours": 3.3156, "text": "Finishing Level 1 Hello everyone, im coming close to an end of level 1, today was a big day, and I should be able to finish it tomorow by fixing a few bugs and adding a few things to make it a functional starting tutorial scene. I have got almost to the ending part of level 1, I have made the boss fight/scene (it is not a cutscene, that will be for other levels), but its not finished, because there are many glitches for the user to stay alive but not reach the end, resulting in bad votes so I need to fix that. I finished the map probably just need to add a few things here and there but most of it is fine. I fixed the aliens and for each one, I can stick with the default settings (speed, how far they move both left and right) or I can put custom variables, using @export var, which puts an variable on the node. This was good, as before I had a problem of an alien walking through the wall, but now that is fixed. SO basically I just need to add armor, a laser item, for the user to use to shoot, but right now I am just doing the basic things for the game and sticking with my little tutorial for level 1!"}, {"post_id": 3957, "ts": "2026-06-07T02:51:12Z", "hours": 3.6392, "text": "Character Fixes and Level Progressiveness Whats up Yall, today was a good day, and it helped me develop my project even further, making me so happy and confident. In the picture, you can see there are 8 hearts, coins, aliens moving (well its an image) and coins on the top of the screen, so let me break it down. Aliens I was building the map, and then when testing I realized that the aliens would walk through the walls, so I was learning and testing some code, but then the alien glitched, I tried to fix it but I couldnt, so I went back to my old code and just made the room for it to move larger, because I was trying to get the little steps done, then I would fix the main problems! Coins + Aliens I drew the coin animation today and it was fairly simple, but for both the coins and aliens, I added area 2d body so I could detect when they touch the player, and singled the player out by in_body_(player) then I made them disapear, then either add a coin globaly or lose a life globaly, then I disabled the area 2d with monitoring. Area 2d.monitoring = false, so this made that they could not be used or detect anything until I turn it back on, so no extra coins or more loss of lives. General I drew more items for the map, and will use the atlas for all worlds, will just change colors and add few more items. I was also working with text skip, so now, the text does not go to the next dialouge until user presses tab (skip). But anyways those are all the changes I made, thanks bye guys!"}, {"post_id": 2520, "ts": "2026-06-05T01:47:57Z", "hours": 2.4633, "text": "Alien Fix + Character Bugs + Level 1 Hello everyone, today I did alot I was productive as usual, and I have alot of time to work on this game. First I fixed my player added hearts and made sure all the animations for text are 4.2 seconds because if the user wants to skip they can press tab. Also I fixed some alien bugs so now it works perfectly, when I was testing THE ALIEN GOT STUCK ON MY HEAD. This would have bugged the game and the user would not be able to play, but now they go through the player, but until I make it so they disappear upon touching the player and the player loses a heart that is what I have. Now I created the starting scene with all the instructions on how to move and all of that. It was pretty easy, and I just named the narrator the voice because it is better than just putting ??? or “THE NARRATOR” so anyways, I think by taking this slow one step at a time I can accomplish what I want, and make it better quality than I would think!"}, {"post_id": 1880, "ts": "2026-06-04T03:00:54Z", "hours": 2.2722, "text": "Character Fix Hello everyone! I was working on the character, and all the animations such as movement and the text, because that is part of the character. So the animations all went smooth, and I coded it easily. But the hard part was the text, I had text animations and text skips where you press tab to skip the text. I dont know how to do it where you press tab once it goes to the end of the text, then the second time and it skips and goes to next dialouge, so I just did it so when user presses tab it goes to next dialouge. This was hard and I had to look at my previous games to see how I did it (because it has been over a month since I was making games) and in the previous games I had to put a function in each scene, but in my game, I just put it in the character script, so that where ever the character is the text is. I was thinking my game looks so bad, and it is not professional, but I got reassurance from others that this is one of the best games I have ever made, and it is high quality. That makes me happy and gives me the motivation to continue, but there is one problem, I dont know how to continue. I have created the alien and the character, BUT I DONT KNOW WHAT TO DO NEXT!!! So I am still brainstorming but I think maybe I should add floating islands and an alien king for each world, that the user has to defeat, otherwise they go back to the start of the level and the scene resets. But anyways that is what I am doing, if you guys have any suggestions for my game, I am open to take it. Thank you!"}, {"post_id": 1239, "ts": "2026-06-03T02:55:08Z", "hours": 3.7708, "text": "Finish Cutscene Hello everyone, I had a cutscene at the beginning of the game I was talking about, I recently finished it. So there were problems and good things First I had to draw the alien ship and animate it coming closer to earth and crashing (fire and burnt earth), this took some time but is now complete Problem, I had a problem of everytime it ended on a different frame of the animation so then the ship was in the wrong spot and it looked like it missed land, to solve this problem I called the frame right before I stoped the animation so that it ends on the frame I need. After these I just needed to fix the code for the loading and restarting, this is going to be my first time making a game like this where it saves data, and it is going to be the longest I spend making a game. So right now it saves I think on the cookies, and if you press restart I manually call the level and all the gear to 0 instead of just reseting the cookies. But the way I am saving it, is by after every level or something the user gains, then I add it to the save script. I started making the character, and since this is a platformer game and not a top down movement game it is hard to draw the character let alone the animation, you can see in the screenshot provided below how I drew the character. This took around an hour and I had to view my previous games to see how I wrote the code because I do it differently since I have idle animations and alot of movement. I also had to drawn the floors and make floating ones. This lays down the base of my game, and once I finish the first level I should be familiar. I am now thinking it should incorporate obstacles, instead of just enemies, and also kind of like a scavenger hunt for them to find items. Anyways that is my project, see you next time guys!"}, {"post_id": 586, "ts": "2026-06-02T02:34:27Z", "hours": 2.1167, "text": "Hello everyone! I love making games and have planned out a well thoughtfull game plan that should take 3 months. So basically the outline of my game is Battle monsters through the space realm. Find your way back home. Gain multiple materials for better space gear and ships. This game is both an obby/adventure/action game Users start on earth, a destroyed deserted planet habited with aliens. Users have to fight and find their way out to reach the new planet with their civilization Users unlock different planets after beating one Users must fight through all the planets to reach the end and find their way Aliens/Monsters randomly drop items which can be used to craft gear and after they have enough users find their first space ship and upgrade it with their spare materials Users can choose to switch to a different spaceship and upgrade that or stick to their current spaceship. I took 2 hours to draw the scene you can see in the screen shot because it is important and serves two purposes, one it is the home scene (it is also animated) and two once you start, it will have an alien ship blow up onto it. Now you guys get the gist of the game, but I hope this turns out great and since there is a little over 3 months to finish this, I think I will do great and you guys will enjoy it! See you next time!"}]...
|
Title: Space Travel by @Vishy | Stardance
Devlogs Title: Space Travel by @Vishy | Stardance
Devlogs:
Hello everyone! I love making games and have planned out a well thoughtfull game plan that should take 3 months. So basically the outline of my game is Battle monsters through the space realm. Find your way back home. Gain multiple materials for better space gear and ships. This game is both an obby/adventure/action game Users start on earth, a destroyed deserted planet habited with aliens. Users have to fight and find their way out to reach the new planet with their civilization Users unlock different planets after beating one Users must fight through all the planets to reach the end and find their way Aliens/Monsters randomly drop items which can be used to craft gear and after they have enough users find their first space ship and upgrade it with their spare materials Users can choose to switch to a different spaceship and upgrade that or stick to their current spaceship. I took 2 hours to draw the scene you can see in the screen shot because it is important and serves two purposes, one it is the home scene (it is also animated) and two once you start, it will have an alien ship blow up onto it. Now you guys get the gist of the game, but I hope this turns out great and since there is a little over 3 months to finish this, I think I will do great and you guys will enjoy it! See you next time!
Finish Cutscene Hello everyone, I had a cutscene at the beginning of the game I was talking about, I recently finished it. So there were problems and good things First I had to draw the alien ship and animate it coming closer to earth and crashing (fire and burnt earth), this took some time but is now complete Problem, I had a problem of everytime it ended on a different frame of the animation so then the ship was in the wrong spot and it looked like it missed land, to solve this problem I called the frame right before I stoped the animation so that it ends on the frame I need. After these I just needed to fix the code for the loading and restarting, this is going to be my first time making a game like this where it saves data, and it is going to be the longest I spend making a game. So right now it saves I think on the cookies, and if you press restart I manually call the level and all the gear to 0 instead of just reseting the cookies. But the way I am saving it, is by after every level or something the user gains, then I add it to the save script. I started making the character, and since this is a platformer game and not a top down movement game it is hard to draw the character let alone the animation, you can see in the screenshot provided below how I drew the character. This took around an hour and I had to view my previous games to see how I wrote the code because I do it differently since I have idle animations and alot of movement. I also had to drawn the floors and make floating ones. This lays down the base of my game, and once I finish the first level I should be familiar. I am now thinking it should incorporate obstacles, instead of just enemies, and also kind of like a scavenger hunt for them to find items. Anyways that is my project, see you next time guys!
Character Fix Hello everyone! I was working on the character, and all the animations such as movement and the text, because that is part of the character. So the animations all went smooth, and I coded it easily. But the hard part was the text, I had text animations and text skips where you press tab to skip the text. I dont know how to do it where you press tab once it goes to the end of the text, then the second time and it skips and goes to next dialouge, so I just did it so when user presses tab it goes to next dialouge. This was hard and I had to look at my previous games to see how I did it (because it has been over a month since I was making games) and in the previous games I had to put a function in each scene, but in my game, I just put it in the character script, so that where ever the character is the text is. I was thinking my game looks so bad, and it is not professional, but I got reassurance from others that this is one of the best games I have ever made, and it is high quality. That makes me happy and gives me the motivation to continue, but there is one problem, I dont know how to continue. I have created the alien and the character, BUT I DONT KNOW WHAT TO DO NEXT!!! So I am still brainstorming but I think maybe I should add floating islands and an alien king for each world, that the user has to defeat, otherwise they go back to the start of the level and the scene resets. But anyways that is what I am doing, if you guys have any suggestions for my game, I am open to take it. Thank you!
Alien Fix + Character Bugs + Level 1 Hello everyone, today I did alot I was productive as usual, and I have alot of time to work on this game. First I fixed my player added hearts and made sure all the animations for text are 4.2 seconds because if the user wants to skip they can press tab. Also I fixed some alien bugs so now it works perfectly, when I was testing THE ALIEN GOT STUCK ON MY HEAD. This would have bugged the game and the user would not be able to play, but now they go through the player, but until I make it so they disappear upon touching the player and the player loses a heart that is what I have. Now I created the starting scene with all the instructions on how to move and all of that. It was pretty easy, and I just named the narrator the voice because it is better than just putting ??? or “THE NARRATOR” so anyways, I think by taking this slow one step at a time I can accomplish what I want, and make it better quality than I would think!
Character Fixes and Level Progressiveness Whats up Yall, today was a good day, and it helped me develop my project even further, making me so happy and confident. In the picture, you can see there are 8 hearts, coins, aliens moving (well its an image) and coins on the top of the screen, so let me break it down. Aliens I was building the map, and then when testing I realized that the aliens would walk through the walls, so I was learning and testing some code, but then the alien glitched, I tried to fix it but I couldnt, so I went back to my old code and just made the room for it to move larger, because I was trying to get the little steps done, then I would fix the main problems! Coins + Aliens I drew the coin animation today and it was fairly simple, but for both the coins and aliens, I added area 2d body so I could detect when they touch the player, and singled the player out by in_body_(player) then I made them disapear, then either add a coin globaly or lose a life globaly, then I disabled the area 2d with monitoring. Area 2d.monitoring = false, so this made that they could not be used or detect anything until I turn it back on, so no extra coins or more loss of lives. General I drew more items for the map, and will use the atlas for all worlds, will just change colors and add few more items. I was also working with text skip, so now, the text does not go to the next dialouge until user presses tab (skip). But anyways those are all the changes I made, thanks bye guys!
Finishing Level 1 Hello everyone, im coming close to an end of level 1, today was a big day, and I should be able to finish it tomorow by fixing a few bugs and adding a few things to make it a functional starting tutorial scene. I have got almost to the ending part of level 1, I have made the boss fight/scene (it is not a cutscene, that will be for other levels), but its not finished, because there are many glitches for the user to stay alive but not reach the end, resulting in bad votes so I need to fix that. I finished the map probably just need to add a few things here and there but most of it is fine. I fixed the aliens and for each one, I can stick with the default settings (speed, how far they move both left and right) or I can put custom variables, using @export var, which puts an variable on the node. This was good, as before I had a problem of an alien walking through the wall, but now that is fixed. SO basically I just need to add armor, a laser item, for the user to use to shoot, but right now I am just doing the basic things for the game and sticking with my little tutorial for level 1!
Boss Fight Hello everyone, as usual I am just fixing bugs and making my game better. “I have some ideas, a couple of suggestions, to fight instead of fleeing west.” Just a quote, but it perfectly matches my game right now. So currently I had sprint, and it was required to hold it down to beat the boss. All you had to do before was run, but now you have to do an obby, in a certain amount of time, while dodging the boss. If you complete all of that, you get to the spaceship. This is much better and more engaging than just holding sprint and running. I also added heart pickups. If you don’t already have 4 hearts, you can pick one up and restore your health. While adding this, I fixed a bunch of bugs with collision layers, Area2Ds, and enemy detection. Some enemies weren’t detecting the player correctly, and at one point they were even falling through the map because I forgot to give them the right collision setup. After a lot of debugging, everything is working properly now. I also improved some of the enemies. The aliens now stop following the player if they get too far away, and I worked on patrol enemies that move left and right. There were some issues where they would get stuck on walls and spam flip back and forth, but that is fixed now. Another thing I spent a lot of time on was cutscenes and dialogue. I added text that the player can skip with Tab, boss dialogue, and a boss intro cutscene. I also learned a lot about AnimationPlayers, AnimatedSprites, camera movement, and even how reset tracks can accidentally move your character to places you didn’t expect. For the boss fight itself, I am still thinking about lives. Right now, if you die, you restart the level. One idea I have is giving the player two lives. If you lose the first life, you restart the level, but if you lose the second life, you restart the entire game. I might stick to restarting levels, but I haven’t decided yet. Right now my main goal is just making the game more fun and polished. Every time I add a new feature, I end up finding three more bugs to fix, but that’s just part of making games. Overall, the boss fight is much more engaging than before, and I think the game is improving a lot with every update.
Anime Intro Hello everyone, after what I did today I feel so motivated. Let me explain it to you guys. If you see the video, you will see a very professional introduction to our character, Alien Knight, along with his message. Someone recommended that I do this type of thing, so I spent about an hour creating it, and I think it looks really nice. It makes the boss feel much more important, and gives him a proper introduction instead of just appearing out of nowhere. I also worked on the boss cutscene itself. I learned how to switch between cameras during cutscenes, make animations play multiple times, and get everything to happen in the correct order. There were a few bugs where animations would instantly skip or stop after running once, but after a lot of testing I got it working. Besides that, I was fine tuning the map, getting rid of what we don’t need, making it shorter, and making the game make more sense because I don’t want the first level to be overwhelming. At one point I even misplaced about half of the TileMap and had to move it back where it belonged. It was annoying, but the level flows much better now. I also spent a lot of time fixing collision bugs. Some Area2Ds were detecting StaticBody2Ds instead of the player, which caused things like random restarts and enemies triggering when they shouldn’t. After adding proper player group checks and fixing collision layers and masks, everything is working much more consistently. Another bug I tracked down was with animations moving my character to the wrong place. For some reason the player kept spawning where an old animation had moved them. After a lot of confusion, I found out it was caused by a RESET track inside the AnimationPlayer. Once I removed it, the player spawned where they were supposed to again. Overall, I feel like today’s work made the game much more polished. The boss introduction feels better, the map is cleaner, the cutscenes work properly, and a lot of annoying bugs are gone. There is still a lot to do, but seeing everything come together is really motivating.
Level 2 Hello everyone, I am starting Level 2. For the past few days Lapse has not been loading on any of my browsers, and I had no idea why. Then today I tried Chrome and it finally worked, so now I can actually post updates again. Anyways, today I was mostly fixing bugs and finishing up Level 1. I had a weird bug with an Area2D where it kept triggering when it shouldn’t have been. I spent a while checking collision bodies, Area2Ds, animations, and positions. In the end I just rewrote the code and renamed some things, because I think Godot was getting confused about which body was which. After that it started working normally. I also finished the boss section. The Alien Knight now has an introduction cutscene, camera changes, animations, and the goo obstacle that chases the player. There were a lot of small bugs involving AnimationPlayers, Area2Ds, collision shapes, and things resetting to the wrong position. Some of them took way longer than they should have, but eventually I got everything working. I also added some more details to the ending of Level 1. The character now says, “Where am I, what happened to my home Earth?” before leaving on the spaceship. It is only a small detail, but I think it makes the game feel more connected and gives a better transition into the next part of the story. The boss fight is also much better than it was before. Originally all you had to do was sprint and hold the key down. Now there are obstacles, platforming, timing, and hazards that make it feel more like an actual challenge. I think it is way more engaging than just running in a straight line. I also spent some time working on hearts, checkpoints, and restarting parts of the level. I am still deciding exactly how I want that system to work, but I think it is heading in the right direction. Now that Level 1 is basically finished, I am starting work on Level 2. Right now my plan is to have a scene inside the spaceship before the next level begins. I want it to explain more about the aliens, what happened to Earth, and what is actually going on. I think having some story between levels will make the game a lot more interesting instead of just jumping straight into another map. Overall, after spending so much time fixing bugs, collision issues, Area2Ds, animations, and cutscenes, it feels good to finally move on and start making new content. I am excited to start building Level 2 and expanding the story of Space Travel.
Shooting, Level 2 Hello everyone, I recently finished level 1 and started building level 2, there are many new things that I am proud to announce. Level 2 Intro Animation I added an introduction to level 2, so after we leave earth, we end up in the alien spaceship, where the player vows to come back to earth and save his home planet because he couldnt do anything on the planet. Then he is in the spaceship and looks around, then he goes to the other planet. Alien Space Shooter So this is the new character the ALien Space Shooter, idk what to call him yet, the acronym for Alien Space Shooter is pretty bad… Anways it gets the difference from the player and the alien, and it shoots the ball that way, but if the alien is on the other side the difference is negative so the code figures out the position and where to shoot, currently I am working on the splat feature on if it touches the shield or the player or a wall/item it splats and stops moving. Shield + MC Adding’s I am adding a shield to the main character, so here is the plan, when the alien shoots out the goo, if the player is presssing the button to use the shield, (I am probably thinking control button) then they are blocking, the shield will have a durability, and they can use the shield for as long as they dont use all the durability. But here is the good thing, if they block the goo then there is a 1 in 5 chance it reflects the goo and it hits the alien and makes it vanish. This is a realy useful feature as the only other way to destroy an alien currently is the walk into and lose a heart. Summary + Updates I plan to make this more polished, as the splat for the alien’s goo shooting, and the shield for the character. I also need to make these all clear, and make the animations much more better and professional, bye guys!
Level 1 Complete Hello everyone, I just completed level 1, adding the finishing details fixing bugs, and adding a very cool parallax background. Major Bugs, I didn’t have major bugs but I had many bugs, for instance I had a scene change after the player enters the spaceship, this was for them to escape earth, but for some reason the scene change never worked, and it kept saying null, even when I printed this function. To fix this bug I made a variable and before the function was called I set it, so ** var tree = get_tree() ** this allowed me to call the functions without it becoming null, I still have no idea why the function was null but I guess I will have to figure that out. Another bug was my alien. So for my level one I have moving aliens, following aliens, and I was going to have moles, but I think I will add them in level 2 to keep it simple. But the problem was my following aliens, whenever they land on the player they never made the player lose a life or disappear. I looked at the collision bodies, and the one that gives the alien it’s shape was larger than the area 2d’s body, so therefore it would have never made contact with the player and would have not done anything to the player. To fix this, I adjusted the body size of both collision bodies. Parallax Background, a parallax background is basically different parts of the background moving at different speeds when the player moves. I made 7-8 layers of background, trees, clouds, bg colors, floor. To use them I used the parallax 2d in godot and set the scroll speed to different values for each, the farther away the bg element the lower the value, then you get the result as clouds moving at different paces of other elements as shown in the video. But this was not all that easy, I had a bug where the parallax elements went down so much when I started the game, I am pretty sure I am starting the player in the air, and when he falls so does the elements, so I have to place him down, also it is automatically adjusting my scroll offset. Summary/Level 2 That is about it for level 1, I also fixed the coins in the corner, and added more story. For level 2, I am going to start with making a parallax background, and make the actual game. Thank you, bye!
Level 2 Hello everyone, I did major updates and changes to Level 2 and this was the longest I have worked in Stardance in a single day so far! I worked for about 5 and a half hours today and made some really solid progress. Level 2 Setup + Map Design So I officially started Level 2. I created the base map and started building out the layout. I also added aliens around the map to start filling the world and make it feel more alive and challenging.Right now the level is still in early stages, but the structure is there. I still need to add fire/lava sections, more environmental hazards, and set up the boss fight with the goo enemies. I also want to add extra mechanics in Level 2 so it feels like a big step up from Level 1 instead of just a copy. Goo Enemy + Shield System Improvements I also fixed a lot of issues with the goo shooting system and improved how the shield works. Before, the goo had problems with detecting collisions too early, so I added a small delay using get_tree().create_timer() logic so it doesn’t instantly detect its own body when it spawns. I also adjusted the collision timing using a small time check (around 0.2 seconds) so it only starts interacting properly after it has actually left the enemy. The shield system now works with the goo reflection mechanic. When the player shield is active, the goo can sometimes be reflected back instead of dealing damage. I also improved how it visually flips and stays centered so it doesn’t look weird when the player changes direction or moves. Combat + Collision Fixes I also spent time cleaning up how the goo interacts with enemies and the player. Now when the goo hits the player without shield, it properly plays the splat animation, stops movement, and deals damage using the degrade() system. I also made sure it doesn’t instantly re-trigger collisions by adding timing protection so it feels more consistent. For enemies, I started experimenting with making them react when hit by reflected goo. The idea is that when they get hit, their collision gets disabled so they can fall down instead of just standing there, which will make combat feel more dynamic once gravity is properly set up on them. Overall Progress Overall, Level 2 is starting to take shape. The map exists, enemies are placed, and the core systems (goo shooting, shield reflection, and collision handling) are way more stable now. Next steps are: finishing the lava/fire areas improving enemy fall + death behavior adding the boss fight mechanics for goo polishing shield visuals so it feels smoother and making Level 2 feel more intense than Level 1
Level 2 Touches Hello everyone, I have done a lot to my game for Level 2 im almost done. I’ve basically been stacking a bunch of systems together and fixing a lot of the smaller problems I ran into over the last few devlogs (especially with goo, shields, and collisions), and it’s finally starting to feel like an actual full level instead of just a test area. Shop System Fully Finished First of all, I have finished the shop and now it is fully functional and actually works the way I wanted it to.You can now walk up to it and use it properly, and I added a lot of UI polish so it doesn’t feel dead or static. I added a hover function so when the mouse is over an item, it actually reacts (like spinning or doing a small animation), which makes it feel way more alive instead of just a menu.I also added different text responses depending on what happens: if you don’t have enough coins it tells you if you already own the item it tells you and when you buy something it gives proper feedback. This also ties into the coin system I’ve been using in the HUD, which now updates properly every frame so the shop always shows the correct value. Goo + Shield System Improvements (big fixes from earlier devlogs) I also fixed a lot of issues with the goo system that I was struggling with in earlier updates. Before, the goo had problems like hitting the player instantly when spawning shield reflection being inconsistent and weird collision timing issues. So I added a small delay (around 0.2 seconds using time checks) so the goo doesn’t detect itself or instantly trigger collisions when it spawns. I also improved the shield logic so now when the shield is active, the goo can actually be reflected back properly instead of just always damaging the player. I also added a durability feature, it is not visible yet but i am currently working on it. Now the hits count and soon it will be a visible feature. On top of that, I cleaned up how goo behaves when it hits enemies. Instead of doing messy collision disabling and weird states, I simplified it so enemies can just be removed cleanly with queue free, which makes everything way more stable and less buggy. Boss Fight Setup (Level 2 main objective) I’ve also started the boss fight for Level 2. Right now, there is an obby section where the boss is attacking with goo balls that can pass through parts of the environment, which makes dodging them actually important instead of just standing still and tanking hits. The player’s goal in the boss fight is to dodge the goo while making their way through the obstacle area and then press a special button (which has a cool animation). When the button is activated, it triggers lava flow across the map (since the level is on Mars), which is going to be the main mechanic used to defeat the boss. So instead of just fighting directly, it becomes more of a movement + timing fight where you have to avoid attacks and activate the environment against the boss. Overall Progress Overall, Level 2 is finally starting to feel like a real level instead of just a prototype. I’ve fixed a lot of the earlier problems with the goo collision timing shield reflection enemy interactions and UI consistency. And now I’m moving into more “game design” work instead of just fixing bugs, which is a good sign. Next steps are finishing the lava system for the boss fight polishing the obby section adding boss behavior and attack patterns and improving visuals and feedback so everything feels better.
Level 2 Boss Fight Hello everyone, I am coming close to an end of my level 2 of Space Travel. So currently I have made the boss and am working on the animation and how the boss fight is, so first I am going to explain the logic, then I will talk about timelines and how I have acomplished, and third I will start the alien UNIVERSE So what I have done today was finish up the shop (I barley did anything to it) and I also worked on the alien. The first part of today I spent a good amount of time creating the alien boss, and it doesn’t even look good 😭, so I became demotivated for today and only did 2 and a half hours. But the day is not over yet, so much left to explain. To continue, I created the animations for this boss, such as the text, and the anime animations, but I am still not done and have not fully tested it so there are bugs, but I will try to fix it. So I think I am good on time, so far I have been trying to finish up 4 levels then ship. For level 1 was follow and static aliens (walk in place). Level 2 was goo spit shooting aliens. I have no idea what to do for level 3 and 4, I really appreciate any suggestions on new items/things to add🙏. Also to clarify my solar system ending (part 1 of game) the user will go back to earth for level 4 and dodge the hardest of items and talk to the alien knight, there would be some type of dialogue like “ I never wanted to do this…” And that will be the end of level 4, and that is part 1 which I would ship my project for the first time, looking at the time line, I probably will get 60 hours when I ship, I hope I do good. But I really appreciate any suggestions, but to conclude, I am working on level 2 boss right now, debugging and making the animations more smoother. For level 3 and 4 I will talk all suggestions . Thank you everyone, bye!
Level 2 Hello everyone, sit back and get ready for a long devlog, because today I have alot to talk about. Okay, so guys now we have finished level 2, it is fully completed, I just need to add one line of code (changing the scene to the right scene the next one) and then I am done and probably wont touch it. Since I have not devloged in a few days (I did little time and was busy) I will talk about alot of items which is basically what I did for the past few days. Shield Alright I really want to talk about the shield first. So if you guys watch the video you can see how the shield works. Obviously it doesn’t have the code, but I will talk about how I integrated it with the shop and how that works. So I have 2 items in my global script, shield enabled, and shield dead. If I go to the boss fight of my game (where the shield is not allowed and users dont get it) I say Global.shield_enabled = false . This allows me to set if the user can use the shield or not through out the game. And if you guys made games previously or used Godot, you know about func_process() this allows me to simultaneously run items. You might be wondering, how does this simultaneously running fuction affect the shield for the player, and why would I do this. Remember earlier when I used the Global shield enable to turn it on and off, well the process checks it and if it is false, then it makes the shield not visible and not work. I mainly was relying on this for the past few days, because I was working on the shield. I also used process to modulate and change the size of the shield bar shield durability based on how many hits the shield has taken and how many hits it can take, I divide it to get a percentage. I also added the feature that if the player dies, they lose the shield, for the player to get the shield back, they have to buy it again for 15 coins. I plan to add an animation at the beginning of the level showing the shield coming onto the player. The Shop If you guys saw in the video, you saw the shop is accessible from anywhere in the game. This was easy all I had to do was add a button with the shop icon, and make the shop items visible. But I also have to account for mobs aliens shooting the player while they are in the shop. Luckily godot has an in built function called get_tree().paused if I set this to true every item will become paused. But luckily I can set the shop node’s process mode to always so it works even when the game is paused. This solved my problem of the aliens shooting and moving while the player is in shop. Boss Fight If you guys didn’t know, for the past few days I have been working on the boss fight, I have not got enough time to finish it but today I finally finished it today! So in level one, there is a scene with the boss fight for goo rising, and now that is level 2 and the player is on mars I wanted lava. But I didn’t want to redraw it so I just modulated the goo (I now realize that was a bad idea). Because the goo was not originally white, the modulating color started green, so what ever I chose was darker and not the right color. So because of that I had to spend my time fixing the goo and changing it to white and grey. This way for my level 1 goo rise, I just modulate it to the goo green I want and for level 2 I modulate it for the lava. Also for the boss fight, I added it so the shield disappears when the player has to fight, and made the animations more clear. Anyways guys I think this game will turn out great, I am always looking for suggestions especially for level 3 , bye guys!
Level 2 & 3 Updates Hello everyone, I have alot to talk about, especially since I recently just finished level 2 and am starting on level 3. I still need Planet Names waiting for suggestions but so far I am just using analogies in my game like earth (this is going to be the real planet) mars and Neptune. This helps players understand and relate to the geography and climate of the planet. For example in the screen shot you see it is an icy artic place like the planet Neptune. Let’s get started and talk about today! Level 2 Bugs, I was not so lucky, this paragraph is about bugs and fixes, well I am not happy to say that my animations from my text animation player all deleted, and since I didn’t commit to GitHub for the day, when I restored it, all the changes I made went away… I had to remake everything that I changed, and I still have some bugs, but I forgot some items, so it is hard. But I mainly just fixed placement. When I came back home to Godot, some items were gone, some part of the tile map disappeared I had to put the tiles in the right spot, and the code was all messed up. I currently still have no idea what happened, but I fixed it all and I have not had bugs since. Today I got a suggestion to make a cutscene of the level 2 alien boss burning. As you guys know yesterday I changed the goo/lava color to white so I can manually modulate it in the editor because I am reusing assets (this makes it so easy for me 👍). Well now I made a cutscene of the alien boss burning, I would have had to redraw everything, but instead I duplicated the animated sprite (the alien boss in the cutscene) and modulated to low transparency and red, so it looks like the alien boss has a lava shadow. Level 3, Alright I know you guys saw the screen shot, so you saw the icy biome. I am now going to explain my ideas that I plan to add to level 3. First, Ice Shooters , hear me out. I recently added goo shooters to the game, and since this is artic biome ice shooters to slow the player down, and gradually decrease health if they don’t find heat could be an awesome idea! Second actual ice . There are going to be like ice pits/platforms when the player walks on, it is all slippery. And I also might add moving platforms, but these probably will be saved for level 4 but I am still deciding. Space Ship Scene As you guys know, after each level I make a cutscene/scene of the player in their alien spaceship. I think for this one (right after level 2) the player will explore more of the spaceship, and learn something about the aliens. I am still deciding but currently that is my ideas. If you guys have any suggestions feel free to recommend them. Thanks, bye guys !
Level 3 Major Changes Hello everyone, today was by far the most productive day I have ever had in all of star dance, and possibly previous Hackclub events I have done. I almost finished level 3 in one day! This was a massive accomplishment for me as for the other levels took at least 3 days to do. An overview of what I did today were, map, icicles, ice skates, new alien, asset placing, inside space ship scene, space ship traveling planet’s scene. New Features Ice Shooter Alien , First I want to talk about the ice shooter I made today. So for every new level, I always add a new alien, and while I was still working on level 2 I was contemplating what new features I should add to the game for level 3, and since I thought I should do an ice planet because I was on mars (fire) and earth (neutral), I thought I might want something cold then I thought of this planet Neptune (I don’t have planet names yet)! So today I made the Ice Shooter Alien , This alien shoots snow which slows the user down for 3 seconds. While the cool down is not slow, there is only a 1 in 10 chance the player looses health to the snow (a rock could be in it). Icicles , it was recommended to me to add icicles to the game since it is an icy biome and there should be some structural relation to the biome and features. So I just used an area 2d as the base structure, and just detected if it touches the player or something else (like the enemy or structure). To make this icicle fall, I couldn’t give it a character body then there would be gravity, and it would keep moving even if I stopped it, there is a way to work but I figured out an clever way. I subtracted the distance between itself and the player using position.x and subtracted to see if the player was in range, and if it was I was changing the position with speed and delta coming down. And I just reset it to the original position because in the ready script I assigned it the starting position. Ice Skates , Ice skates were actually pretty easy, I duplicated the players idle and movement assets, and redrew them to have skates on the bottom, and once the player buys skates from the shop I make has_skate = true then in the physics process whether the player is idle or moving, it changes the sprite sheet to the one with ice skates, and when I disable it, it goes back to the original sprite sheet with no skates. Overall I think I did so much today, I around an hour drawing the art for the spaceship this morning (both the scenes of changing worlds and inside spaceship) because I had to add a new section and duplicate move, and modulate the planets to look like a new space travel. I think tomorrow I should finish or get close to finishing level 3 because I have to create the boss fight. Thankyou, bye guys!
Adding Touches Hello everyone, it has been some time since I have devolved, and I want to talk about what I have been doing, some goals I have, and some deadlines. For the past few days I have not been shipping because I have been working on level 3. From the screenshot you might be able to see the avalanche and the map for the avalanche. So I fixed a bug with the icicle, so even if it touched the ground and then you touched it. You would lose a life. For the collision shape of the icicle whenever it touched the ground I did set_deffered("disabled", true) so this would disabled it, and I would reenable it whenever it starts falling again. Also there was a bug where the aliens could shoot through walls, to solve that I just decreased the time pass value (time pass checks how long it has been running before it can do body checks) and kept time pass the same value for on enemy touched. Finally the avalanche, during the process of this I learned some pretty cool things. So the avalanche. This would be hard to animate, but apparently Godot has something for this. It is called a ray cast, and is brings the items with it down until a collision body. So what I did, is just like my alien script, I made it move right with speed * delta . And the ray cast handled itself, because it was down hill. I am still learning how to properly use a ray cast but for down hill situations I think I now know. When I was putting the animation for the space ship enter and leave. I wanted to reuse previous animations I have made. So I went to level 2 and realized I hadn’t finished it. But level 1 had it. This is where things get interesting, I brought out my calculator, duplicated the values into level 2 and 3, and subtracted the first keyframe from where I wanted the player to start. This allowed me to subtract 1454 from the X value and 104 from the Y value. So I did that for each of the key frames for both level 2 and 3 (keep in mind I wanted them in different places) and I had my animation finished. I tried adding a pause menu for when the player dies or pauses (esc) but I guess it didn’t turn out well it looks grainy and unprofessional, but I really need to ship, because I wont be available for the next few days and I can’t work on it. Future Items Before Ship Before I ship I want to add a few things that have been suggested. First of when testing it was realized that when the shield breaks, there was no pop up or anything indicating that it had broken. So I will have to now go and fix that. Second, I need to add sound. I always add sound at the end of the game, and I completely forgot to. Overall I think that this first ship will tell me a lot on what I have to work on for this game, I think I could do some better improvements if I wait some time then ship. But I think it will do great, and people will see the hard work I put into this game. Thankyou everyone!
Finishing Up Hello everyone, I have been fixing bugs today and adding items I forgot. Examples are audio, bugs, end scene, making harder levels easier (I was the only one able to beat it) and make text clearer. Bugs Today, I fixed mainly bugs because I am going to ship right after this devlog (my work has payed off). First I am going to talk about the skipping text bug. When I do the dialogue at any part of the level/game, and then press esccape button, (pausing game/pausemenu) and then I press home inside the pause menu, the whole game crashes, and I just figured out why. When ever im doing text I call $MC.wait_for_skip() this is a function, and in the function it has await get_tree().process_frame the bug with this, is that when ever the text is running and wait_for_skip() is called it is waiting and calculating every single frame, so when the user presses home, the player is gone, and that process_frame was never finished, so the game bugs out and ends. Well to counter this, I didn’t really do anything. I am really busy right now, and am trying to make the game good for the first ship, as much as I want to work on this bug I have to set it aside. In short terms, I got rid of the home button. If the player wants to go home they have to close the game and open it (reload page). Bug Two For the second bug, it really confused me. When I restarted the game, and went through level one (keep in mind I only picked up one coin) and then went to the second level, it said I had 30 coins. I saw my error, and it was that I was manually setting it to 30 coins when the game starts, so I then set that value to 0, so user starts with no coins. I thought all was solved, but it now showed five hundred and forty seven coins. I looked closely in the save_game function. I saw that I had set global.coins (the coins for the whole game collected) to what ever was in the label. And it might seem okay, but the label had manually been set to five hundred and forty seven coins. I just delteded that line of code because whenever the player picks up coins, it automatically goes into the global variable, so there was no point in having that line (since it only bugged out the game). Audio I forgot about the audio/sound effects/ background music until the end of the game (today, since I am going to ship). Because of this I had to rush through it, and I am going to warn you, some of the audio in the game might sound… wonky. Anyways I recorded me making the audio, like an alien shooting, icicles falling, avalanches moving. I just realized while writing this devlog, in the game I misspelled avalanche, and I have already exported it and uploaded the game 😭. Difficulty I had some people test out my game, and they had alot of good feedback that I implemented today. I still have not done some of it, but that is for next time. First they said level 1 was harder than level 3. I tested it out but didn’t find any problem, I realize that I play this game everyday to test so it must be easy. I made the boss fight for level 1 easier so the user can get through. To do this, I made the goo rise slower, and added more stepping points on the ground. Then I was told level three’s avalanche was too slow. I had to manually change the speed, but this was easy since I had incorporated a ray cast into the avalanche.
Ships:
Hello everyone, this is my first ship for Stardance, and let me introduce you to Space Travel. Space travel is an 2D game I have spent this whole month on creating. I have used tile maps, parallax 2D nodes, pixel art, and many features to create this game. Even though it is a work in progress and a test run for me I would like to congratulate my self on spending over 60 hours for a project. This is the longest I have ever spent on the project, and this is as complex as it gets. Some cool things I think would wow you guys are Parallax 2D nodes, theses give the background life, the make it look like the clouds are moving. Ray Casts, to create avalanches. In this game I have made many types of aliens for the user to battle. I am so proud of my self for finding the time to make this wonder full game. I have had people test it so I could polish it up for the first test run. I know it could be better, but I am planning on adding an Alien Universe. Users will have laser items, pick the planets to travel to, choose their character and much more. I am very motivated to continue this project and push it to it’s absolute max. This game features multiples levels, Level 1 (Earth) your goal is to escape the alien invasion you woke up to. Level 2 (Mars) you travel to an burning hot planet to find out more aliens live their, including goo types. Finally Level 3 (Neptune) you visit this icy place and find icicles, ice balls, avalanches, and ice bunnies waiting for you. This game took a lot of thought and time to create, as it is not as simple as it looks. The code was very complex as I had to calculate speed, and shooting distance (for the goo ball and ice balls). I am so glad I can share this hard worked project with you guys. I hope you enjoy it!...
|
1792997329.9302886
|
1793083729.9302886
|
|
648
|
The All-in-One Gaming App by @Karthi | Stardance
|
Karthi
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-04T20:38:07Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a simple console game! It was challenging to fix all the errors because one time the printf line wouldnt work, and all I had to do was add a semicolon at the end of the line! This app has 2 games, so no need to download another game!", "repo": "https://github.com/helloworld2929/the-all-in-one-games", "demo": "https://karthi.hackclub.app/"}]...
|
[{"post_id": 2370, "ts": "2026 [{"post_id": 2370, "ts": "2026-06-04T20:30:09Z", "hours": 0.9853, "text": "completed my all in one game!"}, {"post_id": 1431, "ts": "2026-06-03T13:49:07Z", "hours": 1.3639, "text": "Welp, my game is bugging out, and I have to fix a plethora of issues"}]...
|
Title: The All-in-One Gaming App by @Karthi | Star Title: The All-in-One Gaming App by @Karthi | Stardance
Devlogs:
Welp, my game is bugging out, and I have to fix a plethora of issues
completed my all in one game!
Ships:
I made a simple console game! It was challenging to fix all the errors because one time the printf line wouldnt work, and all I had to do was add a semicolon at the end of the line! This app has 2 games, so no need to download another game!...
|
1792979396.1047873
|
1793065796.1047873
|
|
679
|
oral-b Library by @brian | Stardance
|
brian
|
1
|
22.0
|
399
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-14T03:43:08Z", "hours": 22.0, "multiplier": 18.43, "payout": 399, "blessing": "neutral", "text": "I built a Node.js library for bidirectional Bluetooth communication with Oral-B smart toothbrushes, without needing the app! The most challenging part was definitely reverse engineering the Bluetooth characteristic logic in the Oral-B Android app using jadx. Since testing out this project may be difficult for obvious reasons (not too many people have an overpriced smart toothbrush xD), the demo link will bring you to a sample demo video of how it works!", "repo": "https://github.com/brianwalczak/oral-b", "demo": "https://github.com/brianwalczak/oral-b/releases/tag/v0.1.0"}]...
|
[{"post_id": 46678, "ts": "202 [{"post_id": 46678, "ts": "2026-08-14T03:40:12Z", "hours": 0.5619, "text": "I made a quick demonstration video and added some example scripts to the project!"}, {"post_id": 45767, "ts": "2026-08-12T13:53:31Z", "hours": 1.6933, "text": "I spent some time cleaning up the package.json and implementing some bug fixes like adding reads and subscriptions to a queue (since before it would send them at the same time and crash the brush occasionally). Some newer brushes also require an “unlock code” to use the Bluetooth API, so I implemented that too! The first version is now live on npm.js!"}, {"post_id": 44277, "ts": "2026-08-09T22:30:20Z", "hours": 3.8067, "text": "I’ve finally finished working on the documentation! I also added a commands table in the README.md which lists all of the current commands and a link to their designated Markdown page. I’m preparing to publish it to npm.js now!"}, {"post_id": 43100, "ts": "2026-08-08T05:44:03Z", "hours": 1.8494, "text": "I finished adding some more commands: deviceState which tells you what “state” the brush is in (running, idle, charging, etc), buttonState which allows you to subscribe to button events and notifies you when the power or mode button was pressed, and brushingTime which allows you to view the live stopwatch as you brush your teeth. I built a simple demo script to give you all a visual example of how these can be used!"}, {"post_id": 38363, "ts": "2026-07-31T18:24:38Z", "hours": 7.2906, "text": "Been a while! Most of this 7 hours was spent digging through the source code of the Oral-B codebase again, but I finished implementing a Bluetooth command transport layer and added a command handler for easy additions. I also implemented protocol versioning, which each brush specifies in its manufacturer data so the host knows what commands/values are available for the brush. In most cases, the newer the brush model (especially in the iO series of brushes), the higher the protocol, resulting in more available commands / data values to read from. I’ve also added the first incoming command: batteryLevel ! This method requests battery data from the brush, and depending on the protocol version of your brush, you’ll be able to view info like the battery percentage, estimated runtime, and even the technical specifications of the battery (like voltage, current, temperature, etc). From here on, all I’ll be doing is adding more support for commands!"}, {"post_id": 27549, "ts": "2026-07-13T06:54:55Z", "hours": 2.1819, "text": "It’s been a while but I’m back! I made huge changes to the overall layout of the library, and decided that… Brush objects are the devices themselves, and will allow you to connect, disconnect, view its state, send/receive BLE commands, etc. OralBClient will only act as a “discovery layer”, which lets you search for new Brush objects and keep track of your connections (like a “management” layer I guess you could call it???) I finished building the connect/disconnect commands with an optional timeout option for connections, and I moved rssi and macAddress into getters so they’re read directly from the peripheral and update automatically. Had to switch to the @stoprocent/noble fork because the previous one caused issues with discovery in Fedora. In OralBClient , I added a way to track the brushes and store the connected ones in a Map (so users don’t have to keep track of the Brush objects elsewhere). I also added the option to stop discovery early, and an adapter state check before it starts discovering (so it waits for the Bluetooth adapter to power on first!)"}, {"post_id": 1031, "ts": "2026-06-02T20:27:41Z", "hours": 4.2644, "text": "First devlog! Spent a LONG time exploring the Oral-B app codebase to learn about how devices are discovered, and what bytes are interpreted from the manufacturer data. So far I’ve built a discover() method which hooks onto the @abandonware/noble library and searches for brushes nearby. I managed to reverse engineer the manufacturer data payload which let’s me identify the model line of the brush and filter out non Oral-B devices! :D"}]...
|
Title: oral-b Library by @brian | Stardance
Devlo Title: oral-b Library by @brian | Stardance
Devlogs:
First devlog! Spent a LONG time exploring the Oral-B app codebase to learn about how devices are discovered, and what bytes are interpreted from the manufacturer data. So far I’ve built a discover() method which hooks onto the @abandonware/noble library and searches for brushes nearby. I managed to reverse engineer the manufacturer data payload which let’s me identify the model line of the brush and filter out non Oral-B devices! :D
It’s been a while but I’m back! I made huge changes to the overall layout of the library, and decided that… Brush objects are the devices themselves, and will allow you to connect, disconnect, view its state, send/receive BLE commands, etc. OralBClient will only act as a “discovery layer”, which lets you search for new Brush objects and keep track of your connections (like a “management” layer I guess you could call it???) I finished building the connect/disconnect commands with an optional timeout option for connections, and I moved rssi and macAddress into getters so they’re read directly from the peripheral and update automatically. Had to switch to the @stoprocent/noble fork because the previous one caused issues with discovery in Fedora. In OralBClient , I added a way to track the brushes and store the connected ones in a Map (so users don’t have to keep track of the Brush objects elsewhere). I also added the option to stop discovery early, and an adapter state check before it starts discovering (so it waits for the Bluetooth adapter to power on first!)
Been a while! Most of this 7 hours was spent digging through the source code of the Oral-B codebase again, but I finished implementing a Bluetooth command transport layer and added a command handler for easy additions. I also implemented protocol versioning, which each brush specifies in its manufacturer data so the host knows what commands/values are available for the brush. In most cases, the newer the brush model (especially in the iO series of brushes), the higher the protocol, resulting in more available commands / data values to read from. I’ve also added the first incoming command: batteryLevel ! This method requests battery data from the brush, and depending on the protocol version of your brush, you’ll be able to view info like the battery percentage, estimated runtime, and even the technical specifications of the battery (like voltage, current, temperature, etc). From here on, all I’ll be doing is adding more support for commands!
I finished adding some more commands: deviceState which tells you what “state” the brush is in (running, idle, charging, etc), buttonState which allows you to subscribe to button events and notifies you when the power or mode button was pressed, and brushingTime which allows you to view the live stopwatch as you brush your teeth. I built a simple demo script to give you all a visual example of how these can be used!
I’ve finally finished working on the documentation! I also added a commands table in the README.md which lists all of the current commands and a link to their designated Markdown page. I’m preparing to publish it to npm.js now!
I spent some time cleaning up the package.json and implementing some bug fixes like adding reads and subscriptions to a queue (since before it would send them at the same time and crash the brush occasionally). Some newer brushes also require an “unlock code” to use the Bluetooth API, so I implemented that too! The first version is now live on npm.js!
I made a quick demonstration video and added some example scripts to the project!
Ships:
I built a Node.js library for bidirectional Bluetooth communication with Oral-B smart toothbrushes, without needing the app! The most challenging part was definitely reverse engineering the Bluetooth characteristic logic in the Oral-B Android app using jadx. Since testing out this project may be difficult for obvious reasons (not too many people have an overpriced smart toothbrush xD), the demo link will bring you to a sample demo video of how it works!...
|
1792968766.8703308
|
1793055166.8703308
|
|
692
|
Pinball by @jms | Stardance
|
jms
|
1
|
10.46
|
19
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T03:36:43Z", "hours": 10.0, "multiplier": 1.99, "payout": 19, "blessing": "neutral", "text": "This is a game of pinball. Some problems with this game are the button at the start may not load quickly so you may need to wait a few seconds and with everything with collision there may be some bugs in relation to collision", "repo": "https://github.com/Chickenhatter/pinball", "demo": "https://chickenhatter.itch.io/pinball"}]...
|
[{"post_id": 7939, "ts": "2026 [{"post_id": 7939, "ts": "2026-06-13T07:48:14Z", "hours": 0.4619, "text": "Fixed something about conrol nodes stealing clicks and added a smacker in start scene"}, {"post_id": 7852, "ts": "2026-06-13T02:56:28Z", "hours": 1.0372, "text": "Game Finished with also start scene"}, {"post_id": 7809, "ts": "2026-06-13T01:06:14Z", "hours": 0.7289, "text": "Making main scene ready to be shipped"}, {"post_id": 7389, "ts": "2026-06-12T09:58:24Z", "hours": 0.5383, "text": "Ball loop now works"}, {"post_id": 6783, "ts": "2026-06-11T11:12:08Z", "hours": 0.5767, "text": "Coded the second ball"}, {"post_id": 6135, "ts": "2026-06-10T10:07:12Z", "hours": 0.5706, "text": "I added a second ball and the path works"}, {"post_id": 5510, "ts": "2026-06-09T09:50:16Z", "hours": 0.5864, "text": "Added images"}, {"post_id": 4829, "ts": "2026-06-08T10:45:15Z", "hours": 0.6136, "text": "First few sprites being done"}, {"post_id": 4093, "ts": "2026-06-07T09:03:19Z", "hours": 0.61, "text": "Code for all boosters and path"}, {"post_id": 3439, "ts": "2026-06-06T11:41:27Z", "hours": 0.5353, "text": "Added boosters and added an area that makes the ramp physical"}, {"post_id": 2708, "ts": "2026-06-05T12:48:53Z", "hours": 0.6819, "text": "Mapshape starting to look like a normal one"}, {"post_id": 2673, "ts": "2026-06-05T10:56:11Z", "hours": 0.5731, "text": "better map shape"}, {"post_id": 2057, "ts": "2026-06-04T11:14:28Z", "hours": 0.6503, "text": "added shoot and finally made the hooks work when flat"}, {"post_id": 1342, "ts": "2026-06-03T09:09:05Z", "hours": 0.6597, "text": "I started working on the plunger/some extra code"}, {"post_id": 672, "ts": "2026-06-02T06:55:12Z", "hours": 0.6336, "text": "I have now added the hooks(whatever the swinging parts are called)"}, {"post_id": 190, "ts": "2026-06-01T07:00:27Z", "hours": 0.5636, "text": "I have made the pinball drop and collide so my next goal will be to have it have different collisions with specific objects"}]...
|
Title: Pinball by @jms | Stardance
Devlogs:
I hav Title: Pinball by @jms | Stardance
Devlogs:
I have made the pinball drop and collide so my next goal will be to have it have different collisions with specific objects
I have now added the hooks(whatever the swinging parts are called)
I started working on the plunger/some extra code
added shoot and finally made the hooks work when flat
better map shape
Mapshape starting to look like a normal one
Added boosters and added an area that makes the ramp physical
Code for all boosters and path
First few sprites being done
Added images
I added a second ball and the path works
Coded the second ball
Ball loop now works
Making main scene ready to be shipped
Game Finished with also start scene
Fixed something about conrol nodes stealing clicks and added a smacker in start scene
Ships:
This is a game of pinball. Some problems with this game are the button at the start may not load quickly so you may need to wait a few seconds and with everything with collision there may be some bugs in relation to collision...
|
1792979498.329924
|
1793065898.329924
|
|
695
|
wintunnel by @not-willem | Stardance
|
not-willem
|
1
|
8.0
|
63
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-02T04:48:58Z", "hours": 8.0, "multiplier": 8.03, "payout": 63, "blessing": "neutral", "text": "I’ve made a cool wind tunnel as my introduction type thing into pygame but now i know some useful things and I’m happy with what i’ve made :) Its very cool and i’m pretty proud of the SVG importing which took the most time.", "repo": "https://github.com/not-willem/WintUnnel", "demo": "https://github.com/not-willem/WintUnnel/releases/tag/V1.0"}]...
|
[{"post_id": 20536, "ts": "202 [{"post_id": 20536, "ts": "2026-07-02T04:46:00Z", "hours": 0.8394, "text": "changed the readme and i’m ready to ship :D"}, {"post_id": 1931, "ts": "2026-06-04T05:16:39Z", "hours": 1.1606, "text": "okay probably gonna stop now tried to add blocking forces but idk how well they work ig maybe other people can edit this but im gonna work on another project now"}, {"post_id": 1273, "ts": "2026-06-03T04:54:33Z", "hours": 1.0697, "text": "i locked innn made it so you can see points of drag and also made it actually work :D"}, {"post_id": 637, "ts": "2026-06-02T04:46:41Z", "hours": 1.0392, "text": "changed the gui on the wind tunnel and made the particles move :D"}, {"post_id": 547, "ts": "2026-06-02T01:17:18Z", "hours": 1.0592, "text": "lmao added a button and made particles but i still need to make them actually move i think the ui is looking nice so far tho"}, {"post_id": 470, "ts": "2026-06-01T22:38:05Z", "hours": 0.6169, "text": "really cool svg thing and wind source also does anyone know how to make the imported svg look less pixelated? using pygame"}, {"post_id": 168, "ts": "2026-06-01T02:44:08Z", "hours": 1.4467, "text": "added more buttons and an svg importer"}, {"post_id": 161, "ts": "2026-06-01T01:02:34Z", "hours": 0.6781, "text": "pygame :3"}]...
|
Title: wintunnel by @not-willem | Stardance
Devlo Title: wintunnel by @not-willem | Stardance
Devlogs:
pygame :3
added more buttons and an svg importer
really cool svg thing and wind source also does anyone know how to make the imported svg look less pixelated? using pygame
lmao added a button and made particles but i still need to make them actually move i think the ui is looking nice so far tho
changed the gui on the wind tunnel and made the particles move :D
i locked innn made it so you can see points of drag and also made it actually work :D
okay probably gonna stop now tried to add blocking forces but idk how well they work ig maybe other people can edit this but im gonna work on another project now
changed the readme and i’m ready to ship :D
Ships:
I’ve made a cool wind tunnel as my introduction type thing into pygame but now i know some useful things and I’m happy with what i’ve made :) Its very cool and i’m pretty proud of the SVG importing which took the most time....
|
1792972126.3198633
|
1793058526.3198633
|
|
700
|
Void Strike by @JudeW | Stardance
|
JudeW
|
1
|
103.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-26T15:27:38Z", "hours": 103.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hi! The project I’ve been working on is called Void Strike. It’s a space shooter game in which the player controls a spaceship and must survive hordes of enemy waves. The reason why I chose to create this game is that I thought it would be easy. Since I’ve never really used Godot, I thought I should start simple. By the end of working on it, I can confidently say that I’ve learned at least the basics of the engine. That’s all anyway. Have Fun! Also, last night when I was trying to add it to Itch.io, I accidentally overwrote LITERALLY ALL of my files and everything, so the only thing I have left is the HTML export, and the entire project on my Godot account is just gone, and I can’t recover it, so if there is anything a little buggy, that’s probably why. And I can’t do anything about it, sorry. I just decided to ship it as it currently is instead of not shipping it at all, since I’ve already spent too much of my time on this. Once more, I’m sorry.", "repo": "https://github.com/judeweibley-cell/Void-Strike", "demo": "https://ludew.itch.io/void-strike"}]...
|
[{"post_id": 73757, "ts": "202 [{"post_id": 73757, "ts": "2026-09-25T21:24:54Z", "hours": 2.5992, "text": "Finally finished the game!!! Just posting a quick devlog before shipping. I added satellites and space junk that can fly in from the right side of your screen, which adds an extra obstacle. The only hard part about it was figuring out some physics equations with Newton’s Law of Universal Gravitation. After that, it was finished. Here’s my code if you want to look at it(GDScript): extends Node2D var item = 0 var active_node: Node2D = null var velocity := Vector2.ZERO var rotation_speed := 0.0 var spawning_enabled := true const MIN_SPAWN_TIME = 10.0 const MAX_SPAWN_TIME = 15.0 const PLANET_POSITION = Vector2(300, 1500) const GRAVITY_STRENGTH = 450000.0 @onready var timer = $Timer @onready var small_satellite = $“Small satelltite” @onready var large_satellite = $“Large satellite” @onready var scrap = $Scrap func _ready() -> void: randomize_next_spawn_time() func _process(delta: float) -> void: if active_node and active_node.visible: var vector_to_planet = PLANET_POSITION - active_node.global_position var distance = vector_to_planet.length() var direction = vector_to_planet.normalized() var gravity_force = direction * (GRAVITY_STRENGTH / (distance * distance)) velocity += gravity_force * delta active_node.global_position += velocity * delta active_node.rotation += rotation_speed * delta if active_node.global_position.x < -150: disable_active_node() func _on_timer_timeout() -> void: randomize_next_spawn_time() if not spawning_enabled: return item = randi_range(1, 3) if item == 1: pick_small() elif item == 2: pick_large() else: pick_scrap() func randomize_next_spawn_time() -> void: if timer: timer.wait_time = randf_range(MIN_SPAWN_TIME, MAX_SPAWN_TIME) timer.start() func reset_and_launch(node: Node2D): disable_active_node() small_satellite.hide() large_satellite.hide() scrap.hide() node.show() node.global_position = Vector2(600, randi_range(0, 960)) velocity = Vector2(-150, -45) rotation_speed = randf_range(-1.5, 1.5) if node.has_method(\"set_deferred\"): node.set_deferred(\"monitoring\", true) node.set_deferred(\"monitorable\", true) active_node = node func disable_active_node(): if active_node: active_node.hide() if active_node.has_method(“set_deferred”): active_node.set_deferred(“monitoring”, false) active_node.set_deferred(“monitorable”, false) func stop_spawning() -> void: spawning_enabled = false timer.stop() func start_spawning() -> void: spawning_enabled = true randomize_next_spawn_time() func pick_small(): reset_and_launch(small_satellite) func pick_large(): reset_and_launch(large_satellite) func pick_scrap(): reset_and_launch(scrap) func _on_scrap_body_entered(body: Node2D) -> void: if body.has_method(“take_damage”): body.take_damage() disable_active_node() func _on_large_satellite_body_entered(body: Node2D) -> void: if body.has_method(“take_damage”): body.take_damage() disable_active_node() func _on_small_satelltite_body_entered(body: Node2D) -> void: if body.has_method(“take_damage”): body.take_damage() disable_active_node()"}, {"post_id": 73337, "ts": "2026-09-24T22:14:34Z", "hours": 10.0881, "text": "Lately I’ve just been polishing the game. Nothing super interesting. I fixed the keybindings because when you selected a key with a long name like RightBracket, the label would expand into the button and overlap. I just made a better layout for it and made it so the text would be aligned on the right side, making it expand to the left instead. Then I worked on cleaning up some of my code since I’m planning on shipping tomorrow. Then I added a TON of polish to the main menu. I added a little rotating tip at the bottom and displayed your high score and highest wave at the top of the menu, which was easy enough. I still want to log at least two more hours, so if anyone has ideas, please let me know, because I’m out of ideas. Also, in the pictures, if the text looks sideways, it’s because I rotated it as a little animation. I think the current total for lines of code is 3005, if you’re interested, btw."}, {"post_id": 67665, "ts": "2026-09-13T20:25:53Z", "hours": 5.2769, "text": "I’ve just been working on adding some finishing touches lately, most of which include working with the new log feature. Inside of it I have three different tabs Enemies which is just a list of all of the different enemies and their stats like hp and speed. The second one is for achievements. I have ten so far, which include: First Orbit, earned by playing for 15 mins. Deep Space Transit for 30 minutes, and Time Flies for an hour. Atmosphere Cleared for getting to wave 5. Flight Lieutenant for wave 15. Squadron Leader for wave 30, and Cosmic Anomaly for 50. Just Getting Warm for killing a thousand enemies. Determined I for dying 50 times and Determined II for dying 100 times. I also added some progress bars to visually show your progress towards the achievements. For the stats menu, all I changed was adding a darker panel behind all the stats to add some detail; other than that, that’s all I did. Also, the scrolling menus were almost my downfall."}, {"post_id": 66787, "ts": "2026-09-12T17:48:29Z", "hours": 3.1139, "text": "This morning, I’ve been working on adding a statistics menu to the menu, which keeps track of stuff like your highest wave or how many power-ups you’ve bought. All of the things are saved after closing the window, so not much has been added, but it’s something."}, {"post_id": 66317, "ts": "2026-09-12T02:32:23Z", "hours": 6.9156, "text": "Fairly large update!!! Over the past few days, I’ve been working and have gotten quite a lot done. Recent changes include A new bomber enemy who appears on wave 15, dropping bombs as it passes through. Bombs have 3 seconds before exploding and deal the standard 1 HP. Then I polished the menu so that instead of having ugly buttons down at the bottom of the screen, I now have large transparent buttons right in the middle of the screen. I also made the buttons feel really juicy, changing color and playing a short clicking sound when hovered over with the mouse. I changed up the settings panel by adding some darker panels for detail and organization. Instead of the set WASD and arrow keys, I now have key binding as an option. I don’t know what other controls players would use, but just in case, and it also makes the game feel more polished. I think right now I plan on adding a stats page in the menu next that can showcase stuff like your highest wave, how many attempts, and enemies killed. But I think I’m going to save that for tomorrow. So for now, I’ll see you in the next devlog. :)"}, {"post_id": 62492, "ts": "2026-09-05T21:34:48Z", "hours": 9.9294, "text": "🎉🎉Major Update🎉🎉 After a little bit of playtesting, I came to the conclusion that the game needed to be much harder because it came up as a problem more often than not. I was already planning to add a few more enemy types, so it didn’t really matter. New Enemy Types 1) A horde of diver enemies 2) A large tank enemy that has double shots 3) A Suicider enemy which pathfinds to the player 4) An asteroid field that can spawn I also plan on adding a bomber enemy with explosions, and a flame thrower enemy which will deal more damage the longer you are in the flames and will burn your fuel. But because I was so close to the 10-hour limit, I have to make a devlog before continuing on it. I also decreased the wavelength from 30 seconds to just 20 because it made for a much faster-paced game and was easier on the player. In the future, I plan on adding a keybind option to the settings, which might take a while to figure out, bosses, which probably won’t happen, and a ton more polish to the menu because it looks terrible."}, {"post_id": 57756, "ts": "2026-08-30T01:10:30Z", "hours": 0.6822, "text": "Small Update: I just added a notes and acknowledgements page to replace the old broken leaderboard page. It just includes some writing and a link to my new Discord Page. If you want to join early to the launch, here’s the link: https://discord.gg/ccgyRZArYm"}, {"post_id": 57724, "ts": "2026-08-29T23:55:41Z", "hours": 8.8753, "text": "🎉🎉MAJOR UPDATE🎉🎉: For the past few days I’ve been working on a few updates, which include finishing and balancing the new Super Nova feature. When you max out all 3 power-up upgrades, it allows you to super charge. One of them includes Double Shot, 2x score on top of 2x score, and buffs for a short amount of time after your shield breaks. I made waves infinitely and made them progressively harder with each passing wave. I added a slight amount of polish to the menu where a little click sound plays when you toggle settings or press a button. I realized that when the player got hit it wasn’t very noticeable since it played the same sound as when an enemy got hit, so I added screen shake which was something I wanted to add for a while but procrastinated it because the way I made my scrolling background with a Parallax background that had a Parallax layer and sprite 2D as a child so when I added the camera 2D node it stopped the background from scrolling so I had to delete all of that and update it with the newer method. But after an hour or so, I got it looking clean and was happy with it, so now when the player takes damage, there is a very noticeable shake to the screen, which helps indicate that you got hit. I also added this to the enemy, but you have to build up a fairly large consecutive hit counter to really notice it. I did start to work on a new tank enemy since all of the existing ones are relatively weak, so this one will have 5 HP, which is half of an asteroid, and will shoot double-shot bullets, which will be punishing if the player gets hit by it. Speaking of HP, instead of healing the player’s hearts back to their maximum amount despite the current amount, it now only heals you by one heart. Now normally, I would have a video to showcase all of these new features, but my thing is weird and will only take images, not videos, so sorry if it’s missing, like all of the updates."}, {"post_id": 48557, "ts": "2026-08-17T00:20:01Z", "hours": 10.9817, "text": "Major Update: Over the past few days, I’ve added a lot of features that will have a significant impact on the game. The first of which is a new shop where the player can purchase upgrades, including a +5% speed increase (limit of 25%), a +5% fire rate upgrade (limit of 25%), and, lastly, a refuel upgrade, which will refill 5% for the cost of 1 coin. The player now has 3 lives instead of just 1, which will allow the player to progress through the game more. In the shop the player can upgrade the amount of lives they have(max of 5). After each wave their health returns to it’s maximum, but fuel will remain the same. In the power-ups tab, the player can increase the duration of each power-up by a maximum of 5 seconds. Once the player maxes out all 3 power-ups, they will unlock a feature called Super Nova were they can select one of the three power-ups to gain a new feature that will help the player survive new waves. Speaking of waves, the next change includes breaking up the game into multiple waves. This change allows the player to get a break between waves to upgrade their ship in the shop. This also makes the player feel like they are progressing through the game more."}, {"post_id": 45996, "ts": "2026-08-12T20:45:30Z", "hours": 5.9294, "text": "Large Update: Last night and this morning, I’ve been working on some new features, including a new fuel tank that slowly depletes, and the only way to refill it is by collecting fuel canisters. This change also allows the player to hold down Shift to get a 50% speed increase, but the fuel tank goes down twice as fast. I also added a new fire particle effect that follows the player, making the game feel much livelier. Coins are also a new feature that have a 10% drop rate on the death of an enemy. Right now, coins do nothing, but in the future I have plans to add a shop/upgrade feature. The player now has three lives instead of one; this makes the game feel more forgiving, but when you lose a heart, your fuel tank decreases by 20%, making fuel a much bigger problem than before. When your fuel tank hits 0, the game is over regardless of how many hearts the player has."}, {"post_id": 45420, "ts": "2026-08-11T21:06:05Z", "hours": 2.1111, "text": "Today’s changes include adding a new power-up, which is a shield that protects the player from one hit for 10 seconds. There is a shield Icon which follows the player around, acting as a visual indicator for the power-up. I also made the player movement much smoother by making the player accelerate in a direction instead of moving at a flat rate, which makes the game overall feel much more “alive”."}, {"post_id": 44986, "ts": "2026-08-11T03:37:37Z", "hours": 9.8844, "text": "Major update: as you can tell from me logging in more than 9 hours, I made a lot of changes, which include two new enemies because I realized as long as you don’t actively try to die, you can live forever, so we have two new enemies, both of which fire bullets at the player, so you have something that poses a threat unlike the old enemies. One is quick, has a fast firing speed, and is small, but only has 1 hp. It also provides more points than its much slower partner, who has 2 hp, a slower firing rate, and a bigger hitbox. I also added two power-ups, randomly selected from the two as collectable items: the first doubles your shoot cooldown for 5 seconds, and the second doubles your score income for 15 seconds. When you collect a power-up, a bar appears at the bottom of your screen, showing how much time remains on your power-up. That’s all that I did for this week, and more features are on their way. Thanks! p.s. I can’t add a video containing the update because my thing is weird and only lets me upload images to Stardance. Sorry about the inconvenience😭"}, {"post_id": 41458, "ts": "2026-08-05T17:55:55Z", "hours": 3.8344, "text": "These past few days, I worked on adding polish, bug fixes, and a new load screen. The load screen GUI is just a placeholder until I can polish it off. I might have to scrap an online leaderboard because I’m new to Godot and know very little GD script, so I can’t use SilentWolf. I’ve been working on implementing Talo, but I can’t find any tutorials, and Google can’t help me with it. Unless I can get it working I don’t think I can add an online leader board."}, {"post_id": 38325, "ts": "2026-07-31T17:27:19Z", "hours": 1.1819, "text": "I need help. I did finally fix the one bug that stopped enemies from spawning, but my next goal was to make a leaderboard, so I set up all of the UI for it, and when I realized I had no idea what I was doing, I ultimately looked up a YouTube tutorial. I didn’t realize that I needed to use a plugin to create an online server for my game. And when I tried to download Silent Wolf, it wouldn’t let me because I was still using version 4.4, and I didn’t want to update it in case it broke my game. So do I scrap leaderboards, or is there some other way?"}, {"post_id": 38211, "ts": "2026-07-31T14:41:42Z", "hours": 5.3556, "text": "Lately I’ve been working on adding a settings feature that includes options for music, sound effects, and a reset data button. While working on this feature, I managed to break my entire game, so fingers crossed I can fix it. I plan on adding an online leaderboard (If I can fix the game)."}, {"post_id": 35191, "ts": "2026-07-26T13:44:00Z", "hours": 4.8325, "text": "Void Strike is a space shooter-type game in which the player must test their skills by trying to survive for as long as possible while gaining points by killing enemies. Changelog: Added an asteroid, which is a new obstacle that has a lot of HP and permits the enemies to advance closer to the player. Bug fixes I haven’t posted a devlog because I’ve been on vacation so I’m very behind on my project."}, {"post_id": 3278, "ts": "2026-06-06T04:13:02Z", "hours": 6.4203, "text": "Void Strike is a space shooter-type game in which the player must test their skills by trying to survive for as long as possible while gaining points by killing enemies. I haven’t posted a Dev-log for a while, but I’ve added a lot of features in that time. Changelog Scrolling background and particle effects Sound effects On-screen score counter High-score Game over screen Player Balancing Difficulty increases over time My next steps will be to add a main menu, possibly a shop and a currency to buy player upgrades, and a competitive global scoreboard. P.S. I would take a video, but my internet keeps showing an error, so I’ve taken a photo instead. Believe me, I added what I said I did."}, {"post_id": 1829, "ts": "2026-06-04T01:27:56Z", "hours": 1.7686, "text": "Void Strike is a simple space shooter type game that I’m working on. I know it’s a little simple, but I’m inexperienced with Godot. Changelog You can hold down space to shoot 2 new enemies (1 fast, and 1 slow) Randomized enemy spawning"}, {"post_id": 1748, "ts": "2026-06-03T22:43:16Z", "hours": 2.7453, "text": "Void Strike, which is a space shooter I just started working on. It will be on the simpler side, because I’m new to using Godot. So far I have the player movement, and shooting working. I plan to add a lot more in the future."}]...
|
Title: Void Strike by @JudeW | Stardance
Devlogs: Title: Void Strike by @JudeW | Stardance
Devlogs:
Void Strike, which is a space shooter I just started working on. It will be on the simpler side, because I’m new to using Godot. So far I have the player movement, and shooting working. I plan to add a lot more in the future.
Void Strike is a simple space shooter type game that I’m working on. I know it’s a little simple, but I’m inexperienced with Godot. Changelog You can hold down space to shoot 2 new enemies (1 fast, and 1 slow) Randomized enemy spawning
Void Strike is a space shooter-type game in which the player must test their skills by trying to survive for as long as possible while gaining points by killing enemies. I haven’t posted a Dev-log for a while, but I’ve added a lot of features in that time. Changelog Scrolling background and particle effects Sound effects On-screen score counter High-score Game over screen Player Balancing Difficulty increases over time My next steps will be to add a main menu, possibly a shop and a currency to buy player upgrades, and a competitive global scoreboard. P.S. I would take a video, but my internet keeps showing an error, so I’ve taken a photo instead. Believe me, I added what I said I did.
Void Strike is a space shooter-type game in which the player must test their skills by trying to survive for as long as possible while gaining points by killing enemies. Changelog: Added an asteroid, which is a new obstacle that has a lot of HP and permits the enemies to advance closer to the player. Bug fixes I haven’t posted a devlog because I’ve been on vacation so I’m very behind on my project.
Lately I’ve been working on adding a settings feature that includes options for music, sound effects, and a reset data button. While working on this feature, I managed to break my entire game, so fingers crossed I can fix it. I plan on adding an online leaderboard (If I can fix the game).
I need help. I did finally fix the one bug that stopped enemies from spawning, but my next goal was to make a leaderboard, so I set up all of the UI for it, and when I realized I had no idea what I was doing, I ultimately looked up a YouTube tutorial. I didn’t realize that I needed to use a plugin to create an online server for my game. And when I tried to download Silent Wolf, it wouldn’t let me because I was still using version 4.4, and I didn’t want to update it in case it broke my game. So do I scrap leaderboards, or is there some other way?
These past few days, I worked on adding polish, bug fixes, and a new load screen. The load screen GUI is just a placeholder until I can polish it off. I might have to scrap an online leaderboard because I’m new to Godot and know very little GD script, so I can’t use SilentWolf. I’ve been working on implementing Talo, but I can’t find any tutorials, and Google can’t help me with it. Unless I can get it working I don’t think I can add an online leader board.
Major update: as you can tell from me logging in more than 9 hours, I made a lot of changes, which include two new enemies because I realized as long as you don’t actively try to die, you can live forever, so we have two new enemies, both of which fire bullets at the player, so you have something that poses a threat unlike the old enemies. One is quick, has a fast firing speed, and is small, but only has 1 hp. It also provides more points than its much slower partner, who has 2 hp, a slower firing rate, and a bigger hitbox. I also added two power-ups, randomly selected from the two as collectable items: the first doubles your shoot cooldown for 5 seconds, and the second doubles your score income for 15 seconds. When you collect a power-up, a bar appears at the bottom of your screen, showing how much time remains on your power-up. That’s all that I did for this week, and more features are on their way. Thanks! p.s. I can’t add a video containing the update because my thing is weird and only lets me upload images to Stardance. Sorry about the inconvenience😭
Today’s changes include adding a new power-up, which is a shield that protects the player from one hit for 10 seconds. There is a shield Icon which follows the player around, acting as a visual indicator for the power-up. I also made the player movement much smoother by making the player accelerate in a direction instead of moving at a flat rate, which makes the game overall feel much more “alive”.
Large Update: Last night and this morning, I’ve been working on some new features, including a new fuel tank that slowly depletes, and the only way to refill it is by collecting fuel canisters. This change also allows the player to hold down Shift to get a 50% speed increase, but the fuel tank goes down twice as fast. I also added a new fire particle effect that follows the player, making the game feel much livelier. Coins are also a new feature that have a 10% drop rate on the death of an enemy. Right now, coins do nothing, but in the future I have plans to add a shop/upgrade feature. The player now has three lives instead of one; this makes the game feel more forgiving, but when you lose a heart, your fuel tank decreases by 20%, making fuel a much bigger problem than before. When your fuel tank hits 0, the game is over regardless of how many hearts the player has.
Major Update: Over the past few days, I’ve added a lot of features that will have a significant impact on the game. The first of which is a new shop where the player can purchase upgrades, including a +5% speed increase (limit of 25%), a +5% fire rate upgrade (limit of 25%), and, lastly, a refuel upgrade, which will refill 5% for the cost of 1 coin. The player now has 3 lives instead of just 1, which will allow the player to progress through the game more. In the shop the player can upgrade the amount of lives they have(max of 5). After each wave their health returns to it’s maximum, but fuel will remain the same. In the power-ups tab, the player can increase the duration of each power-up by a maximum of 5 seconds. Once the player maxes out all 3 power-ups, they will unlock a feature called Super Nova were they can select one of the three power-ups to gain a new feature that will help the player survive new waves. Speaking of waves, the next change includes breaking up the game into multiple waves. This change allows the player to get a break between waves to upgrade their ship in the shop. This also makes the player feel like they are progressing through the game more.
🎉🎉MAJOR UPDATE🎉🎉: For the past few days I’ve been working on a few updates, which include finishing and balancing the new Super Nova feature. When you max out all 3 power-up upgrades, it allows you to super charge. One of them includes Double Shot, 2x score on top of 2x score, and buffs for a short amount of time after your shield breaks. I made waves infinitely and made them progressively harder with each passing wave. I added a slight amount of polish to the menu where a little click sound plays when you toggle settings or press a button. I realized that when the player got hit it wasn’t very noticeable since it played the same sound as when an enemy got hit, so I added screen shake which was something I wanted to add for a while but procrastinated it because the way I made my scrolling background with a Parallax background that had a Parallax layer and sprite 2D as a child so when I added the camera 2D node it stopped the background from scrolling so I had to delete all of that and update it with the newer method. But after an hour or so, I got it looking clean and was happy with it, so now when the player takes damage, there is a very noticeable shake to the screen, which helps indicate that you got hit. I also added this to the enemy, but you have to build up a fairly large consecutive hit counter to really notice it. I did start to work on a new tank enemy since all of the existing ones are relatively weak, so this one will have 5 HP, which is half of an asteroid, and will shoot double-shot bullets, which will be punishing if the player gets hit by it. Speaking of HP, instead of healing the player’s hearts back to their maximum amount despite the current amount, it now only heals you by one heart. Now normally, I would have a video to showcase all of these new features, but my thing is weird and will only take images, not videos, so sorry if it’s missing, like all of the updates.
Small Update: I just added a notes and acknowledgements page to replace the old broken leaderboard page. It just includes some writing and a link to my new Discord Page. If you want to join early to the launch, here’s the link: https://discord.gg/ccgyRZArYm
🎉🎉Major Update🎉🎉 After a little bit of playtesting, I came to the conclusion that the game needed to be much harder because it came up as a problem more often than not. I was already planning to add a few more enemy types, so it didn’t really matter. New Enemy Types 1) A horde of diver enemies 2) A large tank enemy that has double shots 3) A Suicider enemy which pathfinds to the player 4) An asteroid field that can spawn I also plan on adding a bomber enemy with explosions, and a flame thrower enemy which will deal more damage the longer you are in the flames and will burn your fuel. But because I was so close to the 10-hour limit, I have to make a devlog before continuing on it. I also decreased the wavelength from 30 seconds to just 20 because it made for a much faster-paced game and was easier on the player. In the future, I plan on adding a keybind option to the settings, which might take a while to figure out, bosses, which probably won’t happen, and a ton more polish to the menu because it looks terrible.
Fairly large update!!! Over the past few days, I’ve been working and have gotten quite a lot done. Recent changes include A new bomber enemy who appears on wave 15, dropping bombs as it passes through. Bombs have 3 seconds before exploding and deal the standard 1 HP. Then I polished the menu so that instead of having ugly buttons down at the bottom of the screen, I now have large transparent buttons right in the middle of the screen. I also made the buttons feel really juicy, changing color and playing a short clicking sound when hovered over with the mouse. I changed up the settings panel by adding some darker panels for detail and organization. Instead of the set WASD and arrow keys, I now have key binding as an option. I don’t know what other controls players would use, but just in case, and it also makes the game feel more polished. I think right now I plan on adding a stats page in the menu next that can showcase stuff like your highest wave, how many attempts, and enemies killed. But I think I’m going to save that for tomorrow. So for now, I’ll see you in the next devlog. :)
This morning, I’ve been working on adding a statistics menu to the menu, which keeps track of stuff like your highest wave or how many power-ups you’ve bought. All of the things are saved after closing the window, so not much has been added, but it’s something.
I’ve just been working on adding some finishing touches lately, most of which include working with the new log feature. Inside of it I have three different tabs Enemies which is just a list of all of the different enemies and their stats like hp and speed. The second one is for achievements. I have ten so far, which include: First Orbit, earned by playing for 15 mins. Deep Space Transit for 30 minutes, and Time Flies for an hour. Atmosphere Cleared for getting to wave 5. Flight Lieutenant for wave 15. Squadron Leader for wave 30, and Cosmic Anomaly for 50. Just Getting Warm for killing a thousand enemies. Determined I for dying 50 times and Determined II for dying 100 times. I also added some progress bars to visually show your progress towards the achievements. For the stats menu, all I changed was adding a darker panel behind all the stats to add some detail; other than that, that’s all I did. Also, the scrolling menus were almost my downfall.
Lately I’ve just been polishing the game. Nothing super interesting. I fixed the keybindings because when you selected a key with a long name like RightBracket, the label would expand into the button and overlap. I just made a better layout for it and made it so the text would be aligned on the right side, making it expand to the left instead. Then I worked on cleaning up some of my code since I’m planning on shipping tomorrow. Then I added a TON of polish to the main menu. I added a little rotating tip at the bottom and displayed your high score and highest wave at the top of the menu, which was easy enough. I still want to log at least two more hours, so if anyone has ideas, please let me know, because I’m out of ideas. Also, in the pictures, if the text looks sideways, it’s because I rotated it as a little animation. I think the current total for lines of code is 3005, if you’re interested, btw.
Finally finished the game!!! Just posting a quick devlog before shipping. I added satellites and space junk that can fly in from the right side of your screen, which adds an extra obstacle. The only hard part about it was figuring out some physics equations with Newton’s Law of Universal Gravitation. After that, it was finished. Here’s my code if you want to look at it(GDScript): extends Node2D var item = 0 var active_node: Node2D = null var velocity := Vector2.ZERO var rotation_speed := 0.0 var spawning_enabled := true const MIN_SPAWN_TIME = 10.0 const MAX_SPAWN_TIME = 15.0 const PLANET_POSITION = Vector2(300, 1500) const GRAVITY_STRENGTH = 450000.0 @onready var timer = $Timer @onready var small_satellite = $“Small satelltite” @onready var large_satellite = $“Large satellite” @onready var scrap = $Scrap func _ready() -> void: randomize_next_spawn_time() func _process(delta: float) -> void: if active_node and active_node.visible: var vector_to_planet = PLANET_POSITION - active_node.global_position var distance = vector_to_planet.length() var direction = vector_to_planet.normalized() var gravity_force = direction * (GRAVITY_STRENGTH / (distance * distance)) velocity += gravity_force * delta active_node.global_position += velocity * delta active_node.rotation += rotation_speed * delta if active_node.global_position.x < -150: disable_active_node() func _on_timer_timeout() -> void: randomize_next_spawn_time() if not spawning_enabled: return item = randi_range(1, 3) if item == 1: pick_small() elif item == 2: pick_large() else: pick_scrap() func randomize_next_spawn_time() -> void: if timer: timer.wait_time = randf_range(MIN_SPAWN_TIME, MAX_SPAWN_TIME) timer.start() func reset_and_launch(node: Node2D): disable_active_node() small_satellite.hide() large_satellite.hide() scrap.hide() node.show() node.global_position = Vector2(600, randi_range(0, 960)) velocity = Vector2(-150, -45) rotation_speed = randf_range(-1.5, 1.5) if node.has_method("set_deferred"): node.set_deferred("monitoring", true) node.set_deferred("monitorable", true) active_node = node func disable_active_node(): if active_node: active_node.hide() if active_node.has_method(“set_deferred”): active_node.set_deferred(“monitoring”, false) active_node.set_deferred(“monitorable”, false) func stop_spawning() -> void: spawning_enabled = false timer.stop() func start_spawning() -> void: spawning_enabled = true randomize_next_spawn_time() func pick_small(): reset_and_launch(small_satellite) func pick_large(): reset_and_launch(large_satellite) func pick_scrap(): reset_and_launch(scrap) func _on_scrap_body_entered(body: Node2D) -> void: if body.has_method(“take_damage”): body.take_damage() disable_active_node() func _on_large_satellite_body_entered(body: Node2D) -> void: if body.has_method(“take_damage”): body.take_damage() disable_active_node() func _on_small_satelltite_body_entered(body: Node2D) -> void: if body.has_method(“take_damage”): body.take_damage() disable_active_node()
Ships:
Hi! The project I’ve been working on is called Void Strike. It’s a space shooter game in which the player controls a spaceship and must survive hordes of enemy waves. The reason why I chose to create this game is that I thought it would be easy. Since I’ve never really used Godot, I thought I should start simple. By the end of working on it, I can confidently say that I’ve learned at least the basics of the engine. That’s all anyway. Have Fun! Also, last night when I was trying to add it to Itch.io, I accidentally overwrote LITERALLY ALL of my files and everything, so the only thing I have left is the HTML export, and the entire project on my Godot account is just gone, and I can’t recover it, so if there is anything a little buggy, that’s probably why. And I can’t do anything about it, sorry. I just decided to ship it as it currently is instead of not shipping it at all, since I’ve already spent too much of my time on this. Once more, I’m sorry....
|
1793004979.3407114
|
1793091379.3407114
|
|
706
|
Clash Royale Lookup by @Mice | Stardance
|
Mice
|
1
|
6.31
|
58
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-08T01:50:52Z", "hours": 5.0, "multiplier": 12.02, "payout": 58, "blessing": "neutral", "text": "I made a Clash Royale search tool because I found that there wasn’t many other there that didn’t have ads and were open source. I decided to chose C# as the language I was going to use because I wanted to branch out and try a new language. While it was challenging at first, I managed to write a functional program in a new language that might just be one of my favorite languages to write in. I enjoyed using Bootstrap and making the css for this as it was pretty easy since everything just worked.", "repo": "https://github.com/miceoroni/ClashRoyaleLookup", "demo": "https://clashlookup.miceoroni.xyz/"}]...
|
[{"post_id": 71349, "ts": "202 [{"post_id": 71349, "ts": "2026-09-20T17:53:39Z", "hours": 1.3072, "text": "Devlog #4 - The Revisit of the Century Hello everyone, I decided to finally tidy up this project after not doing so since likeeee August. In doing so, I got around to finally crushing some bugs. One of the most tedious bugs was the loading circle of doom. This one was a pretty difficult bug to squash, but I managed to fix it by going into PlayerController and adding messages to things. Another thing I did was implement a Win Rate. Following the suggestion of someone who reviewed my ship, I decided to go ahead and add this to see how good someone is at Clash (my win rate is HORRID, i have a 78 lol) Lastly, I added a error icon to the error message, so that it doesn’t look as bland. Things to tackle next: Possible clan leaderboard? Award showcase Time account was created Banner display that matches the players custom display That’s all for now, see you in the (hopefully) next part!"}, {"post_id": 4626, "ts": "2026-06-08T00:28:48Z", "hours": 1.1544, "text": "Nearing completion, need to tidy up some of the code and write a actually good README and we should be ready to ship!"}, {"post_id": 2824, "ts": "2026-06-05T17:30:19Z", "hours": 2.705, "text": "touched up on the html and added a new clan api endpoint! i also made the css look way better and more polished. i will throw up a demo site soon for you guys to play around with"}, {"post_id": 162, "ts": "2026-06-01T01:10:33Z", "hours": 0.9356, "text": "getting around to adding bootstrap and working on the web panel a bit. the end result will look way better, i promise. things i enjoyed so far: looking at bootstrap and seeing how it Just Works ™️ seeing how easy controllers are for Asp.Net things i want to do next: make the css look better add more features (cards, deck last used, etc) make a logo"}]...
|
Title: Clash Royale Lookup by @Mice | Stardance
D Title: Clash Royale Lookup by @Mice | Stardance
Devlogs:
getting around to adding bootstrap and working on the web panel a bit. the end result will look way better, i promise. things i enjoyed so far: looking at bootstrap and seeing how it Just Works ™️ seeing how easy controllers are for Asp.Net things i want to do next: make the css look better add more features (cards, deck last used, etc) make a logo
touched up on the html and added a new clan api endpoint! i also made the css look way better and more polished. i will throw up a demo site soon for you guys to play around with
Nearing completion, need to tidy up some of the code and write a actually good README and we should be ready to ship!
Devlog #4 - The Revisit of the Century Hello everyone, I decided to finally tidy up this project after not doing so since likeeee August. In doing so, I got around to finally crushing some bugs. One of the most tedious bugs was the loading circle of doom. This one was a pretty difficult bug to squash, but I managed to fix it by going into PlayerController and adding messages to things. Another thing I did was implement a Win Rate. Following the suggestion of someone who reviewed my ship, I decided to go ahead and add this to see how good someone is at Clash (my win rate is HORRID, i have a 78 lol) Lastly, I added a error icon to the error message, so that it doesn’t look as bland. Things to tackle next: Possible clan leaderboard? Award showcase Time account was created Banner display that matches the players custom display That’s all for now, see you in the (hopefully) next part!
Ships:
I made a Clash Royale search tool because I found that there wasn’t many other there that didn’t have ads and were open source. I decided to chose C# as the language I was going to use because I wanted to branch out and try a new language. While it was challenging at first, I managed to write a functional program in a new language that might just be one of my favorite languages to write in. I enjoyed using Bootstrap and making the css for this as it was pretty easy since everything just worked....
|
1792968802.3349752
|
1793055202.3349752
|
|
714
|
portfolio website!!! by @nate | Stardance
|
nate
|
1
|
9.28
|
42
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-23T02:50:59Z", "hours": 9.0, "multiplier": 4.97, "payout": 42, "blessing": "neutral", "text": "I made my portfolio website! It’s viewable at https://np3-0.github.io/Portfolio/ , and I am pretty happy with how it looks. The most challenging part was getting all of the effects done, but I am really proud of how they look, mainly the horizontal scrolling for the projects. Plus the GIF for PITK looks pretty sweet. To run, either open the link (above) or clone the github, and use npm i + npm run dev. Enjoy! This website was made with React, Tailwind, and Motion.dev.", "repo": "https://github.com/Np3-0/Portfolio", "demo": "https://np3-0.github.io/Portfolio/"}]...
|
[{"post_id": 14150, "ts": "202 [{"post_id": 14150, "ts": "2026-06-23T04:07:40Z", "hours": 0.2797, "text": "Readme! I sort of forgot about doing the readme… my bad? So, I followed the guide in stardance resources, and I think it is pretty good!"}, {"post_id": 14107, "ts": "2026-06-23T02:46:46Z", "hours": 0.3064, "text": "did some small edits to the portfolio website, mainly fixing some styling issues on small screens!"}, {"post_id": 5305, "ts": "2026-06-09T01:15:55Z", "hours": 2.24, "text": "The website is done (for now)! I got the contact section done, and I think I am at a good point to not work on it for a bit. I might do more once school ends, but I am happy with the result."}, {"post_id": 1891, "ts": "2026-06-04T03:27:42Z", "hours": 2.6031, "text": "Project layout for the website is done! For this section, I am taking inspiration from the projects for the styling. I only was able to work on the first one, and put all of the text needed in the app, so tomorrow is going to be implementing it. Check it out here (not fully done though): https://np3-0.github.io/Portfolio/"}, {"post_id": 1117, "ts": "2026-06-02T22:58:11Z", "hours": 1.9314, "text": "Base layout for the project section is done! I used a horizontal gallery template from motion, then heavily tweaked it. Right now, the plan is to have each of them open a second page, where it can go in-depth into the project. also you can check out the website here: https://np3-0.github.io/Portfolio/"}, {"post_id": 589, "ts": "2026-06-02T02:38:01Z", "hours": 1.6458, "text": "added the about section to my portfolio! gotta make it more responsive, but that’s for later. I got some really good ideas for my projects, but you’ll just have to wait and see!"}]...
|
Title: portfolio website!!! by @nate | Stardance
Title: portfolio website!!! by @nate | Stardance
Devlogs:
added the about section to my portfolio! gotta make it more responsive, but that’s for later. I got some really good ideas for my projects, but you’ll just have to wait and see!
Base layout for the project section is done! I used a horizontal gallery template from motion, then heavily tweaked it. Right now, the plan is to have each of them open a second page, where it can go in-depth into the project. also you can check out the website here: https://np3-0.github.io/Portfolio/
Project layout for the website is done! For this section, I am taking inspiration from the projects for the styling. I only was able to work on the first one, and put all of the text needed in the app, so tomorrow is going to be implementing it. Check it out here (not fully done though): https://np3-0.github.io/Portfolio/
The website is done (for now)! I got the contact section done, and I think I am at a good point to not work on it for a bit. I might do more once school ends, but I am happy with the result.
did some small edits to the portfolio website, mainly fixing some styling issues on small screens!
Readme! I sort of forgot about doing the readme… my bad? So, I followed the guide in stardance resources, and I think it is pretty good!
Ships:
I made my portfolio website! It’s viewable at https://np3-0.github.io/Portfolio/ , and I am pretty happy with how it looks. The most challenging part was getting all of the effects done, but I am really proud of how they look, mainly the horizontal scrolling for the projects. Plus the GIF for PITK looks pretty sweet. To run, either open the link (above) or clone the github, and use npm i + npm run dev. Enjoy! This website was made with React, Tailwind, and Motion.dev....
|
1792975710.0082207
|
1793062110.0082207
|
|
733
|
My portfolio by @Seb | Stardance
|
Seb
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-12T22:53:43Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "So i finnaly go this site to work with help of the tutorial and a bit of ai. I added a cool ctf_2fort_infection background. Added a couple apps to show some things about me. In the certificats app i added some awards i got (its only 1). Its a bit empty but i might add some more stuff later. I tried to add a tracker to see if im playing anything on steam but turns out it dosent work on github pages.", "repo": "https://github.com/Bald-gordon/MyWebOS-Porfolio", "demo": "https://portfolio.baldseb.app/"}]...
|
[{"post_id": 27396, "ts": "202 [{"post_id": 27396, "ts": "2026-07-12T22:47:14Z", "hours": 0.4614, "text": "So for the past like 2 weeks i have been working on making a portfolio on whatever things i do and i themed the site to look like tf2 cause i LOVE team fortress 2. Anyways im doing this since i have to pu something here."}]...
|
Title: My portfolio by @Seb | Stardance
Devlogs:
Title: My portfolio by @Seb | Stardance
Devlogs:
So for the past like 2 weeks i have been working on making a portfolio on whatever things i do and i themed the site to look like tf2 cause i LOVE team fortress 2. Anyways im doing this since i have to pu something here.
Ships:
So i finnaly go this site to work with help of the tutorial and a bit of ai. I added a cool ctf_2fort_infection background. Added a couple apps to show some things about me. In the certificats app i added some awards i got (its only 1). Its a bit empty but i might add some more stuff later. I tried to add a tracker to see if im playing anything on steam but turns out it dosent work on github pages....
|
1792972127.472004
|
1793058527.472004
|
|
743
|
Pokemon Macropad by @Sahild | Stardance
|
Sahild
|
1
|
42.46
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-20T01:52:51Z", "hours": 13.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Pokemon Hackpad is a 5 key macropad with a rotary encoder, and 4 SK6812 MINI E RGB LEDs. It uses KMK firmware Features: An EC11 rotary encoder, controls volume, click to mute 4 SK6812 MINI E RGB LEDs, swirl and static modes 5 Cherry MX style keys, encoder click counts as the 5th Pokemon themed design", "repo": "https://github.com/sahilchess/Pokemon-Hackpad", "demo": ""}]...
|
[{"post_id": 25085, "ts": "202 [{"post_id": 25085, "ts": "2026-07-09T01:56:48Z", "hours": 0.3078, "text": "kmk update i added oled support and thats really it"}, {"post_id": 24799, "ts": "2026-07-08T16:21:22Z", "hours": 0.4333, "text": "done im not writing anything her ebc imma write a ship post nvm you dont ship post for hardware….. here is my hackpad: 5 keys and a rotary encoder/switch in matrix wiring, an OLED scree, 3 rgb LEDS (1 for underglow, 2 for key glow and lighting up the case.). the case has a 2 degree tilt. thereason it isnt more is bc the screws wouldn’t reach if it was more. the case is 126.64mm (length) x 95.18mm (width) x 21.5mm (height)"}, {"post_id": 24459, "ts": "2026-07-08T01:12:48Z", "hours": 0.4667, "text": "almost done early devlog here. im just saing i finsihed teh redo for the holes making them 7mm from the wall instead of 5mm. but now i mchoosing to make them 10mm isntead of 7mm. here it is rn i should be done by next session or max tmmrw"}, {"post_id": 24452, "ts": "2026-07-08T00:43:36Z", "hours": 4.45, "text": "holy crappedididapidee I’m almost done and this is like surreal. finally, all my hard work is coming to an end. all my pain suffering diligence is showing as a final product i added a hc logo in the top right. i gave up on the “cool effect” for a pokemon logo bc i keep getting manifold body errors. I used the 2020 HC progress logo so i could get a cool rounded fillet effect. also, instead of making the holes 5mm from the wall, they are 7mm. i saw some pics also changing the name to pokepad"}, {"post_id": 23233, "ts": "2026-07-06T01:45:36Z", "hours": 5.2564, "text": "design im now more focused on designs i added a pikachu and meowth. im ttryna add the pokemon logo. whats cool is that imma make it so the blue part with bbe at a different height from teh yellow and is will be a very cool effect."}, {"post_id": 21899, "ts": "2026-07-04T02:21:15Z", "hours": 0.3836, "text": "production productive I got a good job. I got the HC banner into the bottom, got the under glow led fixated. I was forced to move the old screen because it was too close and I wanted to chamfer the keys. Then I chamfered the keys. i removed the fillets for less ram usage also here are the 2.9 hours that i didn’t record to hackatime: one two three"}, {"post_id": 21224, "ts": "2026-07-03T01:41:03Z", "hours": 0.9836, "text": "uhh so um. i was looking at my previous timlapses and i noticed…. that i was idling a ton. so and um.i dont want to count for fraud, so… uh…. my idea was to record my self designing for like 4 hours and would NOT put that in hackatime/lookout/lapse. i would just record it. i i would put it here. but yeah thats what happened. i also got a 3rd layer"}, {"post_id": 21041, "ts": "2026-07-02T20:17:23Z", "hours": 2.1453, "text": "im going crazy finished importing all the parts and moved them out of the main document so my computer doesn’t die opening it found a problem though. the plate is only sized for the upper part of the switch base and not the bottom part so nothing sits right when i put it together gonna need to add some tolerances to the parts too or nothing’s gonna fit clean back to onshape"}, {"post_id": 20092, "ts": "2026-07-01T16:42:35Z", "hours": 0.4503, "text": "onshape onshape is soooooo slow, even on unshaded graphics and ambient occlusion and 0%. like this is crazy. just yesterday it was good and now it is horrible"}, {"post_id": 19625, "ts": "2026-07-01T00:17:04Z", "hours": 1.2669, "text": "wow i made a lot of updates here they are: usbc hole is rounded added in the pcb started adding in the parts removed my shading and maybe (call me crazy) i might use unshaded some of the time"}, {"post_id": 17654, "ts": "2026-06-28T15:16:18Z", "hours": 3.7528, "text": "bro what i really dont know waht i did for 3hrs but ig i will devlog i uh imported my pcb into onshape and that took really long ig and i am still tryna figure out why my top case doesnt align with the silkscreen on my pcb"}, {"post_id": 15140, "ts": "2026-06-24T16:27:00Z", "hours": 1.285, "text": "Routing done yeah ig thats it, i finished routing, now we gonna cad some more. I also figured out that you can use KMK for all of this. idk what QMK is for if KMK has all of this. ts is just in a harder coding lang"}, {"post_id": 14780, "ts": "2026-06-24T00:35:11Z", "hours": 4.6083, "text": "updates and descisions i updated the board by rounding the corners, i updated the 3d models of parts in kicad, and now it looks very good. I also added an OLDE. future i am gonna make my thign look like the orpheuspad like qcoral :). (not copying) but like I would like it to look as clean as it with the round corners and no screw holes on the tops."}, {"post_id": 13899, "ts": "2026-06-22T19:42:57Z", "hours": 3.6661, "text": "im tilting I added a tilt and this is prolly the coolest thing abt this case. how i did it was i created a rectangle with lenght of the case width. then extrudedd that and rotated it just like the rest of the case. tehn i got the mesurement of the triangle it created. then i extrueded teh triangle. that is the wedge created. next, I added one hole for the screw and insert. since i only get 6 screws and inserts and already used 4, i can only secure the tilt with 2. i had to use a hole instead of the extrude because the screws have to be perpendicualr to the bottom. i also made the insert be in the bottom case instead of the tilt because i didn’t like the vision of the heatset insert being visible"}, {"post_id": 12289, "ts": "2026-06-20T01:50:32Z", "hours": 6.2314, "text": "pokemon macropad is done finished the wiring changes, added the 4 rgb leds, wrote the kmk firmware for the encoder and keys, finalized the case in onshape, and wrapped up the submission reqs. fully built, fully working, pokemon themed start to finish"}, {"post_id": 3807, "ts": "2026-06-06T21:13:28Z", "hours": 2.3547, "text": "Case Designing so i basically worked for 2 hours and finished the case and am planning to add more flair like my name and some pokemon later👍"}, {"post_id": 2938, "ts": "2026-06-05T20:54:41Z", "hours": 0.6283, "text": "next step is the usb c hole and the firmware!"}, {"post_id": 2906, "ts": "2026-06-05T20:11:40Z", "hours": 3.9333, "text": "🫠fusion blew my computer up so i had to shift to onshape"}]...
|
Title: Pokemon Macropad by @Sahild | Stardance
De Title: Pokemon Macropad by @Sahild | Stardance
Devlogs:
🫠fusion blew my computer up so i had to shift to onshape
next step is the usb c hole and the firmware!
Case Designing so i basically worked for 2 hours and finished the case and am planning to add more flair like my name and some pokemon later👍
pokemon macropad is done finished the wiring changes, added the 4 rgb leds, wrote the kmk firmware for the encoder and keys, finalized the case in onshape, and wrapped up the submission reqs. fully built, fully working, pokemon themed start to finish
im tilting I added a tilt and this is prolly the coolest thing abt this case. how i did it was i created a rectangle with lenght of the case width. then extrudedd that and rotated it just like the rest of the case. tehn i got the mesurement of the triangle it created. then i extrueded teh triangle. that is the wedge created. next, I added one hole for the screw and insert. since i only get 6 screws and inserts and already used 4, i can only secure the tilt with 2. i had to use a hole instead of the extrude because the screws have to be perpendicualr to the bottom. i also made the insert be in the bottom case instead of the tilt because i didn’t like the vision of the heatset insert being visible
updates and descisions i updated the board by rounding the corners, i updated the 3d models of parts in kicad, and now it looks very good. I also added an OLDE. future i am gonna make my thign look like the orpheuspad like qcoral :). (not copying) but like I would like it to look as clean as it with the round corners and no screw holes on the tops.
Routing done yeah ig thats it, i finished routing, now we gonna cad some more. I also figured out that you can use KMK for all of this. idk what QMK is for if KMK has all of this. ts is just in a harder coding lang
bro what i really dont know waht i did for 3hrs but ig i will devlog i uh imported my pcb into onshape and that took really long ig and i am still tryna figure out why my top case doesnt align with the silkscreen on my pcb
wow i made a lot of updates here they are: usbc hole is rounded added in the pcb started adding in the parts removed my shading and maybe (call me crazy) i might use unshaded some of the time
onshape onshape is soooooo slow, even on unshaded graphics and ambient occlusion and 0%. like this is crazy. just yesterday it was good and now it is horrible
im going crazy finished importing all the parts and moved them out of the main document so my computer doesn’t die opening it found a problem though. the plate is only sized for the upper part of the switch base and not the bottom part so nothing sits right when i put it together gonna need to add some tolerances to the parts too or nothing’s gonna fit clean back to onshape
uhh so um. i was looking at my previous timlapses and i noticed…. that i was idling a ton. so and um.i dont want to count for fraud, so… uh…. my idea was to record my self designing for like 4 hours and would NOT put that in hackatime/lookout/lapse. i would just record it. i i would put it here. but yeah thats what happened. i also got a 3rd layer
production productive I got a good job. I got the HC banner into the bottom, got the under glow led fixated. I was forced to move the old screen because it was too close and I wanted to chamfer the keys. Then I chamfered the keys. i removed the fillets for less ram usage also here are the 2.9 hours that i didn’t record to hackatime: one two three
design im now more focused on designs i added a pikachu and meowth. im ttryna add the pokemon logo. whats cool is that imma make it so the blue part with bbe at a different height from teh yellow and is will be a very cool effect.
holy crappedididapidee I’m almost done and this is like surreal. finally, all my hard work is coming to an end. all my pain suffering diligence is showing as a final product i added a hc logo in the top right. i gave up on the “cool effect” for a pokemon logo bc i keep getting manifold body errors. I used the 2020 HC progress logo so i could get a cool rounded fillet effect. also, instead of making the holes 5mm from the wall, they are 7mm. i saw some pics also changing the name to pokepad
almost done early devlog here. im just saing i finsihed teh redo for the holes making them 7mm from the wall instead of 5mm. but now i mchoosing to make them 10mm isntead of 7mm. here it is rn i should be done by next session or max tmmrw
done im not writing anything her ebc imma write a ship post nvm you dont ship post for hardware….. here is my hackpad: 5 keys and a rotary encoder/switch in matrix wiring, an OLED scree, 3 rgb LEDS (1 for underglow, 2 for key glow and lighting up the case.). the case has a 2 degree tilt. thereason it isnt more is bc the screws wouldn’t reach if it was more. the case is 126.64mm (length) x 95.18mm (width) x 21.5mm (height)
kmk update i added oled support and thats really it
Ships:
Pokemon Hackpad is a 5 key macropad with a rotary encoder, and 4 SK6812 MINI E RGB LEDs. It uses KMK firmware Features: An EC11 rotary encoder, controls volume, click to mute 4 SK6812 MINI E RGB LEDs, swirl and static modes 5 Cherry MX style keys, encoder click counts as the 5th Pokemon themed design...
|
1792994100.1487463
|
1793080500.1487463
|
|
748
|
We'll Be There. by @metrixgo | Stardance
|
metrixgo
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-04T05:13:19Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Update 0.15 Next Time… This update mainly focuses on the successful branch of ending 2. Added more animations. Added multiple sound effects, game objects, scripts to create tension. Fixed the main menu bug that didn’t work across all scenes. Added the check room manager. Didn’t finish it though.", "repo": "https://github.com/metrixgo/We-ll-Be-There.", "demo": "https://metrixgo.itch.io/well-be-there"}]...
|
[{"post_id": 1929, "ts": "2026 [{"post_id": 1929, "ts": "2026-06-04T05:12:10Z", "hours": 5.3133, "text": "Update 0.15 Next Time… This update mainly focuses on the successful branch of ending 2. Added more animations. Added multiple sound effects, game objects, scripts to create tension. Fixed the main menu bug that didn’t work across all scenes. Added the check room manager. Didn’t finish it though."}, {"post_id": 590, "ts": "2026-06-02T02:41:33Z", "hours": 0.6989, "text": "I’m making a horror game using Unity. It has some very exciting plots and interactions."}]...
|
Title: We'll Be There. by @metrixgo | Stardanc Title: We'll Be There. by @metrixgo | Stardance
Devlogs:
I’m making a horror game using Unity. It has some very exciting plots and interactions.
Update 0.15 Next Time… This update mainly focuses on the successful branch of ending 2. Added more animations. Added multiple sound effects, game objects, scripts to create tension. Fixed the main menu bug that didn’t work across all scenes. Added the check room manager. Didn’t finish it though.
Ships:
Update 0.15 Next Time… This update mainly focuses on the successful branch of ending 2. Added more animations. Added multiple sound effects, game objects, scripts to create tension. Fixed the main menu bug that didn’t work across all scenes. Added the check room manager. Didn’t finish it though....
|
1792968689.879376
|
1793055089.879376
|
|
754
|
better clouds by @orangishcat | Stardance
|
orangishcat
|
1
|
44.83
|
531
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-30T04:49:17Z", "hours": 32.0, "multiplier": 18.69, "payout": 531, "blessing": "neutral", "text": "it’s been roughly 3 months since i’ve taken over the project, and it’s been going great! again, huge thanks to qendolin for letting me maintain his minecraft mod!", "repo": "https://github.com/Qendolin/better-clouds", "demo": "https://modrinth.com/mod/better-clouds"}]...
|
[{"post_id": 67713, "ts": "202 [{"post_id": 67713, "ts": "2026-09-13T22:17:41Z", "hours": 12.8278, "text": "I made a few bug fixes and am preparing for 26.3 migration. I also need to make sure the Blaze3D renderer gets feature parity soon. I’m using old reference images like this one to see what the old OpenGL renderer used to be like"}, {"post_id": 18980, "ts": "2026-06-30T04:43:00Z", "hours": 0.3833, "text": "i’ve done what i’ve wanted to do for this project for now! i’ve polished up my devlogs, and gonna ship the project now. here’s a screenshot where i tried to make the clouds look realistic (they’re not supposed to look realistic, so this is very cursed)"}, {"post_id": 18414, "ts": "2026-06-29T15:41:30Z", "hours": 2.8464, "text": "Published 1.14.0 release! I renamed “Tint” -> “Top Color”, “Bottom Tint” -> “Bottom Color”, “Bottom Transition Range” -> “Color Transition End” also renamed the options keys too, with a migration thing that migrates the old options keys to the new ones ok ima take a break from this project for now! next up, probably a config system rewrite? i want to implement like discord roles thing, where: you start with a base config given a certain condition (e.g. dimension = minecraft:overworld), certain properties of the config are modified and repeat until you get dynamic clouds with your own defined conditions! or i might not do that idk it sounds kinda complicated"}, {"post_id": 15563, "ts": "2026-06-25T09:35:53Z", "hours": 6.9383, "text": "added a bottom tint option that basically lets you create a gradient on your clouds i’m getting quite familiar with shaders and graphics code! this is one of my main goals for the project, and i’m glad it’s working out well! also fixed a bunch of bugs basic description of the bottom tint algorithm: vertex shader: tint interpolation progress = (y level of the cloud vertex) / (transition range percentage * cloud height range) fragment shader: color = lerp(bottomColor, topColor, tintInterpProgress) by default, the effect is much more subtle than this, but it is still there"}, {"post_id": 12390, "ts": "2026-06-20T06:59:27Z", "hours": 1.5831, "text": "made the celestial body halo much bigger and more visible. i also added separate options for the sun and moon halo, and scaled the moon halo’s size based on the moon phase! also the way I change the halo size is kinda cursed. i’m using qendolin’s superellipse formula, and i only kinda understand how it works. // i still have no idea how this formula works but it seems to work fine float superellipse = ( ( 1.0 + ( 1.0 / 3.0 ) * ( pow ( cos ( 2.0 * projAngle ), 2.0 ))) * haloSize * ( 1.0 - abs ( superellipseFalloff )) - 1.0 ) * sign (- superellipseFalloff ); then i fit an exponential curve based on what halo size i wanted for which moon phase 💀 // larger value = smaller halo size float haloSize = dayTime () < config . shaderPreset (). sunsetEndTime ? 2.05f - config . sunHaloSizeMultiplier : ( float ) ( 5 * Math . pow ( 0.06217 , config . moonHaloSizeMultiplier * DimensionType . MOON_BRIGHTNESS_PER_PHASE [ moonPhase . index ()])); // curve fit for ideal moon halo size based on phase"}, {"post_id": 10514, "ts": "2026-06-17T08:17:49Z", "hours": 4.5678, "text": "updated to 26.2, and the blaze3d renderer I made works great on vulkan! the renderer was mostly done for weeks now, i just added neoforge back and that was mostly it. Iris was giving me problems as it hasn’t implemented reverse z yet. but i was able to fix that really easily because i kinda know what i’m doing now when touching graphics code! this woulda taken me forever if it were the first time i had to do this. also added longview support to 26.1.2 then declared it end of life"}, {"post_id": 3311, "ts": "2026-06-06T05:33:35Z", "hours": 1.7572, "text": "Added option in config screen to choose the renderer, Also added back frustum culling (where clouds don’t render behind the camera) Qendolin’s original algorithm for frustum culling was: compute the bounding box of a section of clouds (clouds are generated in sections with a chunk-like system). if the frustum of the camera (basically an object describing what part of the world the camera can see given a camera angle, position, and fov) can see the clouds, expand the bounding box with the next section of clouds else, render all the sections of clouds we can see, and skip this section if we can’t see it in other words: (original comment from the code) // This algorithm loops over chunks, which are in a line-by-line order. // When a visible chunk is found it's marked as a run start. The run continues until // the next non-visible chunk is found. At the end of a run the entire run is rendered as once. // This is possible due to the memory layout of the instance buffers."}, {"post_id": 2456, "ts": "2026-06-04T23:08:15Z", "hours": 2.0006, "text": "I’m preparing for 26.2 release! I updated the mod to 26.2 pre-4, as well as YACL 3.9.4 which also just came out earlier today. NeoForge is also out but I’m too lazy to setup their custom repo for prerelease builds so I will fix NF support when 26.2 releases. I fixed a really annoying bug that was making the cloud ripple effect way larger in magnitude than it was supposed to be (I sampled WorldPosition instead of WorldPosition - originOffset ) I added a hardcoded minimum brightness in the shader so that clouds will be just barely visible at nighttime. Also GLSL operations are element-wise which is pretty cool! Like you can do max(color.rgb, vec3(0.15)) and each element of the color vector will be element-wise compared with 0.15, and the bigger one will be chosen. Really elegant solution for my minimum brightness operation."}, {"post_id": 639, "ts": "2026-06-02T04:56:28Z", "hours": 2.9128, "text": "the renderer looks good again! i added back the light gradient sampling, so the clouds actually turn orange during sunset and go dark at night time like they used to. btw, I spent like 3 hours reading through https://open.gl/ . it’s a great tutorial, and i applied pretty much all of the graphics concepts i learned to this project! i’m using blaze3d instead of opengl this time, but the concepts still apply. how the algorithm works based on the time of day, it samples a color from this texture , where the white part of the texture produces the bright fluffy daytime clouds, the dark part produces the dark nighttime clouds, and the remaining orange and light blue produce the amazing cloud colors shown in the image during sunset and sunrise! i can’t explain the formula too much in detail, cuz i kinda just copied the math from the old code…"}, {"post_id": 183, "ts": "2026-06-01T06:23:52Z", "hours": 9.4714, "text": "spent like 12h getting the blaze3d renderer to work. long story short, the opengl renderer is a mess and I’m doing pretty much a full rewrite to get it to work on blaze3d. it’s taking extremely long but i’m happy because i’m learning a lot about graphics. the core functionality kinda works but there are all sorts of bugs, and a bunch of features are missing. some of them i probably just won’t be adding back. the old opengl renderer used a three shader setup: a coverage shader (establishes positions and colors of each cloud cube) a shading shader (recolors each cloud cube based on saturation, sunlight, and other properties) a depth shader (changes the transparency for each pixel based on how many cubes are overlapping) …wait what, why do you need all that? i assume order-independent transparency? whatever, i’m not doing allat, hopefully a simple cube drawing will work and blaze3d can handle the transparency stuff right now i have just one fragment shader and one vertex shader, basically the rendering setup possible. hopefully i don’t need anything else, considering i’m literally drawing just cubes… p.s. vulkan renderer so cool! performance is a lot better than opengl on my mac p.p.s cool formula: gl_Position = ProjMat * ViewMat * vec4(pos, 1) (ball knowledge required)"}]...
|
Title: better clouds by @orangishcat | Stardance
Title: better clouds by @orangishcat | Stardance
Devlogs:
spent like 12h getting the blaze3d renderer to work. long story short, the opengl renderer is a mess and I’m doing pretty much a full rewrite to get it to work on blaze3d. it’s taking extremely long but i’m happy because i’m learning a lot about graphics. the core functionality kinda works but there are all sorts of bugs, and a bunch of features are missing. some of them i probably just won’t be adding back. the old opengl renderer used a three shader setup: a coverage shader (establishes positions and colors of each cloud cube) a shading shader (recolors each cloud cube based on saturation, sunlight, and other properties) a depth shader (changes the transparency for each pixel based on how many cubes are overlapping) …wait what, why do you need all that? i assume order-independent transparency? whatever, i’m not doing allat, hopefully a simple cube drawing will work and blaze3d can handle the transparency stuff right now i have just one fragment shader and one vertex shader, basically the rendering setup possible. hopefully i don’t need anything else, considering i’m literally drawing just cubes… p.s. vulkan renderer so cool! performance is a lot better than opengl on my mac p.p.s cool formula: gl_Position = ProjMat * ViewMat * vec4(pos, 1) (ball knowledge required)
the renderer looks good again! i added back the light gradient sampling, so the clouds actually turn orange during sunset and go dark at night time like they used to. btw, I spent like 3 hours reading through https://open.gl/ . it’s a great tutorial, and i applied pretty much all of the graphics concepts i learned to this project! i’m using blaze3d instead of opengl this time, but the concepts still apply. how the algorithm works based on the time of day, it samples a color from this texture , where the white part of the texture produces the bright fluffy daytime clouds, the dark part produces the dark nighttime clouds, and the remaining orange and light blue produce the amazing cloud colors shown in the image during sunset and sunrise! i can’t explain the formula too much in detail, cuz i kinda just copied the math from the old code…
I’m preparing for 26.2 release! I updated the mod to 26.2 pre-4, as well as YACL 3.9.4 which also just came out earlier today. NeoForge is also out but I’m too lazy to setup their custom repo for prerelease builds so I will fix NF support when 26.2 releases. I fixed a really annoying bug that was making the cloud ripple effect way larger in magnitude than it was supposed to be (I sampled WorldPosition instead of WorldPosition - originOffset ) I added a hardcoded minimum brightness in the shader so that clouds will be just barely visible at nighttime. Also GLSL operations are element-wise which is pretty cool! Like you can do max(color.rgb, vec3(0.15)) and each element of the color vector will be element-wise compared with 0.15, and the bigger one will be chosen. Really elegant solution for my minimum brightness operation.
Added option in config screen to choose the renderer, Also added back frustum culling (where clouds don’t render behind the camera) Qendolin’s original algorithm for frustum culling was: compute the bounding box of a section of clouds (clouds are generated in sections with a chunk-like system). if the frustum of the camera (basically an object describing what part of the world the camera can see given a camera angle, position, and fov) can see the clouds, expand the bounding box with the next section of clouds else, render all the sections of clouds we can see, and skip this section if we can’t see it in other words: (original comment from the code) // This algorithm loops over chunks, which are in a line-by-line order. // When a visible chunk is found it's marked as a run start. The run continues until // the next non-visible chunk is found. At the end of a run the entire run is rendered as once. // This is possible due to the memory layout of the instance buffers.
updated to 26.2, and the blaze3d renderer I made works great on vulkan! the renderer was mostly done for weeks now, i just added neoforge back and that was mostly it. Iris was giving me problems as it hasn’t implemented reverse z yet. but i was able to fix that really easily because i kinda know what i’m doing now when touching graphics code! this woulda taken me forever if it were the first time i had to do this. also added longview support to 26.1.2 then declared it end of life
made the celestial body halo much bigger and more visible. i also added separate options for the sun and moon halo, and scaled the moon halo’s size based on the moon phase! also the way I change the halo size is kinda cursed. i’m using qendolin’s superellipse formula, and i only kinda understand how it works. // i still have no idea how this formula works but it seems to work fine float superellipse = ( ( 1.0 + ( 1.0 / 3.0 ) * ( pow ( cos ( 2.0 * projAngle ), 2.0 ))) * haloSize * ( 1.0 - abs ( superellipseFalloff )) - 1.0 ) * sign (- superellipseFalloff ); then i fit an exponential curve based on what halo size i wanted for which moon phase 💀 // larger value = smaller halo size float haloSize = dayTime () < config . shaderPreset (). sunsetEndTime ? 2.05f - config . sunHaloSizeMultiplier : ( float ) ( 5 * Math . pow ( 0.06217 , config . moonHaloSizeMultiplier * DimensionType . MOON_BRIGHTNESS_PER_PHASE [ moonPhase . index ()])); // curve fit for ideal moon halo size based on phase
added a bottom tint option that basically lets you create a gradient on your clouds i’m getting quite familiar with shaders and graphics code! this is one of my main goals for the project, and i’m glad it’s working out well! also fixed a bunch of bugs basic description of the bottom tint algorithm: vertex shader: tint interpolation progress = (y level of the cloud vertex) / (transition range percentage * cloud height range) fragment shader: color = lerp(bottomColor, topColor, tintInterpProgress) by default, the effect is much more subtle than this, but it is still there
Published 1.14.0 release! I renamed “Tint” -> “Top Color”, “Bottom Tint” -> “Bottom Color”, “Bottom Transition Range” -> “Color Transition End” also renamed the options keys too, with a migration thing that migrates the old options keys to the new ones ok ima take a break from this project for now! next up, probably a config system rewrite? i want to implement like discord roles thing, where: you start with a base config given a certain condition (e.g. dimension = minecraft:overworld), certain properties of the config are modified and repeat until you get dynamic clouds with your own defined conditions! or i might not do that idk it sounds kinda complicated
i’ve done what i’ve wanted to do for this project for now! i’ve polished up my devlogs, and gonna ship the project now. here’s a screenshot where i tried to make the clouds look realistic (they’re not supposed to look realistic, so this is very cursed)
I made a few bug fixes and am preparing for 26.3 migration. I also need to make sure the Blaze3D renderer gets feature parity soon. I’m using old reference images like this one to see what the old OpenGL renderer used to be like
Ships:
it’s been roughly 3 months since i’ve taken over the project, and it’s been going great! again, huge thanks to qendolin for letting me maintain his minecraft mod!...
|
1792979574.4771922
|
1793065974.4771922
|
|
759
|
Melanotaenia 4.0 by @abigail_L | Stardance
|
abigail_L
|
1
|
8.0
|
26
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-20T02:58:49Z", "hours": 8.0, "multiplier": 3.46, "payout": 26, "blessing": "neutral", "text": "Hello I have made a doodle jump parody with a twist called “Melanotaenia 4.0”. The twist for the game is that the player can change into four colors and can only touch a platform if they themself is the same color as the platform. The idea of this game was first made for the Hack Club juice Jam March 2025, but I gave up on the project. To me this is an incredible milestone because I started over with only the idea and actually completed it. How to Play: Goal is to go as high as possible to get the highest score Controls: Left arrow ( < ) = Move Left Right arrow (>) = Move Right Up arrow (^) = Jump Q = Orange E = Green R = Purple W = Yellow Sidenote: There is also a demo video at the bottom of my readme on github.", "repo": "https://github.com/Abbby1007/Melanotaenia-4.0", "demo": "https://abbby1007.itch.io/melanotaenia-40"}]...
|
[{"post_id": 12040, "ts": "202 [{"post_id": 12040, "ts": "2026-06-19T17:14:26Z", "hours": 0.6139, "text": "I have finished the Game. From the last devlog I added a background and created a stylized game title. I also finalized the itch.io Page and the Github Read me Also Excuse my previous screen recordings for the previous devlogs. The screenshot format changed so now the vidoes are zoomed in."}, {"post_id": 2193, "ts": "2026-06-04T15:38:14Z", "hours": 0.3764, "text": "Was busy today so not that much progress was made. Today I decided to add purple and yellow, while also making a parallax scrolling background. I am gonna take a short break on this game, so I can look at it with fresh eyes when I return. My goal when I return is to work on the title screen (title, buttons) and making the game look nicer. I might also work on sound design With the break from this game I am gonna try to enter my first game Jam."}, {"post_id": 1347, "ts": "2026-06-03T09:23:18Z", "hours": 0.9219, "text": "I added my own custom sprite for the player and platform (excuse the art I am not a great artist). I have decided to make my theme related to space. So the player will be a star that changes color. I still need to fix the look a lot, but I wanted to get it into demo version. I will be sharing this with friends and have them test it out on itch.io."}, {"post_id": 1243, "ts": "2026-06-03T03:03:19Z", "hours": 1.2667, "text": "So far for the game I have added a title screen (start and quit) and high score system. I believe I am done for now with all of the basic mechanics. My goal now is to work on the look of the game (Character, platforms, title screen, etc)"}, {"post_id": 538, "ts": "2026-06-02T00:35:07Z", "hours": 1.1203, "text": "I was switching between making this game a platformer or a doodle jump clone. I have decided to do a doodle Jump clone. Here I have an infinite loop for the platform generation."}, {"post_id": 219, "ts": "2026-06-01T09:59:07Z", "hours": 1.5039, "text": "I have made it to where the player bounces on a platform when in contact. Also if the player is not the correct color the scene/level resets"}, {"post_id": 185, "ts": "2026-06-01T06:33:44Z", "hours": 1.7511, "text": "I have completed the player’s ability to change color, based on key input"}]...
|
Title: Melanotaenia 4.0 by @abigail_L | Stardance
Title: Melanotaenia 4.0 by @abigail_L | Stardance
Devlogs:
I have completed the player’s ability to change color, based on key input
I have made it to where the player bounces on a platform when in contact. Also if the player is not the correct color the scene/level resets
I was switching between making this game a platformer or a doodle jump clone. I have decided to do a doodle Jump clone. Here I have an infinite loop for the platform generation.
So far for the game I have added a title screen (start and quit) and high score system. I believe I am done for now with all of the basic mechanics. My goal now is to work on the look of the game (Character, platforms, title screen, etc)
I added my own custom sprite for the player and platform (excuse the art I am not a great artist). I have decided to make my theme related to space. So the player will be a star that changes color. I still need to fix the look a lot, but I wanted to get it into demo version. I will be sharing this with friends and have them test it out on itch.io.
Was busy today so not that much progress was made. Today I decided to add purple and yellow, while also making a parallax scrolling background. I am gonna take a short break on this game, so I can look at it with fresh eyes when I return. My goal when I return is to work on the title screen (title, buttons) and making the game look nicer. I might also work on sound design With the break from this game I am gonna try to enter my first game Jam.
I have finished the Game. From the last devlog I added a background and created a stylized game title. I also finalized the itch.io Page and the Github Read me Also Excuse my previous screen recordings for the previous devlogs. The screenshot format changed so now the vidoes are zoomed in.
Ships:
Hello I have made a doodle jump parody with a twist called “Melanotaenia 4.0”. The twist for the game is that the player can change into four colors and can only touch a platform if they themself is the same color as the platform. The idea of this game was first made for the Hack Club juice Jam March 2025, but I gave up on the project. To me this is an incredible milestone because I started over with only the idea and actually completed it. How to Play: Goal is to go as high as possible to get the highest score Controls: Left arrow ( < ) = Move Left Right arrow (>) = Move Right Up arrow (^) = Jump Q = Orange E = Green R = Purple W = Yellow Sidenote: There is also a demo video at the bottom of my readme on github....
|
1792990419.4177036
|
1793076819.4177036
|
|
803
|
Productive by @OrangeJuice | Stardance
|
OrangeJuice
|
1
|
22.0
|
93
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-29T03:32:34Z", "hours": 22.0, "multiplier": 4.9, "payout": 93, "blessing": "neutral", "text": "Productive This is a productivity website focused on helping you stay on track with your goals! Features To-do List Pomodoro Timer Quote Generator Notepad Calendar Relaxing moving background", "repo": "https://github.com/Orangejuiceonntop/Productive", "demo": "https://orangejuiceonntop.github.io/Productive/"}]...
|
[{"post_id": 18106, "ts": "202 [{"post_id": 18106, "ts": "2026-06-29T03:23:52Z", "hours": 0.9736, "text": "Productive OK this is the last devlog 😓 What’s new I mostly worked on updating the Readme and including the necessary information. Upcoming This project is done! I’m pretty happy with how this turned out. While I wish I could’ve done more, this was meant to be a short project and I’ve already spent too much time working on this 😓. Thanks for following along with this project!"}, {"post_id": 17958, "ts": "2026-06-28T22:23:16Z", "hours": 12.4708, "text": "Productive - Last DevLog It’s almost done! New look! I originally wanted the website to be beach themed, but I couldn’t find any good backgrounds, and the sand-colored buttons didn’t really look that good. Instead, I opted for this nature background and green accent colors. I also made the containers semi-transparent so you can the the wallpaper + added a border. Why did devlog took so long Instead of the notepad and calendar on the right, I was making a music player. However, making it was the most grueling, most horrible experience, and I couldn’t even get it to work (I think it was clashing with my other code, but I couldn’t figure out how to fix it 💔) so after about 3-4ish hours I decided to scrap it. I included the calendar that I mentioned last devlog. I thought adding a clock (like I originally wanted) but it felt unnecessary, so I made a notepad instead. New features! Increase and decrease minutes button on the pomodoro timer (needs a bit of fixing but mostly works) Notepad Calendar - Current month + year shows up at the top - Current day is highlighted - You can see prev/upcoming months + years Extra info I’m happy to see this website finally come together. I’m going to try to fix some bugs before I ship it. Thanks for reading!"}, {"post_id": 12871, "ts": "2026-06-21T02:35:06Z", "hours": 3.7461, "text": "Productive A website to help you stay on track with your goals! New feature: Pomodoro Timer Literally the whole reason why I wanted to make this project. Took me a bit to finish it, but it got done eventually 😓. What it does: It has 3 different settings/“modes”: a 25 min session, a 5 min break, and a 15 min break You can pause and reset the timer Next up: Add increase and decrease minutes button for the timer Add a music player (maybe? I feel like it’s above my skill level but I might try to do it) Add a clock or calendar (or maybe both! depends) Change background Change color scheme Additional: The next devlog, or the one after, will probably be my last devlog before this project is shipped."}, {"post_id": 11019, "ts": "2026-06-18T01:23:30Z", "hours": 2.0119, "text": "Productive I made the quote box!! Every time you refresh the tab, you get a new quote. I also tried to customize the top bar a bit but it came out ugly/bland :’) Next up (eventually): Making the pomodoro timer Adding a clock or calendar Add proper colors and wallpaper (making it look better)"}, {"post_id": 10883, "ts": "2026-06-17T20:50:17Z", "hours": 2.3992, "text": "Productive This website is just a way to help people be more productive and track their goals! So far I’ve only coded the to-do list: Add tasks using the “add” button or pressing enter key. Pressing the “x” on the side removes the task Clicking the circle should check it. But uhh, it doesn’t currently work so I’ll have to figure out how to fix it or scrap it entirely. Next feature: I’ll either work on the pomodoro timer or make a quote generator. Additional/extra info: Originally I was going to go for a calm blue aesthetic but I feel like adding a gif beach background and making the background of each container (ex. the to-do list) semi-transparent would be cool too."}]...
|
Title: Productive by @OrangeJuice | Stardance
Dev Title: Productive by @OrangeJuice | Stardance
Devlogs:
Productive This website is just a way to help people be more productive and track their goals! So far I’ve only coded the to-do list: Add tasks using the “add” button or pressing enter key. Pressing the “x” on the side removes the task Clicking the circle should check it. But uhh, it doesn’t currently work so I’ll have to figure out how to fix it or scrap it entirely. Next feature: I’ll either work on the pomodoro timer or make a quote generator. Additional/extra info: Originally I was going to go for a calm blue aesthetic but I feel like adding a gif beach background and making the background of each container (ex. the to-do list) semi-transparent would be cool too.
Productive I made the quote box!! Every time you refresh the tab, you get a new quote. I also tried to customize the top bar a bit but it came out ugly/bland :’) Next up (eventually): Making the pomodoro timer Adding a clock or calendar Add proper colors and wallpaper (making it look better)
Productive A website to help you stay on track with your goals! New feature: Pomodoro Timer Literally the whole reason why I wanted to make this project. Took me a bit to finish it, but it got done eventually 😓. What it does: It has 3 different settings/“modes”: a 25 min session, a 5 min break, and a 15 min break You can pause and reset the timer Next up: Add increase and decrease minutes button for the timer Add a music player (maybe? I feel like it’s above my skill level but I might try to do it) Add a clock or calendar (or maybe both! depends) Change background Change color scheme Additional: The next devlog, or the one after, will probably be my last devlog before this project is shipped.
Productive - Last DevLog It’s almost done! New look! I originally wanted the website to be beach themed, but I couldn’t find any good backgrounds, and the sand-colored buttons didn’t really look that good. Instead, I opted for this nature background and green accent colors. I also made the containers semi-transparent so you can the the wallpaper + added a border. Why did devlog took so long Instead of the notepad and calendar on the right, I was making a music player. However, making it was the most grueling, most horrible experience, and I couldn’t even get it to work (I think it was clashing with my other code, but I couldn’t figure out how to fix it 💔) so after about 3-4ish hours I decided to scrap it. I included the calendar that I mentioned last devlog. I thought adding a clock (like I originally wanted) but it felt unnecessary, so I made a notepad instead. New features! Increase and decrease minutes button on the pomodoro timer (needs a bit of fixing but mostly works) Notepad Calendar - Current month + year shows up at the top - Current day is highlighted - You can see prev/upcoming months + years Extra info I’m happy to see this website finally come together. I’m going to try to fix some bugs before I ship it. Thanks for reading!
Productive OK this is the last devlog 😓 What’s new I mostly worked on updating the Readme and including the necessary information. Upcoming This project is done! I’m pretty happy with how this turned out. While I wish I could’ve done more, this was meant to be a short project and I’ve already spent too much time working on this 😓. Thanks for following along with this project!
Ships:
Productive This is a productivity website focused on helping you stay on track with your goals! Features To-do List Pomodoro Timer Quote Generator Notepad Calendar Relaxing moving background...
|
1792979755.906844
|
1793066155.906844
|
|
804
|
Essence Reborn Minecraft Plugin by @Grk | Stardanc Essence Reborn Minecraft Plugin by @Grk | Stardance...
|
Grk
|
1
|
10.0
|
126
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-07T17:01:51Z", "hours": 10.0, "multiplier": 12.05, "payout": 126, "blessing": "neutral", "text": "Essence Reborn is a Minecraft plugin that allows players to be imbued with the power of the mobs that they have slain! How The Plugin Works Kill mobs to have a chance at gaining their essence Select an Essence using /selectessence Use /crystal to get an Essence Crystal Right Click / Sneak + Right Click whilst holding your Essence Crystal to activate your Weak and Strong Powers! Each Essence also has a passive power! Use an Essence Switcher to switch to a different Essence later on! There are currently 8 Essence types: Chicken, Cow, Skeleton, Breeze, Piglin, Enderman, Wither, and Warden! Each Essence provides powerful advantages in PvP. Essence Reborn is mainly intended for PvP focused SMP servers, though it can still be enjoyed on other servers as well! I put a ton of work into this plugin, and I am really proud of how it turned out! I worked a lot on this project before Stardance began, but during Stardance, I added a whole new Essence type: Skeleton, lots of QOL features like better admin commands, and fixed a ton of bugs! The project is available on Modrinth, you can download it and put it in the Plugins folder of any Paper server running 1.21.11 (untested on other version but may work).", "repo": "https://github.com/TheDevGrk/Essence-Reborn", "demo": "https://modrinth.com/plugin/essence-reborn"}]...
|
[{"post_id": 4336, "ts": "2026 [{"post_id": 4336, "ts": "2026-06-07T16:51:20Z", "hours": 1.0928, "text": "A lot of bugs came up with trying to remove old cooldown bars when switching Essences and rejoining. Most of the errors were coming from trying to hide the cooldown bars while they were being modified by the task that decreases their progress as times goes on. I ended up being able to fix it, so it should work now! I also created this awesome Cover Art for the project!"}, {"post_id": 2358, "ts": "2026-06-04T20:17:52Z", "hours": 2.2742, "text": "New Skeleton Essence Type! This was the first new Essence type I’ve added. All of the work I did at the beginning of the project to make it easy to add new Essences later on really paid off, because it was quite friction-less to register this new Essence type and make it work with the plugin! This new Essence Type is dropped by Skeletons and has 3 new powers: Skeletal Grasp: The next opponent you shoot with an arrow will be frozen in place by a Skeletal Grasp for 15 seconds! Enchanted Quiver: While this ability is active, all arrows that you shoot contain a random negative potion effect! Sniper: SNIPE! Skeletons are master snipers. If you indeed inherit their good aim, your arrows will increase in damage for each 10 blocks they travel before hitting their target!"}, {"post_id": 1711, "ts": "2026-06-03T21:26:39Z", "hours": 2.9681, "text": "I accidentally deleted the project and some progress, so that was fun! (Thank god for GitHub) In this update, I added some essentials that I’d forgotten such as a crafting recipe for the Essence Switcher (shown below), new Name/Lore for Essence Crystal, and a ton of QOL patches! I also just cleaned up some code internally which was much needed!"}, {"post_id": 299, "ts": "2026-06-01T15:28:44Z", "hours": 0.8544, "text": "Fixed Necromancer Lord Power + Forced Resource Pack to be Downloaded Upon Joining"}, {"post_id": 171, "ts": "2026-06-01T04:40:38Z", "hours": 3.2992, "text": "Improving Admin Commands"}]...
|
Title: Essence Reborn Minecraft Plugin by @Grk | S Title: Essence Reborn Minecraft Plugin by @Grk | Stardance
Devlogs:
Improving Admin Commands
Fixed Necromancer Lord Power + Forced Resource Pack to be Downloaded Upon Joining
I accidentally deleted the project and some progress, so that was fun! (Thank god for GitHub) In this update, I added some essentials that I’d forgotten such as a crafting recipe for the Essence Switcher (shown below), new Name/Lore for Essence Crystal, and a ton of QOL patches! I also just cleaned up some code internally which was much needed!
New Skeleton Essence Type! This was the first new Essence type I’ve added. All of the work I did at the beginning of the project to make it easy to add new Essences later on really paid off, because it was quite friction-less to register this new Essence type and make it work with the plugin! This new Essence Type is dropped by Skeletons and has 3 new powers: Skeletal Grasp: The next opponent you shoot with an arrow will be frozen in place by a Skeletal Grasp for 15 seconds! Enchanted Quiver: While this ability is active, all arrows that you shoot contain a random negative potion effect! Sniper: SNIPE! Skeletons are master snipers. If you indeed inherit their good aim, your arrows will increase in damage for each 10 blocks they travel before hitting their target!
A lot of bugs came up with trying to remove old cooldown bars when switching Essences and rejoining. Most of the errors were coming from trying to hide the cooldown bars while they were being modified by the task that decreases their progress as times goes on. I ended up being able to fix it, so it should work now! I also created this awesome Cover Art for the project!
Ships:
Essence Reborn is a Minecraft plugin that allows players to be imbued with the power of the mobs that they have slain! How The Plugin Works Kill mobs to have a chance at gaining their essence Select an Essence using /selectessence Use /crystal to get an Essence Crystal Right Click / Sneak + Right Click whilst holding your Essence Crystal to activate your Weak and Strong Powers! Each Essence also has a passive power! Use an Essence Switcher to switch to a different Essence later on! There are currently 8 Essence types: Chicken, Cow, Skeleton, Breeze, Piglin, Enderman, Wither, and Warden! Each Essence provides powerful advantages in PvP. Essence Reborn is mainly intended for PvP focused SMP servers, though it can still be enjoyed on other servers as well! I put a ton of work into this plugin, and I am really proud of how it turned out! I worked a lot on this project before Stardance began, but during Stardance, I added a whole new Essence type: Skeleton, lots of QOL features like better admin commands, and fixed a ton of bugs! The project is available on Modrinth, you can download it and put it in the Plugins folder of any Paper server running 1.21.11 (untested on other version but may work)....
|
1792990233.093849
|
1793076633.093849
|
|
812
|
Portfolio Website by @anayshekhar | Stardance
|
anayshekhar
|
1
|
13.0
|
170
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-08T05:11:14Z", "hours": 13.0, "multiplier": 12.84, "payout": 170, "blessing": "neutral", "text": "I made a portfolio website INSIDE of a 3d macintosh. The most challenging part was rendering the website onto the computer screen mesh while still having basic website functions like scrolling and clicking. I’m proud of the intro with the sound, flickering, terminal, and zoom in. People should know that when you go on the website and click any key or any part of the website you can hear sound effects.", "repo": "https://github.com/AnayShekhar/anayshekhar-portfolio", "demo": "https://anayshekhar-portfolio.vercel.app/"}]...
|
[{"post_id": 22993, "ts": "202 [{"post_id": 22993, "ts": "2026-07-05T18:04:48Z", "hours": 8.2706, "text": "Redesigned to have a more retro theme. Used a 3D model of a macintosh from sketchfab (cited in github). To give it a retro CRT screen look I made the website be physically drawn onto the computer screen mesh. Also redesigned the contents of the website too look more fitting for a macintosh."}, {"post_id": 5779, "ts": "2026-06-09T18:10:21Z", "hours": 2.4131, "text": "Complete Redesign I redesigned my portfolio website because I didnt like how the old loader and navigation system worked. I also switched from a static vite setup to next.js. The loader definitely needs some work. I also switched from using VS Code to Cursor. I like how the menu looks and works. I had also spent time sketching out and writing out the contents of the website and how I wanted it to look like. Feel free to give feedback and suggestions. Also looking for ideas on what to add as my Hero."}, {"post_id": 5205, "ts": "2026-06-08T22:05:26Z", "hours": 2.5394, "text": "Portfolio Color Change I added different color options to my portfolio website. Currently there is Dark mode, Light mode, and a special Retro mode. The content in the website isn’t final. Still planning on fixing the moving particles on the landing page, and looking to add more features. Let me know if you have any ideas for this."}]...
|
Title: Portfolio Website by @anayshekhar | Stardan Title: Portfolio Website by @anayshekhar | Stardance
Devlogs:
Portfolio Color Change I added different color options to my portfolio website. Currently there is Dark mode, Light mode, and a special Retro mode. The content in the website isn’t final. Still planning on fixing the moving particles on the landing page, and looking to add more features. Let me know if you have any ideas for this.
Complete Redesign I redesigned my portfolio website because I didnt like how the old loader and navigation system worked. I also switched from a static vite setup to next.js. The loader definitely needs some work. I also switched from using VS Code to Cursor. I like how the menu looks and works. I had also spent time sketching out and writing out the contents of the website and how I wanted it to look like. Feel free to give feedback and suggestions. Also looking for ideas on what to add as my Hero.
Redesigned to have a more retro theme. Used a 3D model of a macintosh from sketchfab (cited in github). To give it a retro CRT screen look I made the website be physically drawn onto the computer screen mesh. Also redesigned the contents of the website too look more fitting for a macintosh.
Ships:
I made a portfolio website INSIDE of a 3d macintosh. The most challenging part was rendering the website onto the computer screen mesh while still having basic website functions like scrolling and clicking. I’m proud of the intro with the sound, flickering, terminal, and zoom in. People should know that when you go on the website and click any key or any part of the website you can hear sound effects....
|
1792979570.2634914
|
1793065970.2634914
|
|
827
|
Worm Game by @CHIMKEN_NOUGAT | Stardance
|
CHIMKEN_NOUGAT
|
1
|
6.0
|
20
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-07T10:09:06Z", "hours": 6.0, "multiplier": 3.46, "payout": 20, "blessing": "neutral", "text": "I made a worm game, featuring 10 levels each getting harder, speed of worm increases each level too. To reach the next level you have to collect a required amount of food, and enter the portal, though you can also change levels freely. This project was slightly challenging to integrate all the different levels and features of the game, like speed selection, level selections, and including the movements. This is my first time coding, and I am quite proud of making the game actually playable, hopefully you guys like it :)).", "repo": "https://github.com/Will-Meng1/Coding", "demo": "https://will-meng1.github.io/Coding/"}]...
|
[{"post_id": 3888, "ts": "2026 [{"post_id": 3888, "ts": "2026-06-06T23:55:18Z", "hours": 0.6572, "text": "I fixed some bugs and errors in lines of code, and now the game is actually finished! I was also stuck committing the actual project and links, so ye I finished the project now."}, {"post_id": 3079, "ts": "2026-06-05T23:40:18Z", "hours": 0.3333, "text": "I finished the game off, by making the prototype which makes it playable as a 2d game, made the corners and borders of the game"}, {"post_id": 2660, "ts": "2026-06-05T10:18:34Z", "hours": 1.2, "text": "added the controls of the game, controls of arrow keys, wasd keys and some other random formats. also some functions of things."}, {"post_id": 2579, "ts": "2026-06-05T04:57:19Z", "hours": 1.1333, "text": "added a lot of the functions for each level and purposes of a lot of the commands"}, {"post_id": 2010, "ts": "2026-06-04T09:10:34Z", "hours": 0.7, "text": "I made the functions and maps of levels and features of specific things."}, {"post_id": 1218, "ts": "2026-06-03T02:23:34Z", "hours": 0.6333, "text": "I added some of the requirements to go to next level, and more options like speed, level and length"}, {"post_id": 640, "ts": "2026-06-02T04:56:29Z", "hours": 0.4333, "text": "created some more features like speed and level options. and also is finalising the formats and text options"}, {"post_id": 507, "ts": "2026-06-01T23:57:33Z", "hours": 0.6, "text": "a worm game, created a title and a basic format of the game"}]...
|
Title: Worm Game by @CHIMKEN_NOUGAT | Stardance
D Title: Worm Game by @CHIMKEN_NOUGAT | Stardance
Devlogs:
a worm game, created a title and a basic format of the game
created some more features like speed and level options. and also is finalising the formats and text options
I added some of the requirements to go to next level, and more options like speed, level and length
I made the functions and maps of levels and features of specific things.
added a lot of the functions for each level and purposes of a lot of the commands
added the controls of the game, controls of arrow keys, wasd keys and some other random formats. also some functions of things.
I finished the game off, by making the prototype which makes it playable as a 2d game, made the corners and borders of the game
I fixed some bugs and errors in lines of code, and now the game is actually finished! I was also stuck committing the actual project and links, so ye I finished the project now.
Ships:
I made a worm game, featuring 10 levels each getting harder, speed of worm increases each level too. To reach the next level you have to collect a required amount of food, and enter the portal, though you can also change levels freely. This project was slightly challenging to integrate all the different levels and features of the game, like speed selection, level selections, and including the movements. This is my first time coding, and I am quite proud of making the game actually playable, hopefully you guys like it :))....
|
1792979452.2248352
|
1793065852.2248352
|
|
851
|
Godot Shaders by @ahclip89 | Stardance
|
ahclip89
|
1
|
5.0
|
25
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-04T03:18:35Z", "hours": 5.0, "multiplier": 4.59, "payout": 25, "blessing": "neutral", "text": "I made a liquid generator with several sliders to customize it. This was my first time ever working with shaders and I learned a LOT. I plan on using shaders in some of my upcoming games and continue growing my skills.", "repo": "https://github.com/ahclip89/godot_shaders", "demo": "https://ahclip89.github.io/godot_shaders/build/web/"}]...
|
[{"post_id": 1881, "ts": "2026 [{"post_id": 1881, "ts": "2026-06-04T03:02:48Z", "hours": 2.5883, "text": "Using what I learned about shaders, I made a liquid editor with color and wave settings."}, {"post_id": 1171, "ts": "2026-06-03T00:48:57Z", "hours": 1.4681, "text": "I experimented with several effects to make a warpy glass thing and outlines. I also learned how to control shaders with a script and made a color selector."}, {"post_id": 650, "ts": "2026-06-02T05:20:52Z", "hours": 0.9008, "text": "I followed an intro to Godot shaders video and made a simple water shader."}, {"post_id": 552, "ts": "2026-06-02T01:30:20Z", "hours": 0.4575, "text": "I’m learning Godot shaders."}]...
|
Title: Godot Shaders by @ahclip89 | Stardance
Dev Title: Godot Shaders by @ahclip89 | Stardance
Devlogs:
I’m learning Godot shaders.
I followed an intro to Godot shaders video and made a simple water shader.
I experimented with several effects to make a warpy glass thing and outlines. I also learned how to control shaders with a script and made a color selector.
Using what I learned about shaders, I made a liquid editor with color and wave settings.
Ships:
I made a liquid generator with several sliders to customize it. This was my first time ever working with shaders and I learned a LOT. I plan on using shaders in some of my upcoming games and continue growing my skills....
|
1792997324.3592525
|
1793083724.3592525
|
|
855
|
Krysync 51 by @theskibmarshy | Stardance
|
theskibmarshy
|
1
|
3.18
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-03T23:24:41Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a simple website, which has basic features including dark/light mode and a small form to help keep in touch.", "repo": "https://github.com/theskibmarshy412-afk/Website", "demo": "https://theskibmarshy412-afk.github.io/Website/#home"}]...
|
[{"post_id": 3413, "ts": "2026 [{"post_id": 3413, "ts": "2026-06-06T10:20:54Z", "hours": 0.8183, "text": "I have revamped my website, and it will now be focused on a private DJ website, to help them get more customers. Additionally, I am going to add a lot more images and enhance overall visuals as well."}, {"post_id": 2485, "ts": "2026-06-05T00:10:53Z", "hours": 0.3639, "text": "I fixed the dark and light mode so that it is more easily accessible. However, I am still not sure what to focus my website on. On other note, I will fix the form, as it is not currently working."}, {"post_id": 1768, "ts": "2026-06-03T23:20:31Z", "hours": 1.2086, "text": "I have uprgraded my website, adding a toggle for dark and light mode, and made a small form to help keep in touch, and if there are any errors in the website."}, {"post_id": 510, "ts": "2026-06-02T00:00:19Z", "hours": 0.6511, "text": "Today, I finished I have made my first ever HTML, which is a simple website named Krysync 51. I will add more aesthetic features and images. I will also decide on what the website will do sometime soon, and will add multiple more features, including navigation."}]...
|
Title: Krysync 51 by @theskibmarshy | Stardance
D Title: Krysync 51 by @theskibmarshy | Stardance
Devlogs:
Today, I finished I have made my first ever HTML, which is a simple website named Krysync 51. I will add more aesthetic features and images. I will also decide on what the website will do sometime soon, and will add multiple more features, including navigation.
I have uprgraded my website, adding a toggle for dark and light mode, and made a small form to help keep in touch, and if there are any errors in the website.
I fixed the dark and light mode so that it is more easily accessible. However, I am still not sure what to focus my website on. On other note, I will fix the form, as it is not currently working.
I have revamped my website, and it will now be focused on a private DJ website, to help them get more customers. Additionally, I am going to add a lot more images and enhance overall visuals as well.
Ships:
I made a simple website, which has basic features including dark/light mode and a small form to help keep in touch....
|
1792972086.56571
|
1793058486.56571
|
|
875
|
Sigma Slack Bot by @sarcasmking | Stardance
|
sarcasmking
|
1
|
7.0
|
39
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-18T19:00:17Z", "hours": 7.0, "multiplier": 5.9, "payout": 39, "blessing": "neutral", "text": "In this project, I made a pretty simple slackbot with some neat features! It was pretty tough for me coz I didn’t really know javascript, but i wanted to try it in js anyways. Overall it was a fun learning experience for me as it taught me about using modules in javascript and even how to use github, which i hadn’t really used before this. I also got to know about setting up services on vps, so that was pretty cool too!", "repo": "https://github.com/S4RC45MK1NG/sigma_bot_slack", "demo": "https://app.slack.com/client/E09V59WQY1E/C0APH2MMHH7"}]...
|
[{"post_id": 7941, "ts": "2026 [{"post_id": 7941, "ts": "2026-06-13T07:52:44Z", "hours": 1.0769, "text": "made some finishing changes, and worked out how to get my bot permissions to dm someone"}, {"post_id": 3767, "ts": "2026-06-06T20:19:34Z", "hours": 1.48, "text": "added ai response commands… coz why not 😔 but mainly worked on the reminder command which is rather useful if i say so myself! i did face some problems coz of the bot permissions, but i worked around it :>"}, {"post_id": 3398, "ts": "2026-06-06T09:46:30Z", "hours": 2.9994, "text": "i never knew making even things as simple as a weather data fetching service can be so confusing, i had to experiment quite a lot to finally get how to fetch the response from the ai and how to send it the parameters. Also, I didn’t at all know what JSON actually was till now 💀, so overall, it was a great challenge that taught me about json and how its used to send and receive data from api’s!!"}, {"post_id": 1733, "ts": "2026-06-03T22:17:10Z", "hours": 0.7394, "text": "FINALLY I UNDERSTOOD HOW API’S WORK!!! it felt like ages trying to figure out how to request data from the weather api but i finally figured it out! I’ll try to implement it into the bot after processing the data provided by the api :)"}, {"post_id": 863, "ts": "2026-06-02T16:02:59Z", "hours": 0.4333, "text": "finally finished the tutorial! i dont rlly have much experience with javascript or using hosting bots online.. so this felt rlly nice when it finally worked! XD"}]...
|
Title: Sigma Slack Bot by @sarcasmking | Stardance Title: Sigma Slack Bot by @sarcasmking | Stardance
Devlogs:
finally finished the tutorial! i dont rlly have much experience with javascript or using hosting bots online.. so this felt rlly nice when it finally worked! XD
FINALLY I UNDERSTOOD HOW API’S WORK!!! it felt like ages trying to figure out how to request data from the weather api but i finally figured it out! I’ll try to implement it into the bot after processing the data provided by the api :)
i never knew making even things as simple as a weather data fetching service can be so confusing, i had to experiment quite a lot to finally get how to fetch the response from the ai and how to send it the parameters. Also, I didn’t at all know what JSON actually was till now 💀, so overall, it was a great challenge that taught me about json and how its used to send and receive data from api’s!!
added ai response commands… coz why not 😔 but mainly worked on the reminder command which is rather useful if i say so myself! i did face some problems coz of the bot permissions, but i worked around it :>
made some finishing changes, and worked out how to get my bot permissions to dm someone
Ships:
In this project, I made a pretty simple slackbot with some neat features! It was pretty tough for me coz I didn’t really know javascript, but i wanted to try it in js anyways. Overall it was a fun learning experience for me as it taught me about using modules in javascript and even how to use github, which i hadn’t really used before this. I also got to know about setting up services on vps, so that was pretty cool too!...
|
1792968825.9611952
|
1793055225.9611952
|
|
876
|
Shattered Realm by @Creamy | Stardance
|
Creamy
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-02T13:43:52Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a simple platformer for my first ever game! not much to see but not bad for my first platformer.", "repo": "https://github.com/fakechrissy0-afk/Shattered-Realm-unfinished", "demo": "https://creamyfish.itch.io/shattered-realms"}]...
|
[{"post_id": 788, "ts": "2026- [{"post_id": 788, "ts": "2026-06-02T13:41:59Z", "hours": 0.7472, "text": "Not finshing this, not good at platformer for now"}, {"post_id": 284, "ts": "2026-06-01T14:56:18Z", "hours": 0.9342, "text": "Working on a platformer!"}]...
|
Title: Shattered Realm by @Creamy | Stardance
Dev Title: Shattered Realm by @Creamy | Stardance
Devlogs:
Working on a platformer!
Not finshing this, not good at platformer for now
Ships:
I made a simple platformer for my first ever game! not much to see but not bad for my first platformer....
|
1792972216.001186
|
1793058616.001186
|
|
903
|
CyberShield Academy by @Paul | Stardance
|
Paul
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-01T21:36:17Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built a web-based cybersecurity training platform designed to help students and young professionals build real-world digital defence skills. The platform tackles the problem of inaccessible, overly theoretical cybersecurity education by combining structured course modules, hands-on hacking labs, timed live events, and a dual-portal system — all wrapped in a sleek, professional interface. It wasn’t really easy, to compile and make everything work perfectly, but with time and concentration, I was able, it’s also true that I am not completely done with the Project, but will keep on doing changes until the project is fully developed", "repo": "https://github.com/DevNdehPaul/CyberShield-Academy", "demo": "https://cybershield-academy.onrender.com/"}]...
|
[{"post_id": 443, "ts": "2026- [{"post_id": 443, "ts": "2026-06-01T21:13:08Z", "hours": 1.1417, "text": "I just finished coding the Student’s Training Courses & Labs Page, which contains the different courses the student can enroll and learn the skills from"}, {"post_id": 391, "ts": "2026-06-01T19:17:50Z", "hours": 1.4456, "text": "I just finish coding the student and admin dashboard, where they student can track its Progress in his different enrolled courses, and the admin can monitor the system thoroughly"}, {"post_id": 298, "ts": "2026-06-01T15:28:20Z", "hours": 2.0061, "text": "I just finished adding the contact us, about us and login/signup pages to the Project, now I am planning on working on the other pages, starting with the dashboard Page"}, {"post_id": 198, "ts": "2026-06-01T07:31:06Z", "hours": 0.7375, "text": "I am currently working on a website called CyberShield Academy, which will be able to help students and young professionals learn cybersecurity and digital forensics through interactive, hands-on modules."}]...
|
Title: CyberShield Academy by @Paul | Stardance
D Title: CyberShield Academy by @Paul | Stardance
Devlogs:
I am currently working on a website called CyberShield Academy, which will be able to help students and young professionals learn cybersecurity and digital forensics through interactive, hands-on modules.
I just finished adding the contact us, about us and login/signup pages to the Project, now I am planning on working on the other pages, starting with the dashboard Page
I just finish coding the student and admin dashboard, where they student can track its Progress in his different enrolled courses, and the admin can monitor the system thoroughly
I just finished coding the Student’s Training Courses & Labs Page, which contains the different courses the student can enroll and learn the skills from
Ships:
I built a web-based cybersecurity training platform designed to help students and young professionals build real-world digital defence skills. The platform tackles the problem of inaccessible, overly theoretical cybersecurity education by combining structured course modules, hands-on hacking labs, timed live events, and a dual-portal system — all wrapped in a sleek, professional interface. It wasn’t really easy, to compile and make everything work perfectly, but with time and concentration, I was able, it’s also true that I am not completely done with the Project, but will keep on doing changes until the project is fully developed...
|
1792990178.261381
|
1793076578.261381
|
|
916
|
Website by @Accursed_Drifter | Stardance
|
Accursed_Drifter
|
1
|
4.0
|
5
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-05T17:18:46Z", "hours": 4.0, "multiplier": 1.3, "payout": 5, "blessing": "neutral", "text": "I made a tracking website in order to practice making a navagation bar and to learn about locally saving data", "repo": "https://github.com/lhair400-blip/Simple-Website", "demo": "https://easytrackingsite.netlify.app/"}]...
|
[{"post_id": 2571, "ts": "2026 [{"post_id": 2571, "ts": "2026-06-05T04:24:30Z", "hours": 2.7225, "text": "I redid the UI and made a Nav bar at the top"}, {"post_id": 1138, "ts": "2026-06-02T23:44:48Z", "hours": 1.3778, "text": "Started making my Website earlier today. I added a basic to do list and experimented with a light mode and a dark mode"}]...
|
Title: Website by @Accursed_Drifter | Stardance
D Title: Website by @Accursed_Drifter | Stardance
Devlogs:
Started making my Website earlier today. I added a basic to do list and experimented with a light mode and a dark mode
I redid the UI and made a Nav bar at the top
Ships:
I made a tracking website in order to practice making a navagation bar and to learn about locally saving data...
|
1792975786.0202296
|
1793062186.0202296
|
|
919
|
A simple to do by @goodaysarecomingsoon | Stardanc A simple to do by @goodaysarecomingsoon | Stardance...
|
goodaysarecomingsoon
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-27T13:07:56Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made Sentinel, a simple to-do list focused on deadlines. You can add tasks with a date and time, see a live countdown, tick completed tasks with a strike-through animation, and import or export tasks using JSON. The most challenging part was getting the countdown to update accurately every second and figuring out how to handle JSON since I was new to it. I’m proud that I turned a problem I actually have—missing deadline after deadline—into something useful and a little funny:)", "repo": "https://github.com/Optimus-Prime04/A-Simple-To-Do", "demo": "https://a-simple-to-do.vercel.app/"}]...
|
[{"post_id": 55523, "ts": "202 [{"post_id": 55523, "ts": "2026-08-27T13:03:16Z", "hours": 2.6192, "text": "finally completed everthing check out https://a-simple-to-do.vercel.app/"}, {"post_id": 54459, "ts": "2026-08-25T14:06:05Z", "hours": 1.9194, "text": "after a long session finally my style.css is over"}, {"post_id": 53818, "ts": "2026-08-24T14:51:53Z", "hours": 0.4514, "text": "finally mu index.css is done"}, {"post_id": 53786, "ts": "2026-08-24T14:18:37Z", "hours": 0.4303, "text": "i have completed my tasks.html after a long terminal session"}, {"post_id": 53769, "ts": "2026-08-24T13:34:42Z", "hours": 0.3425, "text": "i have created my index.html"}]...
|
Title: A simple to do by @goodaysarecomingsoon | S Title: A simple to do by @goodaysarecomingsoon | Stardance
Devlogs:
i have created my index.html
i have completed my tasks.html after a long terminal session
finally mu index.css is done
after a long session finally my style.css is over
finally completed everthing check out https://a-simple-to-do.vercel.app/
Ships:
I made Sentinel, a simple to-do list focused on deadlines. You can add tasks with a date and time, see a live countdown, tick completed tasks with a strike-through animation, and import or export tasks using JSON. The most challenging part was getting the countdown to update accurately every second and figuring out how to handle JSON since I was new to it. I’m proud that I turned a problem I actually have—missing deadline after deadline—into something useful and a little funny:)...
|
1792990073.016113
|
1793076473.016113
|
|
926
|
Spotlight by @lumiere | Stardance
|
lumiere
|
1
|
3.0
|
4
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-10T06:37:34Z", "hours": 3.0, "multiplier": 1.24, "payout": 4, "blessing": "neutral", "text": "A static html css site. I was doing the css animations for the first so they were kinda confusing. It is just a small project and i dont plan on anything further", "repo": "https://github.com/lumiere4758/spotlight", "demo": "https://lumiere4758.github.io/spotlight/"}]...
|
[{"post_id": 6066, "ts": "2026 [{"post_id": 6066, "ts": "2026-06-10T06:07:50Z", "hours": 0.5561, "text": "finsihed it, added some effects and animations, now i will deploy and submit"}, {"post_id": 6052, "ts": "2026-06-10T05:12:29Z", "hours": 0.8217, "text": "idk wat i did, but it turned out like this. have to work moreeeeeeeeeeeeeee mroe mmroe"}, {"post_id": 6025, "ts": "2026-06-10T03:18:44Z", "hours": 0.3011, "text": "More stylinggg"}, {"post_id": 6021, "ts": "2026-06-10T02:55:55Z", "hours": 0.6122, "text": "styles the carousel, im thinking of add my own touch by using some movie api to fetch latest ones"}, {"post_id": 5648, "ts": "2026-06-09T14:57:00Z", "hours": 0.4058, "text": "created and finished the header"}, {"post_id": 5621, "ts": "2026-06-09T14:28:20Z", "hours": 0.3925, "text": "base model of the webpage"}]...
|
Title: Spotlight by @lumiere | Stardance
Devlogs: Title: Spotlight by @lumiere | Stardance
Devlogs:
base model of the webpage
created and finished the header
styles the carousel, im thinking of add my own touch by using some movie api to fetch latest ones
More stylinggg
idk wat i did, but it turned out like this. have to work moreeeeeeeeeeeeeee mroe mmroe
finsihed it, added some effects and animations, now i will deploy and submit
Ships:
A static html css site. I was doing the css animations for the first so they were kinda confusing. It is just a small project and i dont plan on anything further...
|
1792976175.03373
|
1793062575.03373
|
|
931
|
RISC-V 32bit CPU by @captaintriton10 | Stardance
|
captaintriton10
|
1
|
17.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T20:41:40Z", "hours": 17.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This was my second attempt at making a working RISC-V CPU, I’m really happy with where the project is currently. The most difficult part so far has been trying to debug it when it isn’t working, but I’ve managed to get assembly to run on it with video output, and also keyboard input. Next, I think I want to work on adding more extensions to the base ISA and writing more complex programs for it.", "repo": "https://github.com/CaptainTriton10/risc-v_v2", "demo": ""}]...
|
[{"post_id": 8201, "ts": "2026 [{"post_id": 8201, "ts": "2026-06-13T17:18:13Z", "hours": 1.6106, "text": "Worked some more on other typical features of a VGA text mode, such as highlighted text and blinking."}, {"post_id": 7699, "ts": "2026-06-12T21:05:48Z", "hours": 5.1781, "text": "As you can see below, I got keyboard input to work, so now I can write programs that use keyboard input. New features: Character colours UART input (keyboard input) It’s pretty cool that I can also write the devlog on the CPU with the custom assembly code I wrote!"}, {"post_id": 5201, "ts": "2026-06-08T21:59:22Z", "hours": 1.5792, "text": "I finally fixed the branch logic, and proved that it works with this simple counter that uses the conditional BGE (branch if greater than or equal) instruction."}, {"post_id": 4881, "ts": "2026-06-08T13:22:18Z", "hours": 5.6975, "text": "Currently working on debugging conditional branch instructions, as the wrong branch address is being targetted. Fortunately, I managed to fix the JAL and JALR jump instructions."}, {"post_id": 2053, "ts": "2026-06-04T10:47:06Z", "hours": 2.4369, "text": "This is a project I’ve been working on already a fair bit, trying to make a half-decent RISC-V CPU for use on the icepi-zero FPGA board (that I got from the previous Flavourtown event :D). This is a testbench I’m running, currently trying to debug jump and branch instructions not working. My next step is adding keyboard input through the UART protocol (universal asynchronous receiver-transmitter)"}]...
|
Title: RISC-V 32bit CPU by @captaintriton10 | Star Title: RISC-V 32bit CPU by @captaintriton10 | Stardance
Devlogs:
This is a project I’ve been working on already a fair bit, trying to make a half-decent RISC-V CPU for use on the icepi-zero FPGA board (that I got from the previous Flavourtown event :D). This is a testbench I’m running, currently trying to debug jump and branch instructions not working. My next step is adding keyboard input through the UART protocol (universal asynchronous receiver-transmitter)
Currently working on debugging conditional branch instructions, as the wrong branch address is being targetted. Fortunately, I managed to fix the JAL and JALR jump instructions.
I finally fixed the branch logic, and proved that it works with this simple counter that uses the conditional BGE (branch if greater than or equal) instruction.
As you can see below, I got keyboard input to work, so now I can write programs that use keyboard input. New features: Character colours UART input (keyboard input) It’s pretty cool that I can also write the devlog on the CPU with the custom assembly code I wrote!
Worked some more on other typical features of a VGA text mode, such as highlighted text and blinking.
Ships:
This was my second attempt at making a working RISC-V CPU, I’m really happy with where the project is currently. The most difficult part so far has been trying to debug it when it isn’t working, but I’ve managed to get assembly to run on it with video output, and also keyboard input. Next, I think I want to work on adding more extensions to the base ISA and writing more complex programs for it....
|
1792997731.4790623
|
1793084131.4790623
|
|
939
|
LUNAR-HAL by @INiNiDS | Stardance
|
INiNiDS
|
1
|
78.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T18:18:07Z", "hours": 78.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Finally shipping this! It honestly took forever and I burned out twice along the way, but I pushed through to get it over the finish line. Try out the live demo or grab the local build. Heads up: the web demo might feel super sluggish since the models are running on Heroku, so expect some delay. Also, all demo sessions share the same persistent worlds! Have Fun!", "repo": "https://github.com/ininids/lunar-hal", "demo": "https://lnhal.ininids.in.rs"}]...
|
[{"post_id": 75310, "ts": "202 [{"post_id": 75310, "ts": "2026-09-29T18:16:50Z", "hours": 5.1756, "text": "Alright, final devlog! Went all-in on bug squashing for this one—crushed a ton of issues, finally got CI completely green and stable, cleared out all the CodeQL alerts, and pushed the demo build. So yeah… I’m officially shipping now!"}, {"post_id": 68044, "ts": "2026-09-14T12:49:45Z", "hours": 12.1378, "text": "DevLog #9: Checkpoint Hardening & Stage 5 GNN Kinematics Convergence * This session was focused on a deep technical milestone: diagnosing a critical engine staging bug in LUNAR-HAL and driving the Stellar GNN-kinematics pipeline through the completion of Stage 5. 1. 🛠️ Staging Architecture & Atomic Checkpoint RCA (Rust) Diagnosed and resolved a critical issue in the --resume workflow where staging logic triggered a self-copy ( src == dst ), truncating output checkpoint weights upon restart. Implemented robust canonical path checking ( std::fs: :canonicalize ) to ensure fully atomic weight persistence across interruption signals ( SIGINT / SIGTERM ). Hardened checkpoint state serialization, eliminating filesystem race conditions during runtime hot-reloads. 2. Stage 5: GNN-Kinematics Training Executed the 200-epoch training run for the galactic velocity prediction model ($v_x, v_y, v_z$ derived from positions + photometry). Validated host telemetry: stable VRAM footprint on local NVIDIA GeForce RTX 5070 (~3.1 GB / 12 GB allocated) with optimal throughput (~30s / epoch). 3. Loss & Convergence Verification Train Loss: Decreased to ~0.7660 . Validation Loss: Reached a clean, stable quasi-stationary plateau at ~0.7694 . Physics Constraint: Invariant equilibrium maintained throughout ( phys_loss ≈ 0.7700 ), demonstrating high generalization without overfitting."}, {"post_id": 45625, "ts": "2026-08-12T07:29:27Z", "hours": 3.5756, "text": "* 🚀 DevLog #8: The Great Pivot — From Game to Technical Stellar Platform * The mission has changed. Following the deployment of the WebOS in DevLog #7, we realized that the “game” mechanics were holding back the true potential of the engine. This update marks our transition from a simulation with combat elements to a high-fidelity technical platform for stellar generation, research, and visualization. We have officially executed the transition plan, gutting the “game” and hardening the “platform.” The Great Purge: lunar-stellar-core The era of lunar-game-backend is over. We have performed a git mv on the heart of the engine to establish a strict architectural boundary. Logic Extraction: We have completely removed all traces of Enemies, Projectiles, HP, Attacks, and the “Attention Map.” The simulation no longer cares if you are “watching” a star; it only cares about the physics. The Core: The new lunar-stellar-core crate is now framework-agnostic. It handles only the technical state: camera math, sector caching, and the pipeline results. Terminology Shift: “World” is now “StarScene.” It’s no longer a level; it’s a coordinate-stable dataset. Unified Multi-Platform Deployment We’ve consolidated our frontend logic. Instead of separate builds, we now have a single Managed Frontend Service with a unified builder. Target Switching: Through the lns utility, we can now hot-swap between web , desktop , and android targets. Android Integration: The platform now supports Android NDK/SDK. We’ve replaced mouse-only logic with Pointer Events , enabling touch-based pan/zoom/selection. Runtime Config: The backend now dynamically injects the correct URL (handling the 10.0.2.2 emulator trap) based on the active platform. Sandbox 2.0: The Admin Overlay The Sandbox is no longer a separate copy of the simulation. It has evolved into a Meta-Management Shell for the real frontend. The Iframe Bridge: The Sandbox now embeds the live lunar-frontend via an iframe. Communication Protocol: We implemented a versioned postMessage protocol in lunar-structures . The Sandbox sends Admin Commands (CreateStar, SetCamera) and receives Scene Events (StarSelected). Permanent SIREN Gallery & Drag-and-Drop We’ve moved from “latest renders” to a persistent filesystem-based catalog . Atomic Persistence: Stars created via AI or manual tools are now saved as GalleryStar DTOs. Each star gets its own directory with metadata, SIREN textures, and thumbnails. True Drag-and-Drop: We’ve implemented a custom drag-session in the WebOS. You can now drag a star from the Gallery into the Sandbox to insert it into the live scene, and vice versa. Found Issues The transition hasn’t been without its casualties. Two “boss-level” bugs have appeared during the implementation of the new WebOS logic: Sandbox Handshake & OS Crash: Currently, the Sandbox is failing to “see” the Frontend service through the iframe bridge. Even worse, attempting to initialize the connection often results in a total OS-level hang , crashing the Testbench entirely. We are currently investigating if this is a circular dependency in the backend or a massive memory leak during the handshake. The “Minimize” Trap: While we implemented WindowLifecycle to keep applications alive in the background using display: none , we hit a critical logic error. Once an app is minimized, the “un-minimize” (maximize) function fails to trigger . The app remains in a state of digital limbo, perfectly preserved but completely inaccessible."}, {"post_id": 41159, "ts": "2026-08-05T06:03:25Z", "hours": 3.4289, "text": "DevLog #7: WebOS Evolution, The Black Room, and “lns” Orchestration This update marks a fundamental shift in how we interact with the simulation ecosystem. We have moved away from static dashboards to a fully dynamic WebOS environment within lunar-testbench , alongside a complete overhaul of our launching utility. Lunar-Testbench: The WebOS Overhaul The Testbench has been reimagined as a “Black Room” —a dark, immersive workspace where everything begins with three spotlights. The Spotlight Mechanic The interface features three dormant flashlights. Service Ignition: Clicking a spotlight “turns it on” and launches its corresponding backend service. Dynamic App Injection: Once a service is active, the specific applications depending on that service manifest below the spotlight. The Sandbox: Our most complex tool, the Sandbox , now requires all three services to be active simultaneously, setting the stage for deep-system integration in future updates. The Dock To manage the chaos of multiple windows, we’ve implemented a Bottom Dock . Every running application is pinned here, allowing for seamless switching between training, validation, and live simulation environments. Orchestration: From “lunar-start” to “lns” The way we boot the engine has been streamlined. We’ve stripped the heavy lifting out of the primary entry point to create a more modular startup flow. lns Utility: lunar-start has been evolved into lns —a lightweight micro-utility. Its sole purpose is to initialize the Testbench and trigger the backend. lunar-start-backend: This is a new, dedicated service that acts as the primary launcher. It monitors and manages the lifecycle of all other applications within the suite, ensuring that when you click a service in the UI, the backend is ready to deploy it."}, {"post_id": 31372, "ts": "2026-07-19T18:15:40Z", "hours": 8.1406, "text": "🚀 DevLog #6: Hyper-Optimization, Core Threat Integration, and New Swarm Archetypes ⚙️ Optimization: The Fight for Nanoseconds With the transition to a full 3D environment and manual entity manipulation, the load on the CPU and memory bus grew exponentially. So we tried to optimize as much as possible. 👾 Integration: Enemies in the Core Loop Previously, hostile entities existed only as isolated test units (testbench). Now, enemy fleets are officially hardcoded into the base simulation loop. Autonomous Background AI: Enemy behavior is no longer bound to the player’s viewport. Strategic fleets live their own lives in the background—conquering systems and harvesting resources—even if you are editing a galaxy millions of light-years away. Dynamic Pathfinding: The toughest challenge was stabilizing AI during manual manipulation. If you grab a planet and toss it in front of an enemy dreadnought, the pathfinding algorithm instantly recalculates a safe bypass vector based on the newly altered gravitational signature of that sector. 🛸 New Threat Archetypes: The Utility-Driven AI Each enemy now operates on a Utility AI system, calculating its next move based on distance, health ratios, and—most importantly—the Player’s Attention . We have categorized the hostile forces into six distinct tactical archetypes: Archetype Role Logic Highlight The Tank Heavy Juggernaut Berserk Logic: Its utility increases as its health drops. It becomes more aggressive the harder you try to kill it. The Thief Rapid Raider Attention-Aware: Only strikes stars when the player is looking away ( t_neglect > 15.0 ). High speed (20.0) allows for quick hit-and-run ops. The Invisible Stealth Saboteur Adaptive Camouflage: Maintains $0.05$ visibility. Only reveals itself when the player’s cursor “scans” over it or during brief power-grid flickers. The Scavenger Opportunistic Parasite Pack Mentality: Heavily prioritizes stars that are already under attack by other units to “steal” the resources. The Backstabber Chaos Agent Infighting: If it detects a fellow enemy with $<35 % $ HP, it will betray its own kind to secure the kill for itself. The Coward Skittish Scout Self-Preservation: Immediately generates an escape vector if the player’s “God-Hand” (cursor) gets too close or a Tank enters its vicinity. 🧠 The “Attention Map” Integration The most advanced part of this integration is how these entities interact with the Lunar-Frontend . We don’t just track positions; we track the player’s focus: d_mouse Factor: Enemies calculate their distance to your cursor. Thieves and Cowards use this to decide when to flee or stay in the shadows. t_neglect Metric: The simulation tracks how long it’s been since you last interacted with a specific star. The longer a sector is neglected, the higher the “utility” for an invasion force to move in. ⚔️ Combat Mechanics: Physical Projectiles vs. Direct Damage To keep the simulation performant while maintaining visual fidelity: Star Assaults: Enemies fire physical Projectile entities. Each has its own speed, radius, and damage value, allowing players to potentially intercept them or warp them with gravitational anomalies. Internal Infighting: When enemies like the Backstabber turn on their allies, the damage is processed via an optimized EnemyDamage buffer, bypassing heavy projectile physics for internal “swarm” calculations. Note: ISP issues and local routing to the Hack Club site still make uploading updates feel like sending signals through a dense asteroid belt."}, {"post_id": 12966, "ts": "2026-06-21T06:54:53Z", "hours": 18.7053, "text": "DevLog #5: God-Mode Editor, Crate Separation, and Stealth Features Following the development of “Mission Control,” the project has transitioned into a full 3D environment. The cosmos is no longer just being generated; it can now be manipulated in real-time. Project “Lunar-Hal”: God-Mode Editor The new 3D editor allows for direct manipulation of the simulation rather than just monitoring metrics through the TestBench. Free-Fly Mode: A fully functional in-engine 3D editor. Users can toggle Creator Mode to navigate through stellar clusters at high speeds. Real-Time Manipulation: Selecting a star allows for immediate overrides of mass, spectral class, and luminosity. The SIREN engine recalculates astrophysics on the fly, updating the frontend visuals without performance drops. Architecture: The Great Crate Separation To manage codebase complexity, the backend has undergone a significant architectural refactor. All core gameplay logic has been isolated into a dedicated, independent Rust crate. Modular Design: Rendering overhead and editor scaffolding are now separated from pure game rules, physics, and state machines. Improved Compilation: Logic changes no longer require recompiling the entire project. Crates now compile in isolation, allowing for faster iteration and cleaner incremental builds. Inventory System and Stealth Mechanics Work has begun on a functional inventory system designed to hold “Creator Tools.” This system moves beyond traditional item management into world manipulation. Drag-and-Drop Reality: Mechanics are being implemented to allow users to grab celestial bodies directly from the viewport to rearrange solar systems manually. Entity Interaction: These telekinetic mechanics are also being tested on combat entities. This allows for manual interaction with hostile fleets, such as testing physics logic by moving units into gravitational anomalies like black hole event horizons. Lunar-Frontend: Enhanced UI The UI has been updated to accommodate the new editor and inventory capabilities: Creator Widgets: The modular sidebar now includes inspection panels for editor controls and inventory management. Optimized Streaming: The frontend provides a seamless bridge between TestBench metrics and the heavy 3D viewport, maintaining high performance during active manipulation. Roadmap The next phase of development will focus on: Running heavy simulations of billions of stars in background threads while maintaining editor stability. Stabilizing enemy pathfinding during manual entity manipulation. Preparing the architecture for multiplayer synchronization. Note: DevLog updates may be sporadic due to local ISP and network routing issues affecting access to the Hack Club site. Space logistics are complex, but terrestrial routing remains a significant challenge."}, {"post_id": 7982, "ts": "2026-06-13T09:54:00Z", "hours": 10.8433, "text": "🚀 DevLog #4: The God Mode Dashboard & Stellar Genesis! If Day 3 was about plugging the matrix straight into the engine’s spine, today we built the ultimate command center around it. No more chaos, no more manual config-wrangling via terminal. We just deployed a full-scale infrastructure for total cosmic control! Here is the tactical breakdown of what just dropped in the engineering bay: ⚙️ Project “TestBench”: Total Control & Validation We got tired of guessing what’s actually happening inside our AI’s digital brains, so we built TestBench—the ultimate proving ground for complete testing, training, and validation of every single AI model in the project. Backend Fusion: The whole thing is hardwired straight into our reactive Rust backend. God-Tier UX: Now, benchmarking a dataset, checking loss curves, validating weights, or fine-tuning a model is a matter of a few clicks without ever leaving the ecosystem. Real-time telemetry monitoring. Honestly? It’s clean, it’s seamless, and it just works. 🌟 Meet SIREN: The Star Architect Our AI fleet just got a massive reinforcement. Say hello to our newest model—SIREN. Her sole, monumental objective is the procedural generation of the stars themselves. No more random glowing spheres. SIREN calculates physics, luminosity, spectral classes, and spawns unique, structured astrophysical objects. The cosmos isn’t just procedural anymore; it’s beautifully complex and scientifically backed. 🎛️ Lunar-Frontend: The Creator’s Control Panel A cosmic backend deserves a killer visual interface. We gave lunar-frontend a massive upgrade to make managing this madness an absolute breeze: The Sidebar: We coded a modular, highly responsive sidebar. All your tools, model toggles, and data streams are now neatly organized and right at your fingertips. Next Stop: Unleashing SIREN onto the global map, syncing its generation directly with TestBench metrics, and forcing the frontend to smoothly render billions of new star systems without dropping a single frame! 🚀"}, {"post_id": 4775, "ts": "2026-06-08T08:22:17Z", "hours": 9.8683, "text": "🚀 DevLog #3: The Neural Awakening & Backend Fusion! 🪐 Day 2 was chaos, but Day 3? We just plugged the matrix straight into the spine of the engine! 🧠✨ Remember that “confused toaster” from the last devlog? Yeah, well, it just evolved into a full-blown stellar intellect. The pipeline is locked, loaded, and absolutely cooking. Here is the tactical breakdown of what just dropped in the engineering bay: 🌌 The Big Brain Upgrade (Model & Data): We didn’t just tweak the model; we completely rebuilt its reality. We scraped, cleaned, and injected a massive new dataset, pushing our local parameter model to the absolute limit. No more hallucinating dead stars — lnai now actually understands the cosmic data it’s processing. 🔗 The Great Backend Fusion: The neural net is officially out of the sandbox and merged with the core Rust backend! We wired the prediction pipelines directly into our engine architecture. It’s fast, it’s memory-safe, and it operates with zero friction. Data is flowing from the neural layers to the backend loops in real-time. 🏎️ Zero Meltdown, Pure Performance: Training and running local models usually turns your rig into a literal space heater, but we optimized the living hell out of the inference pipelines. The memory footprint is clean, the tokens are flying, and your GPU can actually breathe while rendering the cosmos. The foundation is solid, the telemetry is clean, and the local universe finally has a brain that doesn’t just work — it thinks . Next stop: weaponizing this intelligence for procedural generation and forcing that flight physics engine to respect the laws of space! 🛰️🔥"}, {"post_id": 1972, "ts": "2026-06-04T07:13:17Z", "hours": 2.9592, "text": "🚀 DevLog #2: Neural Overdrive & Brainstorming LUNAR-AI! 🪐 Day 1 is in the books, and we are officially cooking! We’re pushing the boundaries of our infinite, local-first universe, and things are getting wild in the engineering bay. Here is the lowdown on what just dropped: 🧠 Project LUNAR-AI (lnai) is ALIVE: We officially laid down the first lines of code for our core AI driver! The mission? Giving your local universe a brain. No external API calls, no corporate clouds—just raw, local intelligence. 📉 Reality Check (The Results): Okay, look… right now, the results are, let’s say, highly questionable . It’s giving “confused toaster” more than “galactic supercomputer,” but hey, Rome wasn’t built in a day, and an infinite universe needs a little chaos first. 🛠️ Absolute Grind Mode: The output might be mid right now, but the workflow is at an all-time high. We are working 25/7, refactoring the neural pipelines, and optimizing the backend to make sure this local LLM integration doesn’t melt your PC. The brain is wired, the bugs are being hunted, and the grind never stops. Next stop: making lnai actually smart and finally getting that flight physics engine to behave! 🛰️✨"}, {"post_id": 717, "ts": "2026-06-02T09:35:55Z", "hours": 3.0953, "text": "🚀 DevLog #1: Ignition & Cosmic Foundations for LUNAR-HAL! 🪐 Day 0 is officially complete. We are building an infinite, AI-driven space sandbox powered completely by your local hardware, and the base is locked down: 🌌 Mission Control: Prepared the repository, set up community standards, and went full open-source under the AGPL v3 license to keep our local engine free forever. 💻 Frontend Setup: Fired up the project using Rust + Dioxus! Built the core architecture and launched the first three foundational viewports: Home, About, and Contact. 🛠️ The Manifesto: Designed a killer glassmorphic UI layout and integrated our “Broke-Tech” framework—proudly rendering procedural worlds directly on your GPU. Zero server costs, zero latency, infinite universe. Next stop: implementing the flight physics and interactive star canvas! 🛰️✨"}]...
|
Title: LUNAR-HAL by @INiNiDS | Stardance
Devlogs: Title: LUNAR-HAL by @INiNiDS | Stardance
Devlogs:
🚀 DevLog #1: Ignition & Cosmic Foundations for LUNAR-HAL! 🪐 Day 0 is officially complete. We are building an infinite, AI-driven space sandbox powered completely by your local hardware, and the base is locked down: 🌌 Mission Control: Prepared the repository, set up community standards, and went full open-source under the AGPL v3 license to keep our local engine free forever. 💻 Frontend Setup: Fired up the project using Rust + Dioxus! Built the core architecture and launched the first three foundational viewports: Home, About, and Contact. 🛠️ The Manifesto: Designed a killer glassmorphic UI layout and integrated our “Broke-Tech” framework—proudly rendering procedural worlds directly on your GPU. Zero server costs, zero latency, infinite universe. Next stop: implementing the flight physics and interactive star canvas! 🛰️✨
🚀 DevLog #2: Neural Overdrive & Brainstorming LUNAR-AI! 🪐 Day 1 is in the books, and we are officially cooking! We’re pushing the boundaries of our infinite, local-first universe, and things are getting wild in the engineering bay. Here is the lowdown on what just dropped: 🧠 Project LUNAR-AI (lnai) is ALIVE: We officially laid down the first lines of code for our core AI driver! The mission? Giving your local universe a brain. No external API calls, no corporate clouds—just raw, local intelligence. 📉 Reality Check (The Results): Okay, look… right now, the results are, let’s say, highly questionable . It’s giving “confused toaster” more than “galactic supercomputer,” but hey, Rome wasn’t built in a day, and an infinite universe needs a little chaos first. 🛠️ Absolute Grind Mode: The output might be mid right now, but the workflow is at an all-time high. We are working 25/7, refactoring the neural pipelines, and optimizing the backend to make sure this local LLM integration doesn’t melt your PC. The brain is wired, the bugs are being hunted, and the grind never stops. Next stop: making lnai actually smart and finally getting that flight physics engine to behave! 🛰️✨
🚀 DevLog #3: The Neural Awakening & Backend Fusion! 🪐 Day 2 was chaos, but Day 3? We just plugged the matrix straight into the spine of the engine! 🧠✨ Remember that “confused toaster” from the last devlog? Yeah, well, it just evolved into a full-blown stellar intellect. The pipeline is locked, loaded, and absolutely cooking. Here is the tactical breakdown of what just dropped in the engineering bay: 🌌 The Big Brain Upgrade (Model & Data): We didn’t just tweak the model; we completely rebuilt its reality. We scraped, cleaned, and injected a massive new dataset, pushing our local parameter model to the absolute limit. No more hallucinating dead stars — lnai now actually understands the cosmic data it’s processing. 🔗 The Great Backend Fusion: The neural net is officially out of the sandbox and merged with the core Rust backend! We wired the prediction pipelines directly into our engine architecture. It’s fast, it’s memory-safe, and it operates with zero friction. Data is flowing from the neural layers to the backend loops in real-time. 🏎️ Zero Meltdown, Pure Performance: Training and running local models usually turns your rig into a literal space heater, but we optimized the living hell out of the inference pipelines. The memory footprint is clean, the tokens are flying, and your GPU can actually breathe while rendering the cosmos. The foundation is solid, the telemetry is clean, and the local universe finally has a brain that doesn’t just work — it thinks . Next stop: weaponizing this intelligence for procedural generation and forcing that flight physics engine to respect the laws of space! 🛰️🔥
🚀 DevLog #4: The God Mode Dashboard & Stellar Genesis! If Day 3 was about plugging the matrix straight into the engine’s spine, today we built the ultimate command center around it. No more chaos, no more manual config-wrangling via terminal. We just deployed a full-scale infrastructure for total cosmic control! Here is the tactical breakdown of what just dropped in the engineering bay: ⚙️ Project “TestBench”: Total Control & Validation We got tired of guessing what’s actually happening inside our AI’s digital brains, so we built TestBench—the ultimate proving ground for complete testing, training, and validation of every single AI model in the project. Backend Fusion: The whole thing is hardwired straight into our reactive Rust backend. God-Tier UX: Now, benchmarking a dataset, checking loss curves, validating weights, or fine-tuning a model is a matter of a few clicks without ever leaving the ecosystem. Real-time telemetry monitoring. Honestly? It’s clean, it’s seamless, and it just works. 🌟 Meet SIREN: The Star Architect Our AI fleet just got a massive reinforcement. Say hello to our newest model—SIREN. Her sole, monumental objective is the procedural generation of the stars themselves. No more random glowing spheres. SIREN calculates physics, luminosity, spectral classes, and spawns unique, structured astrophysical objects. The cosmos isn’t just procedural anymore; it’s beautifully complex and scientifically backed. 🎛️ Lunar-Frontend: The Creator’s Control Panel A cosmic backend deserves a killer visual interface. We gave lunar-frontend a massive upgrade to make managing this madness an absolute breeze: The Sidebar: We coded a modular, highly responsive sidebar. All your tools, model toggles, and data streams are now neatly organized and right at your fingertips. Next Stop: Unleashing SIREN onto the global map, syncing its generation directly with TestBench metrics, and forcing the frontend to smoothly render billions of new star systems without dropping a single frame! 🚀
DevLog #5: God-Mode Editor, Crate Separation, and Stealth Features Following the development of “Mission Control,” the project has transitioned into a full 3D environment. The cosmos is no longer just being generated; it can now be manipulated in real-time. Project “Lunar-Hal”: God-Mode Editor The new 3D editor allows for direct manipulation of the simulation rather than just monitoring metrics through the TestBench. Free-Fly Mode: A fully functional in-engine 3D editor. Users can toggle Creator Mode to navigate through stellar clusters at high speeds. Real-Time Manipulation: Selecting a star allows for immediate overrides of mass, spectral class, and luminosity. The SIREN engine recalculates astrophysics on the fly, updating the frontend visuals without performance drops. Architecture: The Great Crate Separation To manage codebase complexity, the backend has undergone a significant architectural refactor. All core gameplay logic has been isolated into a dedicated, independent Rust crate. Modular Design: Rendering overhead and editor scaffolding are now separated from pure game rules, physics, and state machines. Improved Compilation: Logic changes no longer require recompiling the entire project. Crates now compile in isolation, allowing for faster iteration and cleaner incremental builds. Inventory System and Stealth Mechanics Work has begun on a functional inventory system designed to hold “Creator Tools.” This system moves beyond traditional item management into world manipulation. Drag-and-Drop Reality: Mechanics are being implemented to allow users to grab celestial bodies directly from the viewport to rearrange solar systems manually. Entity Interaction: These telekinetic mechanics are also being tested on combat entities. This allows for manual interaction with hostile fleets, such as testing physics logic by moving units into gravitational anomalies like black hole event horizons. Lunar-Frontend: Enhanced UI The UI has been updated to accommodate the new editor and inventory capabilities: Creator Widgets: The modular sidebar now includes inspection panels for editor controls and inventory management. Optimized Streaming: The frontend provides a seamless bridge between TestBench metrics and the heavy 3D viewport, maintaining high performance during active manipulation. Roadmap The next phase of development will focus on: Running heavy simulations of billions of stars in background threads while maintaining editor stability. Stabilizing enemy pathfinding during manual entity manipulation. Preparing the architecture for multiplayer synchronization. Note: DevLog updates may be sporadic due to local ISP and network routing issues affecting access to the Hack Club site. Space logistics are complex, but terrestrial routing remains a significant challenge.
🚀 DevLog #6: Hyper-Optimization, Core Threat Integration, and New Swarm Archetypes ⚙️ Optimization: The Fight for Nanoseconds With the transition to a full 3D environment and manual entity manipulation, the load on the CPU and memory bus grew exponentially. So we tried to optimize as much as possible. 👾 Integration: Enemies in the Core Loop Previously, hostile entities existed only as isolated test units (testbench). Now, enemy fleets are officially hardcoded into the base simulation loop. Autonomous Background AI: Enemy behavior is no longer bound to the player’s viewport. Strategic fleets live their own lives in the background—conquering systems and harvesting resources—even if you are editing a galaxy millions of light-years away. Dynamic Pathfinding: The toughest challenge was stabilizing AI during manual manipulation. If you grab a planet and toss it in front of an enemy dreadnought, the pathfinding algorithm instantly recalculates a safe bypass vector based on the newly altered gravitational signature of that sector. 🛸 New Threat Archetypes: The Utility-Driven AI Each enemy now operates on a Utility AI system, calculating its next move based on distance, health ratios, and—most importantly—the Player’s Attention . We have categorized the hostile forces into six distinct tactical archetypes: Archetype Role Logic Highlight The Tank Heavy Juggernaut Berserk Logic: Its utility increases as its health drops. It becomes more aggressive the harder you try to kill it. The Thief Rapid Raider Attention-Aware: Only strikes stars when the player is looking away ( t_neglect > 15.0 ). High speed (20.0) allows for quick hit-and-run ops. The Invisible Stealth Saboteur Adaptive Camouflage: Maintains $0.05$ visibility. Only reveals itself when the player’s cursor “scans” over it or during brief power-grid flickers. The Scavenger Opportunistic Parasite Pack Mentality: Heavily prioritizes stars that are already under attack by other units to “steal” the resources. The Backstabber Chaos Agent Infighting: If it detects a fellow enemy with $<35 % $ HP, it will betray its own kind to secure the kill for itself. The Coward Skittish Scout Self-Preservation: Immediately generates an escape vector if the player’s “God-Hand” (cursor) gets too close or a Tank enters its vicinity. 🧠 The “Attention Map” Integration The most advanced part of this integration is how these entities interact with the Lunar-Frontend . We don’t just track positions; we track the player’s focus: d_mouse Factor: Enemies calculate their distance to your cursor. Thieves and Cowards use this to decide when to flee or stay in the shadows. t_neglect Metric: The simulation tracks how long it’s been since you last interacted with a specific star. The longer a sector is neglected, the higher the “utility” for an invasion force to move in. ⚔️ Combat Mechanics: Physical Projectiles vs. Direct Damage To keep the simulation performant while maintaining visual fidelity: Star Assaults: Enemies fire physical Projectile entities. Each has its own speed, radius, and damage value, allowing players to potentially intercept them or warp them with gravitational anomalies. Internal Infighting: When enemies like the Backstabber turn on their allies, the damage is processed via an optimized EnemyDamage buffer, bypassing heavy projectile physics for internal “swarm” calculations. Note: ISP issues and local routing to the Hack Club site still make uploading updates feel like sending signals through a dense asteroid belt.
DevLog #7: WebOS Evolution, The Black Room, and “lns” Orchestration This update marks a fundamental shift in how we interact with the simulation ecosystem. We have moved away from static dashboards to a fully dynamic WebOS environment within lunar-testbench , alongside a complete overhaul of our launching utility. Lunar-Testbench: The WebOS Overhaul The Testbench has been reimagined as a “Black Room” —a dark, immersive workspace where everything begins with three spotlights. The Spotlight Mechanic The interface features three dormant flashlights. Service Ignition: Clicking a spotlight “turns it on” and launches its corresponding backend service. Dynamic App Injection: Once a service is active, the specific applications depending on that service manifest below the spotlight. The Sandbox: Our most complex tool, the Sandbox , now requires all three services to be active simultaneously, setting the stage for deep-system integration in future updates. The Dock To manage the chaos of multiple windows, we’ve implemented a Bottom Dock . Every running application is pinned here, allowing for seamless switching between training, validation, and live simulation environments. Orchestration: From “lunar-start” to “lns” The way we boot the engine has been streamlined. We’ve stripped the heavy lifting out of the primary entry point to create a more modular startup flow. lns Utility: lunar-start has been evolved into lns —a lightweight micro-utility. Its sole purpose is to initialize the Testbench and trigger the backend. lunar-start-backend: This is a new, dedicated service that acts as the primary launcher. It monitors and manages the lifecycle of all other applications within the suite, ensuring that when you click a service in the UI, the backend is ready to deploy it.
* 🚀 DevLog #8: The Great Pivot — From Game to Technical Stellar Platform * The mission has changed. Following the deployment of the WebOS in DevLog #7, we realized that the “game” mechanics were holding back the true potential of the engine. This update marks our transition from a simulation with combat elements to a high-fidelity technical platform for stellar generation, research, and visualization. We have officially executed the transition plan, gutting the “game” and hardening the “platform.” The Great Purge: lunar-stellar-core The era of lunar-game-backend is over. We have performed a git mv on the heart of the engine to establish a strict architectural boundary. Logic Extraction: We have completely removed all traces of Enemies, Projectiles, HP, Attacks, and the “Attention Map.” The simulation no longer cares if you are “watching” a star; it only cares about the physics. The Core: The new lunar-stellar-core crate is now framework-agnostic. It handles only the technical state: camera math, sector caching, and the pipeline results. Terminology Shift: “World” is now “StarScene.” It’s no longer a level; it’s a coordinate-stable dataset. Unified Multi-Platform Deployment We’ve consolidated our frontend logic. Instead of separate builds, we now have a single Managed Frontend Service with a unified builder. Target Switching: Through the lns utility, we can now hot-swap between web , desktop , and android targets. Android Integration: The platform now supports Android NDK/SDK. We’ve replaced mouse-only logic with Pointer Events , enabling touch-based pan/zoom/selection. Runtime Config: The backend now dynamically injects the correct URL (handling the 10.0.2.2 emulator trap) based on the active platform. Sandbox 2.0: The Admin Overlay The Sandbox is no longer a separate copy of the simulation. It has evolved into a Meta-Management Shell for the real frontend. The Iframe Bridge: The Sandbox now embeds the live lunar-frontend via an iframe. Communication Protocol: We implemented a versioned postMessage protocol in lunar-structures . The Sandbox sends Admin Commands (CreateStar, SetCamera) and receives Scene Events (StarSelected). Permanent SIREN Gallery & Drag-and-Drop We’ve moved from “latest renders” to a persistent filesystem-based catalog . Atomic Persistence: Stars created via AI or manual tools are now saved as GalleryStar DTOs. Each star gets its own directory with metadata, SIREN textures, and thumbnails. True Drag-and-Drop: We’ve implemented a custom drag-session in the WebOS. You can now drag a star from the Gallery into the Sandbox to insert it into the live scene, and vice versa. Found Issues The transition hasn’t been without its casualties. Two “boss-level” bugs have appeared during the implementation of the new WebOS logic: Sandbox Handshake & OS Crash: Currently, the Sandbox is failing to “see” the Frontend service through the iframe bridge. Even worse, attempting to initialize the connection often results in a total OS-level hang , crashing the Testbench entirely. We are currently investigating if this is a circular dependency in the backend or a massive memory leak during the handshake. The “Minimize” Trap: While we implemented WindowLifecycle to keep applications alive in the background using display: none , we hit a critical logic error. Once an app is minimized, the “un-minimize” (maximize) function fails to trigger . The app remains in a state of digital limbo, perfectly preserved but completely inaccessible.
DevLog #9: Checkpoint Hardening & Stage 5 GNN Kinematics Convergence * This session was focused on a deep technical milestone: diagnosing a critical engine staging bug in LUNAR-HAL and driving the Stellar GNN-kinematics pipeline through the completion of Stage 5. 1. 🛠️ Staging Architecture & Atomic Checkpoint RCA (Rust) Diagnosed and resolved a critical issue in the --resume workflow where staging logic triggered a self-copy ( src == dst ), truncating output checkpoint weights upon restart. Implemented robust canonical path checking ( std::fs: :canonicalize ) to ensure fully atomic weight persistence across interruption signals ( SIGINT / SIGTERM ). Hardened checkpoint state serialization, eliminating filesystem race conditions during runtime hot-reloads. 2. Stage 5: GNN-Kinematics Training Executed the 200-epoch training run for the galactic velocity prediction model ($v_x, v_y, v_z$ derived from positions + photometry). Validated host telemetry: stable VRAM footprint on local NVIDIA GeForce RTX 5070 (~3.1 GB / 12 GB allocated) with optimal throughput (~30s / epoch). 3. Loss & Convergence Verification Train Loss: Decreased to ~0.7660 . Validation Loss: Reached a clean, stable quasi-stationary plateau at ~0.7694 . Physics Constraint: Invariant equilibrium maintained throughout ( phys_loss ≈ 0.7700 ), demonstrating high generalization without overfitting.
Alright, final devlog! Went all-in on bug squashing for this one—crushed a ton of issues, finally got CI completely green and stable, cleared out all the CodeQL alerts, and pushed the demo build. So yeah… I’m officially shipping now!
Ships:
Finally shipping this! It honestly took forever and I burned out twice along the way, but I pushed through to get it over the finish line. Try out the live demo or grab the local build. Heads up: the web demo might feel super sluggish since the models are running on Heroku, so expect some delay. Also, all demo sessions share the same persistent worlds! Have Fun!...
|
1793004967.5732112
|
1793091367.5732112
|
|
950
|
Volvo API playground by @Kl | Stardance
|
Kl
|
1
|
130.69
|
2165
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-06T20:19:02Z", "hours": 113.0, "multiplier": 19.09, "payout": 2165, "blessing": "neutral", "text": "A Milestone Welcome everybody to the first ship of this project. What is this project? This project simulates how the Volvo API works. Why was this project created in the first place? So it’s easier to create and test your app that uses the Volvo API without using ready-made libraries. I can’t find the features you mentioned in the devlog? Check the scope branch or the upcoming dev branch. What I’m proud of: I learned a lot of things (this is my first big public project): Tailwind Python stuff (I started with C++) Writing documentation (Markdown) I also learned the basics of OAuth2 and how APIs work. Making a project with all the features needed to get started. I created an additional document for you, Stardancers: Stardance PATH What is still on the TODO list? More APIs Scopes docker image See the roadmap . What to see? error logger recreated endpoints dashboard web socket realtime changes internal endpints interactivity of the car", "repo": "https://github.com/klswar0/Volvo-API-playground", "demo": "https://playground.kls.hackclub.app/"}]...
|
[{"post_id": 79861, "ts": "202 [{"post_id": 79861, "ts": "2026-10-15T17:17:04Z", "hours": 7.1881, "text": "Devlog A very long time no see. I have made a lot of progress on adding an SQL database. Testing on MySQL The backup server provider gives me access to one. SQL changes A lot of BIG changes. The reason why I haven’t posted for so long is that I didn’t want to post about something that doesn’t work. Created new classes to intercept data changes, both in case of direct dict changes and when going through the SQL model library. (I didn’t change much in the code, just imported it under the same name as the old database.) And it works! At the start, only reading data worked, but now it can send data back to the database. Added a regen function to make sure built-in API keys are always the same after a restart. Fixed the car creation function (but when I started storing the additional data in SQL, it broke AGAIN). Added configuration attributes. At first, just the database type, but then all the information needed to connect to a MySQL database. Fixed the scenario readconfig (wasn’t it updated in the past?). A really small number of things I added? Yes, but the amount of debugging and changing built-in functions in classes took me so long. (Could be because of school and not having time to do everything in one sitting.) But I learned how to make a dummy dict with a class, as I called it in the commit: proxy . Problems The SQL database can’t create new cars. Need to check all internal endpoints to make sure they work. Still haven’t merged the DEV branch (TODO). All information is stored in one column as JSON. It works, buuuut I don’t like it that way. Need to clean up the proxy classes. updating docs What failed this time? The second photo attached shows it. Have a look before reading more. _contains__ If you see it, congrats! But if you have a screen full of code, it’s harder to spot. It should be __contains__ , and I spent, I think, two days debugging why all in statements just didn’t work. I was so happy when I finally found it! XAMPP and Apple Silicon The manager app doesn’t open after a restart, so after consulting Google and AI, I found a command that I use: sudo /Applications/XAMPP/xamppfiles/xampp start xampp If someone is asking why I didn’t use the server provided one it just wasn’t practical for now."}, {"post_id": 73730, "ts": "2026-09-25T19:56:38Z", "hours": 4.9217, "text": "Devlog A lot of breaking changes later and getting closer to PR and going to 2 ship Token lifetime WORKS made time when token is expired is rounded to int endpoint for invalidating token possibility for enabling expiring token for a specific token when it’s disabled for all in config file misc pytest for location and energy API fix the url for the enrgy API (it started with connectivity url not wi the energy api) cleanup import created new files to make the code more readable dashboard added location values added capabilities and values auto token generation and expiration in dashboard"}, {"post_id": 69307, "ts": "2026-09-16T19:32:57Z", "hours": 5.58, "text": "Read till the end PLEASE 🥺 Devlog A lot of changes from the last devlog only 5 hrs Mostly bc I add stuff on top of but I will suffer in the future (See dev branch for these changes) Change all connectivity API to start with /connected-vehicle/v2/ to make room for different APIs After that I fixed pytest to reflect that I added a location API with a ONE endpoint There were few iterations Added scopes for this API location:read If I remember correctly Unique error responses (because location error look like old (v1) connectivity API Fixed that operationID could be a constant Added a config option to use longer API keys About here I Fixed the url for location api because it used the connectivity scheme Started working on energy API I added all data from it to this project In short one endpoints says what this car is capable of And the other says the values TODO: add its unique error its half done Scopes corresponding to energy API Fixed that some values and capabilities had the same name (bc of that some bool values where number so a it was important) WIP Oauth2 update: JWT tokens for access tokens WIP token can expire! what are JWT token? There consist of three parts header payload and signature The two first is important for my project the 3 isn’t . They store info about issuer, when token is active, scopes… A lot of useless data for this project or useful? We will see Life Bc of school I didn’t have a lot of time to write devlog (and write code) but I try to do my best before the end of stardance The next ship is planned for 28 September BIRTHDAY TODAY (16 September) Im celebrating my birthday 😄 If you write me a few good words It would be motivating for me."}, {"post_id": 63130, "ts": "2026-09-06T19:20:58Z", "hours": 1.6042, "text": "Devlog MAIN added a startup baner fixed snapshots not saving if website was used scope If you didn’t follow from start this branch contains the experimental scope support which is mostly done but I can guarantee stability that’s why it isn’t pushed to main in fist ship made the scope page work added a back button added button to scope on main page fixed snapshots loading/saving"}, {"post_id": 61052, "ts": "2026-09-03T19:22:00Z", "hours": 2.8836, "text": "Long time no see… The school started aaand I didn’t have time I had low motivation The only thing to do before first ship is docs but I could find time to finish them. Buut I back now. AND I promise to ship it before 7 of September. If you are voting on this project PLEASE do not skip. I have my birthday coming and if the shipwrights doesn’t have a long list it could mean this project payout could be my birthday gift. If I ofc ship it 😅 devlog Small marketing changes everywhere to say that this project doesn’t have any ready code to use Added info about error logger on the landing page Scopes A long way from last devlog Fixed pytest ( A second time) TEMPORARY FIX added so the scope error doesn’t - throw just internal error FIXed the Oauth2 endpoint at least 3 times Added a WIP endpoint to edit scope data from API Fixed how cars are created so they work with both - Oauth and scopes stuff Only looking dashboard page for scopes compare I think I forgot to say something in last devlog config file if you would like to use different instance Toml oillevel to oilLever AI disclaimer that I used this project to learn tailwind Make the doors have different statuses in mean time Untracked WIKI Redo the home page Started working on stardance path A lot of misc that I don’t remember other I created a small modified volvo example app to show that my app works like the real one"}, {"post_id": 55226, "ts": "2026-08-26T20:27:11Z", "hours": 4.2503, "text": "Devlog Error logger added colors to the terminal print out using: \\033[31m \\033[0m Good to know that it is so easy to add colors to text added timestamps to log file and - between errors Changes how it reads body once again and fixed url encoded requests logging My additional information I put in detail in the json response (the real API can send it like that buttty I didn’t see it. info from docs ) additional changes: New scenarios mostly about service warnings You can add notes to the website thru config files Scopes I started working on scopes. What are they? They are really permissions (you can know them from discord bots or if you login thru GitHub etc.) I don’t want to put them in this first ship but I needed to work on something (while I work on wiki) and I CAN’T guarantee every thing works after adding them. You can see it in the scopes branch. what is done: I have made preparation so the additional database (dict) I use for OAuth can store more data have updated website func to work with changes and also pytest added all possible conve (connectivity API) scopes WIKI when I add everything to them I will finally try making a ship added the error logger page updated the sidebar scenario and snapshots page a lot of misc Bonus photos from vacation on baltic sea"}, {"post_id": 49931, "ts": "2026-08-18T21:59:53Z", "hours": 3.1292, "text": "Devlog There was a small (or big) problem in my playground. If an error was returned in the response, you could only see it if your app handled it or by printing the response. That’s why I added an error logger. It can show errors in two ways: Terminal Log file How it works There were two ways of doing it (from what I learned): Middleware that captures all responses (this could be helpful in the future). Exception handlers (this is what I chose). I use two handlers: @app.exception_handler(RequestValidationError) @app.exception_handler(HTTPException) It was a horrible time searching for why it didn’t work. At first, I worked in a separate file, but I couldn’t get the (fastapi) app variable into those functions. So I copied them into main file to make them work first. I had to change some JSON responses to HTTPException to make the second handler work. After I captured the first request and printed it, I worked on one function that writes a log and another that prints to the terminal. I also created a class to store useful data. It works like this: Exception handler-> ->Put data into class -> ->Create response -> ->Return response ->Create a background task that logs the error I create a background task so the response doesn’t wait or even worse fails In the end I found that I can wrap these func with this simple func to make them work in different file def setup_error_logging(app: FastAPI): Added a config option: To disable it completely. To disable only the log file. It also bypasses all internal endpoints to make the logs more readable. The best fail… 😅 I returned an exception instead of raising it. I spent a good 15 minutes wondering why the response had status code 200 with a JSON body saying status code 400 . response changes I also checked how the authorization errors look and added two new ones: Missing Authorization header. Invalid vcc-api-key header. WIKI (not counted) I focus on making a GitHub wiki (new docs) After ending them and the error logger. Its time for the first ship !!!!!!! Nest instability: I made a backup server : https://frog01-21185.wykr.es/ Its not ideal one, bc some asian countries are blocked but its shouldn’t have any downtime (I hope so) If an Admin read it why I must copy enter from different text input 😭"}, {"post_id": 48444, "ts": "2026-08-16T19:51:20Z", "hours": 2.4822, "text": "Devlog SITE changes I found that some number inputs didn’t use the utility classes. I gave them inputText because they are really the same; the only difference is the HTML type . I also forgot to update the reloadable fuel section. It now uses the shorter utility class. Made sure that all text in the header is the same size (they weren’t). I copied all changes back to the main branch. config changes Then I added a config file using the configparser library. also added an option to disable the FastAPI docs. I started working on Wiki: reworking docs.md into a GitHub Wiki with up to date information. Error logger, so you can see what’s wrong without printing the API response in your code. I had some problems with catching the fastapi automatic response but I will leave it for next devlog"}, {"post_id": 46236, "ts": "2026-08-13T10:31:45Z", "hours": 4.6175, "text": "Devlog I forgot to add that I worked on the tests in the test branch, not the main one. OAuth2 PKCE testing. Helped me find an error where, if the code was used (it was reset to \"\" ), it was accepted as \"\" . Now it correctly returns an error. OAuth2 flow testing. Warnings and diagnostics now have some simple checks too. And I merged it into main . Then I started cleaning up the Tailwind CSS. NOTE: they are in new branch dashboard/cleanup Why? Because I used the Play CDN in the past, so I couldn’t create utility classes in a CSS file. Soooo I didn’t. Andddd there were a lot of Tailwind classes that didn’t fit on my screen. Now that I started precompiling it, I could add them. I added 5 unique utility classes. All of them combined are used around ~120 times across all HTMLs. The longest one: @utility inputSelection { @apply w-full px-4 py-2 .5 bg-zinc-950 border border-zinc-800 rounded-xl text-zinc-100 focus : outline-none focus : ring-2 focus : ring-blue-300 focus : border-transparent transition-all appearance-none text-center [ text-align-last : center ] cursor-pointer ; } I also minified the CSS file. If I understand it, it removes anything the browser doesn’t need to understand the CSS (new lines, unnecessary spaces…). It’s better because those characters are still sent over the network, and fewer bytes mean less traffic. While using the new utility classes, I tried to preserve the layout, so everything should look the same as before."}, {"post_id": 44802, "ts": "2026-08-10T20:28:29Z", "hours": 3.7639, "text": "Devlog Working hard on pytest tests. I learn how assert works and how to name . I never used or created test in any language so I think they aren’t perfect (not like they should),but they work😄. I looked like AI made few and how other people and read some stuff online Tests created for these endpoints Around 25 of them List cars About car Engine info Engine start/stop Climate start/stop Windows Doors Lock/Unlock Reduced Guard Lock Flash, Honk, and Combination Tyres Statistics Fuel Odometer Engine diagnostics Brakes Command accessibility Still to do Warnings and diagnostics Commands More changes The tests helped me find and clean up several issues: Documentation updates. The honk endpoint was ../horn but should be /honk . Some values ( odometer , fuel ) are int , just like in the OpenAPI specification, not as described in the official docs. Fixed spelling mistakes: - oillevel to oilLevel - coolantLever to coolantLevel Want to help and has access to volvo with active VOC I need to test engine and climate endpoints but I don’t have an access to a car with it. Soooo if you can contact me on slack"}, {"post_id": 42512, "ts": "2026-08-07T09:41:54Z", "hours": 4.2411, "text": "Devlog Tracking headers implemented : There are two vcc-api-operationId - UUID traceparent - W3C traceparent (for now only sends it back) dashboard should look good on small screen (its very long but I don’t want to redesign it now) This is the reason why I there is much time in this devlog. It was a lot of try and error before something looked good both on mobile and desktop and I liked it . But at least it works know 🙃. some small cleanup of comments I worked again on internal updates endpoint (hopefully works now) started working on pytests (but I will talk about in next devlog (I gave my self 2 days for it) I really want to get the first ship out, so it isn’t going to be perfect. I still have a lot of features and improvements I’d like to add."}, {"post_id": 40711, "ts": "2026-08-04T12:41:43Z", "hours": 4.4231, "text": "Devlog I had a problem when I wanted to rewrite the scenario system. It only changed the local version of the Car (It means it really didn’t update anything). I wanted to update a backup version first, and only if everything was correct, replace the original with the backup. In the end, I used an already created function to first test and then apply to the car . Main PKCE misspelling fixed. Added a landing page with an option to disable it and redirect directly to the login screen (like in the last devlog I have photos of making it). Worked on the lights section. Fixed the docs URLs. Dashboard and WebSocket toggles now work. Rewrote and enabled the updates endpoint. Validation now catches values that can’t be converted to int . Scenario loading into a car instance should now be more consistent with the other functions. Improved mobile responsiveness (and then fixed the desktop one). Some elements were outside the screen on mobile (nothing important, but it didn’t look good). NOTE: the dashboard with car attributes still needs to be adapted. Added windows (because I forgot to 😅) to the dashboard and organised the lighting section. OAuth2 and Snapshots buttons should now always be centred. TODO Debug and tracing headers (from the real API). Additional instructions. Then I think it’s finally ready for the first ship. There are still a lot of things I want to add, but I can’t work indefinitely. Compare The compare app now has the Content-Type fix enabled (like the official API). Compiled the Tailwind CSS for the compare app. NOTE: I will add here more screenshots as link later Also thinking about adding it frictionless mission but I’m not sure."}, {"post_id": 39642, "ts": "2026-08-02T19:24:37Z", "hours": 3.62, "text": "Devlog Snapshots loading page (screenshots while I worked. I had more but the limit was 4). As suggested by the Tailwind CSS tools, changed some classes to more canonical ones. You can now delete cars through both the API and the dashboard. Snapshot corruption (when the app is force quit) should be fixed. Started working on the landing page, but I’ll leave it for the next devlog (mostly because I have on my other laptop). Fixes to do Sometimes the new OAuth2 and Snapshots buttons are off-center. Compare app needs fixing (need to enable the Content-Type fix from the official API). PKCE spelling in the internal API."}, {"post_id": 37827, "ts": "2026-07-30T19:39:54Z", "hours": 4.1028, "text": "Devlog The Content-Type problem is SOLVED …… What was the problem? (My reading skills? ) there are two headers with application/json : Content-Type (POST) Accept (GET) The Accept header isn’t required ( can be */* , application/* or application/json ). So the Content-Type mystery is mostly FIXED but I still need to check with a real Volvo car if Content-Type is actually required. (I’ll do it tomorrow.) Changes: Accept is now handled by my API like in the official API. Added Content-Type checks (like the docs say, meaning it’s required). While proofreading the docs, I found that PKCE is written as PCKE in one internal endpoint. (Not fixed yet.) Small README update (I try to keep it up to date). Scenario page: You can now load a scenario using the GUI. Recompiled the Tailwind CSS. I attached screenshots showing it (you can also see snapshot button but its not implemented YET)"}, {"post_id": 36608, "ts": "2026-07-28T20:31:07Z", "hours": 0.5122, "text": "The comparison app is now online! Comparison app: https://compareplay.kls.hackclub.app/ I also updated the main app with the new dashboard design: https://playground.kls.hackclub.app/internal/welcome devlog Tailwind CSS is no longer loaded from the CDN. I think its now precompiled. Note to others: Remember to update your banner to feature your app (see #stardance on Slack). Otherwise, your ship will be rejected. EDIT: A lot of bots try to connect to my apps do you think I should make a honeypot?"}, {"post_id": 36297, "ts": "2026-07-28T09:47:40Z", "hours": 3.2881, "text": "Devlog I found another way to hide the fuel stat when it isn’t useful for a particular type of car: the HTML hidden attribute. At first, I thought I should add or remove the element hidden, but that turned out to be more complicated than I expected. I think using hidden is still a cleaner solution but I still using templates files. While working on the dashboard, I wanted to add units like km , L , and % to some values. Instead of handling that in Python, I added another div with some margins and, in a few places, used flex so everything stays on the same line without adding more backend logic. Added more page changes thru HTMX (nearly all pages use it). Creating a new car now refreshes the page. when an error occurs, I use HX-Reswap and the HX-Retarget response header (when creating new car as proof of concept). Added HTMX transitions to the OAuth2 settings page.(all pages have transitions) What to do before the first release (Mostly a checklist for myself 😅) Content-Type checks. Scenario and snapshot system support in the dashboard. Main showcase page. Finish the remaining documentation. Two READMEs: one for the main repository and one for the companion app repository. I’m thinking about having one technical README and another one that’s easier to understand for people who don’t code. Better error handling in the dashboard. Right now, most errors are just displayed as plain text instead of being part of the page. deploy updated version on nest I wanted to add a video but MacOS made me a half gig and I don’t think stardance would handle"}, {"post_id": 35043, "ts": "2026-07-26T06:29:01Z", "hours": 5.5947, "text": "Devlog Most of my time was spent working on the dashboard with Tailwind CSS. It took a lot of experimenting to find a design I actually like. I also changed how HTMX updates the dashboard through WebSockets. Before: A dedicated template was rendered every time to update that part of the dashboard. Now: Only the text containing the updated value is replaced. That said, in the future it won’t always be just text. For example, if the fuel type changes from hybrid to electric , the fuel level should disappear from the dashboard instead of just changing its value. While working on this, I found a bug caused by HTMX sending boolean values as strings. This caused climate settings to be marked as invalid. I need to distinguish between an invalid value and an invalid attribute instead of always treating the entire attribute as invalid. Note to myself Add transitions. Make all HTML pages use the same CSS file from now on. Update the version on nest server and make a public companion instance Aaand that’s all. Making websites is painfully slow."}, {"post_id": 33472, "ts": "2026-07-23T13:34:25Z", "hours": 4.2786, "text": "Devlog I don’t know if I mentioned it before, but for now the Content-Type checks are disabled. I need to learn more about them and implement better validation. Created an updated OAuth2 settings page and a car selection screen (with Tailwind CSS, of course). Started experimenting with a new dashboard. It’s still a work in progress, but it will most likely become the main design. I’m also thinking about adding a second dashboard style, although I’m not sure if I’ll do that before the first release. I definitely want to clean up the HTML/Tailwind code by moving repeated styles into reusable classes or something similar. I’m also thinking about using more HTMX so that more pages can update data without needing a full page reload. Wrote more documentation. I still need to verify the fuel endpoint because I don’t remember whether it handles different engine types correctly. ( The new OAuth2 settings page and the car selection screen. For next develop I think I will make a video of how everything works)"}, {"post_id": 32303, "ts": "2026-07-21T11:58:32Z", "hours": 2.6278, "text": "Devlog Companion app I said it was finished for now, but I forgot to add one more thing (the one on the left in the screenshots): a dashboard redirect. Main app I’m still investigating the Content-Type problem. I verified that the official Volvo API behaves correctly, so I’m working on matching that behavior. Added work-in-progress Content-Type checks. Started reworking the CSS using Tailwind CSS. It’s still mixed with some plain CSS for now. Enabled support for the reduced guard lock command. You have to manually mark it as supported, and for now it behaves the same as the normal lock command. Let me know which design you like more: the new one (center) or the old one (right)."}, {"post_id": 31979, "ts": "2026-07-20T20:18:13Z", "hours": 3.7667, "text": "Devlog I’m mainly focused on finishing the companion app. I started working on the CSS. Most of my time was spent learning Tailwind CSS (so I didn’t track it). I think it’s a better fit for me than writing plain CSS. Added Tailwind CSS to all pages of the companion app. (I think I need to redo the main app now. 😅) Added a small README with information about the main app. I think it done now but I will come back to it before first ship Main app While working on the companion app, I found another issue. The Content-Type: application/json behavior doesn’t match the official API. I verified that the official API works as expected, checks for it mine doesn’t (I think)"}, {"post_id": 30890, "ts": "2026-07-18T21:12:58Z", "hours": 3.2169, "text": "Devlog Companion app Added manual mode for comparison. Engine start/stop now works in normal mode. Before pushing, I forgot to fix one thing: { \"error\" : \"Failed to retrieve data from unofficial API.\" , \"detail\" :{ \"detail\" :[{ \"type\" : \"dict_type\" , \"loc\" :[ \"body\" ], \"msg\" : \"Input should be a valid dictionary\" , \"input\" : \"{ \\\" runtimeMinutes \\\" : 10}\" }]}} The fix was simple: I forgot to use json.loads() . I pushed a quick fix commit right after. The photo shows the manual comparison page. I’m still working on the comparison logic, which is why it doesn’t have any CSS yet. Sorry for not adding Volvo API keys so you can see the differences between both APIs, but that would have taken too much time today. Its also the reason why Im creating this app Main app Worked on the documentation. The notifier now supports more than one updated attribute at the same time. It’s not the best implementation, but I’ll improve it after the first ship. Fixed snapshot loading and added exception handling. Scenario loading now reports malformed JSON files. Fixed a dashboard bug where tire information was shown three times. I think I planned to add more data there… and then forgot. I should probably test everything before making a devlog or committing, but I also don’t want my devlogs to have to much time."}, {"post_id": 29435, "ts": "2026-07-16T11:46:44Z", "hours": 0.5936, "text": "A public online demo!!!!! The project is finally available online! https://playground.kls.hackclub.app/internal/welcome Please don’t be the bad guy and fight with other people over access. ❤️ That’s all I wanted to say because this is a really big milestone for me. There will also be another commit today to make sure everyone can run their own instance of the project. I found a few issues that only appeared outside of my local environment: Some WebSocket features break when using HTTPS. The dashboard had problems when the instance wasn’t running on the same computer. Those should be fixed in today’s commit. If you find any errors please comment or contact me on slack Also thanks to nest hackclub for hosting"}, {"post_id": 29164, "ts": "2026-07-15T21:37:24Z", "hours": 2.8483, "text": "Devlog Authorization was my mistake. It should have been accessToken , not Authorization . Why I thought that? I have no idea. No it was good before I was sleepy I think when I did that The snapshots system now works. Why it didn’t work as expected: I forgot to use copy(deep=True) . One of the small dictionaries was written incorrectly. Added saving and loading snapshots from a file. The scenarios system now works and has been tested. Difference between snapshots and scenarios Snapshots copy all data about a car. They are persistent and can be saved to a file. Scenarios only change selected attributes. They are designed to be created and edited manually in a JSON file. Main app The main app is mostly ready. Before the first release, I still need to: Finish the documentation. Add a roadmap with future updates. Verify error responses against the real API. Finish the comparison feature in the companion app. Add more ready-to-use scenarios and API keys. Companion app Manual login now works, so only the comparison logic is left. I found a bug where api_key_p was None because one endpoint redirected using api_key instead. Started working on the comparison feature. PS: A photo of why the api_key_p was none"}, {"post_id": 27883, "ts": "2026-07-13T19:57:06Z", "hours": 3.8994, "text": "Devlog Writing documentation is a good way to check whether the code you wrote actually works. I already found four bugs while documenting the project. For example, I forgot to pass the redirect URI in a function in main.py , even though it was already implemented in internal.py . I also fixed a bug where notifications could sometimes contain an older value. The dashboard has been moved into a separate file. Snapshots currently have a problem. They are very similar to the Car class, so I’ll debug it and explain what the issue was in the next devlog. Companion app The companion app is meant to showcase the differences between my implementation and the official Volvo Demo Car Sandbox. It also makes testing easier, since you don’t have to write your own application just to try the API. I had a problem with the built-in LibreSSL because one of the dependencies didn’t support it. I had to reinstall Python so that uv would detect the new OpenSSL installation. After that, I was finally able to start the app and get it working. Auto-login and automatic creation of a test car are now working. There’s is no css but I will do it after logic works One more thing: the reason the devlogs have been quieter recently is that I’ve been dealing with some administrative paperwork. I’ll get back to posting them more regularly once that’s sorted out."}, {"post_id": 25868, "ts": "2026-07-10T10:58:56Z", "hours": 4.3936, "text": "Devlog How I don’t like web development… did I already say that? I’ll say it again. I’m working on the OAuth2 settings, and I had a problem where one of the query parameters wasn’t reaching the backend. I still don’t know what actually fixed it. Then I had another problem. I have a function that changes values in the backend, but only one button worked while everything else didn’t. It turned out to be because I debugged the first problem with AI. Always trust your own mind before trusting AI. The problem was hx-trigger . I also had problems applying CSS through HTMX. In the end, I solved it by using hx-redirect . But in the end everything works (you can see it one the phtoto) I also worked on the scenario system, which loads scenarios from a JSON file. It isn’t tested yet, and I still need to work on state snapshots. The idea is that you’ll be able to save a moment in time and restore it later, so you can test the same scenario as many times as you want without setting up all the data again. I also started working on a companion app to showcase the differences between my implementation and the official demo car sandbox. I’ll write more about it in the next devlog."}, {"post_id": 24338, "ts": "2026-07-07T20:58:43Z", "hours": 3.7069, "text": "Devlog A small error from the last devlog: it’s PKCE , not PCKE . I had to rename a lot of variables because of that. More customizable data Gearbox Model year More diagnostic data for lights (hazard, fog, brake, high beam, low beam, and more) Other additions Added a new default API key with 3 cars, each having different values. Wrote more docs. Started working on scenarios (templates for new or existing cars to make setup faster). I’m thinking about loading them from a file so users can create their own. Started working on setting up OAuth2 through the dashboard. Fixed most command responses because when I first created them, I forgot to wrap everything inside { \"data\": {} } . Added light options to the dashboard. Working: PKCE How does it work? The application generates a random secret. Before redirecting the user to the login page, it sends only a hashed version of that secret. After the user logs in, the application receives an authorization code. When exchanging the code for tokens, it sends the original secret. The server checks whether it matches the previously received hash. If it does, the tokens are issued. It normally protects from having the tokens stolen New promoting picture I made in canva have a look"}, {"post_id": 23100, "ts": "2026-07-05T20:54:08Z", "hours": 3.3289, "text": "Devlog Small additions to the new documentation. changes how the api handles errors BIG ADDITION OAuth2 without PKCE. I started working on PKCE, but I thought I should write a devlog before adding it. Added a login website (I know I mentioned it last time). Added a way to enable and disable OAuth2. Authentication now checks whether OAuth2 is enabled. If it is, requests are authenticated using OAuth2. Tokens don’t expire yet, but that will be added soon. Added endpoints for refreshing tokens and exchanging an authorization code for tokens. How does OAuth2 work? The app redirects the user to a login page. After logging in, the website redirects the user back to the callback URL provided by the app. The app receives an authorization code, which it exchanges for two tokens: a long-lived refresh token and a short-lived access token. When the access token expires, the app can use the refresh endpoint to obtain a new access token. What is PKCE? I’ll write more about it once it’s added to the project. In short, PKCE protects the authorization flow by ensuring that only the application that started the login process can exchange the authorization code for tokens. The application first generates a random secret (called a code verifier). Before the login request is sent, a hashed version of that secret (the code challenge) is sent to the server. Later, when exchanging the authorization code for tokens, the application sends the original secret. The server verifies that it matches the previously received hash before issuing any tokens. I’ll explain the complete flow in the next devlog."}, {"post_id": 20221, "ts": "2026-07-01T19:28:27Z", "hours": 5.3022, "text": "Devlog This devlog will be a short one because I’ve been focusing on implementing OAuth 2.0. I’ll cover that in more detail in the next update but I will add photo of a “login” screen that I created for it (it looks bad on purpose). What’s new The terminal now works with more than one static car. The dashboard can (once again) create new cars. The codebase has been split into multiple files instead of a single large file: main still contains the public API endpoints. internal contains the dashboard logic and internal API endpoints. database will contain multiple predefined car scenarios. I also started writing a new manual that documents the quirks of the Volvo API and my implementation ( and edge cases). I will write more about in next 2 devlogs What’s left before the first ship An example application demonstrating the differences between the official Volvo Sandbox and this project. OAuth 2.0 with PKCE (it would be great to have before the first ship). Documentation. A major code cleanup and refactoring."}, {"post_id": 17924, "ts": "2026-06-28T21:18:15Z", "hours": 2.7358, "text": "Devlog I added two static (for now) endpoints: statistics and warning . The statistics endpoint mostly returns data, so there isn’t much to test. The warning endpoint has a very large response that would require a lot of new code, and for now I don’t want to implement all of it. I started working on adding cars through the dashboard (you could already see part of it in the last devlog), but I found out it doesn’t work, so I need to fix it before the next devlog. Climate and engine STOP commands now respond correctly. In the last invoice update, they incorrectly returned RUNNING . Added checks for the new command endpoints to verify whether the car supports a given command. Added a small terminal page that outputs changes. In the future, you’ll be able to choose whether to display only Volvo changes, all changes, or all information (for example, if you checked whether the windows status). I also used it to verify that the normal WebSocket status works. Added the foundations for disabling WebSockets on startup. Only a configuration file is left to implement. Added UNAVAILABLE reason invoice logic mostly something like this: If the reason is NO_INTERNET , the invoice becomes CONNECTION_FAILURE . If the reason is POWER_SAVING_MODE , the invoice becomes VEHICLE_IN_SLEEP . Made some improvements to the dashboard’s appearance."}, {"post_id": 15774, "ts": "2026-06-25T17:19:10Z", "hours": 7.1422, "text": "Devlog A funny story: I built the invoice system but didn’t always assign values correctly, so the values got mixed up. I spent a long time debugging before realizing that was the cause. { \"error\" : { \"message\" : \"VALUE_ERROR\" , \"description\" : \" \\\" Car \\\" object has no field \\\" 123 \\\" \" } } I also spent a lot of time on CSS. Most of that time went into learning: classes IDs box shadows CSS Grid The reason it took so long since the last devlog is CSS. As I said before, I don’t really like web development, so my motivation was pretty low. I used some AI, but I worked hard to remove most of the generated code. At this point, most of the site’s design looks the way I want it to and will probably stay that way until the end of the project. Made invoices have some logic instead of always sending the same value. That means: If no invoice status is set, it sends COMPLETED or RUNNING depending on whether the engine or climate is running. Loc like actions can’t have a RUNNING invoice status. Added a distinction between successful and failed invoices. PS: Always remember to stop the server with Ctrl+C , not Ctrl+Z , because Ctrl+Z can leave the process running and keep the port blocked."}, {"post_id": 14241, "ts": "2026-06-23T07:56:55Z", "hours": 6.0522, "text": "Devlog It has been a long time since my last devlog, but I was more focused on learning than adding new stuff. Right now, I am focusing on learning HTML, htmx, and Jinja. The welcome page logic is mostly working. I had some problems with it because I used htmx to add new code, but the JavaScript from the is not reloaded with that. Now, I use the HX-Redirect response. I also learned how WebSockets work with FastAPI and htmx. I also designed how the dashboard will look (I attached my drawings. Good luck reading them!)."}, {"post_id": 11274, "ts": "2026-06-18T13:16:22Z", "hours": 3.5742, "text": "Devlog centralLock is called carLocked in the docs. The docs seem to be outdated. I think the OpenAPI specification is more accurate and contains fewer errors. I added a way to validate data using class functions. Implemented timestamps. Using datetime function from python Added tyre endpoints. Added a way to generate new API keys and create new cars (I used python secrets). (getting ready to make first public running version) Roadmap.md file with status of this project What is next to do Start using the updated method for changing data. Update the dashboard to reflect and modify the new data. Add WebSocket support. Add the remaining 2 vehicle and warning endpoints. Create an example app for testers. Redesign dashboard. It looks awful I had a 2 days off because I was on school trip but I back. Next thing on my list is an updated dashboard"}, {"post_id": 9202, "ts": "2026-06-15T13:28:28Z", "hours": 1.9225, "text": "Devlog You can edit data through the dashboard now. It’s not the best solution, and I want to change how it works (probably start from scratch), but not now. Diagnostics endpoints. I had a very good time with them today. Why? Because of the “/diagnostics” docs. I attached a screenshot showing an example from the official website and data from a real car (left: real API, right: docs). If you look at them, you can see two errors and one very small issue that you would only notice if you read the whole documentation: In serviceWarning, you can see the value is NORMAL, but NORMAL is not a valid value for it. It should be NO_WARNING. This is the small one. In engineHoursToService, the API response contains a unit, but the docs don’t mention it at all. And the worst one (and the only real error): there is no information about washerFluidLevelWarning in the docs, but it appears in the data from the car. What do you think I should do? Should I write to them about it? I think you can comment on the post, so let me know what you think."}, {"post_id": 8961, "ts": "2026-06-14T22:15:21Z", "hours": 1.7606, "text": "Devlog Added odometer and fuel endpoints. Funny thing is that Volvo sends in what unit the data is, but the docs say that only metric units are valid, so it really sends always the same unit. Most likely they wanted to add imperial later, or they left it like this for simplicity. Added first version of dashboard. For now, it’s using polling every 5 seconds (I have planned to change it to WebSocket). It only displays some information and can’t edit anything. Also, I wrote some HTML and JavaScript. I never liked web development, so I don’t know a lot (I’m learning while I code 😅). It could be that it will look very rough till the end because I don’t have any patience for HTML and CSS. I “will” do it when I have a very good day, or AI will do it? I would like not to use AI in this way, but I will see. Edit: Forgot to push the updated version to GitHub I will do it tomorrow because it’s late (it’s tomorrow )"}, {"post_id": 8322, "ts": "2026-06-13T20:45:50Z", "hours": 2.8264, "text": "Devlog Added a command accessibility endpoint (it tells if the car can receive commands). I refactored duplicate code in the climate endpoint. Added engine endpoints (they aren’t perfect, but this isn’t the final code). It was also a frustrating day because I repeatedly forgot to save my code before testing (my bad). A photo of the error that cost me way too much time today. (I changed it to “/vehicles/{VIN}/engine-status”, but I didn’t save the file.)"}, {"post_id": 7410, "ts": "2026-06-12T10:41:57Z", "hours": 0.9136, "text": "I setup my codespace and started working on first few endpoints. Additionally I looked how most of Volvos apis looks that gave me direction to go. That was all time I had today. Also I could add screenshot here because of macOS :("}]...
|
Title: Volvo API playground by @Kl | Stardance
De Title: Volvo API playground by @Kl | Stardance
Devlogs:
I setup my codespace and started working on first few endpoints. Additionally I looked how most of Volvos apis looks that gave me direction to go. That was all time I had today. Also I could add screenshot here because of macOS :(
Devlog Added a command accessibility endpoint (it tells if the car can receive commands). I refactored duplicate code in the climate endpoint. Added engine endpoints (they aren’t perfect, but this isn’t the final code). It was also a frustrating day because I repeatedly forgot to save my code before testing (my bad). A photo of the error that cost me way too much time today. (I changed it to “/vehicles/{VIN}/engine-status”, but I didn’t save the file.)
Devlog Added odometer and fuel endpoints. Funny thing is that Volvo sends in what unit the data is, but the docs say that only metric units are valid, so it really sends always the same unit. Most likely they wanted to add imperial later, or they left it like this for simplicity. Added first version of dashboard. For now, it’s using polling every 5 seconds (I have planned to change it to WebSocket). It only displays some information and can’t edit anything. Also, I wrote some HTML and JavaScript. I never liked web development, so I don’t know a lot (I’m learning while I code 😅). It could be that it will look very rough till the end because I don’t have any patience for HTML and CSS. I “will” do it when I have a very good day, or AI will do it? I would like not to use AI in this way, but I will see. Edit: Forgot to push the updated version to GitHub I will do it tomorrow because it’s late (it’s tomorrow )
Devlog You can edit data through the dashboard now. It’s not the best solution, and I want to change how it works (probably start from scratch), but not now. Diagnostics endpoints. I had a very good time with them today. Why? Because of the “/diagnostics” docs. I attached a screenshot showing an example from the official website and data from a real car (left: real API, right: docs). If you look at them, you can see two errors and one very small issue that you would only notice if you read the whole documentation: In serviceWarning, you can see the value is NORMAL, but NORMAL is not a valid value for it. It should be NO_WARNING. This is the small one. In engineHoursToService, the API response contains a unit, but the docs don’t mention it at all. And the worst one (and the only real error): there is no information about washerFluidLevelWarning in the docs, but it appears in the data from the car. What do you think I should do? Should I write to them about it? I think you can comment on the post, so let me know what you think.
Devlog centralLock is called carLocked in the docs. The docs seem to be outdated. I think the OpenAPI specification is more accurate and contains fewer errors. I added a way to validate data using class functions. Implemented timestamps. Using datetime function from python Added tyre endpoints. Added a way to generate new API keys and create new cars (I used python secrets). (getting ready to make first public running version) Roadmap.md file with status of this project What is next to do Start using the updated method for changing data. Update the dashboard to reflect and modify the new data. Add WebSocket support. Add the remaining 2 vehicle and warning endpoints. Create an example app for testers. Redesign dashboard. It looks awful I had a 2 days off because I was on school trip but I back. Next thing on my list is an updated dashboard
Devlog It has been a long time since my last devlog, but I was more focused on learning than adding new stuff. Right now, I am focusing on learning HTML, htmx, and Jinja. The welcome page logic is mostly working. I had some problems with it because I used htmx to add new code, but the JavaScript from the is not reloaded with that. Now, I use the HX-Redirect response. I also learned how WebSockets work with FastAPI and htmx. I also designed how the dashboard will look (I attached my drawings. Good luck reading them!).
Devlog A funny story: I built the invoice system but didn’t always assign values correctly, so the values got mixed up. I spent a long time debugging before realizing that was the cause. { "error" : { "message" : "VALUE_ERROR" , "description" : " \" Car \" object has no field \" 123 \" " } } I also spent a lot of time on CSS. Most of that time went into learning: classes IDs box shadows CSS Grid The reason it took so long since the last devlog is CSS. As I said before, I don’t really like web development, so my motivation was pretty low. I used some AI, but I worked hard to remove most of the generated code. At this point, most of the site’s design looks the way I want it to and will probably stay that way until the end of the project. Made invoices have some logic instead of always sending the same value. That means: If no invoice status is set, it sends COMPLETED or RUNNING depending on whether the engine or climate is running. Loc like actions can’t have a RUNNING invoice status. Added a distinction between successful and failed invoices. PS: Always remember to stop the server with Ctrl+C , not Ctrl+Z , because Ctrl+Z can leave the process running and keep the port blocked.
Devlog I added two static (for now) endpoints: statistics and warning . The statistics endpoint mostly returns data, so there isn’t much to test. The warning endpoint has a very large response that would require a lot of new code, and for now I don’t want to implement all of it. I started working on adding cars through the dashboard (you could already see part of it in the last devlog), but I found out it doesn’t work, so I need to fix it before the next devlog. Climate and engine STOP commands now respond correctly. In the last invoice update, they incorrectly returned RUNNING . Added checks for the new command endpoints to verify whether the car supports a given command. Added a small terminal page that outputs changes. In the future, you’ll be able to choose whether to display only Volvo changes, all changes, or all information (for example, if you checked whether the windows status). I also used it to verify that the normal WebSocket status works. Added the foundations for disabling WebSockets on startup. Only a configuration file is left to implement. Added UNAVAILABLE reason invoice logic mostly something like this: If the reason is NO_INTERNET , the invoice becomes CONNECTION_FAILURE . If the reason is POWER_SAVING_MODE , the invoice becomes VEHICLE_IN_SLEEP . Made some improvements to the dashboard’s appearance.
Devlog This devlog will be a short one because I’ve been focusing on implementing OAuth 2.0. I’ll cover that in more detail in the next update but I will add photo of a “login” screen that I created for it (it looks bad on purpose). What’s new The terminal now works with more than one static car. The dashboard can (once again) create new cars. The codebase has been split into multiple files instead of a single large file: main still contains the public API endpoints. internal contains the dashboard logic and internal API endpoints. database will contain multiple predefined car scenarios. I also started writing a new manual that documents the quirks of the Volvo API and my implementation ( and edge cases). I will write more about in next 2 devlogs What’s left before the first ship An example application demonstrating the differences between the official Volvo Sandbox and this project. OAuth 2.0 with PKCE (it would be great to have before the first ship). Documentation. A major code cleanup and refactoring.
Devlog Small additions to the new documentation. changes how the api handles errors BIG ADDITION OAuth2 without PKCE. I started working on PKCE, but I thought I should write a devlog before adding it. Added a login website (I know I mentioned it last time). Added a way to enable and disable OAuth2. Authentication now checks whether OAuth2 is enabled. If it is, requests are authenticated using OAuth2. Tokens don’t expire yet, but that will be added soon. Added endpoints for refreshing tokens and exchanging an authorization code for tokens. How does OAuth2 work? The app redirects the user to a login page. After logging in, the website redirects the user back to the callback URL provided by the app. The app receives an authorization code, which it exchanges for two tokens: a long-lived refresh token and a short-lived access token. When the access token expires, the app can use the refresh endpoint to obtain a new access token. What is PKCE? I’ll write more about it once it’s added to the project. In short, PKCE protects the authorization flow by ensuring that only the application that started the login process can exchange the authorization code for tokens. The application first generates a random secret (called a code verifier). Before the login request is sent, a hashed version of that secret (the code challenge) is sent to the server. Later, when exchanging the authorization code for tokens, the application sends the original secret. The server verifies that it matches the previously received hash before issuing any tokens. I’ll explain the complete flow in the next devlog.
Devlog A small error from the last devlog: it’s PKCE , not PCKE . I had to rename a lot of variables because of that. More customizable data Gearbox Model year More diagnostic data for lights (hazard, fog, brake, high beam, low beam, and more) Other additions Added a new default API key with 3 cars, each having different values. Wrote more docs. Started working on scenarios (templates for new or existing cars to make setup faster). I’m thinking about loading them from a file so users can create their own. Started working on setting up OAuth2 through the dashboard. Fixed most command responses because when I first created them, I forgot to wrap everything inside { "data": {} } . Added light options to the dashboard. Working: PKCE How does it work? The application generates a random secret. Before redirecting the user to the login page, it sends only a hashed version of that secret. After the user logs in, the application receives an authorization code. When exchanging the code for tokens, it sends the original secret. The server checks whether it matches the previously received hash. If it does, the tokens are issued. It normally protects from having the tokens stolen New promoting picture I made in canva have a look
Devlog How I don’t like web development… did I already say that? I’ll say it again. I’m working on the OAuth2 settings, and I had a problem where one of the query parameters wasn’t reaching the backend. I still don’t know what actually fixed it. Then I had another problem. I have a function that changes values in the backend, but only one button worked while everything else didn’t. It turned out to be because I debugged the first problem with AI. Always trust your own mind before trusting AI. The problem was hx-trigger . I also had problems applying CSS through HTMX. In the end, I solved it by using hx-redirect . But in the end everything works (you can see it one the phtoto) I also worked on the scenario system, which loads scenarios from a JSON file. It isn’t tested yet, and I still need to work on state snapshots. The idea is that you’ll be able to save a moment in time and restore it later, so you can test the same scenario as many times as you want without setting up all the data again. I also started working on a companion app to showcase the differences between my implementation and the official demo car sandbox. I’ll write more about it in the next devlog.
Devlog Writing documentation is a good way to check whether the code you wrote actually works. I already found four bugs while documenting the project. For example, I forgot to pass the redirect URI in a function in main.py , even though it was already implemented in internal.py . I also fixed a bug where notifications could sometimes contain an older value. The dashboard has been moved into a separate file. Snapshots currently have a problem. They are very similar to the Car class, so I’ll debug it and explain what the issue was in the next devlog. Companion app The companion app is meant to showcase the differences between my implementation and the official Volvo Demo Car Sandbox. It also makes testing easier, since you don’t have to write your own application just to try the API. I had a problem with the built-in LibreSSL because one of the dependencies didn’t support it. I had to reinstall Python so that uv would detect the new OpenSSL installation. After that, I was finally able to start the app and get it working. Auto-login and automatic creation of a test car are now working. There’s is no css but I will do it after logic works One more thing: the reason the devlogs have been quieter recently is that I’ve been dealing with some administrative paperwork. I’ll get back to posting them more regularly once that’s sorted out.
Devlog Authorization was my mistake. It should have been accessToken , not Authorization . Why I thought that? I have no idea. No it was good before I was sleepy I think when I did that The snapshots system now works. Why it didn’t work as expected: I forgot to use copy(deep=True) . One of the small dictionaries was written incorrectly. Added saving and loading snapshots from a file. The scenarios system now works and has been tested. Difference between snapshots and scenarios Snapshots copy all data about a car. They are persistent and can be saved to a file. Scenarios only change selected attributes. They are designed to be created and edited manually in a JSON file. Main app The main app is mostly ready. Before the first release, I still need to: Finish the documentation. Add a roadmap with future updates. Verify error responses against the real API. Finish the comparison feature in the companion app. Add more ready-to-use scenarios and API keys. Companion app Manual login now works, so only the comparison logic is left. I found a bug where api_key_p was None because one endpoint redirected using api_key instead. Started working on the comparison feature. PS: A photo of why the api_key_p was none
A public online demo!!!!! The project is finally available online! https://playground.kls.hackclub.app/internal/welcome Please don’t be the bad guy and fight with other people over access. ❤️ That’s all I wanted to say because this is a really big milestone for me. There will also be another commit today to make sure everyone can run their own instance of the project. I found a few issues that only appeared outside of my local environment: Some WebSocket features break when using HTTPS. The dashboard had problems when the instance wasn’t running on the same computer. Those should be fixed in today’s commit. If you find any errors please comment or contact me on slack Also thanks to nest hackclub for hosting
Devlog Companion app Added manual mode for comparison. Engine start/stop now works in normal mode. Before pushing, I forgot to fix one thing: { "error" : "Failed to retrieve data from unofficial API." , "detail" :{ "detail" :[{ "type" : "dict_type" , "loc" :[ "body" ], "msg" : "Input should be a valid dictionary" , "input" : "{ \" runtimeMinutes \" : 10}" }]}} The fix was simple: I forgot to use json.loads() . I pushed a quick fix commit right after. The photo shows the manual comparison page. I’m still working on the comparison logic, which is why it doesn’t have any CSS yet. Sorry for not adding Volvo API keys so you can see the differences between both APIs, but that would have taken too much time today. Its also the reason why Im creating this app Main app Worked on the documentation. The notifier now supports more than one updated attribute at the same time. It’s not the best implementation, but I’ll improve it after the first ship. Fixed snapshot loading and added exception handling. Scenario loading now reports malformed JSON files. Fixed a dashboard bug where tire information was shown three times. I think I planned to add more data there… and then forgot. I should probably test everything before making a devlog or committing, but I also don’t want my devlogs to have to much time.
Devlog I’m mainly focused on finishing the companion app. I started working on the CSS. Most of my time was spent learning Tailwind CSS (so I didn’t track it). I think it’s a better fit for me than writing plain CSS. Added Tailwind CSS to all pages of the companion app. (I think I need to redo the main app now. 😅) Added a small README with information about the main app. I think it done now but I will come back to it before first ship Main app While working on the companion app, I found another issue. The Content-Type: application/json behavior doesn’t match the official API. I verified that the official API works as expected, checks for it mine doesn’t (I think)
Devlog Companion app I said it was finished for now, but I forgot to add one more thing (the one on the left in the screenshots): a dashboard redirect. Main app I’m still investigating the Content-Type problem. I verified that the official Volvo API behaves correctly, so I’m working on matching that behavior. Added work-in-progress Content-Type checks. Started reworking the CSS using Tailwind CSS. It’s still mixed with some plain CSS for now. Enabled support for the reduced guard lock command. You have to manually mark it as supported, and for now it behaves the same as the normal lock command. Let me know which design you like more: the new one (center) or the old one (right).
Devlog I don’t know if I mentioned it before, but for now the Content-Type checks are disabled. I need to learn more about them and implement better validation. Created an updated OAuth2 settings page and a car selection screen (with Tailwind CSS, of course). Started experimenting with a new dashboard. It’s still a work in progress, but it will most likely become the main design. I’m also thinking about adding a second dashboard style, although I’m not sure if I’ll do that before the first release. I definitely want to clean up the HTML/Tailwind code by moving repeated styles into reusable classes or something similar. I’m also thinking about using more HTMX so that more pages can update data without needing a full page reload. Wrote more documentation. I still need to verify the fuel endpoint because I don’t remember whether it handles different engine types correctly. ( The new OAuth2 settings page and the car selection screen. For next develop I think I will make a video of how everything works)
Devlog Most of my time was spent working on the dashboard with Tailwind CSS. It took a lot of experimenting to find a design I actually like. I also changed how HTMX updates the dashboard through WebSockets. Before: A dedicated template was rendered every time to update that part of the dashboard. Now: Only the text containing the updated value is replaced. That said, in the future it won’t always be just text. For example, if the fuel type changes from hybrid to electric , the fuel level should disappear from the dashboard instead of just changing its value. While working on this, I found a bug caused by HTMX sending boolean values as strings. This caused climate settings to be marked as invalid. I need to distinguish between an invalid value and an invalid attribute instead of always treating the entire attribute as invalid. Note to myself Add transitions. Make all HTML pages use the same CSS file from now on. Update the version on nest server and make a public companion instance Aaand that’s all. Making websites is painfully slow.
Devlog I found another way to hide the fuel stat when it isn’t useful for a particular type of car: the HTML hidden attribute. At first, I thought I should add or remove the element hidden, but that turned out to be more complicated than I expected. I think using hidden is still a cleaner solution but I still using templates files. While working on the dashboard, I wanted to add units like km , L , and % to some values. Instead of handling that in Python, I added another div with some margins and, in a few places, used flex so everything stays on the same line without adding more backend logic. Added more page changes thru HTMX (nearly all pages use it). Creating a new car now refreshes the page. when an error occurs, I use HX-Reswap and the HX-Retarget response header (when creating new car as proof of concept). Added HTMX transitions to the OAuth2 settings page.(all pages have transitions) What to do before the first release (Mostly a checklist for myself 😅) Content-Type checks. Scenario and snapshot system support in the dashboard. Main showcase page. Finish the remaining documentation. Two READMEs: one for the main repository and one for the companion app repository. I’m thinking about having one technical README and another one that’s easier to understand for people who don’t code. Better error handling in the dashboard. Right now, most errors are just displayed as plain text instead of being part of the page. deploy updated version on nest I wanted to add a video but MacOS made me a half gig and I don’t think stardance would handle
The comparison app is now online! Comparison app: https://compareplay.kls.hackclub.app/ I also updated the main app with the new dashboard design: https://playground.kls.hackclub.app/internal/welcome devlog Tailwind CSS is no longer loaded from the CDN. I think its now precompiled. Note to others: Remember to update your banner to feature your app (see #stardance on Slack). Otherwise, your ship will be rejected. EDIT: A lot of bots try to connect to my apps do you think I should make a honeypot?
Devlog The Content-Type problem is SOLVED …… What was the problem? (My reading skills? ) there are two headers with application/json : Content-Type (POST) Accept (GET) The Accept header isn’t required ( can be */* , application/* or application/json ). So the Content-Type mystery is mostly FIXED but I still need to check with a real Volvo car if Content-Type is actually required. (I’ll do it tomorrow.) Changes: Accept is now handled by my API like in the official API. Added Content-Type checks (like the docs say, meaning it’s required). While proofreading the docs, I found that PKCE is written as PCKE in one internal endpoint. (Not fixed yet.) Small README update (I try to keep it up to date). Scenario page: You can now load a scenario using the GUI. Recompiled the Tailwind CSS. I attached screenshots showing it (you can also see snapshot button but its not implemented YET)
Devlog Snapshots loading page (screenshots while I worked. I had more but the limit was 4). As suggested by the Tailwind CSS tools, changed some classes to more canonical ones. You can now delete cars through both the API and the dashboard. Snapshot corruption (when the app is force quit) should be fixed. Started working on the landing page, but I’ll leave it for the next devlog (mostly because I have on my other laptop). Fixes to do Sometimes the new OAuth2 and Snapshots buttons are off-center. Compare app needs fixing (need to enable the Content-Type fix from the official API). PKCE spelling in the internal API.
Devlog I had a problem when I wanted to rewrite the scenario system. It only changed the local version of the Car (It means it really didn’t update anything). I wanted to update a backup version first, and only if everything was correct, replace the original with the backup. In the end, I used an already created function to first test and then apply to the car . Main PKCE misspelling fixed. Added a landing page with an option to disable it and redirect directly to the login screen (like in the last devlog I have photos of making it). Worked on the lights section. Fixed the docs URLs. Dashboard and WebSocket toggles now work. Rewrote and enabled the updates endpoint. Validation now catches values that can’t be converted to int . Scenario loading into a car instance should now be more consistent with the other functions. Improved mobile responsiveness (and then fixed the desktop one). Some elements were outside the screen on mobile (nothing important, but it didn’t look good). NOTE: the dashboard with car attributes still needs to be adapted. Added windows (because I forgot to 😅) to the dashboard and organised the lighting section. OAuth2 and Snapshots buttons should now always be centred. TODO Debug and tracing headers (from the real API). Additional instructions. Then I think it’s finally ready for the first ship. There are still a lot of things I want to add, but I can’t work indefinitely. Compare The compare app now has the Content-Type fix enabled (like the official API). Compiled the Tailwind CSS for the compare app. NOTE: I will add here more screenshots as link later Also thinking about adding it frictionless mission but I’m not sure.
Devlog Tracking headers implemented : There are two vcc-api-operationId - UUID traceparent - W3C traceparent (for now only sends it back) dashboard should look good on small screen (its very long but I don’t want to redesign it now) This is the reason why I there is much time in this devlog. It was a lot of try and error before something looked good both on mobile and desktop and I liked it . But at least it works know 🙃. some small cleanup of comments I worked again on internal updates endpoint (hopefully works now) started working on pytests (but I will talk about in next devlog (I gave my self 2 days for it) I really want to get the first ship out, so it isn’t going to be perfect. I still have a lot of features and improvements I’d like to add.
Devlog Working hard on pytest tests. I learn how assert works and how to name . I never used or created test in any language so I think they aren’t perfect (not like they should),but they work😄. I looked like AI made few and how other people and read some stuff online Tests created for these endpoints Around 25 of them List cars About car Engine info Engine start/stop Climate start/stop Windows Doors Lock/Unlock Reduced Guard Lock Flash, Honk, and Combination Tyres Statistics Fuel Odometer Engine diagnostics Brakes Command accessibility Still to do Warnings and diagnostics Commands More changes The tests helped me find and clean up several issues: Documentation updates. The honk endpoint was ../horn but should be /honk . Some values ( odometer , fuel ) are int , just like in the OpenAPI specification, not as described in the official docs. Fixed spelling mistakes: - oillevel to oilLevel - coolantLever to coolantLevel Want to help and has access to volvo with active VOC I need to test engine and climate endpoints but I don’t have an access to a car with it. Soooo if you can contact me on slack
Devlog I forgot to add that I worked on the tests in the test branch, not the main one. OAuth2 PKCE testing. Helped me find an error where, if the code was used (it was reset to "" ), it was accepted as "" . Now it correctly returns an error. OAuth2 flow testing. Warnings and diagnostics now have some simple checks too. And I merged it into main . Then I started cleaning up the Tailwind CSS. NOTE: they are in new branch dashboard/cleanup Why? Because I used the Play CDN in the past, so I couldn’t create utility classes in a CSS file. Soooo I didn’t. Andddd there were a lot of Tailwind classes that didn’t fit on my screen. Now that I started precompiling it, I could add them. I added 5 unique utility classes. All of them combined are used around ~120 times across all HTMLs. The longest one: @utility inputSelection { @apply w-full px-4 py-2 .5 bg-zinc-950 border border-zinc-800 rounded-xl text-zinc-100 focus : outline-none focus : ring-2 focus : ring-blue-300 focus : border-transparent transition-all appearance-none text-center [ text-align-last : center ] cursor-pointer ; } I also minified the CSS file. If I understand it, it removes anything the browser doesn’t need to understand the CSS (new lines, unnecessary spaces…). It’s better because those characters are still sent over the network, and fewer bytes mean less traffic. While using the new utility classes, I tried to preserve the layout, so everything should look the same as before.
Devlog SITE changes I found that some number inputs didn’t use the utility classes. I gave them inputText because they are really the same; the only difference is the HTML type . I also forgot to update the reloadable fuel section. It now uses the shorter utility class. Made sure that all text in the header is the same size (they weren’t). I copied all changes back to the main branch. config changes Then I added a config file using the configparser library. also added an option to disable the FastAPI docs. I started working on Wiki: reworking docs.md into a GitHub Wiki with up to date information. Error logger, so you can see what’s wrong without printing the API response in your code. I had some problems with catching the fastapi automatic response but I will leave it for next devlog
Devlog There was a small (or big) problem in my playground. If an error was returned in the response, you could only see it if your app handled it or by printing the response. That’s why I added an error logger. It can show errors in two ways: Terminal Log file How it works There were two ways of doing it (from what I learned): Middleware that captures all responses (this could be helpful in the future). Exception handlers (this is what I chose). I use two handlers: @app.exception_handler(RequestValidationError) @app.exception_handler(HTTPException) It was a horrible time searching for why it didn’t work. At first, I worked in a separate file, but I couldn’t get the (fastapi) app variable into those functions. So I copied them into main file to make them work first. I had to change some JSON responses to HTTPException to make the second handler work. After I captured the first request and printed it, I worked on one function that writes a log and another that prints to the terminal. I also created a class to store useful data. It works like this: Exception handler-> ->Put data into class -> ->Create response -> ->Return response ->Create a background task that logs the error I create a background task so the response doesn’t wait or even worse fails In the end I found that I can wrap these func with this simple func to make them work in different file def setup_error_logging(app: FastAPI): Added a config option: To disable it completely. To disable only the log file. It also bypasses all internal endpoints to make the logs more readable. The best fail… 😅 I returned an exception instead of raising it. I spent a good 15 minutes wondering why the response had status code 200 with a JSON body saying status code 400 . response changes I also checked how the authorization errors look and added two new ones: Missing Authorization header. Invalid vcc-api-key header. WIKI (not counted) I focus on making a GitHub wiki (new docs) After ending them and the error logger. Its time for the first ship !!!!!!! Nest instability: I made a backup server : https://frog01-21185.wykr.es/ Its not ideal one, bc some asian countries are blocked but its shouldn’t have any downtime (I hope so) If an Admin read it why I must copy enter from different text input 😭
Devlog Error logger added colors to the terminal print out using: \033[31m \033[0m Good to know that it is so easy to add colors to text added timestamps to log file and - between errors Changes how it reads body once again and fixed url encoded requests logging My additional information I put in detail in the json response (the real API can send it like that buttty I didn’t see it. info from docs ) additional changes: New scenarios mostly about service warnings You can add notes to the website thru config files Scopes I started working on scopes. What are they? They are really permissions (you can know them from discord bots or if you login thru GitHub etc.) I don’t want to put them in this first ship but I needed to work on something (while I work on wiki) and I CAN’T guarantee every thing works after adding them. You can see it in the scopes branch. what is done: I have made preparation so the additional database (dict) I use for OAuth can store more data have updated website func to work with changes and also pytest added all possible conve (connectivity API) scopes WIKI when I add everything to them I will finally try making a ship added the error logger page updated the sidebar scenario and snapshots page a lot of misc Bonus photos from vacation on baltic sea
Long time no see… The school started aaand I didn’t have time I had low motivation The only thing to do before first ship is docs but I could find time to finish them. Buut I back now. AND I promise to ship it before 7 of September. If you are voting on this project PLEASE do not skip. I have my birthday coming and if the shipwrights doesn’t have a long list it could mean this project payout could be my birthday gift. If I ofc ship it 😅 devlog Small marketing changes everywhere to say that this project doesn’t have any ready code to use Added info about error logger on the landing page Scopes A long way from last devlog Fixed pytest ( A second time) TEMPORARY FIX added so the scope error doesn’t - throw just internal error FIXed the Oauth2 endpoint at least 3 times Added a WIP endpoint to edit scope data from API Fixed how cars are created so they work with both - Oauth and scopes stuff Only looking dashboard page for scopes compare I think I forgot to say something in last devlog config file if you would like to use different instance Toml oillevel to oilLever AI disclaimer that I used this project to learn tailwind Make the doors have different statuses in mean time Untracked WIKI Redo the home page Started working on stardance path A lot of misc that I don’t remember other I created a small modified volvo example app to show that my app works like the real one
Devlog MAIN added a startup baner fixed snapshots not saving if website was used scope If you didn’t follow from start this branch contains the experimental scope support which is mostly done but I can guarantee stability that’s why it isn’t pushed to main in fist ship made the scope page work added a back button added button to scope on main page fixed snapshots loading/saving
Read till the end PLEASE 🥺 Devlog A lot of changes from the last devlog only 5 hrs Mostly bc I add stuff on top of but I will suffer in the future (See dev branch for these changes) Change all connectivity API to start with /connected-vehicle/v2/ to make room for different APIs After that I fixed pytest to reflect that I added a location API with a ONE endpoint There were few iterations Added scopes for this API location:read If I remember correctly Unique error responses (because location error look like old (v1) connectivity API Fixed that operationID could be a constant Added a config option to use longer API keys About here I Fixed the url for location api because it used the connectivity scheme Started working on energy API I added all data from it to this project In short one endpoints says what this car is capable of And the other says the values TODO: add its unique error its half done Scopes corresponding to energy API Fixed that some values and capabilities had the same name (bc of that some bool values where number so a it was important) WIP Oauth2 update: JWT tokens for access tokens WIP token can expire! what are JWT token? There consist of three parts header payload and signature The two first is important for my project the 3 isn’t . They store info about issuer, when token is active, scopes… A lot of useless data for this project or useful? We will see Life Bc of school I didn’t have a lot of time to write devlog (and write code) but I try to do my best before the end of stardance The next ship is planned for 28 September BIRTHDAY TODAY (16 September) Im celebrating my birthday 😄 If you write me a few good words It would be motivating for me.
Devlog A lot of breaking changes later and getting closer to PR and going to 2 ship Token lifetime WORKS made time when token is expired is rounded to int endpoint for invalidating token possibility for enabling expiring token for a specific token when it’s disabled for all in config file misc pytest for location and energy API fix the url for the enrgy API (it started with connectivity url not wi the energy api) cleanup import created new files to make the code more readable dashboard added location values added capabilities and values auto token generation and expiration in dashboard
Devlog A very long time no see. I have made a lot of progress on adding an SQL database. Testing on MySQL The backup server provider gives me access to one. SQL changes A lot of BIG changes. The reason why I haven’t posted for so long is that I didn’t want to post about something that doesn’t work. Created new classes to intercept data changes, both in case of direct dict changes and when going through the SQL model library. (I didn’t change much in the code, just imported it under the same name as the old database.) And it works! At the start, only reading data worked, but now it can send data back to the database. Added a regen function to make sure built-in API keys are always the same after a restart. Fixed the car creation function (but when I started storing the additional data in SQL, it broke AGAIN). Added configuration attributes. At first, just the database type, but then all the information needed to connect to a MySQL database. Fixed the scenario readconfig (wasn’t it updated in the past?). A really small number of things I added? Yes, but the amount of debugging and changing built-in functions in classes took me so long. (Could be because of school and not having time to do everything in one sitting.) But I learned how to make a dummy dict with a class, as I called it in the commit: proxy . Problems The SQL database can’t create new cars. Need to check all internal endpoints to make sure they work. Still haven’t merged the DEV branch (TODO). All information is stored in one column as JSON. It works, buuuut I don’t like it that way. Need to clean up the proxy classes. updating docs What failed this time? The second photo attached shows it. Have a look before reading more. _contains__ If you see it, congrats! But if you have a screen full of code, it’s harder to spot. It should be __contains__ , and I spent, I think, two days debugging why all in statements just didn’t work. I was so happy when I finally found it! XAMPP and Apple Silicon The manager app doesn’t open after a restart, so after consulting Google and AI, I found a command that I use: sudo /Applications/XAMPP/xamppfiles/xampp start xampp If someone is asking why I didn’t use the server provided one it just wasn’t practical for now.
Ships:
A Milestone Welcome everybody to the first ship of this project. What is this project? This project simulates how the Volvo API works. Why was this project created in the first place? So it’s easier to create and test your app that uses the Volvo API without using ready-made libraries. I can’t find the features you mentioned in the devlog? Check the scope branch or the upcoming dev branch. What I’m proud of: I learned a lot of things (this is my first big public project): Tailwind Python stuff (I started with C++) Writing documentation (Markdown) I also learned the basics of OAuth2 and how APIs work. Making a project with all the features needed to get started. I created an additional document for you, Stardancers: Stardance PATH What is still on the TODO list? More APIs Scopes docker image See the roadmap . What to see? error logger recreated endpoints dashboard web socket realtime changes internal endpints interactivity of the car...
|
1793004616.137251
|
1793091016.137251
|
|
951
|
Website by @Kanata | Stardance
|
Kanata
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-01T11:45:45Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created a simple website to learn HTML. It includes headings, links, lists, tables, and a form.The most challenging part was publishing the website with GitHub Pages. I had to learn how GitHub Pages works and how to configure the project correctly.I am proud that I built and published my first website by myself.This project is a beginner HTML practice project. It focuses on learning the basics rather than creating a professional website.", "repo": "https://github.com/k4n474/Website", "demo": "https://k4n474.github.io/Website/"}]...
|
[{"post_id": 230, "ts": "2026- [{"post_id": 230, "ts": "2026-06-01T10:58:25Z", "hours": 0.8114, "text": "I wrote code using a wider variety of tags."}, {"post_id": 204, "ts": "2026-06-01T08:05:04Z", "hours": 0.3136, "text": "I’m creating a simple webpage to learn HTML"}]...
|
Title: Website by @Kanata | Stardance
Devlogs:
I’ Title: Website by @Kanata | Stardance
Devlogs:
I’m creating a simple webpage to learn HTML
I wrote code using a wider variety of tags.
Ships:
I created a simple website to learn HTML. It includes headings, links, lists, tables, and a form.The most challenging part was publishing the website with GitHub Pages. I had to learn how GitHub Pages works and how to configure the project correctly.I am proud that I built and published my first website by myself.This project is a beginner HTML practice project. It focuses on learning the basics rather than creating a professional website....
|
1792990326.8442092
|
1793076726.8442092
|
|
959
|
Ebeep by @Avizi | Stardance
|
Avizi
|
1
|
85.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-23T10:29:40Z", "hours": 85.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "my project is a “beeper” with an eink display, it features three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up. ill be building two of them and gifting one to my GF on her birthday later this month!", "repo": "https://github.com/Av1zi/Ebeep", "demo": ""}]...
|
[{"post_id": 33374, "ts": "202 [{"post_id": 33374, "ts": "2026-07-23T07:45:06Z", "hours": 11.1325, "text": "Devlog #18 - The Final One my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together. I built two of them and gifted one to my GF for her birthday! so this is it, the last devlog for Ebeep. i finished the Blender showcase animation, check it out ⬇️⬇️⬇️ took way longer than expected since I’ve never really used blender for anything like this before, but I’m happy with how it turned out. (or kicad) as for the PCB, the design is fully done, routed, and ready to export to gerbers, but I decided not to actually order it right now. the perfboard build already works and does the job, and the PCB was mostly a “because I can” side project once I started documenting everything (devlog #16 lol). might revisit it in the future if I ever want to build a v2 or make more of these, but for now the current build is what’s shipping as “done.” looking back this project went through basically everything a project can go through: missed deadlines, a broken 3d printer, a bug that silently deleted my girlfriend’s messages for a week without me noticing, failed prints, finals eating my motivation and somehow it still came out the other side working, on both devices, doing everything I wanted it to do. if I had to do it again I’d probably: start the PCB earlier instead of perfboard + rework set up proper MQTT retained-message handling from day one instead of patching it in later. budget way more time for the case than I did CAD alone ate multiple redesigns and i still needed help from my friend to finish it i really need to work on my CAD skills but honestly, for a project that started as “let’s port some code to an esp32 I’m scared to solder,” I’m really proud of where it landed. whats next? id really love to keep working and making it the best i can (the 3d render is really rough as i had to finish it TODAY and some of the code is still messy), but realistically, nothing planned this is the ‘finish’ line. maybe a better PCB with a good showcase with cleaner code and a case that actually houses the PCB someday, maybe not. either way, thanks to everyone who followed along since the start. TL;DR finished the showcase render, PCB design is complete but staying unbuilt for now, and the project is officially ‘done’. thanks for reading 🎉"}, {"post_id": 32922, "ts": "2026-07-22T12:11:04Z", "hours": 8.3689, "text": "Devlog #17 pcb is done and showcase animation my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together. I’ll be building two of them and gifting one to my GF for her birthday! i finished the pcb and refined it! yesterday ish i had like an idea to make an animation in blender to showcase the device for the final devlog so i started working on it nect devlog will be the final one! (i think)"}, {"post_id": 30954, "ts": "2026-07-18T23:27:55Z", "hours": 10.3483, "text": "Devlog #16 documenting (and accidental PCB?) my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together. I’ll be building two of them and gifting one to my GF for her birthday! so i finally sat down to start documenting my work, but while doing so… i might have gone a little over the top and started designing a custom PCB for the project ;-;it’s pretty fun ngl, i’m really enjoying working on it! ohh also, i fixed a MAJOR bug in my code. i have absolutely no clue how i didn’t notice it earlier, but when i was trying to fix bugs last week, i accidentally introduced a new one that deleted messages the exact second they arrived. so yeah… i didn’t get any messages from my girlfriend for a whole week lol. oops. and if anyone here knows how to make pcbs please help me i have no clue what im doing thanks!"}, {"post_id": 29566, "ts": "2026-07-16T16:26:24Z", "hours": 1.05, "text": "Devlog #15 Small changes my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together.I’ll be building two of them and gifting one to my GF for her birthday! i a couple of issues with blackjack: * can now display around 11 cards(more than that is extremly unlikely so i didnt bother) * dealer no longer draws cards if u bust * now the split looks much much cleaner now even if one device is disconnected the msg will be stored and displayed when the device connects to the wifi some other stuff i forgot"}, {"post_id": 28397, "ts": "2026-07-14T17:07:08Z", "hours": 3.7961, "text": "Devlog #14 - The project is compleated! (if there arent ane new bugs) my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together. I’ll be building two of them and gifting one to my GF for her birthday! what did i do? i added connect 4 & blackJack both of em should work now i fixed a problem with the wifi connection made new art for the connect 4 & blackjack to replace the place holders. i have already gifted the other device and shes probably reading this devlog so hello and sorry it took long all i have to do is finish up the docs and the github page and then were ready to ship"}, {"post_id": 25346, "ts": "2026-07-09T16:06:15Z", "hours": 6.6869, "text": "Devlog #13 The project is completed (mostly) my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together.I’ll be building two of them and gifting one to my GF for her birthday! Just finished building my second ebeep device! The good news are it came out SO much better than the first one, It might not be super obvious from the photos but trust me the difference IRL is HUGE. The Type-C connection actually fits properly this time! and the two devices are communicating great, and I even managed to run multiple rounds of Tic-Tac-Toe. . As for the bad news, It seems like every other day I encounter a new issue usually related to Wi-Fi or server connectivity. hopefully my janky code i wrote so far successfully patched them out. I’m trying to squash as many as possible before I gift one to my girlfriend later this week. If I have time, I’ll try to finish up Connect 4 as well and i think ill give up on the poker game i dont want to delay it any longer lol. . Also, for those who were wondering, we landed in 30th place (out of 36?) at the FRC competition"}, {"post_id": 19344, "ts": "2026-06-30T16:56:56Z", "hours": 4.9703, "text": "Devlog #12 THE FIRST ONE IS DONE my project in short to those who havent seen it yet: My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together. I’ll be building two of them and gifting one to my GF for her birthday! I soldered everything up, crammed it into the box, and it works now. hooray! The only issue I had was that the negative terminal on the bottom of the esp32 disconnected when I tried to fit it into the box. I’m now in the process of testing and ironing out bugs. So far i found two the battery readout is weird but it works, and the battery runs out way too quickly, so I’m trying to fix those issues. unfortunately, I don’t know when I’ll be able to finish the second one since the 3D printer broke down (I literally bought it last week ) It took me a while to finish this one since I had an FRC competition to attend and couldnt finish everything in 1 day."}, {"post_id": 16357, "ts": "2026-06-26T16:42:53Z", "hours": 6.3789, "text": "Devlog #11 we are 80% there! my project in short my project is a “beeper” with an eink display, it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up.ill be building two of them and gifting one to my GF on her birthday! what did i do? i finished the CAD (i hope), and started soldering everything together with the help of my dad(hes the best) the electronic plate is coming together nicly its not done yet but its mostly done!! and i will probably finish the first beeper TODAY!"}, {"post_id": 14554, "ts": "2026-06-23T18:34:15Z", "hours": 2.7692, "text": "Devlog #10 i missed the deadline :( (failed print after failed print) my project in short my project is a “beeper” with an eink display, it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up. ill be building two of them and gifting one to my GF on her birthday! Her birthday was yesterday, i missed the deadline and my motivation is at an all time low. The code is done (i hope) but the 3d case is so horrible. its way too big and wastes so much material on useless spots and way too little on places in places that need it. the whole thing needs a redesign and I’m working on that but unfortunately ill have to postpone it by at least two days since i have 1 more final exam i need to take. and i just feel awful that i have to give her the birthday present with a week+ delay TL;DR i missed the dead line and I’m really down, the case needs a major redesign and im yet to even start soldering the code probably is done"}, {"post_id": 13239, "ts": "2026-06-21T17:54:28Z", "hours": 2.5981, "text": "Devlog #9 (1 day until GF birthday) TL;DR: finished tic tac toe, added icons to show if the bepper lost internet connection and updated the 3d model my project in short my project is a “beeper” with an eink display, it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up. ill be building two of them and gifting one to my GF on her birthday later this month! what did i do? online tic tac toe works now icons to show if the connection is lost and automatically reconnect updated 3d model to actually use M4 screws how do they talk to eachother? i made a comic to demonstrate it cuz ik yall aint reading all that but if u want to read it in more detail: the first player sends to the other a message “TTT_JOIN” in /games then start listening to /games/TTT (channel where all the game communication will happen) the second player will receive that message and will get a notification that someone is waiting to play tic tac toe then if he wants he will join the the game and send a msg on /games/TTT that he joined both screens will update and show the tic tac toe board. each player will take his turn and send a message in /games/TTT with a row and a column of the place he chose to play and the screen will update accordingly. when the game ends they could request a rematch and will start this whole process again"}, {"post_id": 12102, "ts": "2026-06-19T19:09:33Z", "hours": 8.5831, "text": "Devlog 8 (3 DAYS LEFT UNTILL GF BIRTHDAY) CAD IS DONE what did i do? finished the cad hopefully will start printing on sunday when my new 3d printer arrives (and hopefully wont have to change anything bc i have 3 DAYS LEFT ) I REWORKED THE ENTIRE MQTT CODE (made the beeper talk to each other differently in order to make games possible) almost done with the online tic tac toe (the more indepth devlog will be the next one) fixed like 4 bugs and another 2 popped up kill me whats next? finish EVERYTHING before my GF birthday on Tuesday (sorry for this short devlog dont have much to say about the cad model the one on the code will come tmr hopefully)"}, {"post_id": 7523, "ts": "2026-06-12T15:45:53Z", "hours": 4.0075, "text": "Devlog #7 Its a big one what did i do? added a way to set the wifi password from your phone made the beeper actually able to talk and send messages fixed a lot of bugs that popped up after the switch to esp32 added a way to scroll faster for convince me and my friend started designing a case we will 3d print whats next? finish design a 3d printed case maybe finish one of the games side notes: i added a short video with a demo of everything working together would love to hear your thoughts about it background music: In the pool by kensuke ushio (forgor who made the piano cover im using) update on me: physics finals is in 3 days and I’m so cooked might not be able to design the case for a while"}, {"post_id": 6183, "ts": "2026-06-10T11:59:50Z", "hours": 2.0744, "text": "Devlog #6 my project is a “beeper” with an eink display, it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up. ill be building two of them and gifting one to my GF on her birthday later this month! what did i do? the esp32 arrived yesterday its much much smaller than i expected and i have no clue how im going to solder it later ;-; anyways so i worked on porting my current code from arduino to esp32, its seems to be working as intended. now i just need to add all the missing features like the mqtt protocol and wifi portal. whats next? add the wifi portal (so i wont have to hardcode the wifi credentials in the code) make the esp32 work with the mqtt protocol design a 3d printed case finish the games (not really a priority right now) update on me: more finals soon yay :/"}, {"post_id": 4877, "ts": "2026-06-08T13:14:45Z", "hours": 1.6892, "text": "Devlog #5! to those haven’t seen my project yet in short: my project is a “beeper” with an eink display ill be building two of them and gifting one to my GF on her birthday later this month! it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up what did i do? i was bored since i cant really work on the project and have to wait for my esp32 to arrive >:( so i went on a side quest and added the game select menu, nothing major i also need to design the icons since they are just place holders from google whats next? wait for esp32 to arrive >:( actually make blackjack and the other games ask my friend to 3d help me 3d model the case update on me: sorry for the long wait i had a bunch of shit 2 do and war with iran ;-;"}, {"post_id": 3074, "ts": "2026-06-05T23:33:08Z", "hours": 2.1186, "text": "Devlog #4! . to those haven’t seen my project yet in short: my project is a “beeper” with an eink display ill be building two of them and gifting one to my GF on her birthday later this month! it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up what did i do? . i tired connecting my current setup to the MQTT broker and make it actually able to talk to other devices BUT IT DIDNT WORK i spent hours debugging it, only to come to the conclusion that i CANT do it with my current setup and i NEED the esp32 to continue coding or at least it will be much easier every day that passes i hate AliExpress even more it should have arrived 4 days ago ;-; the only useful i did is figure out how .gitignore work so now i dont need a hotspot lol whats next? wait for esp32 to arrive >:( update on me: . nothing rely new from yesterday . side note i just noticed ive never actually shown you how the UI i made previously works. so i attached a short walk through"}, {"post_id": 2424, "ts": "2026-06-04T22:02:29Z", "hours": 1.2675, "text": "Devlog #3 . to those haven’t seen my project yet in short: . my project is a “beeper” with an eink display (like the name suggests). ill be building two of them and gifting one to my GF on her birthday later this month! it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up what did i do today? . today i added Wifi! since i still dont have my esp32 (damm you AliExpress and your slow shipping), i wont be able to use the cool web UI library i wanted to use… so i changed my phones hotspot to the most boring name & password i could think of and hard coded those credentials in (i dont know how to hide sensitive info from GitHub and didn’t want to add my real wifi lol) edit: i also added the little wifi ui thingy you see in the picture whats next? i will research more about the MQTT protocol my two devices will use to communicate add end to end encryption (both devices will have a hard coded secret “password” they will use to encrypt and decrypt the messages) if esp arrives soon (WHICH IT SHOULD) ill connect it to the bread board and change the code accordingly and much more just later on id love to hear what your thoughts in the comments :) update on me: today was my computer science finals and it was 5 hours. i was pretty burned out after that so didn’t do that much today either :/ the next couple days are packed with personal stuff and more final exams so u might not hear from me soon… ill try to work on this project at least an hour every day so if u do it will be small changes unfortunately"}, {"post_id": 1723, "ts": "2026-06-03T21:50:03Z", "hours": 1.3117, "text": "Devlog #2 My project Ebeep is starting to take a bit more shape! . my project is a “beeper” with an eink display (like the name suggests). ill be building two of them and gifting one to my GF on her birthday later this month! . i rewrote almost the ENTIRE UI since last time the code i wrote was pretty bad and it had terrible UI. hopefully tomorrow i could work on actually connecting it to the internet and work on basic end to end encryption (maybe?). also i really hope ill get my esp32s soon so i could actually test my code on that instead of my arduino and design my 3d case for it. . today and yesterday werent very productive since my CS finals are tomorrow! so wish me luck!"}, {"post_id": 1088, "ts": "2026-06-02T22:16:57Z", "hours": 5.4681, "text": "day 1 of my ebeep project, i managed to make the eInk display work properly after HOURS of trouble shooting code. (apparently if it says 3.3V only it means dont connect a 5V Arduino to it oops) i managed to make the sick UI hopefully the esp32 and the battery will come soon so i can start designing the case for it"}]...
|
Title: Ebeep by @Avizi | Stardance
Devlogs:
day 1 Title: Ebeep by @Avizi | Stardance
Devlogs:
day 1 of my ebeep project, i managed to make the eInk display work properly after HOURS of trouble shooting code. (apparently if it says 3.3V only it means dont connect a 5V Arduino to it oops) i managed to make the sick UI hopefully the esp32 and the battery will come soon so i can start designing the case for it
Devlog #2 My project Ebeep is starting to take a bit more shape! . my project is a “beeper” with an eink display (like the name suggests). ill be building two of them and gifting one to my GF on her birthday later this month! . i rewrote almost the ENTIRE UI since last time the code i wrote was pretty bad and it had terrible UI. hopefully tomorrow i could work on actually connecting it to the internet and work on basic end to end encryption (maybe?). also i really hope ill get my esp32s soon so i could actually test my code on that instead of my arduino and design my 3d case for it. . today and yesterday werent very productive since my CS finals are tomorrow! so wish me luck!
Devlog #3 . to those haven’t seen my project yet in short: . my project is a “beeper” with an eink display (like the name suggests). ill be building two of them and gifting one to my GF on her birthday later this month! it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up what did i do today? . today i added Wifi! since i still dont have my esp32 (damm you AliExpress and your slow shipping), i wont be able to use the cool web UI library i wanted to use… so i changed my phones hotspot to the most boring name & password i could think of and hard coded those credentials in (i dont know how to hide sensitive info from GitHub and didn’t want to add my real wifi lol) edit: i also added the little wifi ui thingy you see in the picture whats next? i will research more about the MQTT protocol my two devices will use to communicate add end to end encryption (both devices will have a hard coded secret “password” they will use to encrypt and decrypt the messages) if esp arrives soon (WHICH IT SHOULD) ill connect it to the bread board and change the code accordingly and much more just later on id love to hear what your thoughts in the comments :) update on me: today was my computer science finals and it was 5 hours. i was pretty burned out after that so didn’t do that much today either :/ the next couple days are packed with personal stuff and more final exams so u might not hear from me soon… ill try to work on this project at least an hour every day so if u do it will be small changes unfortunately
Devlog #4! . to those haven’t seen my project yet in short: my project is a “beeper” with an eink display ill be building two of them and gifting one to my GF on her birthday later this month! it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up what did i do? . i tired connecting my current setup to the MQTT broker and make it actually able to talk to other devices BUT IT DIDNT WORK i spent hours debugging it, only to come to the conclusion that i CANT do it with my current setup and i NEED the esp32 to continue coding or at least it will be much easier every day that passes i hate AliExpress even more it should have arrived 4 days ago ;-; the only useful i did is figure out how .gitignore work so now i dont need a hotspot lol whats next? wait for esp32 to arrive >:( update on me: . nothing rely new from yesterday . side note i just noticed ive never actually shown you how the UI i made previously works. so i attached a short walk through
Devlog #5! to those haven’t seen my project yet in short: my project is a “beeper” with an eink display ill be building two of them and gifting one to my GF on her birthday later this month! it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up what did i do? i was bored since i cant really work on the project and have to wait for my esp32 to arrive >:( so i went on a side quest and added the game select menu, nothing major i also need to design the icons since they are just place holders from google whats next? wait for esp32 to arrive >:( actually make blackjack and the other games ask my friend to 3d help me 3d model the case update on me: sorry for the long wait i had a bunch of shit 2 do and war with iran ;-;
Devlog #6 my project is a “beeper” with an eink display, it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up. ill be building two of them and gifting one to my GF on her birthday later this month! what did i do? the esp32 arrived yesterday its much much smaller than i expected and i have no clue how im going to solder it later ;-; anyways so i worked on porting my current code from arduino to esp32, its seems to be working as intended. now i just need to add all the missing features like the mqtt protocol and wifi portal. whats next? add the wifi portal (so i wont have to hardcode the wifi credentials in the code) make the esp32 work with the mqtt protocol design a 3d printed case finish the games (not really a priority right now) update on me: more finals soon yay :/
Devlog #7 Its a big one what did i do? added a way to set the wifi password from your phone made the beeper actually able to talk and send messages fixed a lot of bugs that popped up after the switch to esp32 added a way to scroll faster for convince me and my friend started designing a case we will 3d print whats next? finish design a 3d printed case maybe finish one of the games side notes: i added a short video with a demo of everything working together would love to hear your thoughts about it background music: In the pool by kensuke ushio (forgor who made the piano cover im using) update on me: physics finals is in 3 days and I’m so cooked might not be able to design the case for a while
Devlog 8 (3 DAYS LEFT UNTILL GF BIRTHDAY) CAD IS DONE what did i do? finished the cad hopefully will start printing on sunday when my new 3d printer arrives (and hopefully wont have to change anything bc i have 3 DAYS LEFT ) I REWORKED THE ENTIRE MQTT CODE (made the beeper talk to each other differently in order to make games possible) almost done with the online tic tac toe (the more indepth devlog will be the next one) fixed like 4 bugs and another 2 popped up kill me whats next? finish EVERYTHING before my GF birthday on Tuesday (sorry for this short devlog dont have much to say about the cad model the one on the code will come tmr hopefully)
Devlog #9 (1 day until GF birthday) TL;DR: finished tic tac toe, added icons to show if the bepper lost internet connection and updated the 3d model my project in short my project is a “beeper” with an eink display, it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up. ill be building two of them and gifting one to my GF on her birthday later this month! what did i do? online tic tac toe works now icons to show if the connection is lost and automatically reconnect updated 3d model to actually use M4 screws how do they talk to eachother? i made a comic to demonstrate it cuz ik yall aint reading all that but if u want to read it in more detail: the first player sends to the other a message “TTT_JOIN” in /games then start listening to /games/TTT (channel where all the game communication will happen) the second player will receive that message and will get a notification that someone is waiting to play tic tac toe then if he wants he will join the the game and send a msg on /games/TTT that he joined both screens will update and show the tic tac toe board. each player will take his turn and send a message in /games/TTT with a row and a column of the place he chose to play and the screen will update accordingly. when the game ends they could request a rematch and will start this whole process again
Devlog #10 i missed the deadline :( (failed print after failed print) my project in short my project is a “beeper” with an eink display, it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up. ill be building two of them and gifting one to my GF on her birthday! Her birthday was yesterday, i missed the deadline and my motivation is at an all time low. The code is done (i hope) but the 3d case is so horrible. its way too big and wastes so much material on useless spots and way too little on places in places that need it. the whole thing needs a redesign and I’m working on that but unfortunately ill have to postpone it by at least two days since i have 1 more final exam i need to take. and i just feel awful that i have to give her the birthday present with a week+ delay TL;DR i missed the dead line and I’m really down, the case needs a major redesign and im yet to even start soldering the code probably is done
Devlog #11 we are 80% there! my project in short my project is a “beeper” with an eink display, it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up.ill be building two of them and gifting one to my GF on her birthday! what did i do? i finished the CAD (i hope), and started soldering everything together with the help of my dad(hes the best) the electronic plate is coming together nicly its not done yet but its mostly done!! and i will probably finish the first beeper TODAY!
Devlog #12 THE FIRST ONE IS DONE my project in short to those who havent seen it yet: My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together. I’ll be building two of them and gifting one to my GF for her birthday! I soldered everything up, crammed it into the box, and it works now. hooray! The only issue I had was that the negative terminal on the bottom of the esp32 disconnected when I tried to fit it into the box. I’m now in the process of testing and ironing out bugs. So far i found two the battery readout is weird but it works, and the battery runs out way too quickly, so I’m trying to fix those issues. unfortunately, I don’t know when I’ll be able to finish the second one since the 3D printer broke down (I literally bought it last week ) It took me a while to finish this one since I had an FRC competition to attend and couldnt finish everything in 1 day.
Devlog #13 The project is completed (mostly) my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together.I’ll be building two of them and gifting one to my GF for her birthday! Just finished building my second ebeep device! The good news are it came out SO much better than the first one, It might not be super obvious from the photos but trust me the difference IRL is HUGE. The Type-C connection actually fits properly this time! and the two devices are communicating great, and I even managed to run multiple rounds of Tic-Tac-Toe. . As for the bad news, It seems like every other day I encounter a new issue usually related to Wi-Fi or server connectivity. hopefully my janky code i wrote so far successfully patched them out. I’m trying to squash as many as possible before I gift one to my girlfriend later this week. If I have time, I’ll try to finish up Connect 4 as well and i think ill give up on the poker game i dont want to delay it any longer lol. . Also, for those who were wondering, we landed in 30th place (out of 36?) at the FRC competition
Devlog #14 - The project is compleated! (if there arent ane new bugs) my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together. I’ll be building two of them and gifting one to my GF for her birthday! what did i do? i added connect 4 & blackJack both of em should work now i fixed a problem with the wifi connection made new art for the connect 4 & blackjack to replace the place holders. i have already gifted the other device and shes probably reading this devlog so hello and sorry it took long all i have to do is finish up the docs and the github page and then were ready to ship
Devlog #15 Small changes my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together.I’ll be building two of them and gifting one to my GF for her birthday! i a couple of issues with blackjack: * can now display around 11 cards(more than that is extremly unlikely so i didnt bother) * dealer no longer draws cards if u bust * now the split looks much much cleaner now even if one device is disconnected the msg will be stored and displayed when the device connects to the wifi some other stuff i forgot
Devlog #16 documenting (and accidental PCB?) my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together. I’ll be building two of them and gifting one to my GF for her birthday! so i finally sat down to start documenting my work, but while doing so… i might have gone a little over the top and started designing a custom PCB for the project ;-;it’s pretty fun ngl, i’m really enjoying working on it! ohh also, i fixed a MAJOR bug in my code. i have absolutely no clue how i didn’t notice it earlier, but when i was trying to fix bugs last week, i accidentally introduced a new one that deleted messages the exact second they arrived. so yeah… i didn’t get any messages from my girlfriend for a whole week lol. oops. and if anyone here knows how to make pcbs please help me i have no clue what im doing thanks!
Devlog #17 pcb is done and showcase animation my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together. I’ll be building two of them and gifting one to my GF for her birthday! i finished the pcb and refined it! yesterday ish i had like an idea to make an animation in blender to showcase the device for the final devlog so i started working on it nect devlog will be the final one! (i think)
Devlog #18 - The Final One my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together. I built two of them and gifted one to my GF for her birthday! so this is it, the last devlog for Ebeep. i finished the Blender showcase animation, check it out ⬇️⬇️⬇️ took way longer than expected since I’ve never really used blender for anything like this before, but I’m happy with how it turned out. (or kicad) as for the PCB, the design is fully done, routed, and ready to export to gerbers, but I decided not to actually order it right now. the perfboard build already works and does the job, and the PCB was mostly a “because I can” side project once I started documenting everything (devlog #16 lol). might revisit it in the future if I ever want to build a v2 or make more of these, but for now the current build is what’s shipping as “done.” looking back this project went through basically everything a project can go through: missed deadlines, a broken 3d printer, a bug that silently deleted my girlfriend’s messages for a week without me noticing, failed prints, finals eating my motivation and somehow it still came out the other side working, on both devices, doing everything I wanted it to do. if I had to do it again I’d probably: start the PCB earlier instead of perfboard + rework set up proper MQTT retained-message handling from day one instead of patching it in later. budget way more time for the case than I did CAD alone ate multiple redesigns and i still needed help from my friend to finish it i really need to work on my CAD skills but honestly, for a project that started as “let’s port some code to an esp32 I’m scared to solder,” I’m really proud of where it landed. whats next? id really love to keep working and making it the best i can (the 3d render is really rough as i had to finish it TODAY and some of the code is still messy), but realistically, nothing planned this is the ‘finish’ line. maybe a better PCB with a good showcase with cleaner code and a case that actually houses the PCB someday, maybe not. either way, thanks to everyone who followed along since the start. TL;DR finished the showcase render, PCB design is complete but staying unbuilt for now, and the project is officially ‘done’. thanks for reading 🎉
Ships:
my project is a “beeper” with an eink display, it features three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up. ill be building two of them and gifting one to my GF on her birthday later this month!...
|
1792997652.3780808
|
1793084052.3780808
|
|
963
|
CLADES by @onyxtheone | Stardance
|
onyxtheone
|
1
|
14.46
|
262
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-02T21:06:45Z", "hours": 14.0, "multiplier": 18.66, "payout": 262, "blessing": "neutral", "text": "I made a disease epidemiology simulator, and then extended it with age stratification and multiple strain support. A major challenge was figuring out the math behind it and pulling it together at each new component. I am proud to say that, as far as I know, the data is actually worthwhile and should track with reality, but I am not an epidemiologist. I made a simple site for people to check it out, and if you want to try it properly you can build from source (P.S. Its just 2 commands:))) )", "repo": "https://github.com/onyx-the-one/CLADES", "demo": "https://onyx-the-one.github.io/CLADES/clades.html"}]...
|
[{"post_id": 4887, "ts": "2026 [{"post_id": 4887, "ts": "2026-06-08T13:33:09Z", "hours": 0.4636, "text": "As advised by @Amu I made the README nicer, font bigger, and put compiled packages on github via actions."}, {"post_id": 1047, "ts": "2026-06-02T21:00:34Z", "hours": 2.1097, "text": "Fixed some text alignment, and the multistrain component giving completely wrong results. Everything actually (seemingly) works pretty well."}, {"post_id": 905, "ts": "2026-06-02T17:12:43Z", "hours": 4.3306, "text": "Worked on support for multistrain, and while it is somewhat implemented it gonna stay off main branch, theres a lot left to do with it."}, {"post_id": 515, "ts": "2026-06-02T00:07:59Z", "hours": 4.4047, "text": "I implemented age stratification as a separate mode, and will work on integrating them more closely. Very minor text alignment issues left but it is time to sleep."}, {"post_id": 309, "ts": "2026-06-01T15:57:13Z", "hours": 3.1822, "text": "I wrote the core architecture of the simulator, with almost no larger features yet but it should be functional. I have also ran into a build error and fixed it and now built successfully (with 1 error)."}]...
|
Title: CLADES by @onyxtheone | Stardance
Devlogs: Title: CLADES by @onyxtheone | Stardance
Devlogs:
I wrote the core architecture of the simulator, with almost no larger features yet but it should be functional. I have also ran into a build error and fixed it and now built successfully (with 1 error).
I implemented age stratification as a separate mode, and will work on integrating them more closely. Very minor text alignment issues left but it is time to sleep.
Worked on support for multistrain, and while it is somewhat implemented it gonna stay off main branch, theres a lot left to do with it.
Fixed some text alignment, and the multistrain component giving completely wrong results. Everything actually (seemingly) works pretty well.
As advised by @Amu I made the README nicer, font bigger, and put compiled packages on github via actions.
Ships:
I made a disease epidemiology simulator, and then extended it with age stratification and multiple strain support. A major challenge was figuring out the math behind it and pulling it together at each new component. I am proud to say that, as far as I know, the data is actually worthwhile and should track with reality, but I am not an epidemiologist. I made a simple site for people to check it out, and if you want to try it properly you can build from source (P.S. Its just 2 commands:))) )...
|
1792875203.5267386
|
1793739203.5267386
|
|
987
|
Oppurtunity OS by @dseshukumar2008 | Stardance
|
dseshukumar2008
|
1
|
219.84
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T15:28:16Z", "hours": 136.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built and refined OppurtunityOS , an AI powered career development platform designed to help students understand their skills, career paths, and can be more confident about the career . The platform includes the features such as Career Roadmaps, Project recommendations, AI Career coach, Resume Builder and Analyzer , Github Analyzer , Skill Gap Analysis , Career Explorer, and Analytics. One of the main challenges that I faced was handling API calls . I refined the interface , removed unnecessary features , and ensured final platform is deployed. I am proud of bringing the different career-development tools together into one working platform. To use the project , use the try project button to explore the deployed application , and see the source code to view the complete implementation and README.", "repo": "https://github.com/dseshukumar2008-hub/opportunityOS", "demo": "https://opportunity-os-rust.vercel.app/"}]...
|
[{"post_id": 69727, "ts": "202 [{"post_id": 69727, "ts": "2026-09-17T17:35:11Z", "hours": 9.6806, "text": "While working on OpportunityOS, I realized as the project grew , the CSS had become more complex , With repeated tailwind classes , different styling patterns, larger border radiuses. I decided to simplify the existing styling component by component, focusing on cleaner layouts, consistent colors, simpler borders and shadows, and more maintainable CSS while keeping the existing UI structure and functionality unchanged. I made changes and removed unnecessary repeated code."}, {"post_id": 64952, "ts": "2026-09-09T18:06:24Z", "hours": 11.1286, "text": "Fixed the local AI connection issue by routing frontend API requests through the vite proxy to the deployed backend . Debugged several issues including: -> offline fallback states -> Incorrect AI response handling -> stuck analysis / loading states scrolling and time stamp issues"}, {"post_id": 63536, "ts": "2026-09-07T13:33:53Z", "hours": 10.7625, "text": "Working on the project engine . The main page is taking step , but OppurtunityOS Copilot side panel still needs fixing - messages are not getting a proper response . Fixing the integration and working to get the proper response"}, {"post_id": 62056, "ts": "2026-09-05T09:06:42Z", "hours": 10.3364, "text": "Added the Career quiz to the Skill Arcade - a timed 10 question challenge designed to test challenge around coding and technology . Currently polishing the Skill arcade experience and getting oppurtunityOS closer to final submission."}, {"post_id": 60708, "ts": "2026-09-03T08:22:30Z", "hours": 11.0881, "text": "Build Tech Match for the Skill Arcade !!! A quick challenge where you match technologies with their correct categories and test your knowledge under time pressure."}, {"post_id": 58637, "ts": "2026-08-31T03:49:46Z", "hours": 10.4067, "text": "After spending time fixing the bugs - I decided to make finding bugs a game . So I added a new game to my skill arcade - bug hunter. The idea is simple , first the user have to select the programming language , and then have to select the toughness level , based on that there will be code snippets and options for that code snippets."}, {"post_id": 56740, "ts": "2026-08-28T16:48:24Z", "hours": 10.3039, "text": "After spending too much time fixing bugs , i got tired of debugging So instead of fixing another bug …. I tried to build something new . I implemented Skill Arcade in Opportunity OS - a small gamified section where users can test their skills through interactive games"}, {"post_id": 55130, "ts": "2026-08-26T16:22:11Z", "hours": 10.1347, "text": "I am continuing to manually refine and test the project feature by feature . I focused on debugging the Resume Analyzer , improving the error flow , and checking the complete analysis process . Still refining the project , making changes in the code , getting errors and fixing them ."}, {"post_id": 53102, "ts": "2026-08-23T15:17:00Z", "hours": 4.3336, "text": "finally OpportunityOS is deployed and it is live !!!"}, {"post_id": 52494, "ts": "2026-08-22T17:11:34Z", "hours": 9.8203, "text": "Recently I have been refining the career intelligence dashboard and improving the overall UI and user experience . I am also working on connecting the Analytics page with all the existing features , so users can get a complete view of their progress and activity across Opportunity OS . The focus is now on making the existing features feel more connected , polished , and product ready . Still Building … still improving !!!"}, {"post_id": 49693, "ts": "2026-08-18T16:16:04Z", "hours": 9.9183, "text": "Opportunity OS is getting closer to the finish line !!! The focus has now shifted from building features to make sure everything actually works as intended Currently working on : Fixing remaining bugs Testing complete user flows checking AI - powered features polishing UI Fixing navigation and state issues verifying existing features before release At this stage , it’s less about adding more and more features - and more about making the existing product reliable , consistent , and ready to ship . The final stretch is here ……."}, {"post_id": 38424, "ts": "2026-07-31T19:45:09Z", "hours": 10.7006, "text": "Opportunity OS has entered its final phase . Currently I am focusing on fixing the bugs , testing and ensuring every feature works before final release . The finish line is getting closer"}, {"post_id": 28867, "ts": "2026-07-15T12:57:36Z", "hours": 9.6481, "text": "continued refining the OpportunityOS onboarding experience by improving the overall UI, spacing, alignment, typography, and visual consistency across all onboarding steps. The focus wasn’t on adding new features but on creating a smoother, more intuitive, and premium experience that makes a great first impression. One step closer to a polished SaaS product!"}, {"post_id": 23475, "ts": "2026-07-06T14:05:30Z", "hours": 10.7319, "text": "I focused on improving the onboarding experience for OpportunityOS. I redesigned the Personal Details, Education, and Skills screens to create a cleaner and more premium user experience. I also introduced a new Career Interests step, allowing users to share their career goals so OpportunityOS can deliver more personalized opportunities and recommendations. The onboarding is becoming more intuitive, engaging, and aligned with the vision of building an AI-powered career platform for students"}, {"post_id": 15145, "ts": "2026-06-24T16:31:24Z", "hours": 8.7697, "text": "I focused on enhancing the Resume Builder in OpportunityOS. Improved the resume creation workflow, refined the live preview experience, strengthened Firebase data synchronization, and validated auto-save functionality for a smoother user experience. Also worked on ATS analysis improvements and overall stability to ensure users can build professional resumes seamlessly."}, {"post_id": 14465, "ts": "2026-06-23T16:26:54Z", "hours": 14.9064, "text": "Built the Career Explorer module in OpportunityOS to help users discover career paths based on their skills and profile. Added role-based career cards, skill gap insights, recommended projects, learning timelines, and roadmap generation for different career tracks. Currently focusing on improving matching accuracy, personalization, and overall user experience."}, {"post_id": 11928, "ts": "2026-06-19T13:37:55Z", "hours": 5.7172, "text": "Project Recommendation Engine in OpportunityOS. One problem I noticed is that many students know their dream role but have no idea what projects they should actually build. So I developed an AI-powered engine that analyzes a student’s target role and skill gaps, then recommends portfolio-worthy projects that can strengthen their profile and improve career readiness. Turning career goals into actionable projects, one recommendation at a time. user flow : user selects the specialization that he has choosen next user selects the target role Stay tuned for more updates !!!"}, {"post_id": 10024, "ts": "2026-06-16T16:13:40Z", "hours": 10.1594, "text": "After generating a personalized Career Roadmap, the next step is understanding what’s missing. The Skill Gap Analysis feature helps users compare their current skills with the skills required for their dream career. For example, if someone wants to become an AI Engineer, OpportunityOS can analyze their profile and show which skills they already have and which skills they still need to learn."}, {"post_id": 8533, "ts": "2026-06-14T06:06:49Z", "hours": 6.7772, "text": "Development Update: AI-Powered Career Roadmap in OpportunityOS One challenge students face is not knowing what to learn next after choosing a career path. Today, I worked on the Career Roadmap Module in OpportunityOS. How does it work : -> Lets users choose a target role (Software Engineer, AI Engineer, Full Stack Developer, etc.) -> Generates a structured learning roadmap Breaks the journey into clear phases and milestones -> Shows recommended learning resources for each phase -> Tracks roadmap progress over time Integrates with Skill Gap Analysis to recommend the next skills to learn Still improving the experience, but excited to see the roadmap becoming more interactive and personalized."}, {"post_id": 7300, "ts": "2026-06-12T05:14:32Z", "hours": 4.055, "text": "One of the biggest challenges students face is finding relevant opportunities scattered across multiple platforms. To solve this, I built the Opportunities Hub inside OpportunityOS , where students can discover internships, jobs, hackathons, scholarships, and competitions from a single platform."}, {"post_id": 4909, "ts": "2026-06-08T14:24:57Z", "hours": 3.5189, "text": "AI Resume Analysis is now live in OpportunityOS. One thing I’ve noticed is that many students apply for opportunities without knowing whether their resume is actually ATS-friendly or aligned with the role they’re targeting. To address this, I built an AI-powered Resume Analysis feature using Google Gemini, allowing users to upload a resume or analyze their OpportunityOS profile to receive ATS scoring, strengths and weaknesses analysis, missing skill detection, and personalized improvement suggestions. Stay tuned for more features !!!"}, {"post_id": 4726, "ts": "2026-06-08T05:04:03Z", "hours": 2.1067, "text": "Thinking a lot , I thought of building a OpportunityOS Copilot, a context-aware AI assistant built directly into the platform. Instead of acting like a generic chatbot, the Copilot is designed to understand a user’s profile, skills, career goals, resume insights, and opportunities data to provide personalized guidance. And Guess what the answer is insane !!!"}, {"post_id": 3598, "ts": "2026-06-06T16:25:34Z", "hours": 4.8642, "text": "Worked on OpportunityOS onboarding and authentication today. Implemented a first-time user onboarding flow that guides users through profile creation, skill selection, interests, and career goals setup after Google Sign In."}, {"post_id": 2781, "ts": "2026-06-05T16:10:58Z", "hours": 10.1692, "text": "Built and organized multiple settings components including Account Information, Password & Security, Notifications, Privacy, Integrations, Appearance, Data Storage, and Email Preferences. Next, I’ll connect these settings to live backend services and replace remaining placeholder functionality with real-time integrations. Stay tuned !!!!!"}, {"post_id": 1548, "ts": "2026-06-03T17:07:23Z", "hours": 4.4708, "text": "I worked on the login page of Oppurtunity OS . I added a branding section on the left side to highlight the main features of the platform . I also improved the login form layout and added google and github signin options to make the user interface look more good and efficient ."}, {"post_id": 935, "ts": "2026-06-02T18:06:06Z", "hours": 5.0983, "text": "I worked on the home page of Oppurtunity OS I improved the landing page design , navigation bar, overall layout . I also fixed alignment issues ."}, {"post_id": 228, "ts": "2026-06-01T10:39:24Z", "hours": 0.5008, "text": "I completed the foundation of OppurtunityOS, a platform designed to help students , discover the hackathons , internships , competitions and scholarships."}]...
|
Title: Oppurtunity OS by @dseshukumar2008 | Starda Title: Oppurtunity OS by @dseshukumar2008 | Stardance
Devlogs:
I completed the foundation of OppurtunityOS, a platform designed to help students , discover the hackathons , internships , competitions and scholarships.
I worked on the home page of Oppurtunity OS I improved the landing page design , navigation bar, overall layout . I also fixed alignment issues .
I worked on the login page of Oppurtunity OS . I added a branding section on the left side to highlight the main features of the platform . I also improved the login form layout and added google and github signin options to make the user interface look more good and efficient .
Built and organized multiple settings components including Account Information, Password & Security, Notifications, Privacy, Integrations, Appearance, Data Storage, and Email Preferences. Next, I’ll connect these settings to live backend services and replace remaining placeholder functionality with real-time integrations. Stay tuned !!!!!
Worked on OpportunityOS onboarding and authentication today. Implemented a first-time user onboarding flow that guides users through profile creation, skill selection, interests, and career goals setup after Google Sign In.
Thinking a lot , I thought of building a OpportunityOS Copilot, a context-aware AI assistant built directly into the platform. Instead of acting like a generic chatbot, the Copilot is designed to understand a user’s profile, skills, career goals, resume insights, and opportunities data to provide personalized guidance. And Guess what the answer is insane !!!
AI Resume Analysis is now live in OpportunityOS. One thing I’ve noticed is that many students apply for opportunities without knowing whether their resume is actually ATS-friendly or aligned with the role they’re targeting. To address this, I built an AI-powered Resume Analysis feature using Google Gemini, allowing users to upload a resume or analyze their OpportunityOS profile to receive ATS scoring, strengths and weaknesses analysis, missing skill detection, and personalized improvement suggestions. Stay tuned for more features !!!
One of the biggest challenges students face is finding relevant opportunities scattered across multiple platforms. To solve this, I built the Opportunities Hub inside OpportunityOS , where students can discover internships, jobs, hackathons, scholarships, and competitions from a single platform.
Development Update: AI-Powered Career Roadmap in OpportunityOS One challenge students face is not knowing what to learn next after choosing a career path. Today, I worked on the Career Roadmap Module in OpportunityOS. How does it work : -> Lets users choose a target role (Software Engineer, AI Engineer, Full Stack Developer, etc.) -> Generates a structured learning roadmap Breaks the journey into clear phases and milestones -> Shows recommended learning resources for each phase -> Tracks roadmap progress over time Integrates with Skill Gap Analysis to recommend the next skills to learn Still improving the experience, but excited to see the roadmap becoming more interactive and personalized.
After generating a personalized Career Roadmap, the next step is understanding what’s missing. The Skill Gap Analysis feature helps users compare their current skills with the skills required for their dream career. For example, if someone wants to become an AI Engineer, OpportunityOS can analyze their profile and show which skills they already have and which skills they still need to learn.
Project Recommendation Engine in OpportunityOS. One problem I noticed is that many students know their dream role but have no idea what projects they should actually build. So I developed an AI-powered engine that analyzes a student’s target role and skill gaps, then recommends portfolio-worthy projects that can strengthen their profile and improve career readiness. Turning career goals into actionable projects, one recommendation at a time. user flow : user selects the specialization that he has choosen next user selects the target role Stay tuned for more updates !!!
Built the Career Explorer module in OpportunityOS to help users discover career paths based on their skills and profile. Added role-based career cards, skill gap insights, recommended projects, learning timelines, and roadmap generation for different career tracks. Currently focusing on improving matching accuracy, personalization, and overall user experience.
I focused on enhancing the Resume Builder in OpportunityOS. Improved the resume creation workflow, refined the live preview experience, strengthened Firebase data synchronization, and validated auto-save functionality for a smoother user experience. Also worked on ATS analysis improvements and overall stability to ensure users can build professional resumes seamlessly.
I focused on improving the onboarding experience for OpportunityOS. I redesigned the Personal Details, Education, and Skills screens to create a cleaner and more premium user experience. I also introduced a new Career Interests step, allowing users to share their career goals so OpportunityOS can deliver more personalized opportunities and recommendations. The onboarding is becoming more intuitive, engaging, and aligned with the vision of building an AI-powered career platform for students
continued refining the OpportunityOS onboarding experience by improving the overall UI, spacing, alignment, typography, and visual consistency across all onboarding steps. The focus wasn’t on adding new features but on creating a smoother, more intuitive, and premium experience that makes a great first impression. One step closer to a polished SaaS product!
Opportunity OS has entered its final phase . Currently I am focusing on fixing the bugs , testing and ensuring every feature works before final release . The finish line is getting closer
Opportunity OS is getting closer to the finish line !!! The focus has now shifted from building features to make sure everything actually works as intended Currently working on : Fixing remaining bugs Testing complete user flows checking AI - powered features polishing UI Fixing navigation and state issues verifying existing features before release At this stage , it’s less about adding more and more features - and more about making the existing product reliable , consistent , and ready to ship . The final stretch is here …….
Recently I have been refining the career intelligence dashboard and improving the overall UI and user experience . I am also working on connecting the Analytics page with all the existing features , so users can get a complete view of their progress and activity across Opportunity OS . The focus is now on making the existing features feel more connected , polished , and product ready . Still Building … still improving !!!
finally OpportunityOS is deployed and it is live !!!
I am continuing to manually refine and test the project feature by feature . I focused on debugging the Resume Analyzer , improving the error flow , and checking the complete analysis process . Still refining the project , making changes in the code , getting errors and fixing them .
After spending too much time fixing bugs , i got tired of debugging So instead of fixing another bug …. I tried to build something new . I implemented Skill Arcade in Opportunity OS - a small gamified section where users can test their skills through interactive games
After spending time fixing the bugs - I decided to make finding bugs a game . So I added a new game to my skill arcade - bug hunter. The idea is simple , first the user have to select the programming language , and then have to select the toughness level , based on that there will be code snippets and options for that code snippets.
Build Tech Match for the Skill Arcade !!! A quick challenge where you match technologies with their correct categories and test your knowledge under time pressure.
Added the Career quiz to the Skill Arcade - a timed 10 question challenge designed to test challenge around coding and technology . Currently polishing the Skill arcade experience and getting oppurtunityOS closer to final submission.
Working on the project engine . The main page is taking step , but OppurtunityOS Copilot side panel still needs fixing - messages are not getting a proper response . Fixing the integration and working to get the proper response
Fixed the local AI connection issue by routing frontend API requests through the vite proxy to the deployed backend . Debugged several issues including: -> offline fallback states -> Incorrect AI response handling -> stuck analysis / loading states scrolling and time stamp issues
While working on OpportunityOS, I realized as the project grew , the CSS had become more complex , With repeated tailwind classes , different styling patterns, larger border radiuses. I decided to simplify the existing styling component by component, focusing on cleaner layouts, consistent colors, simpler borders and shadows, and more maintainable CSS while keeping the existing UI structure and functionality unchanged. I made changes and removed unnecessary repeated code.
Ships:
I built and refined OppurtunityOS , an AI powered career development platform designed to help students understand their skills, career paths, and can be more confident about the career . The platform includes the features such as Career Roadmaps, Project recommendations, AI Career coach, Resume Builder and Analyzer , Github Analyzer , Skill Gap Analysis , Career Explorer, and Analytics. One of the main challenges that I faced was handling API calls . I refined the interface , removed unnecessary features , and ensured final platform is deployed. I am proud of bringing the different career-development tools together into one working platform. To use the project , use the try project button to explore the deployed application , and see the source code to view the complete implementation and README....
|
1792975762.1648011
|
1793062162.1648011
|
|
990
|
PythOS by @milo0622 | Stardance
|
milo0622
|
1
|
42.45
|
270
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-30T14:06:19Z", "hours": 14.0, "multiplier": 19.35, "payout": 270, "blessing": "neutral", "text": "This is a Linux distro written almost completely in Python!! What’s special about it, is that the whole Linux distro is compiled and assembled by me!! Compared to previous versions in the previous repo, those all relied on other Linux distro shells. But this time, the shell and other programs in /bin is written in Python. How it works: Boots grub bootloader Boots Linux kernel Loads init script Loads init.py from sbin/ Tries to load pysh.py from bin/ -> If fails or user exits pyshell, it falls back to init.py as a logon menu (written with ncurses) This is a protection mechanism that prevents kernel panic (which needs us to force reboot the PC) I’m really proud that my OS worked, and has always been my dream creating an up and running OS!!", "repo": "https://github.com/milo0622/PythOS", "demo": "https://github.com/milo0622/PythOS/releases/"}]...
|
[{"post_id": 31306, "ts": "202 [{"post_id": 31306, "ts": "2026-07-19T16:31:21Z", "hours": 9.7153, "text": "Alright. So in the past 8 hours, I’ve been working on the KMSDRM rendering for PythOS’ desktop. Since all apps will be called via standard execve, functions inside cannot be called directly from the main server. That’s where IPC comes in. Like GNOME, it pygui acts as a server that handles the custom made apps that contains the GUI APIs, and performs a communication back and forth to render the apps. The process is NOT easy, and got my brain frying."}, {"post_id": 28979, "ts": "2026-07-15T16:38:05Z", "hours": 7.3539, "text": "In this 6 hours’ work, I’ve added a handle to the windows for the user to drag them. Various APIs were also added, such as buttons, text and images. There is one more useful feature: window focusing. When multiple windows are added, you can focus on them by clicking on them just like normal OSes."}, {"post_id": 28215, "ts": "2026-07-14T11:11:36Z", "hours": 11.3847, "text": "In this 11 hours (shows 10 hours because of the limit of devlogs), I’ve worked on framebuffering with PyGame, it was kinda painful trying to learn writing GUI in a completely different language, but it’s kinda worth it and enjoyable :) Also the theme of the GUI is based on Windows 98"}, {"post_id": 19180, "ts": "2026-06-30T13:20:41Z", "hours": 7.0183, "text": "After rewriting code for 7 hours and building the ISO file for more than 5 hours, I have finally built a bootable PythOS ISO file!!! What I have rewritten, was pysh.py to optimize the shell. I’ve also fixed a TypeError of PosixPath + str in ls.py. How the OS works: Boots grub bootloader Boots Linux kernel Loads init script Loads init.py from sbin/ Tries to load pysh.py from bin/ -> If fails or user exits pyshell, it falls back to init.py as a logon menu (written with ncurses) This is a protection mechanism that prevents kernel panic (which needs us to force reboot the PC) How to dualboot: (for Windows users. Skip if you know how to dualboot Linux, but please do not ignore step 6 when flashing): Prerequisites: Rufus (download from here ) PythOS ISO (download from the releases page ) A USB (at least 200MB) Steps: Plug in your USB and run Rufus you have just downloaded Select your USB device in the “Device” dropdown menu In the “Boot selection” dropdown, select “Disk or ISO image (Please select)” Select PythOS ISO file Click START Select DD mode as the flash mode instead of ISO mode (ISO mode will NOT work) and click OK Wait for it to flash Reboot your computer after flashing and enter UEFI boot menu Select the USB flash drive Select PythOS Phoenix ENJOY! NOTE: If your computer uses legacy BIOS instead of UEFI, I’m sorry… I’ll be adding BIOS support very soon tho :) Other architecture builds of the OS will be released very soon. The current supported arch is x86_64 (64-bit) P.S. You might be wondering if you’ll need to type in “.py” for running my scripts in bin, you don’t. Simply type in the command without .py, it’ll be good to go. Of course you CAN type in .py if you want, but it would basically be your choice mate"}, {"post_id": 2103, "ts": "2026-06-04T13:07:32Z", "hours": 4.5208, "text": "In this ~4.5 hours, I’ve added many commands to PythOS: clear, date, ls, mkdir, touch, uname And the most amazing thing I’ve done, is adding arguments and options :). I do think that this project can let me learn a LOT more about Python, Linux and low-level things"}, {"post_id": 748, "ts": "2026-06-02T11:46:02Z", "hours": 2.4308, "text": "I’ve relaunched the project PythOS, a Linux distro but almost fully written in Python. Instead of relying on init systems like BusyBox, it uses bare-minimum components: a Linux kernel, musl library, Python library, and my own Python runtime (init systems are written by me in C) I’ve actually worked on a project like this, also a Linux distro written in C, but back then, the distro relied on Alpine Linux as a base system. This time I’m actually trying to create the Linux distro myself :) The image I’ve uploaded is a preview of the shell. It’s still run on my Linux VM as it’s not built into a system yet."}]...
|
Title: PythOS by @milo0622 | Stardance
Devlogs:
I Title: PythOS by @milo0622 | Stardance
Devlogs:
I’ve relaunched the project PythOS, a Linux distro but almost fully written in Python. Instead of relying on init systems like BusyBox, it uses bare-minimum components: a Linux kernel, musl library, Python library, and my own Python runtime (init systems are written by me in C) I’ve actually worked on a project like this, also a Linux distro written in C, but back then, the distro relied on Alpine Linux as a base system. This time I’m actually trying to create the Linux distro myself :) The image I’ve uploaded is a preview of the shell. It’s still run on my Linux VM as it’s not built into a system yet.
In this ~4.5 hours, I’ve added many commands to PythOS: clear, date, ls, mkdir, touch, uname And the most amazing thing I’ve done, is adding arguments and options :). I do think that this project can let me learn a LOT more about Python, Linux and low-level things
After rewriting code for 7 hours and building the ISO file for more than 5 hours, I have finally built a bootable PythOS ISO file!!! What I have rewritten, was pysh.py to optimize the shell. I’ve also fixed a TypeError of PosixPath + str in ls.py. How the OS works: Boots grub bootloader Boots Linux kernel Loads init script Loads init.py from sbin/ Tries to load pysh.py from bin/ -> If fails or user exits pyshell, it falls back to init.py as a logon menu (written with ncurses) This is a protection mechanism that prevents kernel panic (which needs us to force reboot the PC) How to dualboot: (for Windows users. Skip if you know how to dualboot Linux, but please do not ignore step 6 when flashing): Prerequisites: Rufus (download from here ) PythOS ISO (download from the releases page ) A USB (at least 200MB) Steps: Plug in your USB and run Rufus you have just downloaded Select your USB device in the “Device” dropdown menu In the “Boot selection” dropdown, select “Disk or ISO image (Please select)” Select PythOS ISO file Click START Select DD mode as the flash mode instead of ISO mode (ISO mode will NOT work) and click OK Wait for it to flash Reboot your computer after flashing and enter UEFI boot menu Select the USB flash drive Select PythOS Phoenix ENJOY! NOTE: If your computer uses legacy BIOS instead of UEFI, I’m sorry… I’ll be adding BIOS support very soon tho :) Other architecture builds of the OS will be released very soon. The current supported arch is x86_64 (64-bit) P.S. You might be wondering if you’ll need to type in “.py” for running my scripts in bin, you don’t. Simply type in the command without .py, it’ll be good to go. Of course you CAN type in .py if you want, but it would basically be your choice mate
In this 11 hours (shows 10 hours because of the limit of devlogs), I’ve worked on framebuffering with PyGame, it was kinda painful trying to learn writing GUI in a completely different language, but it’s kinda worth it and enjoyable :) Also the theme of the GUI is based on Windows 98
In this 6 hours’ work, I’ve added a handle to the windows for the user to drag them. Various APIs were also added, such as buttons, text and images. There is one more useful feature: window focusing. When multiple windows are added, you can focus on them by clicking on them just like normal OSes.
Alright. So in the past 8 hours, I’ve been working on the KMSDRM rendering for PythOS’ desktop. Since all apps will be called via standard execve, functions inside cannot be called directly from the main server. That’s where IPC comes in. Like GNOME, it pygui acts as a server that handles the custom made apps that contains the GUI APIs, and performs a communication back and forth to render the apps. The process is NOT easy, and got my brain frying.
Ships:
This is a Linux distro written almost completely in Python!! What’s special about it, is that the whole Linux distro is compiled and assembled by me!! Compared to previous versions in the previous repo, those all relied on other Linux distro shells. But this time, the shell and other programs in /bin is written in Python. How it works: Boots grub bootloader Boots Linux kernel Loads init script Loads init.py from sbin/ Tries to load pysh.py from bin/ -> If fails or user exits pyshell, it falls back to init.py as a logon menu (written with ncurses) This is a protection mechanism that prevents kernel panic (which needs us to force reboot the PC) I’m really proud that my OS worked, and has always been my dream creating an up and running OS!!...
|
1792983290.4333286
|
1793069690.4333286
|
|
995
|
Track or Trash by @Maxolotl | Stardance
|
Maxolotl
|
1
|
17.68
|
181
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-22T07:24:35Z", "hours": 14.0, "multiplier": 13.37, "payout": 181, "blessing": "neutral", "text": "I made Track or Trash! A 100% free, private Spotify playlist sorter, because I got tired of all the worthless apps that try to charge you insane amounts for it. For me, it was a huge learning curve with css & also with the Spotify API, but I’m really proud of how well it works and how it turned out! If you want to try, view the documentation on how to get your own API keys - unfortunately, you need 25.000 users before Spotify grants you publicly available keys (why?). If you only want to give it a try for reviewing it, please send me an email ( [email protected] ) and I will add your Spotify account to the whitelist to use demo API credentials.", "repo": "https://github.com/maxolotled/TrackOrTrash", "demo": "https://trackortrash.me"}]...
|
[{"post_id": 14353, "ts": "202 [{"post_id": 14353, "ts": "2026-06-23T13:36:16Z", "hours": 3.6831, "text": "Track or Trash now supports youtube music! Go check it out - no annoying API keys needed. This was way simpler than the damned Spotify API, luckily! Only verifying with Google was a bit of an hassle, but otherwise, it all went smoothly. Youtube does show both normal videos and music in the same Playlists, so it’s even slightly multifunctional!"}, {"post_id": 13573, "ts": "2026-06-22T07:07:25Z", "hours": 3.485, "text": "Everything is now done! The app is finished, and as far as I can tell, all bugs have been ironed out. I added a new feature to add songs to your liked songs immediately, and finished the documentation!"}, {"post_id": 9394, "ts": "2026-06-15T18:53:59Z", "hours": 3.8325, "text": "I finished all core functions of the website! It now works for playlists, shows songs in random order, has a saving & logout function, and a functioning UI for mobile devices. I also gave it it’s own domain! It was quite a struggle to figure out how the spotify API works for playlists (who decided it had to be entirely different?!). Next up, I’m going to work on some UI improvements, tutorials and integration of other music services. You can already try it out yourself if you know how to use the spotify API via trackortrash.me!"}, {"post_id": 3430, "ts": "2026-06-06T11:21:37Z", "hours": 4.2958, "text": "I finished making the sorting mechanism for the likes songs album! It took a lot of struggling with the spotify API and authentication, but I’m super glad to see it all functioning now. Next up I will work on normal playlists! :)"}, {"post_id": 1377, "ts": "2026-06-03T11:25:17Z", "hours": 1.9925, "text": "I’m making a website to clean up my spotify playlists! I just finished the login screens (very ugly, but being worked on) and the auth flow. My goal will be to learn HTML/CSS and expand my java knowledge in regard to API’s!"}]...
|
Title: Track or Trash by @Maxolotl | Stardance
De Title: Track or Trash by @Maxolotl | Stardance
Devlogs:
I’m making a website to clean up my spotify playlists! I just finished the login screens (very ugly, but being worked on) and the auth flow. My goal will be to learn HTML/CSS and expand my java knowledge in regard to API’s!
I finished making the sorting mechanism for the likes songs album! It took a lot of struggling with the spotify API and authentication, but I’m super glad to see it all functioning now. Next up I will work on normal playlists! :)
I finished all core functions of the website! It now works for playlists, shows songs in random order, has a saving & logout function, and a functioning UI for mobile devices. I also gave it it’s own domain! It was quite a struggle to figure out how the spotify API works for playlists (who decided it had to be entirely different?!). Next up, I’m going to work on some UI improvements, tutorials and integration of other music services. You can already try it out yourself if you know how to use the spotify API via trackortrash.me!
Everything is now done! The app is finished, and as far as I can tell, all bugs have been ironed out. I added a new feature to add songs to your liked songs immediately, and finished the documentation!
Track or Trash now supports youtube music! Go check it out - no annoying API keys needed. This was way simpler than the damned Spotify API, luckily! Only verifying with Google was a bit of an hassle, but otherwise, it all went smoothly. Youtube does show both normal videos and music in the same Playlists, so it’s even slightly multifunctional!
Ships:
I made Track or Trash! A 100% free, private Spotify playlist sorter, because I got tired of all the worthless apps that try to charge you insane amounts for it. For me, it was a huge learning curve with css & also with the Spotify API, but I’m really proud of how well it works and how it turned out! If you want to try, view the documentation on how to get your own API keys - unfortunately, you need 25.000 users before Spotify grants you publicly available keys (why?). If you only want to give it a try for reviewing it, please send me an email ( [email protected] ) and I will add your Spotify account to the whitelist to use demo API credentials....
|
1792972094.6708295
|
1793058494.6708295
|
|
1022
|
JARVIS by @aarav_ | Stardance
|
aarav_
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-01T18:52:04Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "J.A.R.V.I.S - Just A Rather Very Intelligent System “Sometimes you gotta run before you can walk.” - Tony Stark An AI desktop assistant inspired by Iron Man’s JARVIS. Built with Python, powered by free-first local command routing with optional Groq cloud AI, and designed to combine voice control, desktop automation, memory, productivity helpers, plugin safety, release checks, and a cinematic cyber interface in one Windows-first system. J.A.R.V.I.S can run in a keyless degraded mode. Local rules, the desktop UI, memory helpers, health checks, and many system commands work without API keys. Groq, Spotify, Gemini, and other cloud-backed capabilities are optional integrations.", "repo": "https://github.com/namanisnaman/JARVIS", "demo": "https://youtu.be/-wQnZ4pi9sM?si=OQfAUqn5ei09KKH6"}]...
|
[{"post_id": 366, "ts": "2026- [{"post_id": 366, "ts": "2026-06-01T18:18:29Z", "hours": 0.2644, "text": "I AM CURETLY WORKING ON JARVIS"}]...
|
Title: JARVIS by @aarav_ | Stardance
Devlogs:
I A Title: JARVIS by @aarav_ | Stardance
Devlogs:
I AM CURETLY WORKING ON JARVIS
Ships:
J.A.R.V.I.S - Just A Rather Very Intelligent System “Sometimes you gotta run before you can walk.” - Tony Stark An AI desktop assistant inspired by Iron Man’s JARVIS. Built with Python, powered by free-first local command routing with optional Groq cloud AI, and designed to combine voice control, desktop automation, memory, productivity helpers, plugin safety, release checks, and a cinematic cyber interface in one Windows-first system. J.A.R.V.I.S can run in a keyless degraded mode. Local rules, the desktop UI, memory helpers, health checks, and many system commands work without API keys. Groq, Spotify, Gemini, and other cloud-backed capabilities are optional integrations....
|
1792990551.5402124
|
1793076951.5402124
|
|
1023
|
My awesome macropad! by @Joey | Stardance
|
Joey
|
1
|
0.0
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-03T02:51:18Z", "hours": 0.0, "multiplier": 5.0, "payout": 1, "blessing": "neutral", "text": "I made a six key macropad with a basic simplistic design. Being a beginner to these programs, it was quite difficult to understand. However, the communtiy was very helpful and incredibly nice. I’m very proud of this since it’s my first attempt doing these kinds of things.", "repo": "https://github.com/joeydooom/Hackclub-Hackpad", "demo": ""}]...
|
[{"post_id": 1231, "ts": "2026 [{"post_id": 1231, "ts": "2026-06-03T02:44:00Z", "hours": 0.2606, "text": "A six key marcopad for w,a,s,d, q, and e. It’s already finished but i dont really know how to submit it"}]...
|
Title: My awesome macropad! by @Joey | Stardance
Title: My awesome macropad! by @Joey | Stardance
Devlogs:
A six key marcopad for w,a,s,d, q, and e. It’s already finished but i dont really know how to submit it
Ships:
I made a six key macropad with a basic simplistic design. Being a beginner to these programs, it was quite difficult to understand. However, the communtiy was very helpful and incredibly nice. I’m very proud of this since it’s my first attempt doing these kinds of things....
|
1792990552.4181776
|
1793076952.4181776
|
|
1029
|
Origin Engine by @aloyak | Stardance
|
aloyak
|
1
|
74.0
|
1696
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-29T14:54:41Z", "hours": 74.0, "multiplier": 19.01, "payout": 1696, "blessing": "neutral", "text": "I made a custom game engine from scratch! it has a fast opengl pixelart renderer, builtin physics, lighting, an entity-component system, a spatial audio system, terrain system, it can load and save scenes on the fly, supports many 3d asset extensions… Its what i used to create my other big project! (JSP) the engine is cross-platform and works right out of the box for linux, windows and web!! and also it comes with a lightweight level editor and ive also made a website for it Hope you like it!! made with <3 from @aloyak", "repo": "https://github.com/aloyak/origin", "demo": "https://origin.aloyak.dev/"}]...
|
[{"post_id": 57380, "ts": "202 [{"post_id": 57380, "ts": "2026-08-29T14:44:05Z", "hours": 5.4342, "text": "ORIGIN ENGINE version 0.19.3 First ship is coming up soon! Even tho ive been working on really exciting stuff, i really would like to focus on actually learning and having a deep enough understanding of vulkan and other stuff like the best engine’s architecture before actually logging and building something open and usable, thats why i feel this is a good place to finally ship this project as it is and maybe come back to it at some point Pre-ship checklist! I’ve updated the website! now you have a few new sections with new information like the game i build using this engine and other cool stuff! published a new version to the github releases page (0.19.3 i think), with the binaries for the demo game and the sandbox for both windows and linux! the web build is still there on the website but it is marked as legacy tho Its been super fun to work on this and ive learnt a lot but i really really really think i could make something so much better with all the knowledge i now have and with some serious research, this is pretty much what ive explained in most of all the previous devlogs (the last 2 or 3) I’ve been working on applying some of the stuff ive been working on to the engine, like the new renderer class its now pretty much ported nicely! ive also tested that everything worked cross platform and yay! the project is very ready to hold any new game or project you might wanna do with it, although i might wanna make a quick tutorial on how to work with the engine on a github repo cuz its not very intuitive Known issue I’ve been trying to add support to the engine for builtin shaders but ive realized that its a super deeper problem than what i was expecting, id honestly do something like making all the shaders be done with something like slang and then compile them to spirv without any glsl intermediary PD: the video you see is a demo scene you can find at assets/scenes/physics.scene if you wanna try it by yourself!!!"}, {"post_id": 54613, "ts": "2026-08-25T17:11:59Z", "hours": 10.0381, "text": "ORIGIN ENGINE I’ve finally managed to port enough of the original engine to setup an imgui layer to have this little built-in launcher! it currently only works when using opengl, but its completely supported by both the windowing backends (glfw & sdl3) Its hard to make videos like this on a steamdeck so please like lol. Other stuff I completely restructured the new engine architecture to be a layered system, the engine holds a stack of layers and updates them independently! each layer holds stuff like OnAttach OnLateUpdate OnEvent etc, which is a much better approach compared to what we had before! I created a completely new custom file system, as the sandbox and games use completely different files and base directories, you can now mount/dismount different “aliases” for each program, so you can find your assets easily with custom virtual paths like sandbox://settings.json or project://scenes/scene.json Literally ported the scene/entity system right from the previous version, but it is a lot smaller currently, because the previous one wasnt really good, we now can load scenes from a file but now those get added to a scene stack, which is a lot more efficient if you wanna load them again! Overall the project’s code quality is so much better too!! After these bases are set im gonna be focusing on getting a full render layer working with at least opengl, even tho the vulkan renderer is already setup… PD: Origin Zero is just the new “protoype” name i gave it, just like with when i started this project i called it Origin “Zeus” lmao"}, {"post_id": 53290, "ts": "2026-08-23T19:02:52Z", "hours": 9.1458, "text": "ORIGIN ENGINE I’m sorry in advance that these and probably the next few devlogs wont have very exiting things or new and awesome information but sometimes you gotta focus on boring structural stuff that its just not really fun… The new Project-Based System The engine is now very dependent on the sandbox editor, sort of like a symbiotic relationship between the sandbox and your code editor, because thats where you will not only handle your assets but also play the game. The previous version just had the sandbox to be a tiny map editor tool that not even i would use half of the time The project (also called environment) then would have its own “environment” literally where all your assets would be included, with very little naming restrictions, this would make working on the project super easy and itd be easy too to use git with it (maybe build a builtin git UI??? it could be cool) I’ve already built the base for it and I’ve already added support for ImGui only for the OpenGL backend, i was thinking of adding a different UI system but this one will do for now :))"}, {"post_id": 51278, "ts": "2026-08-20T20:19:45Z", "hours": 8.3647, "text": "ORIGIN ENGINE A NEW UPDATE! I’m building a huge update for the origin engine! it might even be considered a new engine all together. The same philosophy is still there but I’m re-writting and refactoring the base structure of the whole engine. For now this refactor is close source tho, ill publish it once its ready for ship! What we currently have: I have the structure already though: A new project-based system where all the shader compilation and asset handling is done for each project, this + a simple abstraction layer should allow the sandbox to be a hugely more important tool as you will be able to play your game right in the editor! Compile time switch between SDL3 or GLFW for windowing, input is not yet “ported” if you consider it that way What i wanna add but may be difficult Runtime api switching between OpenGL, Vulkan and DirectX3D 11. even tho for now i have a super basic abstraction layer and only opengl is even able to initialize so….. maybe too hard i hope i manage to do it tho , was thinking of doing a similar thing for switching between physics engines like bullet3, physicsX or Box3D, this is very much in the future of course Project export/ editor previews This is a major step and im learning a lot!! but its very difficult to handle new stuff like vulkan with other new c++ architectural stuff, hope it goes well"}, {"post_id": 50196, "ts": "2026-08-19T10:21:29Z", "hours": 7.615, "text": "ORIGIN ENGINE Another update to the best game engine there is that starts with the letter “O” (i think). Today’s devlog is small, bust most likely will be start of a new series of very much needed updates to the engine!. It’s important to note that most of the things ive been working on are not yet finished :(( New stuff! New things that are completely finished: Fix the sandbox UI, it was missing imgui flags from previous bug fixes i had to do because the docking branch of imgui was broken, they fixed it so i just rolled back! Cleaned up the rendering class, specially important for the new updates im working on, because im gonna need to do a hell lot of abstraction! Things im working on Im taking the current base of the engine to make a new “modular” system just for the love of the game, the most basic thing ive done is to allow the user to choose between SDL3 or GLFW for windowing, although input is currently only handled with SDL3 regardless…. There’s a lot of exiting stuff coming SOON^(TM), hope you like them!! (vulkan?, probably not lmfao) PD: yes! this is the origin engine running nicely in a steamdeck!!!"}, {"post_id": 41213, "ts": "2026-08-05T09:19:15Z", "hours": 6.7264, "text": "ORIGIN ENGINE Yippi another round of improvements to the best and certainty not over engineered game engine out there! Out of all the things ive been working on with the engine ive only really finished one, but it was rather a big change tho NEW input system I’ve added a new action-based input system that handles by itself connected devices (because we now support gamepads!!! ), input modes and preferences, keybinds and settings all in one simple system The new system instead of reading “raw” input from SDL3 now instead has a wrapper that sets all input to “actions”. All actions have assigned a certain key/button/axis etc… It allows you to use keyboard/mouse and gamepad all at the same time Games can now have support for handheld devices like your steamdeck! Support for precompiled shaders (GLSL -> SPV) This is still work in progress!! The engine itself supports the compiled GLSL files very quickly but the problem is to get those shaders to compile in the first place The shader class gets the relative path for the shader, before actually compiling it, it checks if theres a file with the same name but that ends with “.spv”, in that case it uses that one Right now theres not an easy utility script that will handle compilation for you, that needs to be done next!! Dynamically Chunked Terrain Collisions Very early and of course WIP, I still haven’t done much but i have a pretty good idea of how this will work: You bake the local position of all the vertex of a terrain model and then, when you require it, you get all the triangles close to the player in real time (with a basic “chunked” system), then Bullet3 generates that mesh collider rather quickly as the mesh is not so big (this will probably require multi-threading ). More on this on the next devlog Other small changes Fixed the sandbox not having docking enabled Added ImPlot3D to project, might use it at some point PD: This picture is from my other project that you should check out! It showcases the new terrain system (WIP)"}, {"post_id": 33210, "ts": "2026-07-22T22:17:42Z", "hours": 8.1519, "text": "ORIGIN ENGINE I’ve been adding some quality of life changes that make working with this engine a lot easier, which means more abstraction in some cases which is not always the best but whatever. Ive also worked very hard on fixing and improving the physics (even considered porting it to now use Box3D instead of Bullet3, but that will probably happen in the far future, and Bullet3 will be kept as a fallback) What have i been working on i see you ask? Added the ParentEntityComponent , a very simple work around for the lack of parent-child entities on my engine, this will probably be deprecated sooner or later but its a decent solution instead of doing all the work all at once Added GetRefreshRate to window class, so for example, your game can set the target fps based on this Changes to physics system (Bullet3) Fixed a super hard to find bug where models vertex and physics-engine vertex would have shifter coords and would make the objects act weird on real time, this is such a huge change, it makes physics really good to play with, see the video!! Added functions to apply force, impulse and torque to a dynamic rigidbody Added the teleport function for kinematic rigidbodies Added getLinearVelocity and getAngularVelocity Added options to freeze rotation on independent axis HUGE: allow the engine to support different physics worlds to live in one same game in real time! this needs some work tho, not featured in the video PD: This is getting super nice but also growing in complexity, once i finish with my game i will surely start improving the overall structure and start thinking about more serious changes, maybe another graphics api????"}, {"post_id": 27690, "ts": "2026-07-13T14:02:40Z", "hours": 9.3322, "text": "ORIGIN ENGINE Yippie! another update to the engine powering my game, i’ve added quite a lot of things but also managed to clean up some dead code in the way. The most excinting new thing is probably the new postprocessing layer system! this is what ive added in the past 3 weeks: Postprocessing layer: you can now code different vertex & fragment shaders that drawn on top of the main buffer, you can stack as many as youd like in order to create many new cool effects spent hours trying to fix the sandbox editor’s rendering being completely broken, took about 3-4 days lol added new getters to camera like a directly inversed view matrix or setMat4() and setTexture() functions with shaders add localToWorld() and worldToLocal() to the transform class fixed specular lighting leaking to some dark areas fix handle untextured materials in model import added a built-in user settings save/load system based on json serialization refactor a part of the audio system to now have built-in fade ins/out, volume control and async background music The biggest change coming up would probably be to develop a dynamic rendering system that allows me to use different cameras rendering at the same time, as I’ll probably need it for JSP PD: this engine is being used for my current main project (almost 100 hours!), please check it out! JSP: https://stardance.hackclub.com/projects/14066"}, {"post_id": 11317, "ts": "2026-06-18T14:52:15Z", "hours": 9.5539, "text": "ORIGIN ENGINE This is my custom engine that im using for my other big project, the Janitor Space Program (go check it out!: https://stardance.hackclub.com/projects/14066 ), most of these changes come from having to create or update an engine feature so that the game im building is easier and faster to develop, and in the meantime im also upgrading this engine to something more powerful and mature, although i feel like im making it also a bit more complex or spaghetti, ill work on that later over this last 2 weeks ive added so many features like: improved logging library, allows you to use formatting directly support for embedded textures in .fbx models added a lookAt() method to the camera component fixed web support for the audio system added more features and functions to the in-house math library, like the cross and dot products, a 4x4 Matrix and other small stuff scenes now can be either “.json” or “.scene” sandbox: shortcut to align an entity to the sandbox scene view camera added color tint to the skybox component added quick line rendering for fast debugging, probably needs refactoring tho added LateLoop() , which obviously happens after Loop() and its mainly used for UI and stuff added setTargetFps() so that gpu doesnt work to 100% if vsync is disabled changed the builtin shaders path to assets/shaders/builtin wip: added imgui support to the web builds Most relevant new features: added instanced rendering! still sort of a WIP added real-time texture editing, allows the cpu to have ownership of a texture instead of the gpu and do whatever it wants with it, currently just paint it wip: huge refactoring of the render class to allow for different postprocessing layers to render on top of each other with custom shaders, this allows for any kind of postprocessing effect to be made without much issue, i managed to get a simple vignette shader working quickly! the render class still needs some cleanup tho This was fun but if they gave me an euro for every seg fault ive endured elon musk would be small next to me. i love to see how this small side project i started long ago is now something a lot bigger than i expected, this literally started as a learnopengl tutorial :))"}]...
|
Title: Origin Engine by @aloyak | Stardance
Devlo Title: Origin Engine by @aloyak | Stardance
Devlogs:
ORIGIN ENGINE This is my custom engine that im using for my other big project, the Janitor Space Program (go check it out!: https://stardance.hackclub.com/projects/14066 ), most of these changes come from having to create or update an engine feature so that the game im building is easier and faster to develop, and in the meantime im also upgrading this engine to something more powerful and mature, although i feel like im making it also a bit more complex or spaghetti, ill work on that later over this last 2 weeks ive added so many features like: improved logging library, allows you to use formatting directly support for embedded textures in .fbx models added a lookAt() method to the camera component fixed web support for the audio system added more features and functions to the in-house math library, like the cross and dot products, a 4x4 Matrix and other small stuff scenes now can be either “.json” or “.scene” sandbox: shortcut to align an entity to the sandbox scene view camera added color tint to the skybox component added quick line rendering for fast debugging, probably needs refactoring tho added LateLoop() , which obviously happens after Loop() and its mainly used for UI and stuff added setTargetFps() so that gpu doesnt work to 100% if vsync is disabled changed the builtin shaders path to assets/shaders/builtin wip: added imgui support to the web builds Most relevant new features: added instanced rendering! still sort of a WIP added real-time texture editing, allows the cpu to have ownership of a texture instead of the gpu and do whatever it wants with it, currently just paint it wip: huge refactoring of the render class to allow for different postprocessing layers to render on top of each other with custom shaders, this allows for any kind of postprocessing effect to be made without much issue, i managed to get a simple vignette shader working quickly! the render class still needs some cleanup tho This was fun but if they gave me an euro for every seg fault ive endured elon musk would be small next to me. i love to see how this small side project i started long ago is now something a lot bigger than i expected, this literally started as a learnopengl tutorial :))
ORIGIN ENGINE Yippie! another update to the engine powering my game, i’ve added quite a lot of things but also managed to clean up some dead code in the way. The most excinting new thing is probably the new postprocessing layer system! this is what ive added in the past 3 weeks: Postprocessing layer: you can now code different vertex & fragment shaders that drawn on top of the main buffer, you can stack as many as youd like in order to create many new cool effects spent hours trying to fix the sandbox editor’s rendering being completely broken, took about 3-4 days lol added new getters to camera like a directly inversed view matrix or setMat4() and setTexture() functions with shaders add localToWorld() and worldToLocal() to the transform class fixed specular lighting leaking to some dark areas fix handle untextured materials in model import added a built-in user settings save/load system based on json serialization refactor a part of the audio system to now have built-in fade ins/out, volume control and async background music The biggest change coming up would probably be to develop a dynamic rendering system that allows me to use different cameras rendering at the same time, as I’ll probably need it for JSP PD: this engine is being used for my current main project (almost 100 hours!), please check it out! JSP: https://stardance.hackclub.com/projects/14066
ORIGIN ENGINE I’ve been adding some quality of life changes that make working with this engine a lot easier, which means more abstraction in some cases which is not always the best but whatever. Ive also worked very hard on fixing and improving the physics (even considered porting it to now use Box3D instead of Bullet3, but that will probably happen in the far future, and Bullet3 will be kept as a fallback) What have i been working on i see you ask? Added the ParentEntityComponent , a very simple work around for the lack of parent-child entities on my engine, this will probably be deprecated sooner or later but its a decent solution instead of doing all the work all at once Added GetRefreshRate to window class, so for example, your game can set the target fps based on this Changes to physics system (Bullet3) Fixed a super hard to find bug where models vertex and physics-engine vertex would have shifter coords and would make the objects act weird on real time, this is such a huge change, it makes physics really good to play with, see the video!! Added functions to apply force, impulse and torque to a dynamic rigidbody Added the teleport function for kinematic rigidbodies Added getLinearVelocity and getAngularVelocity Added options to freeze rotation on independent axis HUGE: allow the engine to support different physics worlds to live in one same game in real time! this needs some work tho, not featured in the video PD: This is getting super nice but also growing in complexity, once i finish with my game i will surely start improving the overall structure and start thinking about more serious changes, maybe another graphics api????
ORIGIN ENGINE Yippi another round of improvements to the best and certainty not over engineered game engine out there! Out of all the things ive been working on with the engine ive only really finished one, but it was rather a big change tho NEW input system I’ve added a new action-based input system that handles by itself connected devices (because we now support gamepads!!! ), input modes and preferences, keybinds and settings all in one simple system The new system instead of reading “raw” input from SDL3 now instead has a wrapper that sets all input to “actions”. All actions have assigned a certain key/button/axis etc… It allows you to use keyboard/mouse and gamepad all at the same time Games can now have support for handheld devices like your steamdeck! Support for precompiled shaders (GLSL -> SPV) This is still work in progress!! The engine itself supports the compiled GLSL files very quickly but the problem is to get those shaders to compile in the first place The shader class gets the relative path for the shader, before actually compiling it, it checks if theres a file with the same name but that ends with “.spv”, in that case it uses that one Right now theres not an easy utility script that will handle compilation for you, that needs to be done next!! Dynamically Chunked Terrain Collisions Very early and of course WIP, I still haven’t done much but i have a pretty good idea of how this will work: You bake the local position of all the vertex of a terrain model and then, when you require it, you get all the triangles close to the player in real time (with a basic “chunked” system), then Bullet3 generates that mesh collider rather quickly as the mesh is not so big (this will probably require multi-threading ). More on this on the next devlog Other small changes Fixed the sandbox not having docking enabled Added ImPlot3D to project, might use it at some point PD: This picture is from my other project that you should check out! It showcases the new terrain system (WIP)
ORIGIN ENGINE Another update to the best game engine there is that starts with the letter “O” (i think). Today’s devlog is small, bust most likely will be start of a new series of very much needed updates to the engine!. It’s important to note that most of the things ive been working on are not yet finished :(( New stuff! New things that are completely finished: Fix the sandbox UI, it was missing imgui flags from previous bug fixes i had to do because the docking branch of imgui was broken, they fixed it so i just rolled back! Cleaned up the rendering class, specially important for the new updates im working on, because im gonna need to do a hell lot of abstraction! Things im working on Im taking the current base of the engine to make a new “modular” system just for the love of the game, the most basic thing ive done is to allow the user to choose between SDL3 or GLFW for windowing, although input is currently only handled with SDL3 regardless…. There’s a lot of exiting stuff coming SOON^(TM), hope you like them!! (vulkan?, probably not lmfao) PD: yes! this is the origin engine running nicely in a steamdeck!!!
ORIGIN ENGINE A NEW UPDATE! I’m building a huge update for the origin engine! it might even be considered a new engine all together. The same philosophy is still there but I’m re-writting and refactoring the base structure of the whole engine. For now this refactor is close source tho, ill publish it once its ready for ship! What we currently have: I have the structure already though: A new project-based system where all the shader compilation and asset handling is done for each project, this + a simple abstraction layer should allow the sandbox to be a hugely more important tool as you will be able to play your game right in the editor! Compile time switch between SDL3 or GLFW for windowing, input is not yet “ported” if you consider it that way What i wanna add but may be difficult Runtime api switching between OpenGL, Vulkan and DirectX3D 11. even tho for now i have a super basic abstraction layer and only opengl is even able to initialize so….. maybe too hard i hope i manage to do it tho , was thinking of doing a similar thing for switching between physics engines like bullet3, physicsX or Box3D, this is very much in the future of course Project export/ editor previews This is a major step and im learning a lot!! but its very difficult to handle new stuff like vulkan with other new c++ architectural stuff, hope it goes well
ORIGIN ENGINE I’m sorry in advance that these and probably the next few devlogs wont have very exiting things or new and awesome information but sometimes you gotta focus on boring structural stuff that its just not really fun… The new Project-Based System The engine is now very dependent on the sandbox editor, sort of like a symbiotic relationship between the sandbox and your code editor, because thats where you will not only handle your assets but also play the game. The previous version just had the sandbox to be a tiny map editor tool that not even i would use half of the time The project (also called environment) then would have its own “environment” literally where all your assets would be included, with very little naming restrictions, this would make working on the project super easy and itd be easy too to use git with it (maybe build a builtin git UI??? it could be cool) I’ve already built the base for it and I’ve already added support for ImGui only for the OpenGL backend, i was thinking of adding a different UI system but this one will do for now :))
ORIGIN ENGINE I’ve finally managed to port enough of the original engine to setup an imgui layer to have this little built-in launcher! it currently only works when using opengl, but its completely supported by both the windowing backends (glfw & sdl3) Its hard to make videos like this on a steamdeck so please like lol. Other stuff I completely restructured the new engine architecture to be a layered system, the engine holds a stack of layers and updates them independently! each layer holds stuff like OnAttach OnLateUpdate OnEvent etc, which is a much better approach compared to what we had before! I created a completely new custom file system, as the sandbox and games use completely different files and base directories, you can now mount/dismount different “aliases” for each program, so you can find your assets easily with custom virtual paths like sandbox://settings.json or project://scenes/scene.json Literally ported the scene/entity system right from the previous version, but it is a lot smaller currently, because the previous one wasnt really good, we now can load scenes from a file but now those get added to a scene stack, which is a lot more efficient if you wanna load them again! Overall the project’s code quality is so much better too!! After these bases are set im gonna be focusing on getting a full render layer working with at least opengl, even tho the vulkan renderer is already setup… PD: Origin Zero is just the new “protoype” name i gave it, just like with when i started this project i called it Origin “Zeus” lmao
ORIGIN ENGINE version 0.19.3 First ship is coming up soon! Even tho ive been working on really exciting stuff, i really would like to focus on actually learning and having a deep enough understanding of vulkan and other stuff like the best engine’s architecture before actually logging and building something open and usable, thats why i feel this is a good place to finally ship this project as it is and maybe come back to it at some point Pre-ship checklist! I’ve updated the website! now you have a few new sections with new information like the game i build using this engine and other cool stuff! published a new version to the github releases page (0.19.3 i think), with the binaries for the demo game and the sandbox for both windows and linux! the web build is still there on the website but it is marked as legacy tho Its been super fun to work on this and ive learnt a lot but i really really really think i could make something so much better with all the knowledge i now have and with some serious research, this is pretty much what ive explained in most of all the previous devlogs (the last 2 or 3) I’ve been working on applying some of the stuff ive been working on to the engine, like the new renderer class its now pretty much ported nicely! ive also tested that everything worked cross platform and yay! the project is very ready to hold any new game or project you might wanna do with it, although i might wanna make a quick tutorial on how to work with the engine on a github repo cuz its not very intuitive Known issue I’ve been trying to add support to the engine for builtin shaders but ive realized that its a super deeper problem than what i was expecting, id honestly do something like making all the shaders be done with something like slang and then compile them to spirv without any glsl intermediary PD: the video you see is a demo scene you can find at assets/scenes/physics.scene if you wanna try it by yourself!!!
Ships:
I made a custom game engine from scratch! it has a fast opengl pixelart renderer, builtin physics, lighting, an entity-component system, a spatial audio system, terrain system, it can load and save scenes on the fly, supports many 3d asset extensions… Its what i used to create my other big project! (JSP) the engine is cross-platform and works right out of the box for linux, windows and web!! and also it comes with a lightweight level editor and ive also made a website for it Hope you like it!! made with <3 from @aloyak...
|
1792990527.5510185
|
1793076927.5510185
|