|
1151
|
My awesome macropad! by @ct02 | Stardance
|
ct02
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @ct02 | Stardance
|
1792583341.1148353
|
1793188141.1148353
|
|
1152
|
web by @abi | Stardance
|
abi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: web by @abi | Stardance
|
1792802868.8046467
|
1793407668.8046467
|
|
1153
|
RC Self-charging Car by @Addiballer | Stardance
|
Addiballer
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: RC Self-charging Car by @Addiballer | Stard Title: RC Self-charging Car by @Addiballer | Stardance...
|
1792594267.607573
|
1793199067.607573
|
|
1154
|
Untitled by @Fantamomo | Stardance
|
Fantamomo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Fantamomo | Stardance
|
1792569268.396155
|
1793174068.396155
|
|
1155
|
My awesome macropad! by @nose_1842 | Stardance
|
nose_1842
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @nose_1842 | Starda Title: My awesome macropad! by @nose_1842 | Stardance...
|
1792590688.0146534
|
1793195488.0146534
|
|
1156
|
My first slack bot! by @Fai | Stardance
|
Fai
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Fai | Stardance
|
1792594370.3768787
|
1793199170.3768787
|
|
1157
|
My first slack bot! by @Rehan | Stardance
|
Rehan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Rehan | Stardance
|
1792590567.6473618
|
1793195367.6473618
|
|
1158
|
The Martian by @ | Stardance
|
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: The Martian by @ | Stardance
|
1792540525.9378185
|
1793145325.9378185
|
|
1159
|
Special Relativity basic equation solver by @BlueT Special Relativity basic equation solver by @BlueTotem | Stardance...
|
BlueTotem
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Special Relativity basic equation solver by Title: Special Relativity basic equation solver by @BlueTotem | Stardance...
|
1792648364.4169586
|
1793253164.4169586
|
|
1160
|
Push A Slippery Sphere Colider :D by @Gabe | Stard Push A Slippery Sphere Colider :D by @Gabe | Stardance...
|
Gabe
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Push A Slippery Sphere Colider :D by @Gabe Title: Push A Slippery Sphere Colider :D by @Gabe | Stardance...
|
1792619491.169226
|
1793224291.169226
|
|
1161
|
My first slack bot! by @Anai | Stardance
|
Anai
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Anai | Stardance
|
1792795746.5812669
|
1793400546.5812669
|
|
1162
|
"Planetz: The Movie Scratch Movie" by @Mic "Planetz: The Movie Scratch Movie" by @MichaelTheMoonGuy | Stardance...
|
MichaelTheMoonGuy
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: "Planetz: The Movie Scratch Movie" Title: "Planetz: The Movie Scratch Movie" by @MichaelTheMoonGuy | Stardance...
|
1792550955.479408
|
1793155755.479408
|
|
1163
|
Test by @Dr_Fishface | Stardance
|
Dr_Fishface
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Test by @Dr_Fishface | Stardance
|
1792543664.9628408
|
1793148464.9628408
|
|
1164
|
Cliff side run club website by @CY3er | Stardance
|
CY3er
|
0
|
0.35
|
0
|
[]
|
[{"post_id": 356, "ts": "2026- [{"post_id": 356, "ts": "2026-06-01T17:48:09Z", "hours": 0.3469, "text": "Hello! this is my first dev log! rn im curently woking on the bass of the website, super simple so far just finding fonts and images that i like. this project will be a website for my aunts run club that she runs so it will be fun to work on!"}]...
|
Title: Cliff side run club website by @CY3er | Sta Title: Cliff side run club website by @CY3er | Stardance
Devlogs:
Hello! this is my first dev log! rn im curently woking on the bass of the website, super simple so far just finding fonts and images that i like. this project will be a website for my aunts run club that she runs so it will be fun to work on!...
|
1792526027.8778594
|
1793130827.8778594
|
|
1165
|
My awesome macropad! by @betterthanpavan | Stardan My awesome macropad! by @betterthanpavan | Stardance...
|
betterthanpavan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @betterthanpavan | Title: My awesome macropad! by @betterthanpavan | Stardance...
|
1792749194.568797
|
1793353994.568797
|
|
1166
|
My first slack bot! by @amarihobson55 | Stardance
|
amarihobson55
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @amarihobson55 | Sta Title: My first slack bot! by @amarihobson55 | Stardance...
|
1792630357.1160243
|
1793235157.1160243
|
|
1167
|
Untitled project by @Vinudhi | Stardance
|
Vinudhi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @Vinudhi | Stardance
|
1792702335.504592
|
1793307135.504592
|
|
1168
|
My awesome macropad! by @BisherAlmasri | Stardance
|
BisherAlmasri
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @BisherAlmasri | St Title: My awesome macropad! by @BisherAlmasri | Stardance...
|
1792777911.4172323
|
1793382711.4172323
|
|
1169
|
My awesome macropad! by @spy_govind | Stardance
|
spy_govind
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @spy_govind | Stard Title: My awesome macropad! by @spy_govind | Stardance...
|
1792767080.740583
|
1793371880.740583
|
|
1170
|
Azimuthal by @M8000 | Stardance
|
M8000
|
2
|
36.0
|
527
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-12T10:59:29Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Azimuthal - A satellite tracking webapp Trying to make this into my first professional website. The most difficult part was optimization and getting down loading/buffering times, followed by updating data automatically through API.", "repo": "https://github.com/abhijato-c/Azimuthal", "demo": "https://azimuthal.vercel.app/"}, {"ship_num": 2, "ts": "2026-07-13T12:15:27Z", "hours": 32.0, "multiplier": 16.56, "payout": 527, "blessing": "neutral", "text": "A satellite tracking website with features to filter, see location details, and see motion in real time. The most difficult part of the project was removing the lag, since tracking 18,000 satellites in real time is very computationally expensive", "repo": "https://github.com/abhijato-c/Azimuthal", "demo": "https://azimuthal.vercel.app/"}]...
|
[{"post_id": 79013, "ts": "202 [{"post_id": 79013, "ts": "2026-10-12T10:55:48Z", "hours": 0.34, "text": "Changes Fixed CRON job on vercel Added SEO optimizations through sitemaps, meta tags etc"}, {"post_id": 42559, "ts": "2026-08-07T11:42:50Z", "hours": 0.5564, "text": "Changes Limited max fast forward speed to 10x Limited max date range to 1 day back and forth from current time (TLE’s expire) Bugfix on interpolation not updating when timeline was scrubbed to a previous date. Next Update Try to reduce lag Faster updates"}, {"post_id": 41865, "ts": "2026-08-06T10:41:53Z", "hours": 0.6972, "text": "Changes Removed caching Space-Track cookie Added a GitHub repo badge Replaced .png Info and Menu icons with .svg files"}, {"post_id": 41260, "ts": "2026-08-05T11:19:45Z", "hours": 1.0658, "text": "Changes Added vercel speed analytics Fixed and muted some errors and warnings regarding npm packages Added a list of full launch site names, displayed instead of the code. Future Updates Add a github link/watermark (idk what it’s called) somewhere Fix issue where camera/satellites glitch when time is sped up (limit timeline, speed) Reduce loading times and lag"}, {"post_id": 40758, "ts": "2026-08-04T14:28:45Z", "hours": 1.0467, "text": "Changes Moved the countries list and country to launch site mapping from blob store to json file Added vercel analytics Details sidebar now shows full country name Next Updates Add json file of site names Show full site name in sidebar and search"}, {"post_id": 27637, "ts": "2026-07-13T12:13:07Z", "hours": 6.5639, "text": "Changes Fixed orbital calculations not auto updating Added interpolation Add location and position details in right sidebar Cleanup changes and minor refactor with the webworker."}, {"post_id": 16055, "ts": "2026-06-26T02:47:30Z", "hours": 1.7853, "text": "Fixes Cleaned up dead/burnt up satellites from db Minor fix in behavior of select all buttons Documented code, ts was seriously getting too complicated Major update - WebWorkers Managed to kinda deal with the lag by using WebWorkers. This means panning around the globe will be smoother, but in exchange, the satellite motions look framier as they are throttled."}, {"post_id": 15970, "ts": "2026-06-25T22:50:31Z", "hours": 1.7603, "text": "Changes Added satellite images for groups of satellites! There are now options to select and deselect all in the countries and sites menu. Searching by name now works. (literally forgot to implement this while working on filters) Images It’s impossible to individually get images for all 18,000 satellites, especially since most of them don’t have images or are classified. So here, I just used generic images for as many classes of satellites as possible. For example, all Starlink satellites have the same image, and all Russian COSMOS (military) satellites have a general depiction of the cosmos satellites. I tried to get the most accurate images for each group, but many are still artistic representations. All satellites not in any group fall back to a generic image Next step GET RID OF THE LAG! This has been pending for a long time, finally will work on it now."}, {"post_id": 15433, "ts": "2026-06-25T02:35:43Z", "hours": 2.73, "text": "Changes Changed map to MapTiler from Open Map Added tracking when you select a satellite. Camera automatically follows the satellite Tracking also shows the orbital trajectory in red Fixed a stupid bug where I added throttling to improve the performance, but that only reduce fps :/ Next Steps Add satellite images (idk how to do that for 18,000 satellites) Classify satellites and filter by category Color according to category"}, {"post_id": 14792, "ts": "2026-06-24T01:02:14Z", "hours": 1.3008, "text": "Created the right sidebar for details!"}, {"post_id": 12965, "ts": "2026-06-21T06:53:44Z", "hours": 1.2669, "text": "Made the list of satellites!"}, {"post_id": 9791, "ts": "2026-06-16T07:08:02Z", "hours": 2.1844, "text": "Updates Major CSS & color overhaul! Added the preview of the list of satellites returned by search, now need to make it dynamically added by js CSS and color designing is difficult, this update took quite a while… Next Make the list functional and clickable Show satellite details on click Trajectory tracking Try out the preview at nadir-space.vercel.app !"}, {"post_id": 8783, "ts": "2026-06-14T16:21:20Z", "hours": 1.7972, "text": "Finished the code to retrieve search results from the backend! Also filled in more sections of the sidebar. Next - show the search results in the scroll region, and handle search page flips."}, {"post_id": 8066, "ts": "2026-06-13T13:59:26Z", "hours": 1.0686, "text": "Added filters for launch site. Launch sites are populated automatically based on whichever countries are selected. Suggestions and improvements on GUI design are welcome! Next steps - Get the filtered satellites from the backend, and display them below the search filter on the sidebar as item boxes. Will also need to add trajectory tracking later."}, {"post_id": 7484, "ts": "2026-06-12T14:20:13Z", "hours": 1.6753, "text": "Working on some backend code for filtering satellite entries… This feature may take some time"}, {"post_id": 6905, "ts": "2026-06-11T16:06:27Z", "hours": 1.5061, "text": "Started work on the filter sidebar (suggestions on design improvements pls!!) Working with CSS is horrible, it takes me way too long to make a simple element fit properly.."}, {"post_id": 6242, "ts": "2026-06-10T14:21:04Z", "hours": 1.2944, "text": "Added the layouts for the search and info sidebar Next - populate the sidebars, first with the search function"}, {"post_id": 5612, "ts": "2026-06-09T14:03:39Z", "hours": 1.0925, "text": "Successfully rendered the satellites as moving dots! Now working on the GUI, including trajectory tracking, filtering, and loading screens."}, {"post_id": 4923, "ts": "2026-06-08T14:57:06Z", "hours": 1.115, "text": "Managed to write an API endpoint to retrieve satellite ID’s based on filters, will be used later in the frontend Next step - render the satellites as dots."}, {"post_id": 4079, "ts": "2026-06-07T08:35:10Z", "hours": 2.1633, "text": "Completed code to retrieve catalog of satellites, and store it in NeonDB! I might get banned from spacetrack bcz of the unholy number of API requests I fired for debugging…"}, {"post_id": 2757, "ts": "2026-06-05T15:12:05Z", "hours": 1.6494, "text": "It took me embarrassingly long to implement such a simple helper function! Finally though, I managed to be able to sign in to spacetrack, and store the session cookie provided in vercel blob storage. Most of my time went in debugging errors with blob storage, but now that I’ve learnt that, progress should be faster!"}, {"post_id": 303, "ts": "2026-06-01T15:43:25Z", "hours": 1.0647, "text": "Deployed the app on vercel, with a cesium js renderer!"}]...
|
Title: Azimuthal by @M8000 | Stardance
Devlogs:
D Title: Azimuthal by @M8000 | Stardance
Devlogs:
Deployed the app on vercel, with a cesium js renderer!
It took me embarrassingly long to implement such a simple helper function! Finally though, I managed to be able to sign in to spacetrack, and store the session cookie provided in vercel blob storage. Most of my time went in debugging errors with blob storage, but now that I’ve learnt that, progress should be faster!
Completed code to retrieve catalog of satellites, and store it in NeonDB! I might get banned from spacetrack bcz of the unholy number of API requests I fired for debugging…
Managed to write an API endpoint to retrieve satellite ID’s based on filters, will be used later in the frontend Next step - render the satellites as dots.
Successfully rendered the satellites as moving dots! Now working on the GUI, including trajectory tracking, filtering, and loading screens.
Added the layouts for the search and info sidebar Next - populate the sidebars, first with the search function
Started work on the filter sidebar (suggestions on design improvements pls!!) Working with CSS is horrible, it takes me way too long to make a simple element fit properly..
Working on some backend code for filtering satellite entries… This feature may take some time
Added filters for launch site. Launch sites are populated automatically based on whichever countries are selected. Suggestions and improvements on GUI design are welcome! Next steps - Get the filtered satellites from the backend, and display them below the search filter on the sidebar as item boxes. Will also need to add trajectory tracking later.
Finished the code to retrieve search results from the backend! Also filled in more sections of the sidebar. Next - show the search results in the scroll region, and handle search page flips.
Updates Major CSS & color overhaul! Added the preview of the list of satellites returned by search, now need to make it dynamically added by js CSS and color designing is difficult, this update took quite a while… Next Make the list functional and clickable Show satellite details on click Trajectory tracking Try out the preview at nadir-space.vercel.app !
Made the list of satellites!
Created the right sidebar for details!
Changes Changed map to MapTiler from Open Map Added tracking when you select a satellite. Camera automatically follows the satellite Tracking also shows the orbital trajectory in red Fixed a stupid bug where I added throttling to improve the performance, but that only reduce fps :/ Next Steps Add satellite images (idk how to do that for 18,000 satellites) Classify satellites and filter by category Color according to category
Changes Added satellite images for groups of satellites! There are now options to select and deselect all in the countries and sites menu. Searching by name now works. (literally forgot to implement this while working on filters) Images It’s impossible to individually get images for all 18,000 satellites, especially since most of them don’t have images or are classified. So here, I just used generic images for as many classes of satellites as possible. For example, all Starlink satellites have the same image, and all Russian COSMOS (military) satellites have a general depiction of the cosmos satellites. I tried to get the most accurate images for each group, but many are still artistic representations. All satellites not in any group fall back to a generic image Next step GET RID OF THE LAG! This has been pending for a long time, finally will work on it now.
Fixes Cleaned up dead/burnt up satellites from db Minor fix in behavior of select all buttons Documented code, ts was seriously getting too complicated Major update - WebWorkers Managed to kinda deal with the lag by using WebWorkers. This means panning around the globe will be smoother, but in exchange, the satellite motions look framier as they are throttled.
Changes Fixed orbital calculations not auto updating Added interpolation Add location and position details in right sidebar Cleanup changes and minor refactor with the webworker.
Changes Moved the countries list and country to launch site mapping from blob store to json file Added vercel analytics Details sidebar now shows full country name Next Updates Add json file of site names Show full site name in sidebar and search
Changes Added vercel speed analytics Fixed and muted some errors and warnings regarding npm packages Added a list of full launch site names, displayed instead of the code. Future Updates Add a github link/watermark (idk what it’s called) somewhere Fix issue where camera/satellites glitch when time is sped up (limit timeline, speed) Reduce loading times and lag
Changes Removed caching Space-Track cookie Added a GitHub repo badge Replaced .png Info and Menu icons with .svg files
Changes Limited max fast forward speed to 10x Limited max date range to 1 day back and forth from current time (TLE’s expire) Bugfix on interpolation not updating when timeline was scrubbed to a previous date. Next Update Try to reduce lag Faster updates
Changes Fixed CRON job on vercel Added SEO optimizations through sitemaps, meta tags etc
Ships:
A satellite tracking website with features to filter, see location details, and see motion in real time. The most difficult part of the project was removing the lag, since tracking 18,000 satellites in real time is very computationally expensive
Azimuthal - A satellite tracking webapp Trying to make this into my first professional website. The most difficult part was optimization and getting down loading/buffering times, followed by updating data automatically through API....
|
1792828202.7246244
|
1792914602.7246244
|
|
1171
|
roblox game ad by @az01pak | Stardance
|
az01pak
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: roblox game ad by @az01pak | Stardance
|
1792551159.695334
|
1793155959.695334
|
|
1172
|
Unity Motion Matching System by @NintedoAsh12 | St Unity Motion Matching System by @NintedoAsh12 | Stardance...
|
NintedoAsh12
|
0
|
140.12
|
0
|
[]
|
[{"post_id": 81951, "ts": "202 [{"post_id": 81951, "ts": "2026-10-23T04:55:45Z", "hours": 4.4681, "text": "I finished all the code comments. I know. WOW 4 HOURS OF CODE COMMENTS yeah but I was also cleaning some other parts of it up and fixing some of the indentations. anyways that’s done now only a few more things till we get to ship! but also a note to other devs like me… please comment your code while writing it because I have gotten in the habit of not doing that and as seeing here by 4 hours logged of code comments PLEASE JUST DO IT WHILE WRITING IT BECUASE THIS SUCKS"}, {"post_id": 81124, "ts": "2026-10-19T23:48:27Z", "hours": 3.2969, "text": "Not much changed I made an Itch.io for the demo. I also started adding comments to all of my code yeah its hard to remember what does what but I also got the dataset editor done or almost done. then its onto the matcher and then the trajectory maker then we are done there and then onto a tutorial of how to use it then we are done"}, {"post_id": 80294, "ts": "2026-10-17T05:11:06Z", "hours": 4.6256, "text": "OK its fixed now but first test build didn’t go so well (see video) the problem was unity wasn’t saving any of my data running in the background because it wasn’t serialized. I also organized project files plus removing unneeded scripts (I reuse code a lot and sometimes things get replaced and just left there) I also if you can’t tell from the video a dropped frame counter to show matches that where canceled because the current frame was good enough to meet the cost threshold. anyways I think now most of what I have to do it package everything up into… well a package then send it off into the world for you the hack clubbers to mess around with. EDIT: I added a demo for Windows to the github if you want to try it early"}, {"post_id": 79321, "ts": "2026-10-13T14:51:10Z", "hours": 2.2531, "text": "The demo UI has been finished and it works quite well! I have a few more things to add like a looping map so that the Character doesn’t just walk off the end of the world and die plus some more main menu stuff I think too. anyways progress has been fast so far so expect more soon!"}, {"post_id": 78971, "ts": "2026-10-12T06:56:58Z", "hours": 5.7781, "text": "LOTS OF DEBUG UI COMEING YOUR WAY! I have added lots of UI stuff to display internal values such as costs as stuff. I have also added the ability to adjust motion matching settings from in the demo so when I upload it to itch.io all of you can play with the system as much as you want and tell me how bad you broke it. to do wise its a bit more UI (some of it doesn’t work or I want it to look better) and then the data points kinda like the unity gizmo stuff I have been showing you here on star dance. anyways its like 1 AM I should have gone to bed HOURS AGO so I’mma go brush my teeth and work some more tomorrow…. my keyboard is starting to fail :-< Goodnight y’all. or good morning to the folk around the world like in Norway or something"}, {"post_id": 78190, "ts": "2026-10-09T22:29:56Z", "hours": 1.3486, "text": "I finally made a git hub repository. I also made a new unity project and moved everything into it to clean everything up for the demo I am starting to work on. I also made Bone Rotation matching but it doesn’t contribute all that match. I should be ready to ship/ Have a demo ready soon"}, {"post_id": 77746, "ts": "2026-10-08T04:44:35Z", "hours": 6.5831, "text": "OK OK IT WORKS ENOUGH OK DONT TOUCH IT I’m a fraud you guys. I couldn’t figure out the velocity thing so I…. I USED AI! I SWARE I HAVENT BEEN THIS ENTIRE TIME…. ok heres what happened I couldn’t figure it out so I had some AI going through some Motion Matching related thesis stuff and explaining it to me and then I ended up giving it a small chunk of my matcher code use to generate the cost and it pointed out my problems….. so 1. The way I was calculating local position was wrong which is funny because when I do it the other way it also breaks but then that leads into the second part. 2. I was inverting data and that was what was keeping the system working for some reason awhile back and even when I tried removing it a bit ago it broke which was really weird. anyways if you change both of them they fix each other so YAY I guess… sorry for the AI usage. it didn’t re write my code for me though I hand fixed my problem which I can proudly say all of the code is all hand typed…. (other then stuff I copy and pasted and or reused from other code I wrote… TRUST ME I NEVER WANT TO REWRITE UI SYSTEMS please unity fix the uitoolkit its bad)"}, {"post_id": 75040, "ts": "2026-09-28T23:29:30Z", "hours": 4.0911, "text": "Working on velocity matching. its kinda working now better then it was but its really weird that it slows the character down so much but its better then random snapping poses"}, {"post_id": 72963, "ts": "2026-09-24T03:42:38Z", "hours": 3.4628, "text": "HOLY CRAP IT WALKS!!! I can’t believe it. I am so FLIIPING happy ITS MOTION MATCHING! THAT IS ACTAUL REAL MOVEMENT AND NOT JUST WIGGLES!!!!! AAAAAAHHHHHH!!!!!! HECK YEAH!!!!!!! ok so in reality its still not fully working. I had to disable bone velocity matching completely to get it to work but I think I figured out why it doesn’t work. for trajectory matching I realized that the character is scaled to 1.83 instead of just 1 so that will affect the matching and I have to implement an offset (and I did it for the bone positions too but I never did it to the velocities) anyways I think I will fiddle with it till that work epeshly since STARDANCE WAS EXETENDED UNTILL OCTOBER 30TH THANK YOU HACK CLUB!!!! Video is of it working, not working and me playing with settings."}, {"post_id": 70896, "ts": "2026-09-19T23:38:42Z", "hours": 9.4997, "text": "WE HAVE HIT 100 HOURS LOGGED!!!! wow the amount of time I spent on this is CRAZY! anyways we have had little improvements on the matcher I have been trying to get it to give me a full animation but it refuses instead kinda just wiggling its arms up and down pretending to be a bird OR snapping between poses that have NOTHING to do with walking. I have spent the last few hours attempting to calibrate it to work as well as writing a better dataset debug script so then it will be easier to visualize what every frame of animation contains Data-wise so then I can attempt to manually match frames and see what the matcher ranks them vs what it normally matches so the I can maybe weight it or bias it a bit. we only have a week and bit left LET LOCK IN!!!!!!!!!!!!!!!!!!!!"}, {"post_id": 67146, "ts": "2026-09-13T06:34:17Z", "hours": 6.7892, "text": "we have done it! MOTION MATCHING FROM SCRATCH! the last week has been crazy. I have found more data from a unity demo of a long discontinued motion matching asset and I have retargeted the animation in blender and brought it into unity with proper root motion. since this was my first time using more then one animation clip with EVERYTHING I expected bugs and errors AND THAT I GOT. I had to go in and rewrite a really small chunk of how the dataset maker compiles the trajectory data. I had to make the matcher actually handle more then one clip as well as dig into a null reference error it was giving me so I had to dig into it more and learn that the dataset was still flawed and go back and do more to the editor AND THEN ONCE the data was good now the matcher scales the character to like 300% or something and I never even told it to touch scale so now I have to properly set up multi-animation unity playables since before I didn’t know that you couldn’t just set all the blend weights to one and hope for the best. now finally after all of that. it appears to match and hold onto a frame. I have a few last features to implement into it that being velocity matching so then it wont just hold a frame but understand that arms move and swing. as well as debug info for both me while testing as well as for you my dear hackclubbers so when I ship you all can see a bit into the inner workings of it. thank you for coming with me on this journey I never expected it to go this long but it feels good to have at least one person interested in what I’m working on for once and not just get shrugged off. - Ash ❤️ Video is of the matcher working photos are of the scaling issue"}, {"post_id": 63393, "ts": "2026-09-07T06:09:06Z", "hours": 5.9814, "text": "sheesh I’ve done a bit in the last week. So we have added the ability to match bones in the matcher got the matcher to handle multiple animation clips and I guess that’s it… I honestly thought I did more… on paper it doesn’t actually seem like that much.. huh. OH WELL! I also found a MASIVE collection of animation from a unreal engine demo project so I’m probably going to extract that and retarget TONS of that over the next few days because imma say it the problem with the matcher is the lack of good data at this point. Pink/Purple - Animation frame data position Red/green - predicted trajectory"}, {"post_id": 60036, "ts": "2026-09-02T04:33:58Z", "hours": 1.2344, "text": "OK OK OK IT WORKS!!!!! so we got bone positions to work. I’m done for the day. anyways I literally just had to flip my subtraction around… yes… its stupid…. anyways went from this: RootPositions[i][j] - BoneTransform.position to this: BoneTransform.position - RootPositions[i][j]. ok mic drop… I did say I would ship by the end of the month of august and clearly that didn’t happen but it will (hopefully) be this week Pink sphere is the foot pos from data set Blue is the other models foot pos not from dataset then red is root position (Also 2 devlogs in one day! I’m on fire!)"}, {"post_id": 59736, "ts": "2026-09-01T17:45:26Z", "hours": 8.6739, "text": "IM SO CLOSE!!!!!!!!! LIKE LATER TODAY (maybe can’t promise anything or the programing gods will kill me) I WILL HAVE MOTION MATCHING IN A GOOD DEMOABLE STATE FOR ME TO SHIP! I have got the bone data to work and actually spit out something useful by changing my whole approach and instead of sampling curves (which could work I just gotta deal with all the weird problems) I have created a unity scene in memory it spawns in the rig samples all the bone transform.positrons making unity do all the math and hard work before it returns me world positions of all of the bones I told it to track. the only problem I am having now is that I got to convert those world positions back into local position so that they can work anywhere (and yes I just converted them from local position to world position and this might sound counter intuitive but I need to change the parent of the local position) I remember this being easy for trajectory matching but maybe since this is WAYY more sensitive to rotation I need to try a different approach. the final stretch is approaching us dear hack clubbers. I got the rest of today then school starts tomorrow. LETS! LOCK! IN! YEAAAAAAAAAAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH!!!! btw the pink sphere is the foot potion… or what should be the foot position. Blue is the actual foot position. Red is root Position"}, {"post_id": 54275, "ts": "2026-08-25T05:45:45Z", "hours": 8.4231, "text": "Note to self… don’t freehand code… plan everything out on paper because I’m just experiencing Murphey’s law at this point :-< so…. the data that I didn’t know if it was right or not was incorrect… VERY incorrect (kinda) so that data was in local space I need it in world space but to convert it you either need to do the conversion through a transform (which requires a transform to reference) or do what I am doing (since I don’t have a easily accessible transform (unless I’m stupid and don’t know of one)) so I am going up the paths and for each object extracting their position and transforms (in local position) then adding it up until I eventually hit the root which would be in world space so now its converted (I’m doing the same for rotation too with more math) anyways my code for this entire project was never pre planned and I never normally pre plan but this is one of the times where once it works I’m going to figure out how it works (because who am I kidding I don’t really know) then I’m writing all of it down on paper and optimizing the loops and everything before jumping back into the editor to re-write the bake() function from scratch leading to MUCH BETTER READABILTY and hopefully speed because it takes a good 5 seconds from my for loops and brute force. anyways if you cant tell this is VERY BORING WORK and I really just want it to work SO BADLY because once I get everything in world position the next steps should be really easy but I shouldn’t say that because at this point if I do I might jinx myself"}, {"post_id": 46135, "ts": "2026-08-13T04:38:45Z", "hours": 3.9642, "text": "WOW JUST WOW!!! So I toured the Vicon Set-up at my local univercity and it was amazing. I loved every moment of it. they even put markers on me and captured some data (not any I can use for motion matching but still WOW THAT TECH IS COOL) In more on topic news I got the dataset maker to output bone data into the database. is it the correct data… idk but I will figure that out! (Photo of me standing forward is just a general photo with the markers. photo of me looking away from camera with hand in air is me showing off all the retroreflective markers (and EMGs) then there is a photo of the compiled dataset)"}, {"post_id": 43104, "ts": "2026-08-08T06:02:03Z", "hours": 2.9892, "text": "THERE WE GO! finally we can select what bones we want to track from a nested dropdown. now I just need to implement it into the baking logic so I can get a finished dataset out of dataset maker. perfect timing too. I have gotten a few emails back from the university and they are willing to give me a tour of the Vicon system and there may be a chance one day to capture data on it so hopefully everything works out and I can capture on the same tech that AAA game studios use which would be a dream come true and would blow my mind."}, {"post_id": 40564, "ts": "2026-08-04T06:14:32Z", "hours": 3.9083, "text": "There we go. I think I finally got it working. JEEZ UNITY NEEDS BETTER DOCUMENTATION ON THE UI TOOLKIT LIKE WOW ITS THAT BAD…. anyway I got the custom lists working now I just gotta add the actual bone selections then write in the logic to add everything to the datasets. if you look at the photo that’s roughly how it will look to use the dataset maker. not sure if I mentioned this in the last devlog but I finally messaged my local university to see if they will let me either tour or use their vicon system so I’m hoping something comes of that because that would be really cool. anyways its really late I pulled another programmer and stayed up till midnight working. see yall later."}, {"post_id": 38041, "ts": "2026-07-31T06:49:07Z", "hours": 7.1853, "text": "Pretty boring stuff happening right now. I have been working to implement bone positional and velocity tracking into the dataset builder but since I wanted to use a custom class to do it the unity UI Toolkit decided to pick a fight and be really annoying to do it in. if anyone wants to write a custom class in unity and have it show up in a list view use this: link I also am working on processing some mocap data but its not going so well right now and I am getting pretty tired with dealing with these markerless systems so we will see if my local university will let me use or even tour their 10 cam Vicon setup (cross your fingers for me) anyways I still have one mocap session to prosses so I will probably do that tomorrow since I can just let it run while I am doing other things. also I just watched these videos where this guy is building open sourced optical mocap cameras and I think I might just funnel all my hack club hours into pcb credits to build a few of them. part 1 vid: https://youtu.be/kYVqL_DqBis?si=CPKxKiLa8cxf3M1t Part 2 vid: https://youtu.be/WJ13C_1hDIA?si=hMlQ8u5ofEBf-cFS"}, {"post_id": 34122, "ts": "2026-07-24T16:47:29Z", "hours": 8.3331, "text": "#MOTION MATCHING SYSTEM V1 DEVLOG ok its been a few days and we have gotten a few things done including started work on feet and hand bone tracking (the secret sause to motion matching) I finished making the large Charuco Board so I can calibrate FreeMoCap. so its coming along… slowly but that’s ok. the hardest part of all of this is the motion capture though since my setup is really bad (I wish my city had a capture studio somewhere even if it was small)"}, {"post_id": 29976, "ts": "2026-07-17T06:02:22Z", "hours": 10.1758, "text": "sheesh its been awhile since I last posted a devlog. MOTION MATCHING SYSTEM V1 - HIP Better matching Change Log/Updates Matching changed from world space to local space started work on recording motion capture I got more consistent matching now thanks to changing how it store the data in the dataset and how it matches to it. originally the future trajectory positions where stored as world space values in the dataset and the matcher would match it to the players world space values. if you know how transform systems work in game engines or blender you might know that because of that I had to be in the EXACT same position in the world that the data was recorded (you can see this in my last devlog where I kinda wiggle around in a few areas and get flurries of matches) in which… doesn’t work very well for this because if you had to record your self walking forwards backwards and side to side for ever single value in the game world that would take you FOREVER! so I switched it to local space which is basically where you are in the world based off of something. so like instead of 0, 0, 0 being the root of the world it would be where the character is so the trajectory positions are based around the character transform… do you know what I mean? I hope so because I cant think of a better way to explain it at the moment. Right now the biggest thing holding me back is the actual motion capture data that I am feeding into this thing because the recording I downloaded… is really bad. so I have been experimenting with a free open sourced software called FreeMoCap which is a marker less triangulation based motion capture software. I will report back when I get some good results out of it (hopefully soon) TODO hand and feet position and velocity matching 6 to 8 camera motion capture data finish Charuco board for FreeMoCap camera calibration Video is of the new matching in action the red (and 1 green) points are the players future predicted trajectory the pinkish purple points are the animation fames current trajectory. they should be aligned most of the time"}, {"post_id": 19015, "ts": "2026-06-30T05:40:05Z", "hours": 2.9392, "text": "FIRST MATCH!!! WE DID IT! This past week I started working on code to compare and chose a frame to play (the actual matcher) and it works… Kind of? YES IT MACHES… Is it a good match? HECK NO!!!! BUT IT MATCHES!!!! AND THAT JUST MADE 9 MONTHS OF WORK WORTH IT AS I HYPERVENTILATE WATCHING MY MATCHER STUGGLE BADLY LAGING EVERYTHING BUT IT WORKS! now the next step is making it work… properly. the video is of it trying to match. i kinda move around a bit to get it changing data but you can tell when it finds… something because the character will lock onto a frame or start playing the animation."}, {"post_id": 15199, "ts": "2026-06-24T18:20:54Z", "hours": 10.0492, "text": "WE HAVE A WORKING DATASET! Hello hack club! Didja miss me? NO?! WELL TOO BAD!!!!! I now got my motion capture data outputting a dataset with trajectory samples and root positions which is a VERY big step forwards. so as I have mentioned in the past motion matching is literally what MOTION MATCHING is doing. Matching the motion. I have had player predicted trajectory working since before stardance even started but only recently have we started to make progress on the motion capture data that we can MATCH to the players predicted trajectory. the set up I have going on for running the motion data extraction is really cool if I do say so myself. I have a custom editor menu where I can add animation clips and tell it what times in the future I want the trajectory to sampled from then it will compile everything into a scriptable object. plus I also added cool loading bars! anyways we are getting very close to having actual motion matching made from scratch. wow. 9 months this has took so far. its been fun. well… technically not done yet so lets keep up the good work and build the matching algorithm"}, {"post_id": 8844, "ts": "2026-06-14T18:22:33Z", "hours": 7.4806, "text": "DataSet Baker V1 Alpha - HIP is in the works!!!!! Now you might be asking why it’s named HIP, and unless you are from Canada you will most likely not know who I am going to talk about, but the motion matching editor versions are going to be named after Tragically Hip album names (the first one is self titled so HIP). Anyways, in the last week I have gotten a lot done. I started work on actually figuring out the logic to get the trajectory out of the animation (and I don’t remember if I talked about this before but there were 2 ideas I had. 1 is I put the animation’s root motion through a lot more math to get a proper predicted trajectory just like how the input trajectory works. Or just sample the actual future, but then you would get problems like a 90 degree turn where the animation isn’t even anticipating it yet but the trajectory says it should be.) I actually got really confused and stuck so I emailed someone. That someone is Daniel Holden, the creator of Learned Motion Matching (and he runs the website where I learned the first input trajectory math). And WOW!!!! HE RESPONDED: Hi Asher, Sorry for the late reply, I have been travelling the last couple of days. First of all I just wanted to say that it is awesome that you are looking into advanced animation techniques like these already. (email removed for space) (i might put it in the comments if you want to read it) I hope that helps! All the best, Dan LIKE HOLY COW!!! I am talking to a LEGEND!!!! Normal motion matching works as such: you got 2 trajectories, a predicted one from the input then a true trajectory from the animation, then you load all that animation into RAM and use a matcher to play the correct frame. But what he made was use a neural network instead of the matcher and database WHICH SHRUNK RAM USAGE LIKE CRAZY (and I might have to get working on something like that sometime soon because RAM prices don’t appear to be dropping anytime soon). Anyways, in the email he said that my second idea was actually right. The idea that I thought was wrong, but he says is just a sad limitation of it and nobody has figured it out yet (yet…). So that will make life easier because I WILL BE ABLE TO FINISH THE DATASET STUFF HOPEFULLY IN A WEEK!!!!!!! And to make that dataset I started messing around with Unity’s UI Toolkit and custom editors. So now I have several custom drop downs and then you can open the MOTION MATCHING DATASET EDITOR where you can define all of your animation clips and once I write the rest, be able to press the bake button. It will process every frame and then spit out a Scriptable Object or database. Now hopefully writing the rest will be easier than writing the UI code because the UI stuff is powerful but not like normal runtime coding."}, {"post_id": 5233, "ts": "2026-06-08T22:55:23Z", "hours": 1.5761, "text": "HELLO STARDANCE!!!!!! I THINK I FIXED IT!!! Now I am not going to even mention that root motion is working this time because if you have been following along you know that the second “IT WORKS!” comes out of my mouth something breaks. So last devlog I said I thought it was working but… my character was half way in the floor. after a bit of fiddling around and some google I discovered that the problem was that I had put the root bone in the hips of the character. And apparently in unity that’s a big no no. So one hour and eight minutes of blender B.S later I Fixed it (hopefully). I ended up using a blender addon called RootMaker to create a proper root bone at the feet where unity wants it. then I used the addon to transfer all of the root motion data from the hips into the new dedicated root bone. so now hopefully unity will be happy that it has a proper root bone to work with and wont try to shove my character into the earths mantle. The crazy part of all of this is that I have been doing more of blender and fighting animation during Stardance than actually working on the motion matching so if this continues to work I can get to work on what I am supposed to be doing; working on the actual motion matching. since I am the music variety of nerd I spend most of my time coding jamming to music and I think I started measuring my programing time in albums rather then hours XD. Over the course of just this weekend I have listened front to back to: 21st Century Breakdown - Green Day American Idiot - Green Day Back in Black - AC/DC Black Holes and Revelations - Muse The Black Parade - My Chemical Romance and if you add all of the runtimes of those albums up it matches very close to the time logged in Stardance so it might work XD. anyways I am going to go stretch my legs then maybe play some of The Last of Us Part 2 (which is very appropriate since it too uses motion matching as its animation system)"}, {"post_id": 5031, "ts": "2026-06-08T18:06:54Z", "hours": 1.1372, "text": "at this point I should stop saying that I have root motion working because every time I say that I jinx it and something falls apart. so I set everything up wrong (of course) so I need to pull all of the rigs apart once more to fix some errors that I made there and how I set up the root bone (its set at the hips not at the feet). so its been a fun ride (not) plus my laptop keeps trying to update my graphics drivers and every time it crashes unity, blender, plus all of the audio drivers with it. XD. I hope after today I can start work back up on motion matching and not dealing with blender and its shenanigans."}, {"post_id": 4545, "ts": "2026-06-07T21:49:20Z", "hours": 0.8836, "text": "Ok. I may have celebrated a little bit early. but I think I finally got root motion working for real this time. the problem was a combination of blender being blender, transformation offsets, weird scaling and just the names of objects/bones being wrong. though I did get an awesome video from when I was testing and comparing two animations together and root motion sent one of them into the floor so we got a beautiful video of one guy riding the other guys head. anyways lets hope that this keeps working because I just want to get my math mathing and dataset datasetting"}, {"post_id": 4362, "ts": "2026-06-07T17:35:54Z", "hours": 1.3164, "text": "This morning I got root motion finally set up in unity. since that now works I can begin working on a data set for the motion matching. I guess I never really explained how motion matching works in any of my other devlogs so I am going to do that right now: Motion matching is a animating technique where instead of using classic state machines that go if walking play walking animation they go this is your current position, velocity, trajectory, and a lot more and try to MATCH that MOTION to a large database of motion captured animations. so what I will be working on next is building that database/dataset of animations and the code to pull the current position, velocity, trajectory out of the animations then store each frame in a dataset for the matching code to search though to find one that matches what the character is currently doing on screen. its sounds kinda easy but trust me unless you are a big math/physics person (which I am not) its quite difficult to figure out how it al l works (plus you also need to know animations and blender which SUCKSSSS!) Also the video is of root motion NOT WORKING!"}, {"post_id": 1659, "ts": "2026-06-03T19:53:43Z", "hours": 1.2667, "text": "fighting unity and blender animation systems"}, {"post_id": 335, "ts": "2026-06-01T17:11:13Z", "hours": 0.4014, "text": "I got input trajectory working. The reason it wasn’t before was that movement and the prediction where in different update types (one was in fixed update and one was in regular update) so that works really well now. Now I am setting stuff up to make a animation dataset which involve me modifying my trajectory code to make it work with PRE RECORDED animations Devlogs From flavortown: Devlog 1: Lots of research and trial and error. I have spent all this time looking for an algorithm that works to generate a predicted trajectory from an input. I think I found the right one (I haven’t tested it yet) but if not then I know that I am looking in the right place at Daniel Holden’s articles on spring dampers check it out here: https://theorangeduck.com/page/spring-roll-call#controllers Devlog 2: I got the Trajectory prediction working!!!! after all of that math, research, and pain. it works! I wish I could truly express in words how happy I am. everything is based off of the work of Daniel Holden you can find it here: https://theorangeduck.com/page/spring-roll-call#controllers Devlog 3: Fixed jittering issue by adding a lerp to desired trajectory."}]...
|
Title: Unity Motion Matching System by @NintedoAsh Title: Unity Motion Matching System by @NintedoAsh12 | Stardance
Devlogs:
I got input trajectory working. The reason it wasn’t before was that movement and the prediction where in different update types (one was in fixed update and one was in regular update) so that works really well now. Now I am setting stuff up to make a animation dataset which involve me modifying my trajectory code to make it work with PRE RECORDED animations Devlogs From flavortown: Devlog 1: Lots of research and trial and error. I have spent all this time looking for an algorithm that works to generate a predicted trajectory from an input. I think I found the right one (I haven’t tested it yet) but if not then I know that I am looking in the right place at Daniel Holden’s articles on spring dampers check it out here: https://theorangeduck.com/page/spring-roll-call#controllers Devlog 2: I got the Trajectory prediction working!!!! after all of that math, research, and pain. it works! I wish I could truly express in words how happy I am. everything is based off of the work of Daniel Holden you can find it here: https://theorangeduck.com/page/spring-roll-call#controllers Devlog 3: Fixed jittering issue by adding a lerp to desired trajectory.
fighting unity and blender animation systems
This morning I got root motion finally set up in unity. since that now works I can begin working on a data set for the motion matching. I guess I never really explained how motion matching works in any of my other devlogs so I am going to do that right now: Motion matching is a animating technique where instead of using classic state machines that go if walking play walking animation they go this is your current position, velocity, trajectory, and a lot more and try to MATCH that MOTION to a large database of motion captured animations. so what I will be working on next is building that database/dataset of animations and the code to pull the current position, velocity, trajectory out of the animations then store each frame in a dataset for the matching code to search though to find one that matches what the character is currently doing on screen. its sounds kinda easy but trust me unless you are a big math/physics person (which I am not) its quite difficult to figure out how it al l works (plus you also need to know animations and blender which SUCKSSSS!) Also the video is of root motion NOT WORKING!
Ok. I may have celebrated a little bit early. but I think I finally got root motion working for real this time. the problem was a combination of blender being blender, transformation offsets, weird scaling and just the names of objects/bones being wrong. though I did get an awesome video from when I was testing and comparing two animations together and root motion sent one of them into the floor so we got a beautiful video of one guy riding the other guys head. anyways lets hope that this keeps working because I just want to get my math mathing and dataset datasetting
at this point I should stop saying that I have root motion working because every time I say that I jinx it and something falls apart. so I set everything up wrong (of course) so I need to pull all of the rigs apart once more to fix some errors that I made there and how I set up the root bone (its set at the hips not at the feet). so its been a fun ride (not) plus my laptop keeps trying to update my graphics drivers and every time it crashes unity, blender, plus all of the audio drivers with it. XD. I hope after today I can start work back up on motion matching and not dealing with blender and its shenanigans.
HELLO STARDANCE!!!!!! I THINK I FIXED IT!!! Now I am not going to even mention that root motion is working this time because if you have been following along you know that the second “IT WORKS!” comes out of my mouth something breaks. So last devlog I said I thought it was working but… my character was half way in the floor. after a bit of fiddling around and some google I discovered that the problem was that I had put the root bone in the hips of the character. And apparently in unity that’s a big no no. So one hour and eight minutes of blender B.S later I Fixed it (hopefully). I ended up using a blender addon called RootMaker to create a proper root bone at the feet where unity wants it. then I used the addon to transfer all of the root motion data from the hips into the new dedicated root bone. so now hopefully unity will be happy that it has a proper root bone to work with and wont try to shove my character into the earths mantle. The crazy part of all of this is that I have been doing more of blender and fighting animation during Stardance than actually working on the motion matching so if this continues to work I can get to work on what I am supposed to be doing; working on the actual motion matching. since I am the music variety of nerd I spend most of my time coding jamming to music and I think I started measuring my programing time in albums rather then hours XD. Over the course of just this weekend I have listened front to back to: 21st Century Breakdown - Green Day American Idiot - Green Day Back in Black - AC/DC Black Holes and Revelations - Muse The Black Parade - My Chemical Romance and if you add all of the runtimes of those albums up it matches very close to the time logged in Stardance so it might work XD. anyways I am going to go stretch my legs then maybe play some of The Last of Us Part 2 (which is very appropriate since it too uses motion matching as its animation system)
DataSet Baker V1 Alpha - HIP is in the works!!!!! Now you might be asking why it’s named HIP, and unless you are from Canada you will most likely not know who I am going to talk about, but the motion matching editor versions are going to be named after Tragically Hip album names (the first one is self titled so HIP). Anyways, in the last week I have gotten a lot done. I started work on actually figuring out the logic to get the trajectory out of the animation (and I don’t remember if I talked about this before but there were 2 ideas I had. 1 is I put the animation’s root motion through a lot more math to get a proper predicted trajectory just like how the input trajectory works. Or just sample the actual future, but then you would get problems like a 90 degree turn where the animation isn’t even anticipating it yet but the trajectory says it should be.) I actually got really confused and stuck so I emailed someone. That someone is Daniel Holden, the creator of Learned Motion Matching (and he runs the website where I learned the first input trajectory math). And WOW!!!! HE RESPONDED: Hi Asher, Sorry for the late reply, I have been travelling the last couple of days. First of all I just wanted to say that it is awesome that you are looking into advanced animation techniques like these already. (email removed for space) (i might put it in the comments if you want to read it) I hope that helps! All the best, Dan LIKE HOLY COW!!! I am talking to a LEGEND!!!! Normal motion matching works as such: you got 2 trajectories, a predicted one from the input then a true trajectory from the animation, then you load all that animation into RAM and use a matcher to play the correct frame. But what he made was use a neural network instead of the matcher and database WHICH SHRUNK RAM USAGE LIKE CRAZY (and I might have to get working on something like that sometime soon because RAM prices don’t appear to be dropping anytime soon). Anyways, in the email he said that my second idea was actually right. The idea that I thought was wrong, but he says is just a sad limitation of it and nobody has figured it out yet (yet…). So that will make life easier because I WILL BE ABLE TO FINISH THE DATASET STUFF HOPEFULLY IN A WEEK!!!!!!! And to make that dataset I started messing around with Unity’s UI Toolkit and custom editors. So now I have several custom drop downs and then you can open the MOTION MATCHING DATASET EDITOR where you can define all of your animation clips and once I write the rest, be able to press the bake button. It will process every frame and then spit out a Scriptable Object or database. Now hopefully writing the rest will be easier than writing the UI code because the UI stuff is powerful but not like normal runtime coding.
WE HAVE A WORKING DATASET! Hello hack club! Didja miss me? NO?! WELL TOO BAD!!!!! I now got my motion capture data outputting a dataset with trajectory samples and root positions which is a VERY big step forwards. so as I have mentioned in the past motion matching is literally what MOTION MATCHING is doing. Matching the motion. I have had player predicted trajectory working since before stardance even started but only recently have we started to make progress on the motion capture data that we can MATCH to the players predicted trajectory. the set up I have going on for running the motion data extraction is really cool if I do say so myself. I have a custom editor menu where I can add animation clips and tell it what times in the future I want the trajectory to sampled from then it will compile everything into a scriptable object. plus I also added cool loading bars! anyways we are getting very close to having actual motion matching made from scratch. wow. 9 months this has took so far. its been fun. well… technically not done yet so lets keep up the good work and build the matching algorithm
FIRST MATCH!!! WE DID IT! This past week I started working on code to compare and chose a frame to play (the actual matcher) and it works… Kind of? YES IT MACHES… Is it a good match? HECK NO!!!! BUT IT MATCHES!!!! AND THAT JUST MADE 9 MONTHS OF WORK WORTH IT AS I HYPERVENTILATE WATCHING MY MATCHER STUGGLE BADLY LAGING EVERYTHING BUT IT WORKS! now the next step is making it work… properly. the video is of it trying to match. i kinda move around a bit to get it changing data but you can tell when it finds… something because the character will lock onto a frame or start playing the animation.
sheesh its been awhile since I last posted a devlog. MOTION MATCHING SYSTEM V1 - HIP Better matching Change Log/Updates Matching changed from world space to local space started work on recording motion capture I got more consistent matching now thanks to changing how it store the data in the dataset and how it matches to it. originally the future trajectory positions where stored as world space values in the dataset and the matcher would match it to the players world space values. if you know how transform systems work in game engines or blender you might know that because of that I had to be in the EXACT same position in the world that the data was recorded (you can see this in my last devlog where I kinda wiggle around in a few areas and get flurries of matches) in which… doesn’t work very well for this because if you had to record your self walking forwards backwards and side to side for ever single value in the game world that would take you FOREVER! so I switched it to local space which is basically where you are in the world based off of something. so like instead of 0, 0, 0 being the root of the world it would be where the character is so the trajectory positions are based around the character transform… do you know what I mean? I hope so because I cant think of a better way to explain it at the moment. Right now the biggest thing holding me back is the actual motion capture data that I am feeding into this thing because the recording I downloaded… is really bad. so I have been experimenting with a free open sourced software called FreeMoCap which is a marker less triangulation based motion capture software. I will report back when I get some good results out of it (hopefully soon) TODO hand and feet position and velocity matching 6 to 8 camera motion capture data finish Charuco board for FreeMoCap camera calibration Video is of the new matching in action the red (and 1 green) points are the players future predicted trajectory the pinkish purple points are the animation fames current trajectory. they should be aligned most of the time
#MOTION MATCHING SYSTEM V1 DEVLOG ok its been a few days and we have gotten a few things done including started work on feet and hand bone tracking (the secret sause to motion matching) I finished making the large Charuco Board so I can calibrate FreeMoCap. so its coming along… slowly but that’s ok. the hardest part of all of this is the motion capture though since my setup is really bad (I wish my city had a capture studio somewhere even if it was small)
Pretty boring stuff happening right now. I have been working to implement bone positional and velocity tracking into the dataset builder but since I wanted to use a custom class to do it the unity UI Toolkit decided to pick a fight and be really annoying to do it in. if anyone wants to write a custom class in unity and have it show up in a list view use this: link I also am working on processing some mocap data but its not going so well right now and I am getting pretty tired with dealing with these markerless systems so we will see if my local university will let me use or even tour their 10 cam Vicon setup (cross your fingers for me) anyways I still have one mocap session to prosses so I will probably do that tomorrow since I can just let it run while I am doing other things. also I just watched these videos where this guy is building open sourced optical mocap cameras and I think I might just funnel all my hack club hours into pcb credits to build a few of them. part 1 vid: https://youtu.be/kYVqL_DqBis?si=CPKxKiLa8cxf3M1t Part 2 vid: https://youtu.be/WJ13C_1hDIA?si=hMlQ8u5ofEBf-cFS
There we go. I think I finally got it working. JEEZ UNITY NEEDS BETTER DOCUMENTATION ON THE UI TOOLKIT LIKE WOW ITS THAT BAD…. anyway I got the custom lists working now I just gotta add the actual bone selections then write in the logic to add everything to the datasets. if you look at the photo that’s roughly how it will look to use the dataset maker. not sure if I mentioned this in the last devlog but I finally messaged my local university to see if they will let me either tour or use their vicon system so I’m hoping something comes of that because that would be really cool. anyways its really late I pulled another programmer and stayed up till midnight working. see yall later.
THERE WE GO! finally we can select what bones we want to track from a nested dropdown. now I just need to implement it into the baking logic so I can get a finished dataset out of dataset maker. perfect timing too. I have gotten a few emails back from the university and they are willing to give me a tour of the Vicon system and there may be a chance one day to capture data on it so hopefully everything works out and I can capture on the same tech that AAA game studios use which would be a dream come true and would blow my mind.
WOW JUST WOW!!! So I toured the Vicon Set-up at my local univercity and it was amazing. I loved every moment of it. they even put markers on me and captured some data (not any I can use for motion matching but still WOW THAT TECH IS COOL) In more on topic news I got the dataset maker to output bone data into the database. is it the correct data… idk but I will figure that out! (Photo of me standing forward is just a general photo with the markers. photo of me looking away from camera with hand in air is me showing off all the retroreflective markers (and EMGs) then there is a photo of the compiled dataset)
Note to self… don’t freehand code… plan everything out on paper because I’m just experiencing Murphey’s law at this point :-< so…. the data that I didn’t know if it was right or not was incorrect… VERY incorrect (kinda) so that data was in local space I need it in world space but to convert it you either need to do the conversion through a transform (which requires a transform to reference) or do what I am doing (since I don’t have a easily accessible transform (unless I’m stupid and don’t know of one)) so I am going up the paths and for each object extracting their position and transforms (in local position) then adding it up until I eventually hit the root which would be in world space so now its converted (I’m doing the same for rotation too with more math) anyways my code for this entire project was never pre planned and I never normally pre plan but this is one of the times where once it works I’m going to figure out how it works (because who am I kidding I don’t really know) then I’m writing all of it down on paper and optimizing the loops and everything before jumping back into the editor to re-write the bake() function from scratch leading to MUCH BETTER READABILTY and hopefully speed because it takes a good 5 seconds from my for loops and brute force. anyways if you cant tell this is VERY BORING WORK and I really just want it to work SO BADLY because once I get everything in world position the next steps should be really easy but I shouldn’t say that because at this point if I do I might jinx myself
IM SO CLOSE!!!!!!!!! LIKE LATER TODAY (maybe can’t promise anything or the programing gods will kill me) I WILL HAVE MOTION MATCHING IN A GOOD DEMOABLE STATE FOR ME TO SHIP! I have got the bone data to work and actually spit out something useful by changing my whole approach and instead of sampling curves (which could work I just gotta deal with all the weird problems) I have created a unity scene in memory it spawns in the rig samples all the bone transform.positrons making unity do all the math and hard work before it returns me world positions of all of the bones I told it to track. the only problem I am having now is that I got to convert those world positions back into local position so that they can work anywhere (and yes I just converted them from local position to world position and this might sound counter intuitive but I need to change the parent of the local position) I remember this being easy for trajectory matching but maybe since this is WAYY more sensitive to rotation I need to try a different approach. the final stretch is approaching us dear hack clubbers. I got the rest of today then school starts tomorrow. LETS! LOCK! IN! YEAAAAAAAAAAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH!!!! btw the pink sphere is the foot potion… or what should be the foot position. Blue is the actual foot position. Red is root Position
OK OK OK IT WORKS!!!!! so we got bone positions to work. I’m done for the day. anyways I literally just had to flip my subtraction around… yes… its stupid…. anyways went from this: RootPositions[i][j] - BoneTransform.position to this: BoneTransform.position - RootPositions[i][j]. ok mic drop… I did say I would ship by the end of the month of august and clearly that didn’t happen but it will (hopefully) be this week Pink sphere is the foot pos from data set Blue is the other models foot pos not from dataset then red is root position (Also 2 devlogs in one day! I’m on fire!)
sheesh I’ve done a bit in the last week. So we have added the ability to match bones in the matcher got the matcher to handle multiple animation clips and I guess that’s it… I honestly thought I did more… on paper it doesn’t actually seem like that much.. huh. OH WELL! I also found a MASIVE collection of animation from a unreal engine demo project so I’m probably going to extract that and retarget TONS of that over the next few days because imma say it the problem with the matcher is the lack of good data at this point. Pink/Purple - Animation frame data position Red/green - predicted trajectory
we have done it! MOTION MATCHING FROM SCRATCH! the last week has been crazy. I have found more data from a unity demo of a long discontinued motion matching asset and I have retargeted the animation in blender and brought it into unity with proper root motion. since this was my first time using more then one animation clip with EVERYTHING I expected bugs and errors AND THAT I GOT. I had to go in and rewrite a really small chunk of how the dataset maker compiles the trajectory data. I had to make the matcher actually handle more then one clip as well as dig into a null reference error it was giving me so I had to dig into it more and learn that the dataset was still flawed and go back and do more to the editor AND THEN ONCE the data was good now the matcher scales the character to like 300% or something and I never even told it to touch scale so now I have to properly set up multi-animation unity playables since before I didn’t know that you couldn’t just set all the blend weights to one and hope for the best. now finally after all of that. it appears to match and hold onto a frame. I have a few last features to implement into it that being velocity matching so then it wont just hold a frame but understand that arms move and swing. as well as debug info for both me while testing as well as for you my dear hackclubbers so when I ship you all can see a bit into the inner workings of it. thank you for coming with me on this journey I never expected it to go this long but it feels good to have at least one person interested in what I’m working on for once and not just get shrugged off. - Ash ❤️ Video is of the matcher working photos are of the scaling issue
WE HAVE HIT 100 HOURS LOGGED!!!! wow the amount of time I spent on this is CRAZY! anyways we have had little improvements on the matcher I have been trying to get it to give me a full animation but it refuses instead kinda just wiggling its arms up and down pretending to be a bird OR snapping between poses that have NOTHING to do with walking. I have spent the last few hours attempting to calibrate it to work as well as writing a better dataset debug script so then it will be easier to visualize what every frame of animation contains Data-wise so then I can attempt to manually match frames and see what the matcher ranks them vs what it normally matches so the I can maybe weight it or bias it a bit. we only have a week and bit left LET LOCK IN!!!!!!!!!!!!!!!!!!!!
HOLY CRAP IT WALKS!!! I can’t believe it. I am so FLIIPING happy ITS MOTION MATCHING! THAT IS ACTAUL REAL MOVEMENT AND NOT JUST WIGGLES!!!!! AAAAAAHHHHHH!!!!!! HECK YEAH!!!!!!! ok so in reality its still not fully working. I had to disable bone velocity matching completely to get it to work but I think I figured out why it doesn’t work. for trajectory matching I realized that the character is scaled to 1.83 instead of just 1 so that will affect the matching and I have to implement an offset (and I did it for the bone positions too but I never did it to the velocities) anyways I think I will fiddle with it till that work epeshly since STARDANCE WAS EXETENDED UNTILL OCTOBER 30TH THANK YOU HACK CLUB!!!! Video is of it working, not working and me playing with settings.
Working on velocity matching. its kinda working now better then it was but its really weird that it slows the character down so much but its better then random snapping poses
OK OK IT WORKS ENOUGH OK DONT TOUCH IT I’m a fraud you guys. I couldn’t figure out the velocity thing so I…. I USED AI! I SWARE I HAVENT BEEN THIS ENTIRE TIME…. ok heres what happened I couldn’t figure it out so I had some AI going through some Motion Matching related thesis stuff and explaining it to me and then I ended up giving it a small chunk of my matcher code use to generate the cost and it pointed out my problems….. so 1. The way I was calculating local position was wrong which is funny because when I do it the other way it also breaks but then that leads into the second part. 2. I was inverting data and that was what was keeping the system working for some reason awhile back and even when I tried removing it a bit ago it broke which was really weird. anyways if you change both of them they fix each other so YAY I guess… sorry for the AI usage. it didn’t re write my code for me though I hand fixed my problem which I can proudly say all of the code is all hand typed…. (other then stuff I copy and pasted and or reused from other code I wrote… TRUST ME I NEVER WANT TO REWRITE UI SYSTEMS please unity fix the uitoolkit its bad)
I finally made a git hub repository. I also made a new unity project and moved everything into it to clean everything up for the demo I am starting to work on. I also made Bone Rotation matching but it doesn’t contribute all that match. I should be ready to ship/ Have a demo ready soon
LOTS OF DEBUG UI COMEING YOUR WAY! I have added lots of UI stuff to display internal values such as costs as stuff. I have also added the ability to adjust motion matching settings from in the demo so when I upload it to itch.io all of you can play with the system as much as you want and tell me how bad you broke it. to do wise its a bit more UI (some of it doesn’t work or I want it to look better) and then the data points kinda like the unity gizmo stuff I have been showing you here on star dance. anyways its like 1 AM I should have gone to bed HOURS AGO so I’mma go brush my teeth and work some more tomorrow…. my keyboard is starting to fail :-< Goodnight y’all. or good morning to the folk around the world like in Norway or something
The demo UI has been finished and it works quite well! I have a few more things to add like a looping map so that the Character doesn’t just walk off the end of the world and die plus some more main menu stuff I think too. anyways progress has been fast so far so expect more soon!
OK its fixed now but first test build didn’t go so well (see video) the problem was unity wasn’t saving any of my data running in the background because it wasn’t serialized. I also organized project files plus removing unneeded scripts (I reuse code a lot and sometimes things get replaced and just left there) I also if you can’t tell from the video a dropped frame counter to show matches that where canceled because the current frame was good enough to meet the cost threshold. anyways I think now most of what I have to do it package everything up into… well a package then send it off into the world for you the hack clubbers to mess around with. EDIT: I added a demo for Windows to the github if you want to try it early
Not much changed I made an Itch.io for the demo. I also started adding comments to all of my code yeah its hard to remember what does what but I also got the dataset editor done or almost done. then its onto the matcher and then the trajectory maker then we are done there and then onto a tutorial of how to use it then we are done
I finished all the code comments. I know. WOW 4 HOURS OF CODE COMMENTS yeah but I was also cleaning some other parts of it up and fixing some of the indentations. anyways that’s done now only a few more things till we get to ship! but also a note to other devs like me… please comment your code while writing it because I have gotten in the habit of not doing that and as seeing here by 4 hours logged of code comments PLEASE JUST DO IT WHILE WRITING IT BECUASE THIS SUCKS...
|
1792760004.6095197
|
1793364804.6095197
|
|
1173
|
Bitwarden API by @JGJ52 | Stardance
|
JGJ52
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Bitwarden API by @JGJ52 | Stardance
|
1792918444.5145
|
1793782444.5145
|
|
1174
|
Untitled project by @beowwman | Stardance
|
beowwman
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @beowwman | Stardance
|
1792792363.4489968
|
1793397163.4489968
|
|
1175
|
My first slack bot! by @En-Shuo | Stardance
|
En-Shuo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @En-Shuo | Stardance
|
1792590612.7745142
|
1793195412.7745142
|
|
1176
|
Reverse Double Pendulum by @AZNKWG | Stardance
|
AZNKWG
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Reverse Double Pendulum by @AZNKWG | Starda Title: Reverse Double Pendulum by @AZNKWG | Stardance...
|
1792947181.0843754
|
1793811181.0843754
|
|
1177
|
website by @Aman | Stardance
|
Aman
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: website by @Aman | Stardance
|
1792630077.570377
|
1793234877.570377
|
|
1178
|
Mutted Decay by @Lol123rl | Stardance
|
Lol123rl
|
0
|
0.26
|
0
|
[]
|
[{"post_id": 266, "ts": "2026- [{"post_id": 266, "ts": "2026-06-01T13:59:02Z", "hours": 0.2644, "text": "2d side scrolling game"}]...
|
Title: Mutted Decay by @Lol123rl | Stardance
Devl Title: Mutted Decay by @Lol123rl | Stardance
Devlogs:
2d side scrolling game...
|
1792662821.9577253
|
1793267621.9577253
|
|
1179
|
My awesome macropad! by @butterlabs | Stardance
|
butterlabs
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @butterlabs | Stard Title: My awesome macropad! by @butterlabs | Stardance...
|
1792925656.5317602
|
1793789656.5317602
|
|
1180
|
My first slack bot! by @Davonys | Stardance
|
Davonys
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Davonys | Stardance
|
1792565423.7132788
|
1793170223.7132788
|
|
1181
|
Aberration by @DIYLabs | Stardance
|
DIYLabs
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Aberration by @DIYLabs | Stardance
|
1792583364.0344577
|
1793188164.0344577
|
|
1182
|
Space game by @Noodleman | Stardance
|
Noodleman
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Space game by @Noodleman | Stardance
|
1792687694.375721
|
1793292494.375721
|
|
1183
|
personal site by @lovefromjulia | Stardance
|
lovefromjulia
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: personal site by @lovefromjulia | Stardance
|
1792673388.4444494
|
1793278188.4444494
|
|
1184
|
You Have the Con by @Federico | Stardance
|
Federico
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: You Have the Con by @Federico | Stardance
|
1792622916.2892156
|
1793227716.2892156
|
|
1185
|
My first slack bot! by @scienceabigail | Stardance
|
scienceabigail
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @scienceabigail | St Title: My first slack bot! by @scienceabigail | Stardance...
|
1792511656.4249878
|
1793116456.4249878
|
|
1186
|
AppleMusic-Downloader by @Cret | Stardance
|
Cret
|
2
|
31.0
|
298
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-18T05:44:00Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "First, I want to say that this project has surpassed 50,000 users. This year marks the project’s first year, and it has gained widespread popularity on various personal social media platforms and communities in China. My QQ user community has over 1,000 members. By using this downloader, I promise you will like https://amll.cret.uk it is a applemusic-like lryics running in your browser. So try it out; I promise you’ll like it! One thing to note is that my GitHub account was mistakenly suspended. If you need the macOS version and the opencookies.txt plugin, I will put the download links below. macos: https://cdn.hackclub.com/01a0f611-f1e0-79af-b3d1-be9b71d54349/AppleMusicDownloader-macos-arm64.dmg plugin: https://cdn.hackclub.com/01a14d82-54d0-7e29-a5ca-51fd7d0702e1/OpenCookies.txt.crx", "repo": "https://gitlab.com/IHateGitHub/applemusic-downloader", "demo": "https://cdn.hackclub.com/01a0f611-f73e-71f9-a98f-f447038e7ace/AppleMusicDownloader-windows-x64.exe"}, {"ship_num": 2, "ts": "2026-07-09T03:29:12Z", "hours": 25.0, "multiplier": 9.89, "payout": 298, "blessing": "neutral", "text": "The initial phase of this project involved some debugging work. A few days ago, I officially began the refactoring of this project. I removed redundant code and modules, abandoned the cumbersome PyQt, built a standard API backend using FastAPI, and built the web frontend using Next.js. You can run the packaged software now to try it out (don’t forget to install ffmpeg). If you don’t have an Apple Music subscription, DM @Cret on Slack and I’ll provide you with my own cookies.txt file.", "repo": "https://gitlab.com/IHateGitHub/applemusic-downloader", "demo": "https://cdn.hackclub.com/01a0f611-f73e-71f9-a98f-f447038e7ace/AppleMusicDownloader-windows-x64.exe"}]...
|
[{"post_id": 80567, "ts": "202 [{"post_id": 80567, "ts": "2026-10-18T05:29:08Z", "hours": 1.5017, "text": "v2.5.0 just published new feature: TTML lyrics with translate Using asynchronous download scheduling doubles the speed of batch downloads. Accelerate Dolby Atmos format encoding and decoding add “new version” detect feature (This won’t work until my GitHub account is unbanned) amdl cli also optimizedget-lyrics logic and add more and smarter parameter degradation strategies"}, {"post_id": 39266, "ts": "2026-08-02T03:58:06Z", "hours": 4.8944, "text": "I’ve been working on the AppleMusic-Downloader project, primarily debugging a Windows-specific issue where the desktop app would hang during downloads. The root cause turned out to be PyInstaller’s --windowed mode setting sys.stdout and sys.stderr to None , which broke async libraries like httpx and asyncio . The fix was calling AllocConsole() on Windows to allocate a visible console window and properly redirect all three standard streams ( stdin , stdout , stderr ). I also cleaned up unnecessary debug code (log file output, /api/logs endpoint), added step-by-step logging in the download pipeline to help diagnose future issues, fixed a few i18n key mismatches in the frontend, and added a note in both READMEs telling Windows users not to close the console window."}, {"post_id": 25110, "ts": "2026-07-09T03:22:25Z", "hours": 2.2103, "text": "The Dolby format finally downloaded normally. During this stage, copilot helped me debug and test the project.This project is ready to ship"}, {"post_id": 24614, "ts": "2026-07-08T10:15:06Z", "hours": 0.2636, "text": "published to PyPi!"}, {"post_id": 24589, "ts": "2026-07-08T09:21:00Z", "hours": 0.2592, "text": "workflow currently running!!!"}, {"post_id": 24579, "ts": "2026-07-08T08:26:24Z", "hours": 1.0267, "text": "All the rebuild work is complete; it’s time to open the PR."}, {"post_id": 24549, "ts": "2026-07-08T05:54:14Z", "hours": 3.2453, "text": "The interface is ready to use!"}, {"post_id": 23956, "ts": "2026-07-07T05:50:21Z", "hours": 0.6342, "text": "I felt this didn’t quite meet my aesthetic standards for the sidebar, so I decided to use Figma to design the UI."}, {"post_id": 23931, "ts": "2026-07-07T04:17:02Z", "hours": 0.75, "text": "Successful integration of the front-end and back-end."}, {"post_id": 23397, "ts": "2026-07-06T10:19:39Z", "hours": 2.0333, "text": "Remove Windows-specific GUI components and associated files from the project, including CMake configurations, resource files, and source code for the Flutter window implementation. This cleanup streamlines the project structure and eliminates unnecessary dependencies for non-Windows platforms."}, {"post_id": 23317, "ts": "2026-07-06T06:10:04Z", "hours": 1.2036, "text": "I ultimately gave up on using Flutter for frontend development; it was simply too difficult. Instead, I am using Next.js combined with pywebview to build the desktop frontend."}, {"post_id": 22716, "ts": "2026-07-05T09:19:30Z", "hours": 1.66, "text": "I have completed the API construction; in this phase, I encapsulated all of gamdl’s parameters—aligning them with the definitions in core_downloader.py —into a unified API. Next up is learning Flutter for the frontend."}, {"post_id": 22161, "ts": "2026-07-04T14:09:04Z", "hours": 0.845, "text": "Rebuild starting now!!! I’m using flutter for fronted FastAPI for backend"}, {"post_id": 22034, "ts": "2026-07-04T09:04:22Z", "hours": 2.1694, "text": "All preparatory work for the refactoring has been completed. Thanks to DeepSeek for sorting out this “spaghetti code.”"}, {"post_id": 20848, "ts": "2026-07-02T15:47:33Z", "hours": 1.5944, "text": "seems that I can’t fix the atmos download issue : ( but time to rebuild this project, I just made a TODO list"}, {"post_id": 11825, "ts": "2026-06-19T08:16:34Z", "hours": 0.3442, "text": "repair downloader_song_legacy.py"}, {"post_id": 11820, "ts": "2026-06-19T07:33:57Z", "hours": 3.7414, "text": "This conversation tracked the comprehensive refactoring and bug-fixing of the AppleMusic-Downloader project. The work began by diagnosing why CN-region songs failed with a KeyError on extendedAssetUrls — fixed by switching to .get() with a fallback, and adding a webplayback-based stream path for songs without enhancedHls . We then extracted the entire download orchestration from cli.py (a Click-based CLI) into a new core_downloader.py module — a pure Python API with no terminal dependencies — and rewired both cli.py and download_worker.py (the GUI’s QThread) to call it directly, eliminating a class of Windows GUI crashes caused by Click’s stdin / stdout assumptions. We fixed download_worker.py’s variable name bug ( remux_path vs remuxed_path ) that silently dropped song files, normalized Path / str type handling, added CENC stream support (ISO-23001-7 with data:;base64, KIDs) by reconstructing Widevine PSSH boxes and passing real KIDs to mp4decrypt , switched ffmpeg remux from -f ipod to -f mp4 and added automatic fragmentation detection with fallback to aac_at / aac re-encoding for playable output, and added backward-compatible config migration for the renamed codec_song enum. We also fixed the Windows manifest name, updated the PyInstaller .spec with missing hidden imports, and corrected several type annotation issues across models.py, downloader.py, and downloader_song.py. The result is that both standard Widevine songs (e.g., ROSÉ’s toxic till the end ) and CENC-encrypted songs (e.g., Queen’s Under Pressure via the 28:ctrp256 webplayback asset) now download and play correctly across all platforms."}, {"post_id": 8585, "ts": "2026-06-14T08:47:02Z", "hours": 2.8236, "text": "really thanks deepseek help me to rebuild the interface I updated the regular expression to account for Apple changing the location of the index.js file on the Apple Music web interface following WWDC2026. After removing redundant code, I used AI to add cross-platform compatibility support, moving closer to a full project refactor once the holidays are over. I also revamped the UI, implementing a card-stacking layout to make the logs easier to read. Huge thanks to AI—it has made fixing baffling bugs far more efficient."}, {"post_id": 268, "ts": "2026-06-01T14:14:37Z", "hours": 0.3014, "text": "Preparing to add new features and migrate the tech stack for cross-platform builds next month. In this update, I leveraged AI to refine part of the code and manually optimized and removed redundant code."}]...
|
Title: AppleMusic-Downloader by @Cret | Stardance
Title: AppleMusic-Downloader by @Cret | Stardance
Devlogs:
Preparing to add new features and migrate the tech stack for cross-platform builds next month. In this update, I leveraged AI to refine part of the code and manually optimized and removed redundant code.
really thanks deepseek help me to rebuild the interface I updated the regular expression to account for Apple changing the location of the index.js file on the Apple Music web interface following WWDC2026. After removing redundant code, I used AI to add cross-platform compatibility support, moving closer to a full project refactor once the holidays are over. I also revamped the UI, implementing a card-stacking layout to make the logs easier to read. Huge thanks to AI—it has made fixing baffling bugs far more efficient.
This conversation tracked the comprehensive refactoring and bug-fixing of the AppleMusic-Downloader project. The work began by diagnosing why CN-region songs failed with a KeyError on extendedAssetUrls — fixed by switching to .get() with a fallback, and adding a webplayback-based stream path for songs without enhancedHls . We then extracted the entire download orchestration from cli.py (a Click-based CLI) into a new core_downloader.py module — a pure Python API with no terminal dependencies — and rewired both cli.py and download_worker.py (the GUI’s QThread) to call it directly, eliminating a class of Windows GUI crashes caused by Click’s stdin / stdout assumptions. We fixed download_worker.py’s variable name bug ( remux_path vs remuxed_path ) that silently dropped song files, normalized Path / str type handling, added CENC stream support (ISO-23001-7 with data:;base64, KIDs) by reconstructing Widevine PSSH boxes and passing real KIDs to mp4decrypt , switched ffmpeg remux from -f ipod to -f mp4 and added automatic fragmentation detection with fallback to aac_at / aac re-encoding for playable output, and added backward-compatible config migration for the renamed codec_song enum. We also fixed the Windows manifest name, updated the PyInstaller .spec with missing hidden imports, and corrected several type annotation issues across models.py, downloader.py, and downloader_song.py. The result is that both standard Widevine songs (e.g., ROSÉ’s toxic till the end ) and CENC-encrypted songs (e.g., Queen’s Under Pressure via the 28:ctrp256 webplayback asset) now download and play correctly across all platforms.
repair downloader_song_legacy.py
seems that I can’t fix the atmos download issue : ( but time to rebuild this project, I just made a TODO list
All preparatory work for the refactoring has been completed. Thanks to DeepSeek for sorting out this “spaghetti code.”
Rebuild starting now!!! I’m using flutter for fronted FastAPI for backend
I have completed the API construction; in this phase, I encapsulated all of gamdl’s parameters—aligning them with the definitions in core_downloader.py —into a unified API. Next up is learning Flutter for the frontend.
I ultimately gave up on using Flutter for frontend development; it was simply too difficult. Instead, I am using Next.js combined with pywebview to build the desktop frontend.
Remove Windows-specific GUI components and associated files from the project, including CMake configurations, resource files, and source code for the Flutter window implementation. This cleanup streamlines the project structure and eliminates unnecessary dependencies for non-Windows platforms.
Successful integration of the front-end and back-end.
I felt this didn’t quite meet my aesthetic standards for the sidebar, so I decided to use Figma to design the UI.
The interface is ready to use!
All the rebuild work is complete; it’s time to open the PR.
workflow currently running!!!
published to PyPi!
The Dolby format finally downloaded normally. During this stage, copilot helped me debug and test the project.This project is ready to ship
I’ve been working on the AppleMusic-Downloader project, primarily debugging a Windows-specific issue where the desktop app would hang during downloads. The root cause turned out to be PyInstaller’s --windowed mode setting sys.stdout and sys.stderr to None , which broke async libraries like httpx and asyncio . The fix was calling AllocConsole() on Windows to allocate a visible console window and properly redirect all three standard streams ( stdin , stdout , stderr ). I also cleaned up unnecessary debug code (log file output, /api/logs endpoint), added step-by-step logging in the download pipeline to help diagnose future issues, fixed a few i18n key mismatches in the frontend, and added a note in both READMEs telling Windows users not to close the console window.
v2.5.0 just published new feature: TTML lyrics with translate Using asynchronous download scheduling doubles the speed of batch downloads. Accelerate Dolby Atmos format encoding and decoding add “new version” detect feature (This won’t work until my GitHub account is unbanned) amdl cli also optimizedget-lyrics logic and add more and smarter parameter degradation strategies
Ships:
The initial phase of this project involved some debugging work. A few days ago, I officially began the refactoring of this project. I removed redundant code and modules, abandoned the cumbersome PyQt, built a standard API backend using FastAPI, and built the web frontend using Next.js. You can run the packaged software now to try it out (don’t forget to install ffmpeg). If you don’t have an Apple Music subscription, DM @Cret on Slack and I’ll provide you with my own cookies.txt file.
First, I want to say that this project has surpassed 50,000 users. This year marks the project’s first year, and it has gained widespread popularity on various personal social media platforms and communities in China. My QQ user community has over 1,000 members. By using this downloader, I promise you will like https://amll.cret.uk it is a applemusic-like lryics running in your browser. So try it out; I promise you’ll like it! One thing to note is that my GitHub account was mistakenly suspended. If you need the macOS version and the opencookies.txt plugin, I will put the download links below. macos: https://cdn.hackclub.com/01a0f611-f1e0-79af-b3d1-be9b71d54349/AppleMusicDownloader-macos-arm64.dmg plugin: https://cdn.hackclub.com/01a14d82-54d0-7e29-a5ca-51fd7d0702e1/OpenCookies.txt.crx...
|
1792828577.4684432
|
1792914977.4684432
|
|
1187
|
My first slack bot! by @p14277376 | Stardance
|
p14277376
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @p14277376 | Stardan Title: My first slack bot! by @p14277376 | Stardance...
|
1792579741.156092
|
1793184541.156092
|
|
1188
|
Uninode by @Vijay | Stardance
|
Vijay
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Uninode by @Vijay | Stardance
|
1792547245.0712354
|
1793152045.0712354
|
|
1189
|
YDSE simulation by @R10 | Stardance
|
R10
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: YDSE simulation by @R10 | Stardance
|
1792922076.629393
|
1793786076.629393
|
|
1190
|
sdf by @souptiksamanta | Stardance
|
souptiksamanta
|
0
|
0.35
|
0
|
[]
|
[{"post_id": 61565, "ts": "202 [{"post_id": 61565, "ts": "2026-09-04T15:23:19Z", "hours": 0.3522, "text": "prnted the mount and it woks well here is a picture attached"}]...
|
Title: sdf by @souptiksamanta | Stardance
Devlogs Title: sdf by @souptiksamanta | Stardance
Devlogs:
prnted the mount and it woks well here is a picture attached...
|
1792694916.782224
|
1793299716.782224
|
|
1191
|
A robot that talks to people by @albinanil813 | St A robot that talks to people by @albinanil813 | Stardance...
|
albinanil813
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: A robot that talks to people by @albinanil8 Title: A robot that talks to people by @albinanil813 | Stardance...
|
1792713160.8431273
|
1793317960.8431273
|
|
1192
|
My awesome macropad! by @Jaye | Stardance
|
Jaye
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Jaye | Stardance
|
1792734442.224461
|
1793339242.224461
|
|
1193
|
Untitled project by @piyushbaghele0007 | Stardance
|
piyushbaghele0007
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @piyushbaghele0007 | St Title: Untitled project by @piyushbaghele0007 | Stardance...
|
1792658994.321008
|
1793263794.321008
|
|
1194
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792943374.6263046
|
1793807374.6263046
|
|
1195
|
Resourcerer by @devcmb | Stardance
|
devcmb
|
0
|
4.56
|
0
|
[]
|
[{"post_id": 977, "ts": "2026- [{"post_id": 977, "ts": "2026-06-02T19:13:47Z", "hours": 0.8181, "text": "Made the homepage look a bit nicer (similar to vscode’s). I also added better backend logging, because its best to track a lot of different operations that could possibly fail to help anyone looking at the log files. Finally, i put up an eslint CI build to lint new files to ensure code quality"}, {"post_id": 839, "ts": "2026-06-02T15:06:19Z", "hours": 1.7164, "text": "More backend stuff Before I can really start on the frontend, I want my backend codebase to be pretty clean so I can properly expand on it later. Added a logging system which outputs to a file when the window closes Added a DataController which handles setting up user data files (currently just an empty recents.json and logs directory) Made the Open Project button on the client redirect to the empty project page, and show the path to confirm it worked"}, {"post_id": 376, "ts": "2026-06-01T18:45:14Z", "hours": 2.0206, "text": "Started off the project with some boilerplate, then moved over to a controller system to organize all the backend code. I added an Inter-Process Communication (IPC) system that acts as a bridge between the electron app and the backend. With this, i just started with a basic “Open project” folder prompt. I’ll implement the button, then start on the main editor. A lot lies ahead, but I can do it 🔥"}]...
|
Title: Resourcerer by @devcmb | Stardance
Devlogs Title: Resourcerer by @devcmb | Stardance
Devlogs:
Started off the project with some boilerplate, then moved over to a controller system to organize all the backend code. I added an Inter-Process Communication (IPC) system that acts as a bridge between the electron app and the backend. With this, i just started with a basic “Open project” folder prompt. I’ll implement the button, then start on the main editor. A lot lies ahead, but I can do it 🔥
More backend stuff Before I can really start on the frontend, I want my backend codebase to be pretty clean so I can properly expand on it later. Added a logging system which outputs to a file when the window closes Added a DataController which handles setting up user data files (currently just an empty recents.json and logs directory) Made the Open Project button on the client redirect to the empty project page, and show the path to confirm it worked
Made the homepage look a bit nicer (similar to vscode’s). I also added better backend logging, because its best to track a lot of different operations that could possibly fail to help anyone looking at the log files. Finally, i put up an eslint CI build to lint new files to ensure code quality...
|
1792666357.2308576
|
1793271157.2308576
|
|
1196
|
Quaestor by @Thea | Stardance
|
Thea
|
0
|
10.79
|
0
|
[]
|
[{"post_id": 12789, "ts": "202 [{"post_id": 12789, "ts": "2026-06-20T22:18:40Z", "hours": 4.5311, "text": "Implemented the REST API for my Web app. I used an LLM to generate the structure of an API with a repository pattern, and implemented all the end points and logic myself."}, {"post_id": 10010, "ts": "2026-06-16T15:30:20Z", "hours": 5.0197, "text": "Spent a lot of time thinking about API structure, what endpoints I need, and how the user is going to interact with the application. After much fiddling, I’m finally happy with this result, and am now starting to implement it in Python."}, {"post_id": 462, "ts": "2026-06-01T22:14:22Z", "hours": 1.2408, "text": "Set up basic project structure and started making diagrams for the Database. I tried to get PlantUML to render it in Chens Notation for me, but not even an LLM could make sense of PlantUMLs Chen Support. So it has to stay as plain text."}]...
|
Title: Quaestor by @Thea | Stardance
Devlogs:
Set Title: Quaestor by @Thea | Stardance
Devlogs:
Set up basic project structure and started making diagrams for the Database. I tried to get PlantUML to render it in Chens Notation for me, but not even an LLM could make sense of PlantUMLs Chen Support. So it has to stay as plain text.
Spent a lot of time thinking about API structure, what endpoints I need, and how the user is going to interact with the application. After much fiddling, I’m finally happy with this result, and am now starting to implement it in Python.
Implemented the REST API for my Web app. I used an LLM to generate the structure of an API with a repository pattern, and implemented all the end points and logic myself....
|
1792648227.2461245
|
1793253027.2461245
|
|
1197
|
Tha Meaty Player by @trixieatwbs | Stardance
|
trixieatwbs
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-03T15:48:22Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "MPO is in the media folder on the repository. Anyway, I’ve had media player in the past for wackybox.org obviously but it kinda sucked. So I took inspiration from an old scratch project of mine and made this glorious load of crap. Enjoy, or maybe don’t", "repo": "https://github.com/wackyboxincorporated/wackyinc/", "demo": "https://wackybox.org/media"}]...
|
[{"post_id": 1463, "ts": "2026 [{"post_id": 1463, "ts": "2026-06-03T14:49:21Z", "hours": 0.4267, "text": "It’s alive"}, {"post_id": 308, "ts": "2026-06-01T15:56:13Z", "hours": 0.4347, "text": "dialing in the uh, the . “auto sync” soo maybe you can have like . a bunch of devices playing off the server that are all synced down to the millisecond! looks great on an OLED i guess."}]...
|
Title: Tha Meaty Player by @trixieatwbs | Stardanc Title: Tha Meaty Player by @trixieatwbs | Stardance
Devlogs:
dialing in the uh, the . “auto sync” soo maybe you can have like . a bunch of devices playing off the server that are all synced down to the millisecond! looks great on an OLED i guess.
It’s alive
Ships:
MPO is in the media folder on the repository. Anyway, I’ve had media player in the past for wackybox.org obviously but it kinda sucked. So I took inspiration from an old scratch project of mine and made this glorious load of crap. Enjoy, or maybe don’t...
|
1792850220.0927677
|
1792936620.0927677
|
|
1198
|
IT'S SPIDER MANN by @myra | Stardance
|
myra
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: IT'S SPIDER MANN by @myra | Stardance
|
1792680525.9845355
|
1793285325.9845355
|
|
1199
|
Pickleball heat map creator by @RamDaMonster | Sta Pickleball heat map creator by @RamDaMonster | Stardance...
|
RamDaMonster
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Pickleball heat map creator by @RamDaMonste Title: Pickleball heat map creator by @RamDaMonster | Stardance...
|
1792655667.4324903
|
1793260467.4324903
|
|
1200
|
My awesome macropad! by @Austin | Stardance
|
Austin
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Austin | Stardance
|
1792612215.066537
|
1793217015.066537
|