|
38404
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793886531.5475557
|
1794750531.5475557
|
|
42666
|
YourPc by @dionis | Stardance
|
dionis
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: YourPc by @dionis | Stardance
|
1793886530.6853266
|
1794491330.6853266
|
|
38806
|
CHRONOTAMEION by @Ayin | Stardance
|
Ayin
|
0
|
34.2
|
0
|
[]
|
[{"post_id": 35166, "ts": "202 [{"post_id": 35166, "ts": "2026-07-26T12:48:40Z", "hours": 2.3114, "text": "LEVELS ARE DONE AND ALSO SOUND DESIGN(very visible through screenshots)"}, {"post_id": 35047, "ts": "2026-07-26T06:51:33Z", "hours": 8.1139, "text": "LEVEL DESIGN!!!!!!!! YIPPEEEE"}, {"post_id": 34707, "ts": "2026-07-25T17:07:32Z", "hours": 11.0103, "text": "Added Enemies, Sprite implementation(i didn’t draw them), And an Axe Swinging mechanic"}, {"post_id": 33904, "ts": "2026-07-24T06:21:09Z", "hours": 5.4608, "text": "Added Animatedsprite class into GMTK Game jam and fixed (a lot of) implementation bugs"}, {"post_id": 33609, "ts": "2026-07-23T17:40:45Z", "hours": 7.3044, "text": "Added player class and general Entity base classes"}]...
|
Title: CHRONOTAMEION by @Ayin | Stardance
Devlogs Title: CHRONOTAMEION by @Ayin | Stardance
Devlogs:
Added player class and general Entity base classes
Added Animatedsprite class into GMTK Game jam and fixed (a lot of) implementation bugs
Added Enemies, Sprite implementation(i didn’t draw them), And an Axe Swinging mechanic
LEVEL DESIGN!!!!!!!! YIPPEEEE
LEVELS ARE DONE AND ALSO SOUND DESIGN(very visible through screenshots)...
|
1793886529.7989297
|
1794750529.7989297
|
|
42665
|
My very own WebOS by @namrit | Stardance
|
namrit
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @namrit | Stardance
|
1793886527.1384058
|
1794491327.1384058
|
|
24645
|
ForestOS by @laupi_oida | Stardance
|
laupi_oida
|
1
|
23.12
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-11T20:07:52Z", "hours": 13.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an WebOS themed around the forest. I really liked how the style turned out at the end and I’m really proud of my code because it’s very clean (I think).", "repo": "https://github.com/Laup0403/LaupiOS", "demo": "https://laup0403.github.io/ForestOS/"}]...
|
[{"post_id": 39102, "ts": "202 [{"post_id": 39102, "ts": "2026-08-01T20:12:11Z", "hours": 2.9761, "text": "ForestOS devlog #6 Hello, Moin and Grüezi! I haven’t posted a devlog in 12 days because I was busy or something. Spoiler Warning! But: We have our first enemie: The ram eater! He is completely buggy and you couldn’t see him in the video but I will fix that. And first I added some story to the notes, programmed a Files app, but I currently don’t have a name for it and I added some terminal commands and a crazy Jumpscare. Try it out now or later or never :( So that was a pretty messy devlog and update but anyways, bye Twin!"}, {"post_id": 31679, "ts": "2026-07-20T09:03:37Z", "hours": 2.3183, "text": "ForestOS devlog #5 I made it so, that at first you have just the welcome window and you must unlock other windows. The first window you unlock is the notes app and you unlock it if you press The big red button And i changed the notes content. Bye Twin!"}, {"post_id": 29061, "ts": "2026-07-15T18:28:56Z", "hours": 3.1597, "text": "ForestOS devlog #4 Big News: ForestOS will now get story! Yesterday I wanted to make a forest themed game for ForestOS, but then I got the wonderful Idea, to make ForestOS to a game. I’ve never saw something like this and I think it could be pretty fun. So I made some plans and already and changed the style and made it a bit darker. That was it for now and sorry, if my english was bad. Have a good day Twin✌️"}, {"post_id": 27285, "ts": "2026-07-12T18:43:52Z", "hours": 1.6697, "text": "ForestOS devlog #3 World, greetings to you! You know, I’m kind of a Linux Larper and of course I need a terminal. So I made one: ForestBreaker! There are some commands that the ForestOS Github Repo available, like forestfetch (the ultimate larper command). That was it for this devlog. Bye, Twin!"}, {"post_id": 26782, "ts": "2026-07-11T19:36:06Z", "hours": 3.4939, "text": "ForestOS devlog #2 World, greetings to you! ForestOS 1.0 is now out. And the best part: you can test it. Just click here: https://laup0403.github.io/ForestOS/ I hope you will test it and find the Easteregg I implemented. And I also added a new App: the Tincan Phone. Now you can hear your favorite animals! (What a blessing) and you can also call the Callcenter. (for my german friends) That was it for this Update and I would really enjoy, if you would try my site. Have a very excellent day, Twin!"}, {"post_id": 24876, "ts": "2026-07-08T18:42:54Z", "hours": 0.7294, "text": "ForestOS devlog #1 World, greetings to you! LaupiOS is from the past. Now I renamed it ForestOS and and I will focus on a forest theme. And I redesigned the welcome screen (hopefully the last time). And I will now post hopefully more devlogs because I have summer holidays now. Anyways that was it for this devlog. Bye, twin!"}, {"post_id": 23091, "ts": "2026-07-05T20:35:57Z", "hours": 3.6433, "text": "LaupiOS devlog #4 World, greetings to you! I added a new app: Nutnotes! There I will write something and currently there is a welcome note and a futures plans note. I also changed the theme more and I think, I’ll might change the name and the theme of this project and I made it so the window you tapped last is on top. And I improved my code more. That was everything. Bye, twin!"}, {"post_id": 19394, "ts": "2026-06-30T18:18:56Z", "hours": 2.8181, "text": "LaupiOS devlog #3 World, greetings to you! I’ve got my mouse back and worked on LaupiOS. I changed the theme so it is a forest/green theme now, you can now close and open the windows and I changed a lot in my code so it’s more readable and I understand it halfway. That was it for tody. Have a good day!"}, {"post_id": 17102, "ts": "2026-06-27T19:29:04Z", "hours": 1.9111, "text": "LaupiOS devlog #2 World, greeting to you! I’ve lost my mouse today, but I also worked on LaupiOS. Here’s what I added: -a live Wallpaper -a Taskbar (a bit buggy tbh) -the site is now a window -you can drag, rotate and close the window."}, {"post_id": 15676, "ts": "2026-06-25T14:17:38Z", "hours": 0.8622, "text": "LaupiOS devlog #1 World, greetings to you! I wanted to make LaupiOS (I know very creative Name) but I have just made games so I thougth this is the right time to learn html. So I’ve learned the basics first and made a simple Website."}]...
|
Title: ForestOS by @laupi_oida | Stardance
Devlog Title: ForestOS by @laupi_oida | Stardance
Devlogs:
LaupiOS devlog #1 World, greetings to you! I wanted to make LaupiOS (I know very creative Name) but I have just made games so I thougth this is the right time to learn html. So I’ve learned the basics first and made a simple Website.
LaupiOS devlog #2 World, greeting to you! I’ve lost my mouse today, but I also worked on LaupiOS. Here’s what I added: -a live Wallpaper -a Taskbar (a bit buggy tbh) -the site is now a window -you can drag, rotate and close the window.
LaupiOS devlog #3 World, greetings to you! I’ve got my mouse back and worked on LaupiOS. I changed the theme so it is a forest/green theme now, you can now close and open the windows and I changed a lot in my code so it’s more readable and I understand it halfway. That was it for tody. Have a good day!
LaupiOS devlog #4 World, greetings to you! I added a new app: Nutnotes! There I will write something and currently there is a welcome note and a futures plans note. I also changed the theme more and I think, I’ll might change the name and the theme of this project and I made it so the window you tapped last is on top. And I improved my code more. That was everything. Bye, twin!
ForestOS devlog #1 World, greetings to you! LaupiOS is from the past. Now I renamed it ForestOS and and I will focus on a forest theme. And I redesigned the welcome screen (hopefully the last time). And I will now post hopefully more devlogs because I have summer holidays now. Anyways that was it for this devlog. Bye, twin!
ForestOS devlog #2 World, greetings to you! ForestOS 1.0 is now out. And the best part: you can test it. Just click here: https://laup0403.github.io/ForestOS/ I hope you will test it and find the Easteregg I implemented. And I also added a new App: the Tincan Phone. Now you can hear your favorite animals! (What a blessing) and you can also call the Callcenter. (for my german friends) That was it for this Update and I would really enjoy, if you would try my site. Have a very excellent day, Twin!
ForestOS devlog #3 World, greetings to you! You know, I’m kind of a Linux Larper and of course I need a terminal. So I made one: ForestBreaker! There are some commands that the ForestOS Github Repo available, like forestfetch (the ultimate larper command). That was it for this devlog. Bye, Twin!
ForestOS devlog #4 Big News: ForestOS will now get story! Yesterday I wanted to make a forest themed game for ForestOS, but then I got the wonderful Idea, to make ForestOS to a game. I’ve never saw something like this and I think it could be pretty fun. So I made some plans and already and changed the style and made it a bit darker. That was it for now and sorry, if my english was bad. Have a good day Twin✌️
ForestOS devlog #5 I made it so, that at first you have just the welcome window and you must unlock other windows. The first window you unlock is the notes app and you unlock it if you press The big red button And i changed the notes content. Bye Twin!
ForestOS devlog #6 Hello, Moin and Grüezi! I haven’t posted a devlog in 12 days because I was busy or something. Spoiler Warning! But: We have our first enemie: The ram eater! He is completely buggy and you couldn’t see him in the video but I will fix that. And first I added some story to the notes, programmed a Files app, but I currently don’t have a name for it and I added some terminal commands and a crazy Jumpscare. Try it out now or later or never :( So that was a pretty messy devlog and update but anyways, bye Twin!
Ships:
I made an WebOS themed around the forest. I really liked how the style turned out at the end and I’m really proud of my code because it’s very clean (I think)....
|
1793886525.3134303
|
1793972925.3134303
|
|
53815
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793886524.4580252
|
1794750524.4580252
|
|
42664
|
My own site! by @overstitch | Stardance
|
overstitch
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @overstitch | Stardance
|
1793886523.3964503
|
1794491323.3964503
|
|
53813
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793886520.819114
|
1794750520.819114
|
|
42663
|
Open Formula MFD by @jessx | Stardance
|
jessx
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Open Formula MFD by @jessx | Stardance
|
1793886515.8014605
|
1794491315.8014605
|
|
53800
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793886514.9406972
|
1794750514.9406972
|
|
40964
|
My very own WebOS by @nathkirkgamer01 | Stardance
|
nathkirkgamer01
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-10T21:42:40Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I make an Os which was my first project and involved simple coding skills.", "repo": "https://github.com/nathkirkgamer01/duck-club", "demo": "https://app.netlify.com/projects/neon-froyo-dabd63/overview"}]...
|
[{"post_id": 44173, "ts": "202 [{"post_id": 44173, "ts": "2026-08-09T19:11:05Z", "hours": 0.5186, "text": "i am working on making my very own webOS which is my first ever project"}]...
|
Title: My very own WebOS by @nathkirkgamer01 | Sta Title: My very own WebOS by @nathkirkgamer01 | Stardance
Devlogs:
i am working on making my very own webOS which is my first ever project
Ships:
I make an Os which was my first project and involved simple coding skills....
|
1793886512.4748375
|
1793972912.4748375
|
|
42662
|
Untitled project by @mysticsenpai6699 | Stardance
|
mysticsenpai6699
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @mysticsenpai6699 | Sta Title: Untitled project by @mysticsenpai6699 | Stardance...
|
1793886510.2834206
|
1794491310.2834206
|
|
45377
|
Matrix Disply by @dheeraskanda | Stardance
|
dheeraskanda
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Matrix Disply by @dheeraskanda | Stardance
|
1793886509.3362215
|
1794750509.3362215
|
|
42661
|
Untitled project by @Hasan_Hokroh | Stardance
|
Hasan_Hokroh
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @Hasan_Hokroh | Stardan Title: Untitled project by @Hasan_Hokroh | Stardance...
|
1793886508.4587579
|
1794491308.4587579
|
|
26904
|
Serene Seasons Gen Fix by @Fiskerz | Stardance
|
Fiskerz
|
2
|
13.0
|
93
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-17T12:17:04Z", "hours": 10.0, "multiplier": 6.94, "payout": 71, "blessing": "neutral", "text": "What the hell am I looking at? If you’re asking that, well I am here to explain that. This is a Minecraft mod that aims to fix one known issue for the 1.21.x versions of the game. Technical overview The vanilla issue has already been covered by a mod named WorldGenFeatureFix, but if you install the serene seasons mod and try loading a few dozen chunks the server is likely to crash, even with the fixing mod present. This is beacause serene seasons skip the fixed chunk of code and go straight for the vanilla broken one. If you want a bit more detail on this issue, be sure to check out the github repo. What does this ship even add? As you might have noticed, this is a second ship of the mod. The main reason why I even extended on the original is beacause the issue has been reported even outside neoforge, the mod loader I originally made the mod for. Thus this ship adds support for Forge and Fabric loader, covering a slightly larger section of people Where can I get this mod? I have published all of the new versions of the mod to CurseForge and Modrinth , so you choose where you want to obtain it. How can I try this out for myself? Well this is the only part of this project that takes a bit of a toll on it. You see, because the mod fixes such a specific and rather rare issue there is not a very reliable and most importantly simple way to fully test it. I really, really wanted to make a comparison video to be able to show it to you atleast on the video, but guess what? Now that I want the server to crash it doesn’t :| No jokes, but I spent almost 6 hours just trying to catch that crash and it just refused to. So sorry, but you will have to test it the old way . The old way to test Make a world, or set-up a minecraft server for any of the compatible versions (most common crashes occur on Neoforge) and install the mod, alongside: Serene seasons (and its dependencies), WorldGenFeatureFix and to make the crash more likely to happen, add any world generation mod. And now observe no crashes at all. I know this is a very complicated way to test, but there’s just not a way to do it simpler.", "repo": "https://github.com/Catmaster543/Serene-Seasons-Gen-Fix", "demo": "https://www.curseforge.com/minecraft/mc-mods/serene-seasons-gen-fix"}, {"ship_num": 2, "ts": "2026-06-27T21:53:14Z", "hours": 3.0, "multiplier": 7.11, "payout": 22, "blessing": "neutral", "text": "I made a minecraft mod that has one purpose - fix an issue where modded servers crash due to a known problematic method that serene seasons uses. I took on this project because I saw nobody else doing anything about it, or keeping their solutions only to themselves. It was a whole new experience for me, as I’ve never made a minecraft mod, so I had to learn most of the things the hard way. I’m proud that it took me a pretty small amount of time to make it and also that I even finished it. To truly test this mod I reccomend making a 1.21.1 neoforge server with serene seasons present, some world generation mod like tectonic and using chunky to generate a few hundred chunks. Sure, not the easiest setup, but the project’s main focus is to fix a moreover niche issue.", "repo": "https://github.com/Catmaster543/Serene-Seasons-Gen-Fix", "demo": "https://www.curseforge.com/minecraft/mc-mods/serene-seasons-gen-fix"}]...
|
[{"post_id": 48841, "ts": "202 [{"post_id": 48841, "ts": "2026-08-17T12:00:22Z", "hours": 1.5403, "text": "Tried to catch the crash live, yet failed.. (again) I tried to catch the crash live for a comparison video to make the rating a teeny tiny bit easier, but I failed for like the fifth time, it now just does not crash. Funny enough when you need it the least it will of course crash, but it is, what it is… Now to prove that I am not going insane or smth I still have the old logs, that very clearly show the crash, such as the one I inserted in, but I can’t figure out just why it won’t happen again now that I actually do want it to crash."}, {"post_id": 48782, "ts": "2026-08-17T10:00:59Z", "hours": 8.6372, "text": "Ported the fix to Forge and Fabric! Devlog #4 I did not expect to make any sort of update to this patch mod, yet I found out forge (and possibly fabric too) suffer from the issue. Thus it felt right to make the versions available as well, so that no one has to make it instead of me. I made sure to publish the versions to CurseForge and Modrinth as before and I made a tiny change to the github repo on my way too. The reason for this ridiculously high time logged (the project itself took initially just 3 hours) is because I wanted to make a comparison video to make the project rating atleast a little easier. To my absolute unfortune I got unlucky (almost every seed will have the issue-causing chunk somewhere, but sometimes it is furhter then other times) with three seeds in a row and it takes ages to generate the chunks in worlds, during which I had to just sit back and watch as they slowly load. Thus I’m sorry for not making it easier to rate, but I’ll cook my pc alive if I keep on loading more chunks."}, {"post_id": 17177, "ts": "2026-06-27T21:40:32Z", "hours": 0.3386, "text": "So I just added logging whenever the mod is used.. maybe not the best idea ever, but hey, if you ever need to know for whatever reason that the mod works here you go."}, {"post_id": 17142, "ts": "2026-06-27T20:32:43Z", "hours": 0.8408, "text": "I just re-designed the old icon for the mod, now looking way cleaner and sharper. It is now a part of the mod as its main icon."}, {"post_id": 16842, "ts": "2026-06-27T10:47:51Z", "hours": 1.8572, "text": "Yay, the mod seems to be doing a good job at preventing the crashes, even after generating 142k+ chunks, not a single crash happened!"}]...
|
Title: Serene Seasons Gen Fix by @Fiskerz | Starda Title: Serene Seasons Gen Fix by @Fiskerz | Stardance
Devlogs:
Yay, the mod seems to be doing a good job at preventing the crashes, even after generating 142k+ chunks, not a single crash happened!
I just re-designed the old icon for the mod, now looking way cleaner and sharper. It is now a part of the mod as its main icon.
So I just added logging whenever the mod is used.. maybe not the best idea ever, but hey, if you ever need to know for whatever reason that the mod works here you go.
Ported the fix to Forge and Fabric! Devlog #4 I did not expect to make any sort of update to this patch mod, yet I found out forge (and possibly fabric too) suffer from the issue. Thus it felt right to make the versions available as well, so that no one has to make it instead of me. I made sure to publish the versions to CurseForge and Modrinth as before and I made a tiny change to the github repo on my way too. The reason for this ridiculously high time logged (the project itself took initially just 3 hours) is because I wanted to make a comparison video to make the project rating atleast a little easier. To my absolute unfortune I got unlucky (almost every seed will have the issue-causing chunk somewhere, but sometimes it is furhter then other times) with three seeds in a row and it takes ages to generate the chunks in worlds, during which I had to just sit back and watch as they slowly load. Thus I’m sorry for not making it easier to rate, but I’ll cook my pc alive if I keep on loading more chunks.
Tried to catch the crash live, yet failed.. (again) I tried to catch the crash live for a comparison video to make the rating a teeny tiny bit easier, but I failed for like the fifth time, it now just does not crash. Funny enough when you need it the least it will of course crash, but it is, what it is… Now to prove that I am not going insane or smth I still have the old logs, that very clearly show the crash, such as the one I inserted in, but I can’t figure out just why it won’t happen again now that I actually do want it to crash.
Ships:
I made a minecraft mod that has one purpose - fix an issue where modded servers crash due to a known problematic method that serene seasons uses. I took on this project because I saw nobody else doing anything about it, or keeping their solutions only to themselves. It was a whole new experience for me, as I’ve never made a minecraft mod, so I had to learn most of the things the hard way. I’m proud that it took me a pretty small amount of time to make it and also that I even finished it. To truly test this mod I reccomend making a 1.21.1 neoforge server with serene seasons present, some world generation mod like tectonic and using chunky to generate a few hundred chunks. Sure, not the easiest setup, but the project’s main focus is to fix a moreover niche issue.
What the hell am I looking at? If you’re asking that, well I am here to explain that. This is a Minecraft mod that aims to fix one known issue for the 1.21.x versions of the game. Technical overview The vanilla issue has already been covered by a mod named WorldGenFeatureFix, but if you install the serene seasons mod and try loading a few dozen chunks the server is likely to crash, even with the fixing mod present. This is beacause serene seasons skip the fixed chunk of code and go straight for the vanilla broken one. If you want a bit more detail on this issue, be sure to check out the github repo. What does this ship even add? As you might have noticed, this is a second ship of the mod. The main reason why I even extended on the original is beacause the issue has been reported even outside neoforge, the mod loader I originally made the mod for. Thus this ship adds support for Forge and Fabric loader, covering a slightly larger section of people Where can I get this mod? I have published all of the new versions of the mod to CurseForge and Modrinth , so you choose where you want to obtain it. How can I try this out for myself? Well this is the only part of this project that takes a bit of a toll on it. You see, because the mod fixes such a specific and rather rare issue there is not a very reliable and most importantly simple way to fully test it. I really, really wanted to make a comparison video to be able to show it to you atleast on the video, but guess what? Now that I want the server to crash it doesn’t :| No jokes, but I spent almost 6 hours just trying to catch that crash and it just refused to. So sorry, but you will have to test it the old way . The old way to test Make a world, or set-up a minecraft server for any of the compatible versions (most common crashes occur on Neoforge) and install the mod, alongside: Serene seasons (and its dependencies), WorldGenFeatureFix and to make the crash more likely to happen, add any world generation mod. And now observe no crashes at all. I know this is a very complicated way to test, but there’s just not a way to do it simpler....
|
1793886507.2767322
|
1793972907.2767322
|
|
41734
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793886506.3814838
|
1794750506.3814838
|
|
42660
|
Line follower bot! by @Itox1c | Stardance
|
Itox1c
|
0
|
1.12
|
0
|
[]
|
[{"post_id": 39823, "ts": "202 [{"post_id": 39823, "ts": "2026-08-03T02:19:16Z", "hours": 1.1167, "text": "Fixing the code, while preparing for exam 😃✨"}]...
|
Title: Line follower bot! by @Itox1c | Stardance
Title: Line follower bot! by @Itox1c | Stardance
Devlogs:
Fixing the code, while preparing for exam 😃✨...
|
1793886505.4879916
|
1794491305.4879916
|
|
45362
|
My awesome macropad! by @raviharaj2008 | Stardance
|
raviharaj2008
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @raviharaj2008 | St Title: My awesome macropad! by @raviharaj2008 | Stardance...
|
1793886504.64217
|
1794750504.64217
|
|
42659
|
My awesome macropad! by @nielsaur | Stardance
|
nielsaur
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @nielsaur | Stardan Title: My awesome macropad! by @nielsaur | Stardance...
|
1793886503.74283
|
1794491303.74283
|
|
41711
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793886502.8765776
|
1794750502.8765776
|
|
22729
|
PiMusic by @Studented | Stardance
|
Studented
|
1
|
3.3
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-20T01:00:08Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "fixed bugs (that I can see right now) ready for deployment (read past devlog to see work done and the github)", "repo": "https://github.com/Studented0/PiMusic", "demo": "https://pi-music-jade.vercel.app"}]...
|
[{"post_id": 18920, "ts": "202 [{"post_id": 18920, "ts": "2026-06-30T03:08:40Z", "hours": 0.2975, "text": "Did some bugfixes, mostly involved with NETWORK_BUFFER errors. only a temp solution for now"}, {"post_id": 12262, "ts": "2026-06-20T00:57:33Z", "hours": 2.6944, "text": "Added lyric matching and search/playlist tools. basically fully standalone from spotify now (I use it without ever touching the Spotify app)"}]...
|
Title: PiMusic by @Studented | Stardance
Devlogs: Title: PiMusic by @Studented | Stardance
Devlogs:
Added lyric matching and search/playlist tools. basically fully standalone from spotify now (I use it without ever touching the Spotify app)
Did some bugfixes, mostly involved with NETWORK_BUFFER errors. only a temp solution for now
Ships:
fixed bugs (that I can see right now) ready for deployment (read past devlog to see work done and the github)...
|
1793886501.6762984
|
1793972901.6762984
|
|
41710
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793886500.827944
|
1794750500.827944
|
|
42656
|
My awesome macropad! by @mateolicoo9 | Stardance
|
mateolicoo9
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @mateolicoo9 | Star Title: My awesome macropad! by @mateolicoo9 | Stardance...
|
1793886499.9338098
|
1794491299.9338098
|
|
41706
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793886499.0678174
|
1794750499.0678174
|
|
8187
|
Macropad by @zsm1 | Stardance
|
zsm1
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-09T22:47:09Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What I made I designed and built a custom mechanical macropad from the ground up using KiCad, Fusion 360, and custom firmware. The macropad features: 3×3 mechanical key matrix Rotary encoder for volume or other controls OLED display for status information 20 addressable RGB LEDs for underglow lighting Seeed Studio XIAO RP2040 microcontroller Custom PCB and enclosure The project combines electronics design, PCB layout, CAD modeling, and embedded programming into a single project! What I am most proud of I am proud that every major part of the device was custom designed rather than assembled from an existing kit. Seeing the schematic, PCB, enclosure, and firmware come together into a complete product was the most rewarding part of the project. This required me to learn electronic schematic design, PCB routing, CAD modeling, firmware development, aswell as designing for manufacturing (3d printing). Testing Currently this is only designed, not built yet. This post is for approval of the parts. However, it still represents a milestone of having fully designed all the aspects of this macropad! For now, there is no demo video available but the github contains renderings, firmware, and pcb schematics; everything you need to build it yourself.", "repo": "https://github.com/ZSmaster1/macropad", "demo": ""}]...
|
[{"post_id": 5935, "ts": "2026 [{"post_id": 5935, "ts": "2026-06-09T22:22:35Z", "hours": 0.6625, "text": "Completed the hackpad guide! I was going to use QMK but KMK seemed easier to use initally since I dont actually have the physical macropad yet. I also compiled everything onto a github repository for submission. https://github.com/ZSmaster1/macropad"}, {"post_id": 5292, "ts": "2026-06-09T00:44:40Z", "hours": 1.465, "text": "Finished designing the enclosure for the macropad in Fusion 360. To make sure everything fit correctly, I exported the PCB directly from KiCad and imported it into the CAD assembly as a reference. This made it much easier to design around the actual hardware instead of guessing dimensions, as well as aligning the gap on the bottom for the underglow effect. I found models for the switches, rotary encoder, OLED display, and Seeed Studio XIAO on GrabCAD, which ended up saving a lot of time. Having the real component geometry available meant I could check clearances, mounting positions, and connector access. I can finally see the macropad come together! The electronics, PCB, and enclosure all exist together in one assembly, now I just have to write the firmware which I am leaning towards using QMK due to its customization. Any feedback is appreciated!"}, {"post_id": 3940, "ts": "2026-06-07T02:08:51Z", "hours": 1.9939, "text": "Finished the PCB layout and made some final schematic updates. While making the PCB I realized I didn’t have any decoupling capacitors, and since I’m using 20 addressable LEDs, changing them all at once might cause voltage drops and other unexpected issues so I added one 100nf capacitor per 2 LEDs. The PCB layout took longer than expected. I had to learn about vias, ground planes, and different constraints. Routing everything on the 2 layer board took a while and a lot of trace reroutes. Looking at the 3d model of the PCB I can see the macropad slowly coming together. The next step is to design the case around the PCB in Fusion 360."}, {"post_id": 3690, "ts": "2026-06-06T18:53:16Z", "hours": 1.7578, "text": "Finished designing the full macropad schematic in KiCad. The design includes a 3×3 key matrix, a Seeed Studio XIAO microcontroller, rotary encoder, OLED display, and a chain of addressable RGB LEDs for underglow. A surprising amount of time went into learning KiCad itself. Organizing the schematic onto the sheet took longer than expected since I had to learn about nets, labels, power flags, etc. Furthermore I also had to learn about symbols, footprints and the ERC. Next is the PCB where I’ll route the traces and define the physical layout of the board."}]...
|
Title: Macropad by @zsm1 | Stardance
Devlogs:
Fin Title: Macropad by @zsm1 | Stardance
Devlogs:
Finished designing the full macropad schematic in KiCad. The design includes a 3×3 key matrix, a Seeed Studio XIAO microcontroller, rotary encoder, OLED display, and a chain of addressable RGB LEDs for underglow. A surprising amount of time went into learning KiCad itself. Organizing the schematic onto the sheet took longer than expected since I had to learn about nets, labels, power flags, etc. Furthermore I also had to learn about symbols, footprints and the ERC. Next is the PCB where I’ll route the traces and define the physical layout of the board.
Finished the PCB layout and made some final schematic updates. While making the PCB I realized I didn’t have any decoupling capacitors, and since I’m using 20 addressable LEDs, changing them all at once might cause voltage drops and other unexpected issues so I added one 100nf capacitor per 2 LEDs. The PCB layout took longer than expected. I had to learn about vias, ground planes, and different constraints. Routing everything on the 2 layer board took a while and a lot of trace reroutes. Looking at the 3d model of the PCB I can see the macropad slowly coming together. The next step is to design the case around the PCB in Fusion 360.
Finished designing the enclosure for the macropad in Fusion 360. To make sure everything fit correctly, I exported the PCB directly from KiCad and imported it into the CAD assembly as a reference. This made it much easier to design around the actual hardware instead of guessing dimensions, as well as aligning the gap on the bottom for the underglow effect. I found models for the switches, rotary encoder, OLED display, and Seeed Studio XIAO on GrabCAD, which ended up saving a lot of time. Having the real component geometry available meant I could check clearances, mounting positions, and connector access. I can finally see the macropad come together! The electronics, PCB, and enclosure all exist together in one assembly, now I just have to write the firmware which I am leaning towards using QMK due to its customization. Any feedback is appreciated!
Completed the hackpad guide! I was going to use QMK but KMK seemed easier to use initally since I dont actually have the physical macropad yet. I also compiled everything onto a github repository for submission. https://github.com/ZSmaster1/macropad
Ships:
What I made I designed and built a custom mechanical macropad from the ground up using KiCad, Fusion 360, and custom firmware. The macropad features: 3×3 mechanical key matrix Rotary encoder for volume or other controls OLED display for status information 20 addressable RGB LEDs for underglow lighting Seeed Studio XIAO RP2040 microcontroller Custom PCB and enclosure The project combines electronics design, PCB layout, CAD modeling, and embedded programming into a single project! What I am most proud of I am proud that every major part of the device was custom designed rather than assembled from an existing kit. Seeing the schematic, PCB, enclosure, and firmware come together into a complete product was the most rewarding part of the project. This required me to learn electronic schematic design, PCB routing, CAD modeling, firmware development, aswell as designing for manufacturing (3d printing). Testing Currently this is only designed, not built yet. This post is for approval of the parts. However, it still represents a milestone of having fully designed all the aspects of this macropad! For now, there is no demo video available but the github contains renderings, firmware, and pcb schematics; everything you need to build it yourself....
|
1793886497.5563822
|
1793972897.5563822
|
|
42655
|
My very own WebOS by @Arxha4gel | Stardance
|
Arxha4gel
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Arxha4gel | Stardance
|
1793886496.6667075
|
1794491296.6667075
|
|
41705
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793886495.8073316
|
1794750495.8073316
|
|
42652
|
Ai grid by @galaxitorhop | Stardance
|
galaxitorhop
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Ai grid by @galaxitorhop | Stardance
|
1793886494.925523
|
1794491294.925523
|
|
41703
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793886494.0477548
|
1794750494.0477548
|
|
11367
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793886493.1803784
|
1794750493.1803784
|
|
30288
|
Legacy iOS Hub by @thenasaplusit | Stardance
|
thenasaplusit
|
1
|
7.0
|
17
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-06T21:10:31Z", "hours": 7.0, "multiplier": 2.56, "payout": 17, "blessing": "neutral", "text": "Well, that’s all the functionality I could think of now, folks! While I’m still miffed I couldn’t add any form of IPA installation (whether direct or via a download) due to GitHub Pages TLS being too new, I still think this will turn out to be a very helpful project for many. Not to mention it looks damn good with that JetBrains Mono font.", "repo": "https://github.com/Hacker-Anirudh/Legacy-iOS-Hub", "demo": "https://ios.sudothelinuxwizard.com"}]...
|
[{"post_id": 23736, "ts": "202 [{"post_id": 23736, "ts": "2026-07-06T21:08:34Z", "hours": 0.8297, "text": "It’s finally done!!!! To round it off, I added a short-ish list of my recommended “must-have” tweaks."}, {"post_id": 23565, "ts": "2026-07-06T16:32:06Z", "hours": 2.0828, "text": "My god, this was a mess… Basically, I tried to add a IPA downloader, but Git LFS was weird with links and didn’t work, so I removed LFS and the IPA. That completely broke the repo so I needed to jankily purge everything. So no, I don’t have much to show for the 2h, but I do have something, a huge QoL improvement: a back button!"}, {"post_id": 22101, "ts": "2026-07-04T11:37:59Z", "hours": 0.7539, "text": "I added a survey! Apparently you can just use a Google Form as your backend so you don’t need to make your own infrastructure (see my code)."}, {"post_id": 21647, "ts": "2026-07-03T18:24:30Z", "hours": 0.3417, "text": "So, I fixed the sizing issue (which was one line in the , makes you wonder why it isn’t on by default), removed the AI slop, and then, funnily enough, I had AI add all the ~160 needed thumbnails to make sure the wallpaper pages don’t slow to a crawl upon loading (I am NOT doing that by hand, sorry)"}, {"post_id": 21624, "ts": "2026-07-03T17:43:56Z", "hours": 0.3375, "text": "I deployed it, I thought I was pretty much done, but it’s all kinds of broken when actually deploying on mobile… Not to mention my AI assistant apparently decided to add random nonsense I never asked it to that broke legacy compatibility, so now I must fix all these annoying issues…"}, {"post_id": 21601, "ts": "2026-07-03T17:16:14Z", "hours": 2.2833, "text": "I haven’t tested it on an iOS device yet, but it’s turning out pretty well!"}]...
|
Title: Legacy iOS Hub by @thenasaplusit | Stardanc Title: Legacy iOS Hub by @thenasaplusit | Stardance
Devlogs:
I haven’t tested it on an iOS device yet, but it’s turning out pretty well!
I deployed it, I thought I was pretty much done, but it’s all kinds of broken when actually deploying on mobile… Not to mention my AI assistant apparently decided to add random nonsense I never asked it to that broke legacy compatibility, so now I must fix all these annoying issues…
So, I fixed the sizing issue (which was one line in the , makes you wonder why it isn’t on by default), removed the AI slop, and then, funnily enough, I had AI add all the ~160 needed thumbnails to make sure the wallpaper pages don’t slow to a crawl upon loading (I am NOT doing that by hand, sorry)
I added a survey! Apparently you can just use a Google Form as your backend so you don’t need to make your own infrastructure (see my code).
My god, this was a mess… Basically, I tried to add a IPA downloader, but Git LFS was weird with links and didn’t work, so I removed LFS and the IPA. That completely broke the repo so I needed to jankily purge everything. So no, I don’t have much to show for the 2h, but I do have something, a huge QoL improvement: a back button!
It’s finally done!!!! To round it off, I added a short-ish list of my recommended “must-have” tweaks.
Ships:
Well, that’s all the functionality I could think of now, folks! While I’m still miffed I couldn’t add any form of IPA installation (whether direct or via a download) due to GitHub Pages TLS being too new, I still think this will turn out to be a very helpful project for many. Not to mention it looks damn good with that JetBrains Mono font....
|
1793886491.9892936
|
1793972891.9892936
|
|
40128
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793886491.1414502
|
1794750491.1414502
|
|
37405
|
Frictionless by @Gyukkk | Stardance
|
Gyukkk
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @Gyukkk | Stardance
|
1793886490.2033157
|
1794491290.2033157
|
|
9213
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793886489.3326125
|
1794750489.3326125
|
|
32621
|
Like a whiteboard that teacher can control from ho Like a whiteboard that teacher can control from home by @sadev | Stardance...
|
sadev
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Like a whiteboard that teacher can control Title: Like a whiteboard that teacher can control from home by @sadev | Stardance...
|
1793886488.4687433
|
1794491288.4687433
|
|
20828
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793886487.6032898
|
1794750487.6032898
|
|
24434
|
3dprinted Flappy Bird Game by @colgation | Stardan 3dprinted Flappy Bird Game by @colgation | Stardance...
|
colgation
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: 3dprinted Flappy Bird Game by @colgation | Title: 3dprinted Flappy Bird Game by @colgation | Stardance...
|
1793886486.7278988
|
1794491286.7278988
|
|
10834
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793886483.7613227
|
1794750483.7613227
|
|
18260
|
Untitled by @PrestonJoel | Stardance
|
PrestonJoel
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @PrestonJoel | Stardance
|
1793886482.8624954
|
1794491282.8624954
|
|
11929
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793886481.9667864
|
1794750481.9667864
|
|
22393
|
Sentinel Radar by @r1ckyc4 | Stardance
|
r1ckyc4
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Sentinel Radar by @r1ckyc4 | Stardance
|
1793886481.0780816
|
1794491281.0780816
|
|
11925
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793886480.2068188
|
1794750480.2068188
|
|
22130
|
Frictionless by @hen | Stardance
|
hen
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @hen | Stardance
|
1793886479.313465
|
1794491279.313465
|
|
5400
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793886477.108117
|
1794750477.108117
|
|
4609
|
Chess Game by @excvrdoes | Stardance
|
excvrdoes
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Chess Game by @excvrdoes | Stardance
|
1793886474.9325693
|
1794491274.9325693
|
|
40610
|
Story of Alicia custom server change (12 player ro Story of Alicia custom server change (12 player rooms) by @CherryMG | Stardance...
|
CherryMG
|
0
|
17.71
|
0
|
[]
|
[{"post_id": 47847, "ts": "202 [{"post_id": 47847, "ts": "2026-08-16T02:18:12Z", "hours": 0.4981, "text": "I finally got new icons to work (sort of), it was absolute hell and somehow no time logged so yippee, 11 hours of work counts as 30 minutes. I need to fix some packet issues because the place numbers below 8 are sometimes not correct, for example a player can have the marker for 9th place permanently when between spots 9-12."}, {"post_id": 42599, "ts": "2026-08-07T12:47:58Z", "hours": 5.8289, "text": "Slowly turning this into an actual repo I’ve started slowly putting together a proper repository for the whole 12-player project. Up until now, a lot of the work has basically been spread across my local setup: modified server code, patched executables, launcher scripts, test-client setup, resource tools, backups, configs, and a bunch of other little things I ended up changing along the way. It works for me because I know where everything is, but obviously that’s not very useful if someone else ever wants to reproduce it. So the next goal is to gradually turn all of that into one repo that actually makes sense. I want it to eventually include the tools I used or modified, the 12-player server changes, the client patching/setup stuff, and proper instructions for getting everything running without having to recreate my increasingly cursed development folder from scratch. This is also important because I don’t really consider the project ready for approval by the Story of Alicia developers yet. Twelve players can already join the same room, start a race, synchronize with each other and actually finish it, which is honestly way further than where I started. The main annoying problem left is still making the transition from the race results back into a stable 12-player lobby completely reliable. Until that and the rest of the important pieces are finished, I’d rather keep treating this as an ongoing modding/reverse-engineering project instead of something polished and ready to merge. There will probably also be some slightly different versions of certain tools included with releases, since a few parts of my setup have been changed specifically for this project. Basically: less exciting reverse engineering this time, more slowly cleaning up the giant pile of things the reverse engineering created. Hopefully by the end of it, launching the 12-player setup won’t require being me and remembering why twelve different folders exist."}, {"post_id": 37598, "ts": "2026-07-30T13:10:56Z", "hours": 0.8156, "text": "I just wanted to quickly show a video showing how all 12 players synchronize properly between each other:) A huge feat of reverse engineering and caffeine addiction"}, {"post_id": 37561, "ts": "2026-07-30T11:44:04Z", "hours": 3.1375, "text": "#post 6 of 6 - current updates will be posted now The local automation and resource behavior are config/toggle controlled. The server is based on upstream 47fada2 while retaining the local 12-player work. The new editor is installed beside the existing tools. Launcher CLI 1.2 is installed. The July 7 full resource pack was compared, backed up, installed, and verified. Existing instances no longer get stuck on an old executable. Magic items are allocated using live race rank like the newer patch. The PostgreSQL dependency is local and clean server builds work again. Personalized eight-racer finish/result views build and run. The experimental client finish guard builds into per-instance executables. The post-result delete suppression experiment has a clean verification binary. What is still unresolved: A complete 12-player race does not yet return every client to the lobby safely. Limiting only the final score packet to eight entries did not work. Personalized finish/result visibility improved the behavior but did not eliminate the crash. The client finish-record guard got farther but exposed another failure during lobby cleanup. The post-result racer-delete suppression still needs a full 12-client runtime test. The newer July 26 E:\\soa\\res.pak has not yet been compared or installed. What I Learned The main lesson is that “support twelve players” is not one number. It is a chain of capacities and state transitions shared by the server, protocol, executable, resources, UI, and cleanup logic. Fixing room creation does not fix race creation. Fixing race creation does not fix the finish UI. Truncating a result list does not help if the client overflow happened ten seconds earlier when finish notifications arrived. The 12-instance setup has been the most useful tool in the whole project. It lets me test the exact full-room condition repeatedly, compare behavior between clients, and catch cases like only client02 surviving. It also lets me test separate changes across twelve isolated working directories without rebuilding or manually repairing every client. I also learned to keep every risky workaround reversible. That has saved a lot of time. I can switch between full and development resources, turn room automation off, disable rank weighting, remove the finish compatibility limit, disable post-result suppression, and regenerate clean per-instance executables without touching the base client. This is not finished yet, but the remaining bug is much narrower than where I started. Twelve players can get into the same room, start the same race, finish it, and reach the result sequence. The current work is focused specifically on the client’s transition from those results back into a stable twelve-player lobby."}, {"post_id": 36581, "ts": "2026-07-28T19:52:58Z", "hours": 0.5528, "text": "post 5 of 6 Broadcasting race result for room 1 with 8 packed score entries (10 total racers) That did not solve the crash. It reduced the final result rows, but every client had already received finish notifications for more racers than its UI seemed able to store. I then implemented a personalized finish view behind client_safe_finish_racer_limit: 8 . Each client receives at most eight visible racers, always including itself and the first finisher. The same visibility set is used for finish notifications and the final score list, so a client does not receive a final row for a racer it was never told had finished. The later logs proved this path was active: Broadcasting personalized race results for room 1 with at most 8 score entries (12 total racers) It still did not fully fix the client. It changed the failure and allowed the process to get farther, but clients continued resetting their connections around the result-to-lobby transition. Experimental Client Finish Guard Because the evidence continued to point at an eight-record client allocation, I added a reversible executable safety guard to the per-instance patcher. With $EnableFinishRecordOverflowGuard = $true , the launcher: Extends the executable text-section size to include a small code cave. Redirects the suspected finish-record creation function through that cave. Checks the client’s current finish-record count. Calls the original function for records zero through seven. Returns safely instead of constructing record nine or later. The base Alicia.exe remains untouched. Turning the toggle off restores the original per-instance binary on the next launch because the script always rebuilds instance executables from the clean base. This guard also did not finish the job. It got the clients farther into the post-race flow, which supports the theory that the client has an eight-record assumption, but the next test kicked or crashed most clients while returning to the lobby. The user-visible result was that the second client was the only one that did not crash in that run. The corresponding server log showed a personalized 8-of-12 result, followed later by many AcCmdUserRaceDeleteNotify packets and connection resets. That moved the suspected failure point from result-row creation to post-result cleanup. Current Post-Result Cleanup Experiment The newest server experiment is suppress_post_result_race_delete_notifications . When enabled, the server still sends racer-delete notifications for a disconnect during an active race, because remaining racers need that state update. After the race has returned to the waiting stage, however, it suppresses AcCmdUserRaceDeleteNotify and lets normal room-leave notifications perform lobby cleanup. I added this because the latest test reached the lobby transition before most clients failed, and the logs showed a burst of racer-delete packets as clients began leaving. The change is deliberately narrow and reversible through config. At the time of this devlog, this experiment has a successful clean verification build at build/post-result-delete-verify/alicia-server.exe , but it has not yet been proven by a full successful 12-client race. I am treating it as an active hypothesis, not a finished fix."}, {"post_id": 36520, "ts": "2026-07-28T18:04:08Z", "hours": 3.6636, "text": "post 4 of 6 144 bytes with SHA256 A04A2BB2D5E43D5D161023B3A82D7DC8D7735EBBA48069C1891F90BDBE37B1B2 . The backed-up previous executable has SHA256 C0D1FC4D1E4D465FE7797A8D857A79A7CDC52B1AFAEDE5D17E2913430500CD5F . This fixed the problem where I thought I was testing the new client while the twelve launch folders were silently running old binaries. July 27: Matching the New Magic-Item Allocation The next mismatch was magic-item assignment. The newer client behavior gives useful defensive or control items, such as Shield or Ice Wall, to the leader and reserves stronger catch-up items for lower positions. My local server still used one mostly global weighted pool, so first place could receive items that did not match the new patch. I added rank-weighted magic allocation to the server: The registry now loads per-rank weights from magic.yaml . Live race progress is stored on each racer. The server resolves a racer’s current rank when an item is requested. Ranks one through eight use their own configured buckets. Ranks nine through twelve intentionally reuse the rank-eight bucket. Lightning cannot roll for first place and stays a catch-up item. Shield and Ice Wall are favored at the front. Booster, Hot Rodding, buffs, attacks, and team-assistance items receive position-dependent weights. Invalid or missing critical variants are no longer selected. Debug logging records the chosen item type, racer, and calculated rank. rankWeighted: false restores the previous global pool. This work was committed as cb63e80 . It was needed because updating the client resources does not automatically update server-side item selection. The server is authoritative for what item a racer receives, so matching the new client design required a server implementation too. Fixing the Windows Build When I rebuilt after the update, libpqxx failed because it could not find libpq-fe.h . The old CMake file pointed to a PostgreSQL archive in a user Downloads directory, which was not a stable project dependency. I downloaded the PostgreSQL 18.4 Windows binaries into D:\\alicia modding\\dependencies\\postgresql\\pgsql and changed PostgreSQL_ROOT to use that workspace-relative SDK. CMake now resolves: Includes from dependencies/postgresql/pgsql/include libpq.lib from dependencies/postgresql/pgsql/lib I also made MSVC /MP optional through ALICIA_MSVC_MULTIPROCESSOR_COMPILATION . The verification build disables it, which avoids parallel compiler pressure while debugging and gives more predictable clean builds. Fresh verification builds produced: build/finish-guard-verify/alicia-server.exe build/post-result-delete-verify/alicia-server.exe This replaced the unreliable old incremental build path that had produced ZERO_CHECK access-denied problems and the missing PostgreSQL-header failure. The 12-Player Finish Crash Investigation The hardest issue has always been the transition after the first finisher’s countdown expires. The first logs showed that the race itself worked. Players joined, started, raced, finished or received DNF results, and the server handled AcCmdUserRaceFinal and AcCmdCRRaceResult . The clients crashed immediately before the result screen appeared. The server then logged connection resets because the client processes had already died. The log looked like the server was sending some packets many times, but most repeats were one broadcast being serialized once per connected client. With twelve recipients, chat notifications, finish notifications, result acknowledgements, leave notifications, and racer-delete notifications naturally appear repeatedly in the server log. The result packet was the strongest clue. A 12-player result notification was 1,016 bytes and contained only eight packed score entries while still declaring twelve total racers. The early compatibility attempt simply truncated the score list to eight:"}, {"post_id": 36338, "ts": "2026-07-28T12:05:22Z", "hours": 0.9297, "text": "post 3 of 6 The release archive did not include a replacement bridge executable, so the existing alicia-launcher-bridge.exe stayed unchanged and its backup has the same hash. July 8: Comparing and Installing the New Resource Pack The client update was not just an executable update. Alicia stores most game content in NPAK resource files, so I used the editor/libpak tooling to inspect the newer E:\\soa\\res.pak and compare it with the active pack. The comparison produced: 19,186 indexed assets in the old pack. 19,186 indexed assets in the new pack. 97 changed assets. 21 priority changes under UI, scripts, script source, and INI data. The priority list included: graphics/ui/refresh/result_timeattack_window.xml graphics/ui/refresh/rd_navigation_bar_window.xml graphics/ui/refresh/rd_navigation_desktop.xml graphics/ui/game/readyroom/icon_cancel.png script/capturescene.lua script_src/ai/body_sheep.lua other/ini/libconfig_c.dat I saved the old/new asset indexes, changed-asset reports, priority report, unpack logs, pack hashes, and client verification CSV files in res-compare-20260708-1559 . The July 7 source pack had these hashes: res.pak : 8EFA88EEF555A941792FF7739DE94E36459D3D12A258F08DD72AF32D0ADF63FA res.pak.001 : 1267921AF6AA21EAD6D0054A6FCA7D789DD8C8CA1FD8265087DDC16EDB3C18C0 I installed those files into the active game and root pack locations, then generated reports confirming all twelve instances used the intended packs and all six original executable patches had the correct bytes. I made resource switching explicit in Start-Client.ps1 with $UseFullPackedResources . When it is true , instances hard-link the full res.pak and res.pak.001 . When it is false , they use _modres.pak and remove res.pak.001 so a leftover second part cannot accidentally mix two resource layouts. This fixed an early reversible-switching bug. One important current detail is that E:\\soa\\res.pak changed again on July 26. It is now 995,659,281 bytes with SHA256 6A47C96395E16CAFB732A6516187FE807EA855CC33F5214F363E972F8725E60B . That is newer and different from the 995,600,812-byte pack currently installed. I have not claimed that newer July 26 pack is active; it still needs a fresh comparison and controlled installation. July 10 to July 12: Restoring the Known-Good Transition After the upstream update, I restored the known-good 12-player transition behavior instead of keeping newer post-result behavior that changed packet ordering. I removed finish-time room-master reassignment and the extra game-money update from RaceInstance::Stop() . Room-master reassignment remains handled when the current master actually leaves. I kept the simpler sequence of broadcasting results, setting the room back to waiting, and clearing ready states. The reason was compatibility: the older sequence had already allowed the 12-player setup to get through more of the race, while the newer extra notifications created another variable during the fragile result transition. I also moved local auto-fill to the safe point at the end of room entry and forced managed rooms to stay at twelve even when the stock UI tried to report eight. July 12: Fixing Old Executables in Existing Instances After updating the base client, I noticed the launched instances still behaved like the old version. The cause was simple but important: the original launcher copied Alicia.exe only when an instance did not already have one. Existing instances therefore kept stale executables forever. I backed up the previous executable under Story of Alicia/backups/pre-new-exe-20260712 , installed the newer base executable, and changed the launcher so every run derives the desired patched bytes from the current clean base executable. It compares the final SHA256 and replaces an instance executable whenever it is stale. The active base executable is 11,142,"}, {"post_id": 36101, "ts": "2026-07-27T23:41:55Z", "hours": 0.4106, "text": "post 2 out of 6 so normal per-address anti-abuse throttling would treat my test rig like one machine opening too many connections. The bypass applies only to loopback traffic, which keeps it appropriate for local testing. On the client side, I found and added six executable patches: Offset Patch Reason 0x00588742 75 to EB Bypass the single-instance mutex so twelve clients can run. 0x003776E3 7F 11 to EB 11 Bypass the first AddPlayerError crash path during race start. 0x00377BDE 7F 11 to EB 11 Bypass the second AddPlayerError crash path. 0x003B5022 limit 08 to 0C Raise the race creator’s player-list capacity to twelve. 0x003B507A limit 09 to 0D Raise the occupied-slot boundary to support twelve entries. 0x003B50BA limit 09 to 0D Raise the slot-assignment boundary to support twelve entries. These changes got twelve players much farther than a server-only limit increase. At this stage, twelve-player rooms could exist and the clients could enter and start races, but the complete post-race flow was not safe yet. July 7: Automating Full Test Rooms Manually clicking eleven clients into every new room was slowing down every test, so I added a reversible local room automation system to the server. The new local_test_rooms config contains: enabled - auto_fill_on_create auto_ready_on_join A tracked list of CherryMG (really it is test1 through 12) through CherryMG12 When a tracked account creates an eligible twelve-player test room, the server marks that room as managed, summons the other tracked online accounts into it, and automatically readies them as they enter. I restricted this to configured users and eligible local test rooms so it would not affect ordinary players or every room on the server. I originally triggered the auto-fill too early in the room-entry process. That could make client01 , the creator, crash while joining its own newly created room. I moved the auto-fill call until after the creator had received the complete room-entry response and existing users had received the join notification. I also protected the twelve-player count from the vanilla UI sending its normal eight-player room option, and prevented an occupied room from being shrunk below its current population. This is why all players now join as soon as one room is created: it turns one room-creation action into a repeatable full-load test. The feature can be reversed by setting local_test_rooms.enabled to false . July 8: Updating the Story of Alicia Repositories The project had moved ahead upstream, so I updated the local development environment instead of continuing to build on an increasingly old snapshot. Before changing anything, I created backups/update-20260708-152328 . That backup includes: A server branch named backup/cherry-test-before-upstream-47fada2-20260708-152328 . The previous server head. The active game directory. All twelve instance directories. multi-client . mod-launcher . The existing editor CLI assets. The launcher executables. The old res.pak and res.pak.001 files from both active locations. I moved the server work onto upstream Story-Of-Alicia/alicia-server commit 47fada238fd3cc8a0660b20867b08e68c1960652 . I preserved the local 12-player protocol, room, loopback, and automation changes on the upgrade/upstream-47fada2 branch instead of replacing them. I also cloned the new Story-Of-Alicia/alicia-editor repository into D:\\alicia modding\\alicia-editor . I kept alicia-editor-cli and alicia-web-editor intact because they serve different purposes and were already part of the workflow. For the launcher, I downloaded the stable alicia-launcher-cli 1.2 release and installed its CLI executable after backing up the previous one. The installed CLI hash matches the downloaded 1.2 binary."}, {"post_id": 36066, "ts": "2026-07-27T22:19:55Z", "hours": 1.8753, "text": "post 1 of 6 Alicia 12-Player Modding Devlog Development period covered: April 12, 2026 to July 27, 2026 Developer: CherryMakesGames Main goal: Make Alicia support real 12-player local races, keep the setup practical to test alone, update everything to the current Story of Alicia code and resources, and track down the client crash at the end of a race. Why I Started This I am 18, and this project turned into a much bigger reverse-engineering job than I expected. The original target sounded simple: raise an eight-player race to twelve players. In reality, the player limit existed in several different places at once. The server protocol had limits, the room code had limits, the race-start code had limits, the client executable had hard-coded limits, and the finish UI appeared to have its own eight-entry allocation. I also needed a way to test this by myself. Waiting for eleven other people after every small change would make debugging almost impossible, so I built a 12-client local test setup. It lets me reproduce a complete room whenever I want, test twelve separate accounts or client states at once, and see whether a change works for the host, ordinary players, finishers, DNFs, and late disconnects. It also makes repeated tests consistent instead of depending on different people joining each time. The most important rule throughout the project has been reversibility. The base game executable stays clean, experimental patches are applied only to per-instance copies, resource-pack switching is controlled by a toggle, server compatibility work is behind config options, and I made full backups before the upstream update. April 12: Building the Local Test Environment My first major step was creating a proper local client installation and committing the test setup in the Story of Alicia repository. I added: Twelve client folders, from instances/client01 through instances/client12 . One account entry per instance. Individual launchers for each client and a launcher for all twelve. A PowerShell launcher that creates and repairs each instance layout automatically. Separate writable log and _tmp directories for every client. Junctions and hard links for large shared game files so I did not need twelve complete copies of the whole installation. A 4x3 window grid so I can see all twelve clients on one monitor. An automatic Alt+Enter step to move clients out of fullscreen before tiling them. A dry-run mode for checking account paths, arguments, and instance layout without starting the game. A check that each configured local account has a matching server user record. The launcher starts development mode with -GameID 2 and supplies each account’s username and password. I documented the required 127.0.0.1 aliciadev hosts entry because the development client connects to that hostname. The reason each instance has its own Alicia.exe is that every copy needs binary patches, but I do not want to patch the clean base executable. On launch, the script reads the base executable, verifies the expected original bytes, applies the required modifications in memory, hashes the result, and writes only the instance copy. If the executable does not match the version the patch was designed for, the script stops instead of blindly corrupting it. April 12 to April 15: Raising the Race Limit The first server changes raised the protocol and room assumptions from ten or eight players to twelve.I changed AcCmdCREnterRoomOK and AcCmdCRStartRaceNotify so their racer lists accept up to twelve entries. I added validation that throws if the server tries to serialize more than twelve. I also changed room creation so Magic Team rooms resolve to twelve players instead of being clamped to eight. I added a special loopback exception to connection throttling. All twelve clients connect from 127.0.0.1 ,"}]...
|
Title: Story of Alicia custom server change (12 pl Title: Story of Alicia custom server change (12 player rooms) by @CherryMG | Stardance
Devlogs:
post 1 of 6 Alicia 12-Player Modding Devlog Development period covered: April 12, 2026 to July 27, 2026 Developer: CherryMakesGames Main goal: Make Alicia support real 12-player local races, keep the setup practical to test alone, update everything to the current Story of Alicia code and resources, and track down the client crash at the end of a race. Why I Started This I am 18, and this project turned into a much bigger reverse-engineering job than I expected. The original target sounded simple: raise an eight-player race to twelve players. In reality, the player limit existed in several different places at once. The server protocol had limits, the room code had limits, the race-start code had limits, the client executable had hard-coded limits, and the finish UI appeared to have its own eight-entry allocation. I also needed a way to test this by myself. Waiting for eleven other people after every small change would make debugging almost impossible, so I built a 12-client local test setup. It lets me reproduce a complete room whenever I want, test twelve separate accounts or client states at once, and see whether a change works for the host, ordinary players, finishers, DNFs, and late disconnects. It also makes repeated tests consistent instead of depending on different people joining each time. The most important rule throughout the project has been reversibility. The base game executable stays clean, experimental patches are applied only to per-instance copies, resource-pack switching is controlled by a toggle, server compatibility work is behind config options, and I made full backups before the upstream update. April 12: Building the Local Test Environment My first major step was creating a proper local client installation and committing the test setup in the Story of Alicia repository. I added: Twelve client folders, from instances/client01 through instances/client12 . One account entry per instance. Individual launchers for each client and a launcher for all twelve. A PowerShell launcher that creates and repairs each instance layout automatically. Separate writable log and _tmp directories for every client. Junctions and hard links for large shared game files so I did not need twelve complete copies of the whole installation. A 4x3 window grid so I can see all twelve clients on one monitor. An automatic Alt+Enter step to move clients out of fullscreen before tiling them. A dry-run mode for checking account paths, arguments, and instance layout without starting the game. A check that each configured local account has a matching server user record. The launcher starts development mode with -GameID 2 and supplies each account’s username and password. I documented the required 127.0.0.1 aliciadev hosts entry because the development client connects to that hostname. The reason each instance has its own Alicia.exe is that every copy needs binary patches, but I do not want to patch the clean base executable. On launch, the script reads the base executable, verifies the expected original bytes, applies the required modifications in memory, hashes the result, and writes only the instance copy. If the executable does not match the version the patch was designed for, the script stops instead of blindly corrupting it. April 12 to April 15: Raising the Race Limit The first server changes raised the protocol and room assumptions from ten or eight players to twelve.I changed AcCmdCREnterRoomOK and AcCmdCRStartRaceNotify so their racer lists accept up to twelve entries. I added validation that throws if the server tries to serialize more than twelve. I also changed room creation so Magic Team rooms resolve to twelve players instead of being clamped to eight. I added a special loopback exception to connection throttling. All twelve clients connect from 127.0.0.1 ,
post 2 out of 6 so normal per-address anti-abuse throttling would treat my test rig like one machine opening too many connections. The bypass applies only to loopback traffic, which keeps it appropriate for local testing. On the client side, I found and added six executable patches: Offset Patch Reason 0x00588742 75 to EB Bypass the single-instance mutex so twelve clients can run. 0x003776E3 7F 11 to EB 11 Bypass the first AddPlayerError crash path during race start. 0x00377BDE 7F 11 to EB 11 Bypass the second AddPlayerError crash path. 0x003B5022 limit 08 to 0C Raise the race creator’s player-list capacity to twelve. 0x003B507A limit 09 to 0D Raise the occupied-slot boundary to support twelve entries. 0x003B50BA limit 09 to 0D Raise the slot-assignment boundary to support twelve entries. These changes got twelve players much farther than a server-only limit increase. At this stage, twelve-player rooms could exist and the clients could enter and start races, but the complete post-race flow was not safe yet. July 7: Automating Full Test Rooms Manually clicking eleven clients into every new room was slowing down every test, so I added a reversible local room automation system to the server. The new local_test_rooms config contains: enabled - auto_fill_on_create auto_ready_on_join A tracked list of CherryMG (really it is test1 through 12) through CherryMG12 When a tracked account creates an eligible twelve-player test room, the server marks that room as managed, summons the other tracked online accounts into it, and automatically readies them as they enter. I restricted this to configured users and eligible local test rooms so it would not affect ordinary players or every room on the server. I originally triggered the auto-fill too early in the room-entry process. That could make client01 , the creator, crash while joining its own newly created room. I moved the auto-fill call until after the creator had received the complete room-entry response and existing users had received the join notification. I also protected the twelve-player count from the vanilla UI sending its normal eight-player room option, and prevented an occupied room from being shrunk below its current population. This is why all players now join as soon as one room is created: it turns one room-creation action into a repeatable full-load test. The feature can be reversed by setting local_test_rooms.enabled to false . July 8: Updating the Story of Alicia Repositories The project had moved ahead upstream, so I updated the local development environment instead of continuing to build on an increasingly old snapshot. Before changing anything, I created backups/update-20260708-152328 . That backup includes: A server branch named backup/cherry-test-before-upstream-47fada2-20260708-152328 . The previous server head. The active game directory. All twelve instance directories. multi-client . mod-launcher . The existing editor CLI assets. The launcher executables. The old res.pak and res.pak.001 files from both active locations. I moved the server work onto upstream Story-Of-Alicia/alicia-server commit 47fada238fd3cc8a0660b20867b08e68c1960652 . I preserved the local 12-player protocol, room, loopback, and automation changes on the upgrade/upstream-47fada2 branch instead of replacing them. I also cloned the new Story-Of-Alicia/alicia-editor repository into D:\alicia modding\alicia-editor . I kept alicia-editor-cli and alicia-web-editor intact because they serve different purposes and were already part of the workflow. For the launcher, I downloaded the stable alicia-launcher-cli 1.2 release and installed its CLI executable after backing up the previous one. The installed CLI hash matches the downloaded 1.2 binary.
post 3 of 6 The release archive did not include a replacement bridge executable, so the existing alicia-launcher-bridge.exe stayed unchanged and its backup has the same hash. July 8: Comparing and Installing the New Resource Pack The client update was not just an executable update. Alicia stores most game content in NPAK resource files, so I used the editor/libpak tooling to inspect the newer E:\soa\res.pak and compare it with the active pack. The comparison produced: 19,186 indexed assets in the old pack. 19,186 indexed assets in the new pack. 97 changed assets. 21 priority changes under UI, scripts, script source, and INI data. The priority list included: graphics/ui/refresh/result_timeattack_window.xml graphics/ui/refresh/rd_navigation_bar_window.xml graphics/ui/refresh/rd_navigation_desktop.xml graphics/ui/game/readyroom/icon_cancel.png script/capturescene.lua script_src/ai/body_sheep.lua other/ini/libconfig_c.dat I saved the old/new asset indexes, changed-asset reports, priority report, unpack logs, pack hashes, and client verification CSV files in res-compare-20260708-1559 . The July 7 source pack had these hashes: res.pak : 8EFA88EEF555A941792FF7739DE94E36459D3D12A258F08DD72AF32D0ADF63FA res.pak.001 : 1267921AF6AA21EAD6D0054A6FCA7D789DD8C8CA1FD8265087DDC16EDB3C18C0 I installed those files into the active game and root pack locations, then generated reports confirming all twelve instances used the intended packs and all six original executable patches had the correct bytes. I made resource switching explicit in Start-Client.ps1 with $UseFullPackedResources . When it is true , instances hard-link the full res.pak and res.pak.001 . When it is false , they use _modres.pak and remove res.pak.001 so a leftover second part cannot accidentally mix two resource layouts. This fixed an early reversible-switching bug. One important current detail is that E:\soa\res.pak changed again on July 26. It is now 995,659,281 bytes with SHA256 6A47C96395E16CAFB732A6516187FE807EA855CC33F5214F363E972F8725E60B . That is newer and different from the 995,600,812-byte pack currently installed. I have not claimed that newer July 26 pack is active; it still needs a fresh comparison and controlled installation. July 10 to July 12: Restoring the Known-Good Transition After the upstream update, I restored the known-good 12-player transition behavior instead of keeping newer post-result behavior that changed packet ordering. I removed finish-time room-master reassignment and the extra game-money update from RaceInstance::Stop() . Room-master reassignment remains handled when the current master actually leaves. I kept the simpler sequence of broadcasting results, setting the room back to waiting, and clearing ready states. The reason was compatibility: the older sequence had already allowed the 12-player setup to get through more of the race, while the newer extra notifications created another variable during the fragile result transition. I also moved local auto-fill to the safe point at the end of room entry and forced managed rooms to stay at twelve even when the stock UI tried to report eight. July 12: Fixing Old Executables in Existing Instances After updating the base client, I noticed the launched instances still behaved like the old version. The cause was simple but important: the original launcher copied Alicia.exe only when an instance did not already have one. Existing instances therefore kept stale executables forever. I backed up the previous executable under Story of Alicia/backups/pre-new-exe-20260712 , installed the newer base executable, and changed the launcher so every run derives the desired patched bytes from the current clean base executable. It compares the final SHA256 and replaces an instance executable whenever it is stale. The active base executable is 11,142,
post 4 of 6 144 bytes with SHA256 A04A2BB2D5E43D5D161023B3A82D7DC8D7735EBBA48069C1891F90BDBE37B1B2 . The backed-up previous executable has SHA256 C0D1FC4D1E4D465FE7797A8D857A79A7CDC52B1AFAEDE5D17E2913430500CD5F . This fixed the problem where I thought I was testing the new client while the twelve launch folders were silently running old binaries. July 27: Matching the New Magic-Item Allocation The next mismatch was magic-item assignment. The newer client behavior gives useful defensive or control items, such as Shield or Ice Wall, to the leader and reserves stronger catch-up items for lower positions. My local server still used one mostly global weighted pool, so first place could receive items that did not match the new patch. I added rank-weighted magic allocation to the server: The registry now loads per-rank weights from magic.yaml . Live race progress is stored on each racer. The server resolves a racer’s current rank when an item is requested. Ranks one through eight use their own configured buckets. Ranks nine through twelve intentionally reuse the rank-eight bucket. Lightning cannot roll for first place and stays a catch-up item. Shield and Ice Wall are favored at the front. Booster, Hot Rodding, buffs, attacks, and team-assistance items receive position-dependent weights. Invalid or missing critical variants are no longer selected. Debug logging records the chosen item type, racer, and calculated rank. rankWeighted: false restores the previous global pool. This work was committed as cb63e80 . It was needed because updating the client resources does not automatically update server-side item selection. The server is authoritative for what item a racer receives, so matching the new client design required a server implementation too. Fixing the Windows Build When I rebuilt after the update, libpqxx failed because it could not find libpq-fe.h . The old CMake file pointed to a PostgreSQL archive in a user Downloads directory, which was not a stable project dependency. I downloaded the PostgreSQL 18.4 Windows binaries into D:\alicia modding\dependencies\postgresql\pgsql and changed PostgreSQL_ROOT to use that workspace-relative SDK. CMake now resolves: Includes from dependencies/postgresql/pgsql/include libpq.lib from dependencies/postgresql/pgsql/lib I also made MSVC /MP optional through ALICIA_MSVC_MULTIPROCESSOR_COMPILATION . The verification build disables it, which avoids parallel compiler pressure while debugging and gives more predictable clean builds. Fresh verification builds produced: build/finish-guard-verify/alicia-server.exe build/post-result-delete-verify/alicia-server.exe This replaced the unreliable old incremental build path that had produced ZERO_CHECK access-denied problems and the missing PostgreSQL-header failure. The 12-Player Finish Crash Investigation The hardest issue has always been the transition after the first finisher’s countdown expires. The first logs showed that the race itself worked. Players joined, started, raced, finished or received DNF results, and the server handled AcCmdUserRaceFinal and AcCmdCRRaceResult . The clients crashed immediately before the result screen appeared. The server then logged connection resets because the client processes had already died. The log looked like the server was sending some packets many times, but most repeats were one broadcast being serialized once per connected client. With twelve recipients, chat notifications, finish notifications, result acknowledgements, leave notifications, and racer-delete notifications naturally appear repeatedly in the server log. The result packet was the strongest clue. A 12-player result notification was 1,016 bytes and contained only eight packed score entries while still declaring twelve total racers. The early compatibility attempt simply truncated the score list to eight:
post 5 of 6 Broadcasting race result for room 1 with 8 packed score entries (10 total racers) That did not solve the crash. It reduced the final result rows, but every client had already received finish notifications for more racers than its UI seemed able to store. I then implemented a personalized finish view behind client_safe_finish_racer_limit: 8 . Each client receives at most eight visible racers, always including itself and the first finisher. The same visibility set is used for finish notifications and the final score list, so a client does not receive a final row for a racer it was never told had finished. The later logs proved this path was active: Broadcasting personalized race results for room 1 with at most 8 score entries (12 total racers) It still did not fully fix the client. It changed the failure and allowed the process to get farther, but clients continued resetting their connections around the result-to-lobby transition. Experimental Client Finish Guard Because the evidence continued to point at an eight-record client allocation, I added a reversible executable safety guard to the per-instance patcher. With $EnableFinishRecordOverflowGuard = $true , the launcher: Extends the executable text-section size to include a small code cave. Redirects the suspected finish-record creation function through that cave. Checks the client’s current finish-record count. Calls the original function for records zero through seven. Returns safely instead of constructing record nine or later. The base Alicia.exe remains untouched. Turning the toggle off restores the original per-instance binary on the next launch because the script always rebuilds instance executables from the clean base. This guard also did not finish the job. It got the clients farther into the post-race flow, which supports the theory that the client has an eight-record assumption, but the next test kicked or crashed most clients while returning to the lobby. The user-visible result was that the second client was the only one that did not crash in that run. The corresponding server log showed a personalized 8-of-12 result, followed later by many AcCmdUserRaceDeleteNotify packets and connection resets. That moved the suspected failure point from result-row creation to post-result cleanup. Current Post-Result Cleanup Experiment The newest server experiment is suppress_post_result_race_delete_notifications . When enabled, the server still sends racer-delete notifications for a disconnect during an active race, because remaining racers need that state update. After the race has returned to the waiting stage, however, it suppresses AcCmdUserRaceDeleteNotify and lets normal room-leave notifications perform lobby cleanup. I added this because the latest test reached the lobby transition before most clients failed, and the logs showed a burst of racer-delete packets as clients began leaving. The change is deliberately narrow and reversible through config. At the time of this devlog, this experiment has a successful clean verification build at build/post-result-delete-verify/alicia-server.exe , but it has not yet been proven by a full successful 12-client race. I am treating it as an active hypothesis, not a finished fix.
#post 6 of 6 - current updates will be posted now The local automation and resource behavior are config/toggle controlled. The server is based on upstream 47fada2 while retaining the local 12-player work. The new editor is installed beside the existing tools. Launcher CLI 1.2 is installed. The July 7 full resource pack was compared, backed up, installed, and verified. Existing instances no longer get stuck on an old executable. Magic items are allocated using live race rank like the newer patch. The PostgreSQL dependency is local and clean server builds work again. Personalized eight-racer finish/result views build and run. The experimental client finish guard builds into per-instance executables. The post-result delete suppression experiment has a clean verification binary. What is still unresolved: A complete 12-player race does not yet return every client to the lobby safely. Limiting only the final score packet to eight entries did not work. Personalized finish/result visibility improved the behavior but did not eliminate the crash. The client finish-record guard got farther but exposed another failure during lobby cleanup. The post-result racer-delete suppression still needs a full 12-client runtime test. The newer July 26 E:\soa\res.pak has not yet been compared or installed. What I Learned The main lesson is that “support twelve players” is not one number. It is a chain of capacities and state transitions shared by the server, protocol, executable, resources, UI, and cleanup logic. Fixing room creation does not fix race creation. Fixing race creation does not fix the finish UI. Truncating a result list does not help if the client overflow happened ten seconds earlier when finish notifications arrived. The 12-instance setup has been the most useful tool in the whole project. It lets me test the exact full-room condition repeatedly, compare behavior between clients, and catch cases like only client02 surviving. It also lets me test separate changes across twelve isolated working directories without rebuilding or manually repairing every client. I also learned to keep every risky workaround reversible. That has saved a lot of time. I can switch between full and development resources, turn room automation off, disable rank weighting, remove the finish compatibility limit, disable post-result suppression, and regenerate clean per-instance executables without touching the base client. This is not finished yet, but the remaining bug is much narrower than where I started. Twelve players can get into the same room, start the same race, finish it, and reach the result sequence. The current work is focused specifically on the client’s transition from those results back into a stable twelve-player lobby.
I just wanted to quickly show a video showing how all 12 players synchronize properly between each other:) A huge feat of reverse engineering and caffeine addiction
Slowly turning this into an actual repo I’ve started slowly putting together a proper repository for the whole 12-player project. Up until now, a lot of the work has basically been spread across my local setup: modified server code, patched executables, launcher scripts, test-client setup, resource tools, backups, configs, and a bunch of other little things I ended up changing along the way. It works for me because I know where everything is, but obviously that’s not very useful if someone else ever wants to reproduce it. So the next goal is to gradually turn all of that into one repo that actually makes sense. I want it to eventually include the tools I used or modified, the 12-player server changes, the client patching/setup stuff, and proper instructions for getting everything running without having to recreate my increasingly cursed development folder from scratch. This is also important because I don’t really consider the project ready for approval by the Story of Alicia developers yet. Twelve players can already join the same room, start a race, synchronize with each other and actually finish it, which is honestly way further than where I started. The main annoying problem left is still making the transition from the race results back into a stable 12-player lobby completely reliable. Until that and the rest of the important pieces are finished, I’d rather keep treating this as an ongoing modding/reverse-engineering project instead of something polished and ready to merge. There will probably also be some slightly different versions of certain tools included with releases, since a few parts of my setup have been changed specifically for this project. Basically: less exciting reverse engineering this time, more slowly cleaning up the giant pile of things the reverse engineering created. Hopefully by the end of it, launching the 12-player setup won’t require being me and remembering why twelve different folders exist.
I finally got new icons to work (sort of), it was absolute hell and somehow no time logged so yippee, 11 hours of work counts as 30 minutes. I need to fix some packet issues because the place numbers below 8 are sometimes not correct, for example a player can have the marker for 9th place permanently when between spots 9-12....
|
1793886474.0797052
|
1794750474.0797052
|
|
12385
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793886473.2144396
|
1794750473.2144396
|
|
1824
|
MeBoard by @wyattcowan09 | Stardance
|
wyattcowan09
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: MeBoard by @wyattcowan09 | Stardance
|
1793886472.3350446
|
1794491272.3350446
|
|
26980
|
FlaskDM by @Alexcole | Stardance
|
Alexcole
|
0
|
20.49
|
0
|
[]
|
[{"post_id": 41595, "ts": "202 [{"post_id": 41595, "ts": "2026-08-05T21:51:10Z", "hours": 9.6697, "text": "messaging now works i have setup the messaging stuff with sockets. i haven’t setup a way to setup channels to message people but if added in the db file users 2 users can message per channel in the 2 test channels soon i will add a way to add more channels and set who to message in it via username once that is done i will fix the issues i have with the login errors and add the signup issues once that is done i can test then move onto setting up a demo site and have a user feed back form to get some ideas into what is needed ui needs an update for the messaging part to allow for logout and deleting of user sessions when the db is recreated as if not the user sessions that are alive allow for the user to keep interacting with the site with no account in the accounts db"}, {"post_id": 28319, "ts": "2026-07-14T14:32:39Z", "hours": 10.1703, "text": "Devlog 2 email support im working on adding email support so the user can use 2fa and do password resets. this system uses the gmail API to work and i have currently added getting the token from credentials file plus sending the signup code email. i need to implement it with the signup function soon. Signup currently doing the input sanitation for the signup function but had to post as i hit 10 hour limit on not posting. signup currently dosnt work but i have checked passwords and its requirements, username checking against database plus username will be checked against the signup database. Frontend i have worked on the design of the front end with adding a signup form and login form. since my first post the main chat ui has been worked on and improved. mobile has been attempted but i dont know how good it will look on every device, there is no mobile support on the chat ui as i might change it around soon. the chat ui is currently linked to the root of the website so that needs changing but signup and login pages can be access through the defined routes in main.py Database the database has taken me a bit of time to think about as i have design mostly what the finished site will need but still i keep changing it. there is a function that runs when the db_manage.py file is run that remakes all the tables if they are not there. Demo i will add a demo link when i get the account system working"}, {"post_id": 19942, "ts": "2026-07-01T12:02:25Z", "hours": 0.6522, "text": "Setting up the UI for all section of my messaging system. still needs some work but will be used for all messaging sections of the website"}]...
|
Title: FlaskDM by @Alexcole | Stardance
Devlogs:
Title: FlaskDM by @Alexcole | Stardance
Devlogs:
Setting up the UI for all section of my messaging system. still needs some work but will be used for all messaging sections of the website
Devlog 2 email support im working on adding email support so the user can use 2fa and do password resets. this system uses the gmail API to work and i have currently added getting the token from credentials file plus sending the signup code email. i need to implement it with the signup function soon. Signup currently doing the input sanitation for the signup function but had to post as i hit 10 hour limit on not posting. signup currently dosnt work but i have checked passwords and its requirements, username checking against database plus username will be checked against the signup database. Frontend i have worked on the design of the front end with adding a signup form and login form. since my first post the main chat ui has been worked on and improved. mobile has been attempted but i dont know how good it will look on every device, there is no mobile support on the chat ui as i might change it around soon. the chat ui is currently linked to the root of the website so that needs changing but signup and login pages can be access through the defined routes in main.py Database the database has taken me a bit of time to think about as i have design mostly what the finished site will need but still i keep changing it. there is a function that runs when the db_manage.py file is run that remakes all the tables if they are not there. Demo i will add a demo link when i get the account system working
messaging now works i have setup the messaging stuff with sockets. i haven’t setup a way to setup channels to message people but if added in the db file users 2 users can message per channel in the 2 test channels soon i will add a way to add more channels and set who to message in it via username once that is done i will fix the issues i have with the login errors and add the signup issues once that is done i can test then move onto setting up a demo site and have a user feed back form to get some ideas into what is needed ui needs an update for the messaging part to allow for logout and deleting of user sessions when the db is recreated as if not the user sessions that are alive allow for the user to keep interacting with the site with no account in the accounts db...
|
1793886471.2275167
|
1794491271.2275167
|
|
4398
|
Task Tracker by @Curious_Brain | Stardance
|
Curious_Brain
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Task Tracker by @Curious_Brain | Stardance
|
1793886470.34158
|
1794491270.34158
|