|
52019
|
Pointer Fighter (C based) by @nano | Stardance
|
nano
|
1
|
58.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T20:19:08Z", "hours": 58.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A roguelike room crawler completely built in C! What is in it? Randomly generated rooms with a fog of war for you to explore Three different enemy types with scaling difficulty Boss fights with unique item drop RPG Style fighting An interactive inventory that can be used during battle A battle log that tracks everything that happens in battle Items, pickups and a persistent highscore What am I proud of? The enemy pursuit and fleeing system. It was somewhat hard to implement but I think it made the game wayyyy better than before. I’m also proud of how the state machine turned out in the end. The game has strict separations between the different game states and first handles what the player/the game did during the game loop iteration and then after that is done draws it to the screen. That state machine was very prone to bugs and I had to spend a bunch of time to fix (fallthrough bug, etc. all talked about in devlogs). But I think the result that turned out at the end was great and I am very content with it How is it built? As said its completely built in C using ncurses as its graphics library using 12 source files (currently) with each one having a specific task only it does. The build is released using GitHub workflows and the binary can easily be downloaded and used on (almost) all glibc linux distros (the project was compiled for Ubuntu and you will have to install ncurses though) What I learned The game was actually my first real coding project ever apart from a few simple websites so I learned a bunch. I learned how to separate state transitions, I learned the importance of good and bad switch statements, bounds checking (really rough path) and I think most importantly: The power of code separation and making every file do its designated task. I often caught myself picking the easy and sloppy path and then fixing it properly and in retrospect helped with preventing a bunch of bugs Known limitations / plans for the future It’s my first project, so there are likely still issues I haven’t found. Even though I tried to find everything (a.e. using Valgrind told me there are no memory blocks definitely lost) there are still potentially memory safety issues or potential segfaults. It’s possible some edge cases might have slipped through. I’ve tested the project thoroughly and haven’t found any crashes since the last few debugging sessions but I cannot safely say it’s perfect. I think if I will find the time I will maybe add some new features like new special item related enemies or player status effects though I cannot safely say if i can Closing word I think building a game for my first real project was the right decision for me because I really had a bunch of fun building this project. I currently have some ideas for unrelated new projects (one is up on my profile check it out (; ) and I think this project was a really good pathway into coding for me. Check the GitHub and the demo video out and I hope you like the project", "repo": "https://github.com/skibidi-nano/Stardance-roguelike", "demo": "https://github.com/skibidi-nano/Stardance-roguelike/releases/tag/v1.0.1"}]...
|
[{"post_id": 73295, "ts": "202 [{"post_id": 73295, "ts": "2026-09-24T19:37:40Z", "hours": 3.1092, "text": "LOG 26: FINAL DEVLOG MAINLY BUG FIXES AND SOME MINOR CHANGES CHANGES Enemies previously scaled to strongly and beat you too hard after the boss fight. Also because it was hard to scale the opponents down i decided to make the hp of everyone higher (everything got stronger in theory, player has 100 starting hp, does 20 damage etc.) LATE ADDITIONS LICENSE I licensed the project under the MIT licesne because it seemed fitting BUILD FILE I added a build file for the repo so i could upload a release binary (ncurses is required tho) BUG FIXES HIGHSCORE BUG There was a bug with the highscore not being displayed when there was no highscore.txt file. I needed to change the handling of the fact that the open function returned NULL, because NULL either meant, no file was there or no file could be found which resulted in no file being created because the function exited when the open function returned NULL, the fix was pretty simple overall tho (just adding an extra if conditional to check) FULL INVENTORY BUG Previously when having a full inventory, you couldnt pick up new items, issue was when using items that state didnt reset so one full inventory meant no items anymore :( . The fix was just to reset the state after using items BOSS ITEM INVENTORY BUG I forgot to make the boss item return the correct state which resulted in the item sometimes not being put in the inventory. The fix was just to add return ENTER_LEGAL to the boss items if statement SET ROOM ISSUE Because of random rooms sometimes boss room dimensions where bigger than current room which resulted in bugs (see previous devlogs). My previous fix worked in theory but had more affinity for potential bugs so i changed the set room function from two static values to two values that get passed into the function"}, {"post_id": 71417, "ts": "2026-09-20T19:47:13Z", "hours": 5.0142, "text": "LOG 25: FLEEING ENEMIES (CONTAINS MANY CHANGES), BOSS ITEM REFACTOR FLEEING ENEMIES Enemies (except the boss) now have the ability to run away if the enemy would get killed by the next attack. The chance for this to happen is 10% and when they run away, they gain 1 HP per step they take and return to chasing the enemy if their hp is back at half of their max HP. FLEEING REWORK Before adding this feature, fleeing was the same practically as winning (the return type of the fight was STATE_VICTORY), i changed that to the proper STATE _FLED. Also before when fleeing, if you fled and another enemy of another type collided with you, he had normal stats but the enemy before that also got his stats reset. The same went for enemies of the same type. When fleeing from enemy A from type A and then colliding with enemy B from type A, he would have the stats of enemy A. The fix for both was to make a 2D Array of all enemies and their types, so each individual enemy stores its stats, not the battle function. PLAYER POSITION STRUCT Previously the player had ~ 8 different position variables, which was pretty clunky if i wanted to transport the player position to another function. Because of that i put all player positions into a singular struct, so i could pass all the player positions at once if i needed to. ENEMY PURSUIT FUNCTION REWORK Because enemies have to run away instead of chasing i had to rework the pursuit function a bit so it could also work in a reverse way. I had to make the function branch between the two states which took a bit more work than originally anticipated because i had a bunch of wrong ideas for how the function should work. Overall the function implementation was essentially to just use the inverse vector of the normal vector for the direction function BOSS ITEM FUNCTION/ITEM FUNCTION REFACTOR Because previously the boss item detection function and the item detection were separate the code didnt feel clean at all (felt like a lazy implementation for me), so i made the item function work with the boss item which makes the item function overall more open for new item types (if i will add any more)"}, {"post_id": 69703, "ts": "2026-09-17T16:40:29Z", "hours": 4.2308, "text": "LOG 24: BOSS ITEM DROP, CONTROLS SCREEN, NEW IN-GAME BANNER, ITEM TO INVENTORY REFACTOR, BUG FIXES FEATURES BOSS ITEM DROP I added an item that only the boss drops, when killed. Its ability is to make the enemy unable to attack for one turn. You will always get it when defeating the boss and has the ‘?’ glyph compare to regular items (‘+’). Its also the only item that can always be picked up (with normal items, if your inventory is full you cannot pick them up, with the boss item your first slot gets overwritten). CONTROLS SCREEN I added a basic controls screen so people that try the game out (now or when it ships), know what to do when playing. Currently most things are really straightforward but i added it just in case. The most important aspect will probably how to end the game because thats the most unintuitive one (even though i hope anyone testing the game doesnt want to quit it) ITEM TO INVENTORY REFACTOR I thought that the previous state of my item to inventory were pretty lazy so i changed the logic up a bit. Previously when picking up items the items would go into the spot after the last item that was picked up and when the inventory ran full the first item was swappped with the newly picked up item. I didnt like that looking back and because of that the logic now scans through the inventory until it finds an empty spot and puts the item in that empty slot. If the inventory is full no item can be picked up (except the boss item) and the player gets a message on their screen. They can then leave the item screen using ESC and the item is not removed and can be picked up later if you somehow make space in your inventory NEW IN-GAME BANNER Also pretty straightforward, i added a banner so the menu looks a little bit prettier :) BUG FIXES BOSS ROOM BUG Because of map and gamestates and me forgetting to implement a feature in the door collision checks, there was a bug when defeating the boss (the map stayed as it was, but had the usual visible map ‘#’ everywhere you hadnt already explored (you cant really explore much so there where many ‘#’ ’s around the map which was really ugly. The fix was to move a mapstate change from the function that is responsible for handling victory to the function handling doors BOSS BUG There was a bug after defeating the boss which resulted from the previous bug and its fix. Because i forgot an additional check in my door function when defeating the boss the boss would spawn again and overwrite your boss item. The boss also chased you (which normally doesnt happen) and you couldnt leave the room. The fix was just to add another condition to the if statement in the door function responsible for the boss room ENEMY REMOVAL BUG For some reason (i dont know how i made the bug happen), when defeating enemies the visible map lagged behind the normal map which resulted in defeated enemies appearing to still exist on the map for one iteration of the loop (pressing any button made them vanish). The fix was to add a call to the visible_map_init function after defeating enemies"}, {"post_id": 68741, "ts": "2026-09-15T17:34:46Z", "hours": 2.2667, "text": "LOG 23: BATTLE LOG FOR ITEMS, BUG FIXES, BUG FIXES, BUG FIXES, BUG FIXES FEATURE BATTLE LOG FOR ITEMS The previous battle log only logged attacks and the damage dealt, now the log also tracks if items are used or items deal damage BUG FIXES SEGFAULT There was a segfault when trying to render the bottom of deeper rooms because the render guard had a major fault (only disjunctions no conjunctions). Because of that the game tried to reach spaces of the visible_map array out of reach of the array which resulted in a segfault when trying to go into spaces out of reach of the array. The fix was changing the guard from if ((player_y + y) < MAX_HEIGHT || (player_x + x) < MAX_WIDTH || (player_y + y ) >= 0 || (player_x + x >= 0)) to if ((player_y + y) < MAX_HEIGHT && (player_x + x) < MAX_WIDTH && (player_y + y ) >= 0 && (player_x + x >= 0)) which fixed the issue BATTLE LOG NULL TERMINATOR FIX There was a bug with the battle log, where ^ were printed (NUL ascii in ncurses) because the battle log printed out every part of the string character by character (including the \\0 terminator). The fix was to just not print out the \\0 terminator to the screen BATTLE SELECTION BUG There was a bug with conflicting selection variables (multiple variables where named selection which resulted in wrong selections being displayed). The fix was to give every function their own selection variable which fixed the issue VISIBLE MAP GLITCH Because the visible map only updated itself in the perimeter you are standing in if you moved fast enough some characters lagged behind and made it look like there were way more enemies than there actually were. The fix was to update not only the perimeter on every movement but also update everything that had already been explored"}, {"post_id": 68208, "ts": "2026-09-14T18:13:59Z", "hours": 4.045, "text": "LOG 22: POISON ITEM, BATTLE LOG, MAIN LOOP AND ITEM SELECTION REWORK POISON ITEM A new item that does 3 tick damage every enemy turn, for 2 turns. Its the rarest item in the game as of right now and was somewhat complex to add (because of the tick damage and tracking how many turns have passed) BATTLE LOG A log that tracks the last two actions that have happened in the game. It currently only tracks damage and attacks but will track item usage and more detailed information in the future. It was a real headache to implement because i had contradictory logic between the log and my main loop and i had to reimplement it multiple times. But went well overall :) REWORKS MAIN LOOP REWORK I reworked the main loop a bit because even though it worked well in theory it was not really optimized and it was prone to bugs in the future which is why i felt like redoing it a bit. Now instead of every function handling their own init, every changing gamestate instantly also inits the state it was changed to. Because of this there are less possible bugs and its overall easier to do for future gamestates ITEM PICKUP REWORK I noticed that the logic for my items wasn’t really perfect and seemed unoptimized which is why i felt like changing it a bit. Because when picking up items there are only two possible things to do (which both result in the same exit scenario) i swapped my if/else if logic for a switch statement which made the code shorter, and more optimal"}, {"post_id": 67326, "ts": "2026-09-13T12:07:21Z", "hours": 3.1628, "text": "LOG 21: FOG OF WAR, HOMING ENEMIES, BATTLE LOGIC OVERALL AND BUG FIXES FEATURES HOMING ENEMIES The enemies now home on you with every step you take, meaning you actually have to think about where you will go or the enemies will catch up to you. This was implemented by adding a sign function that decide whether the enemy should move +1 or -1 and then moving the enemy by that value. There were some bugs regarding enemies in previous rooms which got fixed by resetting the whole array during map init FOG OF WAR I added a fog of war feature that obstructs everything in the map you haven’t explored yet. This also pairs very well with the homing enemies feature. You have to go around the map to look out for items and enemies which now also walk towards you, so every step matters now BATTLE LOGIC OVERHAUL After revisiting most of my code for commenting i realized how terrible most of my battle logic was so i made it a bit more efficient and most importantly more readable. Overall i realized how great switch statements are in the last few logs BUG FIXES DOOR BUG There was a bug with the map that was somewhat useful when testing but still was a bug. The issue was that if you tried to step into the door the game let you step onto that char. The issue was that i forgot to make the game think that the door (when closed) should behave exactly like a wall. So the fix was just to add the door char to the wall collision check function"}, {"post_id": 66634, "ts": "2026-09-12T14:15:36Z", "hours": 1.4594, "text": "LOG 20: DYNAMIC STATS, BUG FIXES, SMALL UPDATE TO DEBUG MODE AND MORE COMMENTS DYNAMIC STATS The stats of all enemies are now connected to the boss counter which is the number of boss fights that have been fought during the current run so there is real progression and you dont just get stupidly overpowered DEBUG MODE I basically just added the boss to the debug mode nothing much BUG FIXES There was a glitch with the boss room being cut off because the randomly generated room was smaller than the boss room. I had to push a few things around and put every type of map generation (standard, debug, boss) into a switch statement to make it work properly COMMENTS I pretty much forgot most of the comments in the game so i started adding way more comments where they should be so the code is hopefully more intuitive to follow NOTE I think the next update will be pretty big so watch out when it finally drops!!!"}, {"post_id": 66094, "ts": "2026-09-11T17:53:56Z", "hours": 3.0956, "text": "LOG 19: NEW ENEMY TYPE: BOSS FIGHTS, BETTER DOOR LOGIC, NEW SPRITES NEW ENEMY TYPE Because i thought that the normal enemies would be too easy to beat down the run i added the main boss (the pointer which stole the star sprite from the address enemy) and he will always be fought every 5-10 rooms (im not sure on the number) . Currently his stats are static but i plan on making them dynamic based on the number of rooms you went through. BOSS ROOM/BETTER DOOR LOGIC The old door logic practically only worked with a normal room and needed the regular enemies to all be defeated. I tweaked it a little so it works with boss triggers/defeating the boss NEW SPRITE(s) As i said the boss got the star sprite because he is the true pointer so i gave the address an ampersand sprite (which is way more fitting btw). But i am not completely satisfied with the current ampersand sprite (i will maybe change it sometime) NOTE This time there werent really any bugs except during building the boss logic but they got fixed along the way. This time it actually went rather smoothly :) Also ignore the absurd stats of the player"}, {"post_id": 65457, "ts": "2026-09-10T16:29:10Z", "hours": 1.7283, "text": "LOG 18: NEW ITEM AND BUG FIXES BUG FIXES BUG FIXES NEW ITEM DAMAGE POTION I added a new item that can be used in the inventory during battle which deals (currently) 4 damage to the opponent. Its the rarest item in the game right now (i think 1 in 11). Because of the new item i had to make a bunch of code more modular in the inventory logic (a trend in my code). But overall this was the reimplementation that went the smoothest BUG FIXES BATTLE INPUT BUG There was a bug in the battle screen that made the overall input very clunky and previously was only fixed by letting another bug happen but i fixed it by changing something in the switch statements of the battle logic INVENTORY ACCESS AND SELECTION BUG A bug that mainly happened because of the previous bug: When trying to access the inventory in battle the game automatically selected the first item and returned to battle and only after the second time accessing the inventory you could really use your items as you wished INVENTORY SELECTION BUG In the inventory itself a bug was caused by a lazy implementation which caused the display (not the real logic behind the inventory actually) to become very glitched out and very confusing. I just fixed this by fixing my old and bad implementation for a better more modular one (an overall trend in my code to be not that modular lol)"}, {"post_id": 64879, "ts": "2026-09-09T16:10:45Z", "hours": 2.0467, "text": "LOG 17: DEBUG MODE FOR FASTER TESTING DEBUG MODE I added a debug mode because i found that most of my testing time was wasted finding items or players in rooms (which was very annoying most of the time), so i added a debug room so that goes way faster. Though it is very useful it was somewhat hard to implement but it made the code modular the same way the enemy logic is modular now which is an improvement in two ways"}, {"post_id": 63783, "ts": "2026-09-07T18:59:06Z", "hours": 3.6586, "text": "LOG 16: NEW NPC, BETTER CODE MODULARITY, FIXED SOME BUGS NEW FEATURES New “Modulo” / % enemy (based on the modulo operator in c)! It has weaker stats but is way stronger in terms of attack power BETTER CODE MODULARITY Because at the start of the game my main idea was to only implement one enemy type (which was pretty dumb tbh), i had to rework most of the map and battle logic so it was more generic and welcoming to multiple entities (and will help me add more enemies in the future). BUG FIXES VISUAL GLITCH There was a bug for the most of the time in the game (an issue with unititialized variables being printed, which resulted in a visual glitch), which was actually a pretty easy fix (i had to change the switch statements that handle state input and drawing output a bit so that changing the gamestate doesn’t skip to drawing instantly) MEMORY LEAK Because of a dumb implementation of a function that was supposed to carry over the value of a variable in file A to file B which used pointers allocated with malloc i had a memory issue because in a common case i forgot to implement free which resulted in lost memory (the fix was actually just switching over to passing by value because it was just a single char being transported from file A to file B and passing by reference wasn’t necessary)"}, {"post_id": 62408, "ts": "2026-09-05T19:04:09Z", "hours": 2.9256, "text": "LOG 15: MAINLY BUG FIXES AND SOME MINOR NEW FEATURES NEW FEATURES Better life/strength display A feature that was originally used for debugging has turned out as a good feature for the game overall. It always displays your and the enemies HP, and attack power (even though the attack damage is partly random which i have to note somewhere so there will be no confusion) An item descriptor that tells you what the item you are looking at currently does There is only one item to be used in the inventory right now so you can only see what the heal item does but more will be added in the future. BUG FIXES Memory unsafety fixed There was an issue with unsafe memory access if the items in the inventory where bigger than 10. My fix is that if you have more than 10 items and you pick up a new one, the new item will replace the first item, the next one the second one etc. It also resolved a smaller issue with blank inventory space that ate up inventory space even though it was empty. Items not working fixed The functions responsible for changing your hp, healing you or making you stronger hat an issue with their pointer assignment (they were pointing to the wrong variable) which i fixed for all function which work great now. Bug with doors acting the same as item pickups Because of something what seemed to be a typo (a function returned 1 instead of 0), if you tried to go through a door and you haven’t beaten every enemy, instead of nothing happening you got a free item (which turned out to be a great testing feature for items, because i can get many items fast and easily). The fix was really easy (just swap the 1 for a 0) Health bar not drawing properly Because of a badly implemented function i added in the past which turned out to be completely redundant (got cut out) the current hp weren’t imported properly to the function that handles printing out the health bar which i fixed by using another variable responsible for storing the current hp of the player Misc fixes After having to audit most of the code again i noticed that there were some issues with the code (partly because it was fine as it was when it was written, part was just sloppy implementation) which i also fixed even though most of it was minor. CURRENT PLANS FOR THE FUTURE More items that can be used in battle MORE ENEMIES!!! Im planning to add more and stronger enemies in the future even though that will probably will be one of the biggest newfeatures as it requires rewriting most of the battle and map logic Enemies getting stronger if you get farther for better progression Overall some more optimization and bug fixes (there is always something to be fixed ;) )"}, {"post_id": 61748, "ts": "2026-09-04T20:04:49Z", "hours": 4.0994, "text": "LOG 14: Made the items more interactive and functional (items can now be picked up or ignored and will vanish if either is done) and i built a somewhat functional inventory accessible only in battle as of right now. I also had to clean up a bunch of code and had to re-implement some stuff as i implemented some things rather poorly before. There are still some things to be made a bit cleaner which will come in the next few devlogs but i felt like posting one for the current state of the game."}, {"post_id": 60461, "ts": "2026-09-02T19:58:48Z", "hours": 2.5567, "text": "LOG 13: Added items that are supposed to give you power-ups in the future. currently they dont really do anything except open a screen with a sprite for the corresponding item (SPRITES ARE AI GENERATED). The plan for the future is to deicde between regular and activatable items (the first give permanent buffs, the second can be activated) and to be able to choose the items while in battle. For now they can spawn on the map (anywhere except 1|1 and spots where enemies are) and open a random sprite of the 3 that are available right now!"}, {"post_id": 59815, "ts": "2026-09-01T19:33:57Z", "hours": 0.7692, "text": "LOG 12: This came quicker than i thought it would lol. I implemented the two things i spoke about in the last log. I added a highscore system so you can always see how far you came with beating the evil pointers and i also “locked” the rooms until youve beaten every enemy in the room. I plan on adding power ups and some other features (read the README in the repo). STAY UPDATED!!!"}, {"post_id": 59787, "ts": "2026-09-01T18:38:08Z", "hours": 1.3131, "text": "LOG 11: Im Back. After a short break i started to implement that enemies really “die” if you beat them! Now there is some kind of progress added into the game as you can actually beat the enemies!!! The next features will probably be a real highscore and restricitions in leaving the room until youve beaten every enemy. Till then stay updated!!!!"}, {"post_id": 55276, "ts": "2026-08-27T00:06:09Z", "hours": 1.4606, "text": "LOG 10: Added multiple enemies (dynamic based on room size) and stats get reset after battle. Battle still issnt finished yet as i think of two more things to add for every one thing i implement. Stay updated !!!"}, {"post_id": 54777, "ts": "2026-08-25T21:47:45Z", "hours": 1.3933, "text": "LOG 9: Battle now works better and you can see enemy h now. Code is way less tangled (though some stuff still needs to be improved and the battle still isnt fully polished). There are some bugs regarding memory right now (will be fixed ASAP). But as of now you can finally really battle the evil evil evil pointer!"}, {"post_id": 54087, "ts": "2026-08-24T21:27:57Z", "hours": 2.0, "text": "added the first implementation of working battle (taking and dealing damage, working health bar)! The main issues right now are that the code is a bit tangled and that the logic isnt polished at all. But after 2 hours of work i felt like i had to post a log so this is the current state (you can attack or try to run) (winning and running have the same effect as of now)"}, {"post_id": 52721, "ts": "2026-08-23T01:22:10Z", "hours": 1.3925, "text": "Kinda added a battle screen (not reactive yet but will happen soon) and made the ASCII designs for my characters with AI (i cannot make any good ASCII art sadly :( … yet). In the top left is what is supposed to resemble a health bar which also still needs to be implemented. Also made the code a bit cleaner added a few header guards and most importantly i added structs for the entities so their stats could be recorded. Thats it :)"}, {"post_id": 52658, "ts": "2026-08-22T22:08:53Z", "hours": 1.2631, "text": "Added a (somewhat) functional menu screen to view highscore and start the game (highscore function will be implemented soon!!!!. Also built the first prototype of the battle screen though it is no where near finished. I will probably make the menu screen a bit prettier in the future but the current design has to suffice for now. :)"}, {"post_id": 51911, "ts": "2026-08-21T20:21:08Z", "hours": 0.9469, "text": "Added “Npcs” (evil pointers/ampersands). Collision yet have to do something relevant (right now they only trigger a new room). Also fixed a few memory unsafeties."}, {"post_id": 51814, "ts": "2026-08-21T17:36:52Z", "hours": 1.5833, "text": "Implemented doors (currently a minus sign probably going to change that). If you collide with said door/minus sign you will enter a new, different sized room. I did that by choosing a random wall, a random spot on that wall which is the spot where the door will be and if you make contact with the door a new room will be initialized."}, {"post_id": 51346, "ts": "2026-08-20T23:28:52Z", "hours": 0.9203, "text": "Added collision checks for walls so you cant escape the rooms"}, {"post_id": 51318, "ts": "2026-08-20T22:03:55Z", "hours": 1.0767, "text": "Implemented functional Walking (even though there is no real border yet). I also fragmented the code a bit so its more readable!"}, {"post_id": 51226, "ts": "2026-08-20T19:16:10Z", "hours": 0.4381, "text": "“Roguelike” “Game” in C (neither of them has begun to be implemented. But i guess i have set up the very basics as of now"}]...
|
Title: Pointer Fighter (C based) by @nano | Starda Title: Pointer Fighter (C based) by @nano | Stardance
Devlogs:
“Roguelike” “Game” in C (neither of them has begun to be implemented. But i guess i have set up the very basics as of now
Implemented functional Walking (even though there is no real border yet). I also fragmented the code a bit so its more readable!
Added collision checks for walls so you cant escape the rooms
Implemented doors (currently a minus sign probably going to change that). If you collide with said door/minus sign you will enter a new, different sized room. I did that by choosing a random wall, a random spot on that wall which is the spot where the door will be and if you make contact with the door a new room will be initialized.
Added “Npcs” (evil pointers/ampersands). Collision yet have to do something relevant (right now they only trigger a new room). Also fixed a few memory unsafeties.
Added a (somewhat) functional menu screen to view highscore and start the game (highscore function will be implemented soon!!!!. Also built the first prototype of the battle screen though it is no where near finished. I will probably make the menu screen a bit prettier in the future but the current design has to suffice for now. :)
Kinda added a battle screen (not reactive yet but will happen soon) and made the ASCII designs for my characters with AI (i cannot make any good ASCII art sadly :( … yet). In the top left is what is supposed to resemble a health bar which also still needs to be implemented. Also made the code a bit cleaner added a few header guards and most importantly i added structs for the entities so their stats could be recorded. Thats it :)
added the first implementation of working battle (taking and dealing damage, working health bar)! The main issues right now are that the code is a bit tangled and that the logic isnt polished at all. But after 2 hours of work i felt like i had to post a log so this is the current state (you can attack or try to run) (winning and running have the same effect as of now)
LOG 9: Battle now works better and you can see enemy h now. Code is way less tangled (though some stuff still needs to be improved and the battle still isnt fully polished). There are some bugs regarding memory right now (will be fixed ASAP). But as of now you can finally really battle the evil evil evil pointer!
LOG 10: Added multiple enemies (dynamic based on room size) and stats get reset after battle. Battle still issnt finished yet as i think of two more things to add for every one thing i implement. Stay updated !!!
LOG 11: Im Back. After a short break i started to implement that enemies really “die” if you beat them! Now there is some kind of progress added into the game as you can actually beat the enemies!!! The next features will probably be a real highscore and restricitions in leaving the room until youve beaten every enemy. Till then stay updated!!!!
LOG 12: This came quicker than i thought it would lol. I implemented the two things i spoke about in the last log. I added a highscore system so you can always see how far you came with beating the evil pointers and i also “locked” the rooms until youve beaten every enemy in the room. I plan on adding power ups and some other features (read the README in the repo). STAY UPDATED!!!
LOG 13: Added items that are supposed to give you power-ups in the future. currently they dont really do anything except open a screen with a sprite for the corresponding item (SPRITES ARE AI GENERATED). The plan for the future is to deicde between regular and activatable items (the first give permanent buffs, the second can be activated) and to be able to choose the items while in battle. For now they can spawn on the map (anywhere except 1|1 and spots where enemies are) and open a random sprite of the 3 that are available right now!
LOG 14: Made the items more interactive and functional (items can now be picked up or ignored and will vanish if either is done) and i built a somewhat functional inventory accessible only in battle as of right now. I also had to clean up a bunch of code and had to re-implement some stuff as i implemented some things rather poorly before. There are still some things to be made a bit cleaner which will come in the next few devlogs but i felt like posting one for the current state of the game.
LOG 15: MAINLY BUG FIXES AND SOME MINOR NEW FEATURES NEW FEATURES Better life/strength display A feature that was originally used for debugging has turned out as a good feature for the game overall. It always displays your and the enemies HP, and attack power (even though the attack damage is partly random which i have to note somewhere so there will be no confusion) An item descriptor that tells you what the item you are looking at currently does There is only one item to be used in the inventory right now so you can only see what the heal item does but more will be added in the future. BUG FIXES Memory unsafety fixed There was an issue with unsafe memory access if the items in the inventory where bigger than 10. My fix is that if you have more than 10 items and you pick up a new one, the new item will replace the first item, the next one the second one etc. It also resolved a smaller issue with blank inventory space that ate up inventory space even though it was empty. Items not working fixed The functions responsible for changing your hp, healing you or making you stronger hat an issue with their pointer assignment (they were pointing to the wrong variable) which i fixed for all function which work great now. Bug with doors acting the same as item pickups Because of something what seemed to be a typo (a function returned 1 instead of 0), if you tried to go through a door and you haven’t beaten every enemy, instead of nothing happening you got a free item (which turned out to be a great testing feature for items, because i can get many items fast and easily). The fix was really easy (just swap the 1 for a 0) Health bar not drawing properly Because of a badly implemented function i added in the past which turned out to be completely redundant (got cut out) the current hp weren’t imported properly to the function that handles printing out the health bar which i fixed by using another variable responsible for storing the current hp of the player Misc fixes After having to audit most of the code again i noticed that there were some issues with the code (partly because it was fine as it was when it was written, part was just sloppy implementation) which i also fixed even though most of it was minor. CURRENT PLANS FOR THE FUTURE More items that can be used in battle MORE ENEMIES!!! Im planning to add more and stronger enemies in the future even though that will probably will be one of the biggest newfeatures as it requires rewriting most of the battle and map logic Enemies getting stronger if you get farther for better progression Overall some more optimization and bug fixes (there is always something to be fixed ;) )
LOG 16: NEW NPC, BETTER CODE MODULARITY, FIXED SOME BUGS NEW FEATURES New “Modulo” / % enemy (based on the modulo operator in c)! It has weaker stats but is way stronger in terms of attack power BETTER CODE MODULARITY Because at the start of the game my main idea was to only implement one enemy type (which was pretty dumb tbh), i had to rework most of the map and battle logic so it was more generic and welcoming to multiple entities (and will help me add more enemies in the future). BUG FIXES VISUAL GLITCH There was a bug for the most of the time in the game (an issue with unititialized variables being printed, which resulted in a visual glitch), which was actually a pretty easy fix (i had to change the switch statements that handle state input and drawing output a bit so that changing the gamestate doesn’t skip to drawing instantly) MEMORY LEAK Because of a dumb implementation of a function that was supposed to carry over the value of a variable in file A to file B which used pointers allocated with malloc i had a memory issue because in a common case i forgot to implement free which resulted in lost memory (the fix was actually just switching over to passing by value because it was just a single char being transported from file A to file B and passing by reference wasn’t necessary)
LOG 17: DEBUG MODE FOR FASTER TESTING DEBUG MODE I added a debug mode because i found that most of my testing time was wasted finding items or players in rooms (which was very annoying most of the time), so i added a debug room so that goes way faster. Though it is very useful it was somewhat hard to implement but it made the code modular the same way the enemy logic is modular now which is an improvement in two ways
LOG 18: NEW ITEM AND BUG FIXES BUG FIXES BUG FIXES NEW ITEM DAMAGE POTION I added a new item that can be used in the inventory during battle which deals (currently) 4 damage to the opponent. Its the rarest item in the game right now (i think 1 in 11). Because of the new item i had to make a bunch of code more modular in the inventory logic (a trend in my code). But overall this was the reimplementation that went the smoothest BUG FIXES BATTLE INPUT BUG There was a bug in the battle screen that made the overall input very clunky and previously was only fixed by letting another bug happen but i fixed it by changing something in the switch statements of the battle logic INVENTORY ACCESS AND SELECTION BUG A bug that mainly happened because of the previous bug: When trying to access the inventory in battle the game automatically selected the first item and returned to battle and only after the second time accessing the inventory you could really use your items as you wished INVENTORY SELECTION BUG In the inventory itself a bug was caused by a lazy implementation which caused the display (not the real logic behind the inventory actually) to become very glitched out and very confusing. I just fixed this by fixing my old and bad implementation for a better more modular one (an overall trend in my code to be not that modular lol)
LOG 19: NEW ENEMY TYPE: BOSS FIGHTS, BETTER DOOR LOGIC, NEW SPRITES NEW ENEMY TYPE Because i thought that the normal enemies would be too easy to beat down the run i added the main boss (the pointer which stole the star sprite from the address enemy) and he will always be fought every 5-10 rooms (im not sure on the number) . Currently his stats are static but i plan on making them dynamic based on the number of rooms you went through. BOSS ROOM/BETTER DOOR LOGIC The old door logic practically only worked with a normal room and needed the regular enemies to all be defeated. I tweaked it a little so it works with boss triggers/defeating the boss NEW SPRITE(s) As i said the boss got the star sprite because he is the true pointer so i gave the address an ampersand sprite (which is way more fitting btw). But i am not completely satisfied with the current ampersand sprite (i will maybe change it sometime) NOTE This time there werent really any bugs except during building the boss logic but they got fixed along the way. This time it actually went rather smoothly :) Also ignore the absurd stats of the player
LOG 20: DYNAMIC STATS, BUG FIXES, SMALL UPDATE TO DEBUG MODE AND MORE COMMENTS DYNAMIC STATS The stats of all enemies are now connected to the boss counter which is the number of boss fights that have been fought during the current run so there is real progression and you dont just get stupidly overpowered DEBUG MODE I basically just added the boss to the debug mode nothing much BUG FIXES There was a glitch with the boss room being cut off because the randomly generated room was smaller than the boss room. I had to push a few things around and put every type of map generation (standard, debug, boss) into a switch statement to make it work properly COMMENTS I pretty much forgot most of the comments in the game so i started adding way more comments where they should be so the code is hopefully more intuitive to follow NOTE I think the next update will be pretty big so watch out when it finally drops!!!
LOG 21: FOG OF WAR, HOMING ENEMIES, BATTLE LOGIC OVERALL AND BUG FIXES FEATURES HOMING ENEMIES The enemies now home on you with every step you take, meaning you actually have to think about where you will go or the enemies will catch up to you. This was implemented by adding a sign function that decide whether the enemy should move +1 or -1 and then moving the enemy by that value. There were some bugs regarding enemies in previous rooms which got fixed by resetting the whole array during map init FOG OF WAR I added a fog of war feature that obstructs everything in the map you haven’t explored yet. This also pairs very well with the homing enemies feature. You have to go around the map to look out for items and enemies which now also walk towards you, so every step matters now BATTLE LOGIC OVERHAUL After revisiting most of my code for commenting i realized how terrible most of my battle logic was so i made it a bit more efficient and most importantly more readable. Overall i realized how great switch statements are in the last few logs BUG FIXES DOOR BUG There was a bug with the map that was somewhat useful when testing but still was a bug. The issue was that if you tried to step into the door the game let you step onto that char. The issue was that i forgot to make the game think that the door (when closed) should behave exactly like a wall. So the fix was just to add the door char to the wall collision check function
LOG 22: POISON ITEM, BATTLE LOG, MAIN LOOP AND ITEM SELECTION REWORK POISON ITEM A new item that does 3 tick damage every enemy turn, for 2 turns. Its the rarest item in the game as of right now and was somewhat complex to add (because of the tick damage and tracking how many turns have passed) BATTLE LOG A log that tracks the last two actions that have happened in the game. It currently only tracks damage and attacks but will track item usage and more detailed information in the future. It was a real headache to implement because i had contradictory logic between the log and my main loop and i had to reimplement it multiple times. But went well overall :) REWORKS MAIN LOOP REWORK I reworked the main loop a bit because even though it worked well in theory it was not really optimized and it was prone to bugs in the future which is why i felt like redoing it a bit. Now instead of every function handling their own init, every changing gamestate instantly also inits the state it was changed to. Because of this there are less possible bugs and its overall easier to do for future gamestates ITEM PICKUP REWORK I noticed that the logic for my items wasn’t really perfect and seemed unoptimized which is why i felt like changing it a bit. Because when picking up items there are only two possible things to do (which both result in the same exit scenario) i swapped my if/else if logic for a switch statement which made the code shorter, and more optimal
LOG 23: BATTLE LOG FOR ITEMS, BUG FIXES, BUG FIXES, BUG FIXES, BUG FIXES FEATURE BATTLE LOG FOR ITEMS The previous battle log only logged attacks and the damage dealt, now the log also tracks if items are used or items deal damage BUG FIXES SEGFAULT There was a segfault when trying to render the bottom of deeper rooms because the render guard had a major fault (only disjunctions no conjunctions). Because of that the game tried to reach spaces of the visible_map array out of reach of the array which resulted in a segfault when trying to go into spaces out of reach of the array. The fix was changing the guard from if ((player_y + y) < MAX_HEIGHT || (player_x + x) < MAX_WIDTH || (player_y + y ) >= 0 || (player_x + x >= 0)) to if ((player_y + y) < MAX_HEIGHT && (player_x + x) < MAX_WIDTH && (player_y + y ) >= 0 && (player_x + x >= 0)) which fixed the issue BATTLE LOG NULL TERMINATOR FIX There was a bug with the battle log, where ^ were printed (NUL ascii in ncurses) because the battle log printed out every part of the string character by character (including the \0 terminator). The fix was to just not print out the \0 terminator to the screen BATTLE SELECTION BUG There was a bug with conflicting selection variables (multiple variables where named selection which resulted in wrong selections being displayed). The fix was to give every function their own selection variable which fixed the issue VISIBLE MAP GLITCH Because the visible map only updated itself in the perimeter you are standing in if you moved fast enough some characters lagged behind and made it look like there were way more enemies than there actually were. The fix was to update not only the perimeter on every movement but also update everything that had already been explored
LOG 24: BOSS ITEM DROP, CONTROLS SCREEN, NEW IN-GAME BANNER, ITEM TO INVENTORY REFACTOR, BUG FIXES FEATURES BOSS ITEM DROP I added an item that only the boss drops, when killed. Its ability is to make the enemy unable to attack for one turn. You will always get it when defeating the boss and has the ‘?’ glyph compare to regular items (‘+’). Its also the only item that can always be picked up (with normal items, if your inventory is full you cannot pick them up, with the boss item your first slot gets overwritten). CONTROLS SCREEN I added a basic controls screen so people that try the game out (now or when it ships), know what to do when playing. Currently most things are really straightforward but i added it just in case. The most important aspect will probably how to end the game because thats the most unintuitive one (even though i hope anyone testing the game doesnt want to quit it) ITEM TO INVENTORY REFACTOR I thought that the previous state of my item to inventory were pretty lazy so i changed the logic up a bit. Previously when picking up items the items would go into the spot after the last item that was picked up and when the inventory ran full the first item was swappped with the newly picked up item. I didnt like that looking back and because of that the logic now scans through the inventory until it finds an empty spot and puts the item in that empty slot. If the inventory is full no item can be picked up (except the boss item) and the player gets a message on their screen. They can then leave the item screen using ESC and the item is not removed and can be picked up later if you somehow make space in your inventory NEW IN-GAME BANNER Also pretty straightforward, i added a banner so the menu looks a little bit prettier :) BUG FIXES BOSS ROOM BUG Because of map and gamestates and me forgetting to implement a feature in the door collision checks, there was a bug when defeating the boss (the map stayed as it was, but had the usual visible map ‘#’ everywhere you hadnt already explored (you cant really explore much so there where many ‘#’ ’s around the map which was really ugly. The fix was to move a mapstate change from the function that is responsible for handling victory to the function handling doors BOSS BUG There was a bug after defeating the boss which resulted from the previous bug and its fix. Because i forgot an additional check in my door function when defeating the boss the boss would spawn again and overwrite your boss item. The boss also chased you (which normally doesnt happen) and you couldnt leave the room. The fix was just to add another condition to the if statement in the door function responsible for the boss room ENEMY REMOVAL BUG For some reason (i dont know how i made the bug happen), when defeating enemies the visible map lagged behind the normal map which resulted in defeated enemies appearing to still exist on the map for one iteration of the loop (pressing any button made them vanish). The fix was to add a call to the visible_map_init function after defeating enemies
LOG 25: FLEEING ENEMIES (CONTAINS MANY CHANGES), BOSS ITEM REFACTOR FLEEING ENEMIES Enemies (except the boss) now have the ability to run away if the enemy would get killed by the next attack. The chance for this to happen is 10% and when they run away, they gain 1 HP per step they take and return to chasing the enemy if their hp is back at half of their max HP. FLEEING REWORK Before adding this feature, fleeing was the same practically as winning (the return type of the fight was STATE_VICTORY), i changed that to the proper STATE _FLED. Also before when fleeing, if you fled and another enemy of another type collided with you, he had normal stats but the enemy before that also got his stats reset. The same went for enemies of the same type. When fleeing from enemy A from type A and then colliding with enemy B from type A, he would have the stats of enemy A. The fix for both was to make a 2D Array of all enemies and their types, so each individual enemy stores its stats, not the battle function. PLAYER POSITION STRUCT Previously the player had ~ 8 different position variables, which was pretty clunky if i wanted to transport the player position to another function. Because of that i put all player positions into a singular struct, so i could pass all the player positions at once if i needed to. ENEMY PURSUIT FUNCTION REWORK Because enemies have to run away instead of chasing i had to rework the pursuit function a bit so it could also work in a reverse way. I had to make the function branch between the two states which took a bit more work than originally anticipated because i had a bunch of wrong ideas for how the function should work. Overall the function implementation was essentially to just use the inverse vector of the normal vector for the direction function BOSS ITEM FUNCTION/ITEM FUNCTION REFACTOR Because previously the boss item detection function and the item detection were separate the code didnt feel clean at all (felt like a lazy implementation for me), so i made the item function work with the boss item which makes the item function overall more open for new item types (if i will add any more)
LOG 26: FINAL DEVLOG MAINLY BUG FIXES AND SOME MINOR CHANGES CHANGES Enemies previously scaled to strongly and beat you too hard after the boss fight. Also because it was hard to scale the opponents down i decided to make the hp of everyone higher (everything got stronger in theory, player has 100 starting hp, does 20 damage etc.) LATE ADDITIONS LICENSE I licensed the project under the MIT licesne because it seemed fitting BUILD FILE I added a build file for the repo so i could upload a release binary (ncurses is required tho) BUG FIXES HIGHSCORE BUG There was a bug with the highscore not being displayed when there was no highscore.txt file. I needed to change the handling of the fact that the open function returned NULL, because NULL either meant, no file was there or no file could be found which resulted in no file being created because the function exited when the open function returned NULL, the fix was pretty simple overall tho (just adding an extra if conditional to check) FULL INVENTORY BUG Previously when having a full inventory, you couldnt pick up new items, issue was when using items that state didnt reset so one full inventory meant no items anymore :( . The fix was just to reset the state after using items BOSS ITEM INVENTORY BUG I forgot to make the boss item return the correct state which resulted in the item sometimes not being put in the inventory. The fix was just to add return ENTER_LEGAL to the boss items if statement SET ROOM ISSUE Because of random rooms sometimes boss room dimensions where bigger than current room which resulted in bugs (see previous devlogs). My previous fix worked in theory but had more affinity for potential bugs so i changed the set room function from two static values to two values that get passed into the function
Ships:
A roguelike room crawler completely built in C! What is in it? Randomly generated rooms with a fog of war for you to explore Three different enemy types with scaling difficulty Boss fights with unique item drop RPG Style fighting An interactive inventory that can be used during battle A battle log that tracks everything that happens in battle Items, pickups and a persistent highscore What am I proud of? The enemy pursuit and fleeing system. It was somewhat hard to implement but I think it made the game wayyyy better than before. I’m also proud of how the state machine turned out in the end. The game has strict separations between the different game states and first handles what the player/the game did during the game loop iteration and then after that is done draws it to the screen. That state machine was very prone to bugs and I had to spend a bunch of time to fix (fallthrough bug, etc. all talked about in devlogs). But I think the result that turned out at the end was great and I am very content with it How is it built? As said its completely built in C using ncurses as its graphics library using 12 source files (currently) with each one having a specific task only it does. The build is released using GitHub workflows and the binary can easily be downloaded and used on (almost) all glibc linux distros (the project was compiled for Ubuntu and you will have to install ncurses though) What I learned The game was actually my first real coding project ever apart from a few simple websites so I learned a bunch. I learned how to separate state transitions, I learned the importance of good and bad switch statements, bounds checking (really rough path) and I think most importantly: The power of code separation and making every file do its designated task. I often caught myself picking the easy and sloppy path and then fixing it properly and in retrospect helped with preventing a bunch of bugs Known limitations / plans for the future It’s my first project, so there are likely still issues I haven’t found. Even though I tried to find everything (a.e. using Valgrind told me there are no memory blocks definitely lost) there are still potentially memory safety issues or potential segfaults. It’s possible some edge cases might have slipped through. I’ve tested the project thoroughly and haven’t found any crashes since the last few debugging sessions but I cannot safely say it’s perfect. I think if I will find the time I will maybe add some new features like new special item related enemies or player status effects though I cannot safely say if i can Closing word I think building a game for my first real project was the right decision for me because I really had a bunch of fun building this project. I currently have some ideas for unrelated new projects (one is up on my profile check it out (; ) and I think this project was a really good pathway into coding for me. Check the GitHub and the demo video out and I hope you like the project...
|
1793347046.9769483
|
1793433446.9769483
|
|
65218
|
mywebsite by @geeky | Stardance
|
geeky
|
1
|
10.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-27T20:54:20Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "ita a tracker that makes keep your streak easier", "repo": "https://github.com/filippoplesca3-wq/habit-tracker", "demo": "https://filippoplesca3-wq.github.io/habit-tracker/"}]...
|
[{"post_id": 73298, "ts": "202 [{"post_id": 73298, "ts": "2026-09-24T19:54:07Z", "hours": 10.0153, "text": "im working on an habit tracker for streaks"}]...
|
Title: mywebsite by @geeky | Stardance
Devlogs:
i Title: mywebsite by @geeky | Stardance
Devlogs:
im working on an habit tracker for streaks
Ships:
ita a tracker that makes keep your streak easier...
|
1792814214.0890195
|
1793678214.0890195
|
|
14232
|
FennecOS by @kingsuper195 | Stardance
|
kingsuper195
|
1
|
4.1
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-11T11:55:41Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "FennecOS webEdition is a mock-up gui version of the true FennecOS that is yet to be created.", "repo": "https://github.com/kingsuper195/fennecOSweb", "demo": "https://kingsuper195.github.io/fennecOSweb"}]...
|
[{"post_id": 7330, "ts": "2026 [{"post_id": 7330, "ts": "2026-06-12T07:02:48Z", "hours": 1.0992, "text": "Added notes app with localStorage"}, {"post_id": 6787, "ts": "2026-06-11T11:30:43Z", "hours": 1.8639, "text": "Jam number 4, my custom app was a pocketwatch"}, {"post_id": 6094, "ts": "2026-06-10T07:41:41Z", "hours": 0.6475, "text": "Completed “jam” number 3, and added a header bar to the window."}, {"post_id": 6080, "ts": "2026-06-10T06:57:52Z", "hours": 0.5878, "text": "First two “jams” completed. A welcome window and top bar are complete."}]...
|
Title: FennecOS by @kingsuper195 | Stardance
Devl Title: FennecOS by @kingsuper195 | Stardance
Devlogs:
First two “jams” completed. A welcome window and top bar are complete.
Completed “jam” number 3, and added a header bar to the window.
Jam number 4, my custom app was a pocketwatch
Added notes app with localStorage
Ships:
FennecOS webEdition is a mock-up gui version of the true FennecOS that is yet to be created....
|
1793285757.0283802
|
1793372157.0283802
|
|
64739
|
WeatherFetch by @SilentVelocity | Stardance
|
SilentVelocity
|
1
|
9.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T20:19:04Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Welcome to Weather Fetch. This Website displays weather of a location by requesting permission for location of user and sends API requests to Open Meteo for weather information and a separate request to bigdatacloud.net for displaying the location. What I found challenging was making the AQI feature work and making the correct URLs for the API calls. I’m Proud of the structure that I’ve given to my JS. The JS is not messily tangled altogether but rather in neat blocks of code. This prevents everything from breaking if one thing breaks. Another thing is the way I’ve used THREE APIs for this. sounds big.", "repo": "https://github.com/VolarQuill/WeatherFetch", "demo": "https://weather-fetch-six.vercel.app/"}]...
|
[{"post_id": 73303, "ts": "202 [{"post_id": 73303, "ts": "2026-09-24T20:09:17Z", "hours": 1.7786, "text": "The project is officially done!!! I got over with the AQI, and went on to add some animations to the website and two separate alerts. One alert for high UV and one alert for high chance of rain."}, {"post_id": 73237, "ts": "2026-09-24T17:12:07Z", "hours": 6.6658, "text": "Okay. A lot has happened now actually. I’ve a big weather condition block, added time, location, added a lot more of CSS, added stickers too! Working on adding AQI and potentially FORECAST! i probably wont be doing forecast cuz AQI adding AQI has a lot more extra steps than adding the other stats, and i dont seem to figure it out. See the github commits for the proper progressions of features. i forgot about devlogs sorry"}, {"post_id": 72144, "ts": "2026-09-22T09:41:56Z", "hours": 0.8428, "text": "I finally got the browser to ask for the user’s permission for location. NOT a fan of making error messages work."}]...
|
Title: WeatherFetch by @SilentVelocity | Stardance Title: WeatherFetch by @SilentVelocity | Stardance
Devlogs:
I finally got the browser to ask for the user’s permission for location. NOT a fan of making error messages work.
Okay. A lot has happened now actually. I’ve a big weather condition block, added time, location, added a lot more of CSS, added stickers too! Working on adding AQI and potentially FORECAST! i probably wont be doing forecast cuz AQI adding AQI has a lot more extra steps than adding the other stats, and i dont seem to figure it out. See the github commits for the proper progressions of features. i forgot about devlogs sorry
The project is officially done!!! I got over with the AQI, and went on to add some animations to the website and two separate alerts. One alert for high UV and one alert for high chance of rain.
Ships:
Welcome to Weather Fetch. This Website displays weather of a location by requesting permission for location of user and sends API requests to Open Meteo for weather information and a separate request to bigdatacloud.net for displaying the location. What I found challenging was making the AQI feature work and making the correct URLs for the API calls. I’m Proud of the structure that I’ve given to my JS. The JS is not messily tangled altogether but rather in neat blocks of code. This prevents everything from breaking if one thing breaks. Another thing is the way I’ve used THREE APIs for this. sounds big....
|
1793213632.0650158
|
1793300032.0650158
|
|
61021
|
Expenses-tracker by @kareemwaleed | Stardance
|
kareemwaleed
|
2
|
3.0
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T20:21:21Z", "hours": 1.0, "multiplier": 1.52, "payout": 1, "blessing": "neutral", "text": "I improved the ui /ux I made the site responsive I added animations on hovering", "repo": "https://github.com/kokx138/expenses-tracker", "demo": "https://kokx138.github.io/expenses-tracker/"}, {"ship_num": 2, "ts": "2026-09-21T10:56:20Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a complete working expenses tracker you can add income and expenses in it , it is fully working you can add income by entering positive values you can add expenses by adding - values it saves what you have entered in local storage I found it challenging to write js code and I got many bugs because I often forget the semi column", "repo": "https://github.com/kokx138/expenses-tracker", "demo": "https://kokx138.github.io/expenses-tracker/"}]...
|
[{"post_id": 73308, "ts": "202 [{"post_id": 73308, "ts": "2026-09-24T20:19:46Z", "hours": 1.045, "text": "I improved the ui of my expense tracker and I added some animations also I made it responsive"}, {"post_id": 71705, "ts": "2026-09-21T10:50:33Z", "hours": 0.5956, "text": "MY SITE IS FINALLY WORKING I ADDED JS"}, {"post_id": 67003, "ts": "2026-09-13T01:13:01Z", "hours": 1.5892, "text": "Thats expenses tracker"}]...
|
Title: Expenses-tracker by @kareemwaleed | Stardan Title: Expenses-tracker by @kareemwaleed | Stardance
Devlogs:
Thats expenses tracker
MY SITE IS FINALLY WORKING I ADDED JS
I improved the ui of my expense tracker and I added some animations also I made it responsive
Ships:
I made a complete working expenses tracker you can add income and expenses in it , it is fully working you can add income by entering positive values you can add expenses by adding - values it saves what you have entered in local storage I found it challenging to write js code and I got many bugs because I often forget the semi column
I improved the ui /ux I made the site responsive I added animations on hovering...
|
1793206617.9980984
|
1793293017.9980984
|
|
65248
|
Whoami? by @foreignmoney | Stardance
|
foreignmoney
|
0
|
0.6
|
0
|
[]
|
[{"post_id": 73322, "ts": "202 [{"post_id": 73322, "ts": "2026-09-24T21:19:21Z", "hours": 0.6039, "text": "Added new features to the bot, Including: - clairo gif when saying clairo; - laufey gif when saying laufey; - if you say test123 it replies with test + the number of times people said test123(reference to the making of the function of the laufey gif ). whole bot is still in making, btw"}]...
|
Title: Whoami? by @foreignmoney | Stardance
Devlo Title: Whoami? by @foreignmoney | Stardance
Devlogs:
Added new features to the bot, Including: - clairo gif when saying clairo; - laufey gif when saying laufey; - if you say test123 it replies with test + the number of times people said test123(reference to the making of the function of the laufey gif ). whole bot is still in making, btw...
|
1793084171.005546
|
1793688971.005546
|
|
62089
|
My first site by @Manu_Gurgel | Stardance
|
Manu_Gurgel
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T00:14:01Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created my first website to introduce myself using HTML and CSS; I had never programmed anything like this before, having previously only trained for C++ programming competitions. At first, I found it quite challenging, but with the help of AI to fix errors and understand how to use certain elements, the site began to take shape. On the site, you can find information about my academic background and a link to Neps Academy, where you can create an account to access programming exercises in various languages (C, C++, Python, etc.). I still think there is plenty of room for improvement—such as adding more information and features, and making it look better and more organized—but for now, this is how it stands.", "repo": "https://github.com/Manu-Gurgel/Teste-1", "demo": "https://manu-gurgel.github.io/Teste-1/"}]...
|
[{"post_id": 73323, "ts": "202 [{"post_id": 73323, "ts": "2026-09-24T21:25:12Z", "hours": 1.035, "text": "I’m thinking about more informations that I could add to the site to make a portifolio"}, {"post_id": 71716, "ts": "2026-09-21T11:24:41Z", "hours": 2.4125, "text": "I’m working on my first website to introduce myself and tell about my programming journey"}]...
|
Title: My first site by @Manu_Gurgel | Stardance
Title: My first site by @Manu_Gurgel | Stardance
Devlogs:
I’m working on my first website to introduce myself and tell about my programming journey
I’m thinking about more informations that I could add to the site to make a portifolio
Ships:
I created my first website to introduce myself using HTML and CSS; I had never programmed anything like this before, having previously only trained for C++ programming competitions. At first, I found it quite challenging, but with the help of AI to fix errors and understand how to use certain elements, the site began to take shape. On the site, you can find information about my academic background and a link to Neps Academy, where you can create an account to access programming exercises in various languages (C, C++, Python, etc.). I still think there is plenty of room for improvement—such as adding more information and features, and making it look better and more organized—but for now, this is how it stands....
|
1793209900.2965333
|
1793296300.2965333
|
|
65227
|
My first OS by @Kuroperenquen | Stardance
|
Kuroperenquen
|
0
|
1.87
|
0
|
[]
|
[{"post_id": 73328, "ts": "202 [{"post_id": 73328, "ts": "2026-09-24T21:33:51Z", "hours": 1.8658, "text": "The Adrian web OS (will change the name later)"}]...
|
Title: My first OS by @Kuroperenquen | Stardance
Title: My first OS by @Kuroperenquen | Stardance
Devlogs:
The Adrian web OS (will change the name later)...
|
1793084132.9199455
|
1793688932.9199455
|
|
6035
|
MediScan by @lilboimonke | Stardance
|
lilboimonke
|
0
|
1.39
|
0
|
[]
|
[{"post_id": 7333, "ts": "2026 [{"post_id": 7333, "ts": "2026-06-12T07:17:07Z", "hours": 1.3858, "text": "Worked on some debugging, added some new features to the ui, overall making this look like a usable app. I also finished all the backend."}]...
|
Title: MediScan by @lilboimonke | Stardance
Devlo Title: MediScan by @lilboimonke | Stardance
Devlogs:
Worked on some debugging, added some new features to the ui, overall making this look like a usable app. I also finished all the backend....
|
1792727250.7032042
|
1793332050.7032042
|
|
12515
|
Stellar Safari by @NexBlade-Studios | Stardance
|
NexBlade-Studios
|
0
|
29.95
|
0
|
[]
|
[{"post_id": 73332, "ts": "202 [{"post_id": 73332, "ts": "2026-09-24T21:47:34Z", "hours": 3.3581, "text": "Although it might seem like I haven’t changed much, behind the scenes there’s been a lot of progress. Apart from the minor UI tweaks where I added a box and border to the different bars, made the energy bar yellow to match the power cells I modelled and made the overall colour scheme blue instead of having different colours, I have been working on the core systems that change the values of the different bars. For example, I linked the heat bar to the actual mining system which is now in place, and allows the player to actually mine the ores, the drill durability, energy and heat then all get updated. And then when the drill overheats that is also handled. Now I just need to make it look a bit nicer, since there is currently no particles or animation and ores just disappear."}, {"post_id": 71400, "ts": "2026-09-20T19:11:01Z", "hours": 1.5186, "text": "Done some work on the UI. Would appreciate some feedback!"}, {"post_id": 71175, "ts": "2026-09-20T12:06:16Z", "hours": 1.1031, "text": "I have made some quick renders that I am going to be using for the inventory icons."}, {"post_id": 70928, "ts": "2026-09-20T01:58:06Z", "hours": 3.1233, "text": "The drills have been textured now and man do they look clean!!! I have kept them to the same red aesthetic since I have made it so they are all made by one company called the Stellar Frontier Agency, and they are the ones who have sent you to collect and mine resources. Once I flesh out more of the “lore” of the game I will be sure to share!"}, {"post_id": 67683, "ts": "2026-09-13T21:05:33Z", "hours": 5.9056, "text": "I have been working more on some 3D models for drills that I will have in the game. The premise is this. The player starts out with a simple drill. It can mine copper and iron ore, however it is quite slow because it overheats quickly and also requires recharging often. The player can upgrade three parts of the drill to improve it. First they can upgrade the energy capacity so the drill can be used for longer without needing more energy to run. Or they can upgrade the cooling which means the drill will not overheat in the middle of drilling as often. Or they can upgrade the drill head, which can improve other aspects such as the amount of material you get per ore."}, {"post_id": 58268, "ts": "2026-08-30T17:14:53Z", "hours": 1.0775, "text": "Really testing the limits of my optimisation here. I was just playing around with some settings and wanted to see if the game would still run at a spawn radius of 100 and surprisingly it does. I have added a world object manager that now handles despawning ores and other items, keeping it separate to the tiles. I managed to capture this screenshot from underneath the “lunar surface” in the scene view, and it looks quite like an asteroid belt which I though was pretty cool."}, {"post_id": 57746, "ts": "2026-08-30T00:40:04Z", "hours": 6.3875, "text": "Well I said I wouldn’t be doing more work on the tile generation system but well, I just couldn’t help it. Previously the tiles only generated in a small radius around the player, which meant that it lost the immersive feel of space exploration, where it should feel like a truly endless expanse. This is why I changed this system to instead spawn a semicircle of tiles in front of the player. This allows for a larger range of tiles and better view. I have also implemented my ore generation in this system, so iron and copper can now be found on the surface. I also added key optimisation features such as object pooling, which means that the tiles don’t constantly need to be instantiated but are instead pooled and reused which significantly improves performance. The next thing I want to work on now is adding more resource spawns and a crafting system so the resources can actually be used for improving your spaceship and building your lunar colony!"}, {"post_id": 51984, "ts": "2026-08-21T23:54:52Z", "hours": 1.8767, "text": "Currently I have been working on not just tile generation which was my main focus before, but now I am looking at ore and resource generation. In my game I have some key resources, those being: copper iron power cells gems / crystals (idk which one to call) So what the game loop will be is that across the moon’s surface there will be certain resource deposits. In order to obtain those resources there will some obstacle in the way. For example, around iron deposits there is a higher chance of crater formation. Power cells can also be used to power generators and such but I have not got onto that yet."}, {"post_id": 7089, "ts": "2026-06-11T21:18:33Z", "hours": 4.475, "text": "For the past couple of days I have been working on implementing different systems that make up the core of the gameplay. Namely, the grid generator and the animations. Now the player has the freedom to move in any direction they wish, with tiles randomly generating in all directions. This is moving the project closer to the exploration game I intend. I still have to add ores, power stations, hazards and puzzles, but this is a step in the right direction."}, {"post_id": 4850, "ts": "2026-06-08T11:52:13Z", "hours": 1.1253, "text": "I have been working on this project for a couple of months so far. This game is basically a survival game where the player is an astronaut who crash lands on the moon and has to repair their spaceship in order to go to other planets. Currently I have implemented a simple grid movement and also some initial tile management. The main thing that I added was a way of keeping the player in view by hiding any objects in front of the camera through the use of raycasts. I still have to work on the actual tile generation and eventual puzzle mechanics to complete the game."}]...
|
Title: Stellar Safari by @NexBlade-Studios | Stard Title: Stellar Safari by @NexBlade-Studios | Stardance
Devlogs:
I have been working on this project for a couple of months so far. This game is basically a survival game where the player is an astronaut who crash lands on the moon and has to repair their spaceship in order to go to other planets. Currently I have implemented a simple grid movement and also some initial tile management. The main thing that I added was a way of keeping the player in view by hiding any objects in front of the camera through the use of raycasts. I still have to work on the actual tile generation and eventual puzzle mechanics to complete the game.
For the past couple of days I have been working on implementing different systems that make up the core of the gameplay. Namely, the grid generator and the animations. Now the player has the freedom to move in any direction they wish, with tiles randomly generating in all directions. This is moving the project closer to the exploration game I intend. I still have to add ores, power stations, hazards and puzzles, but this is a step in the right direction.
Currently I have been working on not just tile generation which was my main focus before, but now I am looking at ore and resource generation. In my game I have some key resources, those being: copper iron power cells gems / crystals (idk which one to call) So what the game loop will be is that across the moon’s surface there will be certain resource deposits. In order to obtain those resources there will some obstacle in the way. For example, around iron deposits there is a higher chance of crater formation. Power cells can also be used to power generators and such but I have not got onto that yet.
Well I said I wouldn’t be doing more work on the tile generation system but well, I just couldn’t help it. Previously the tiles only generated in a small radius around the player, which meant that it lost the immersive feel of space exploration, where it should feel like a truly endless expanse. This is why I changed this system to instead spawn a semicircle of tiles in front of the player. This allows for a larger range of tiles and better view. I have also implemented my ore generation in this system, so iron and copper can now be found on the surface. I also added key optimisation features such as object pooling, which means that the tiles don’t constantly need to be instantiated but are instead pooled and reused which significantly improves performance. The next thing I want to work on now is adding more resource spawns and a crafting system so the resources can actually be used for improving your spaceship and building your lunar colony!
Really testing the limits of my optimisation here. I was just playing around with some settings and wanted to see if the game would still run at a spawn radius of 100 and surprisingly it does. I have added a world object manager that now handles despawning ores and other items, keeping it separate to the tiles. I managed to capture this screenshot from underneath the “lunar surface” in the scene view, and it looks quite like an asteroid belt which I though was pretty cool.
I have been working more on some 3D models for drills that I will have in the game. The premise is this. The player starts out with a simple drill. It can mine copper and iron ore, however it is quite slow because it overheats quickly and also requires recharging often. The player can upgrade three parts of the drill to improve it. First they can upgrade the energy capacity so the drill can be used for longer without needing more energy to run. Or they can upgrade the cooling which means the drill will not overheat in the middle of drilling as often. Or they can upgrade the drill head, which can improve other aspects such as the amount of material you get per ore.
The drills have been textured now and man do they look clean!!! I have kept them to the same red aesthetic since I have made it so they are all made by one company called the Stellar Frontier Agency, and they are the ones who have sent you to collect and mine resources. Once I flesh out more of the “lore” of the game I will be sure to share!
I have made some quick renders that I am going to be using for the inventory icons.
Done some work on the UI. Would appreciate some feedback!
Although it might seem like I haven’t changed much, behind the scenes there’s been a lot of progress. Apart from the minor UI tweaks where I added a box and border to the different bars, made the energy bar yellow to match the power cells I modelled and made the overall colour scheme blue instead of having different colours, I have been working on the core systems that change the values of the different bars. For example, I linked the heat bar to the actual mining system which is now in place, and allows the player to actually mine the ores, the drill durability, energy and heat then all get updated. And then when the drill overheats that is also handled. Now I just need to make it look a bit nicer, since there is currently no particles or animation and ores just disappear....
|
1792770553.6828525
|
1793375353.6828525
|
|
46490
|
Periodic by @crx1x1 | Stardance
|
crx1x1
|
1
|
7.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-03T22:50:27Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "After 8 hours of development, I present the Periodic Table for the Evo! It’s a fully custom and high-performance periodic table app based in MicroPython for the TI-84 Evo calculators. I literally built this because TI half-baked their product launch and forgot about literally every aspect of backwards compatibility! (looking at you, every appvar format ever built for the CE and lower) What I have: -A full 118-Element Data array: Complete data for every single element; atomic mass, electron config, electronegativity, density, phase, discovery year, and oxidation states. -Faithful GUI recreation: I recreated the original TI-84 Plus CE Periodic Table app layout and interface to look and feel exactly like the built-in app (minus the speed, TI really had to lobotomize that) AI Attribution: AI tools used: Google Gemini Scope: Generated almost the entirety of the 118-element dataset (E) as well a debugging partner. From me: everything else! Some side notes: -You might see some strings scattered around in the E array. Those are simply to prevent the calculator from trying to display float inaccuracies that overflow out of the GUI box -The screen recorder given in TI-Connect Evo is so slow, and my device camera is horrible, so whoopsies :P -Go and roast TI for their sloppy rushed release!", "repo": "https://github.com/CrX1x1/periodic_table/", "demo": "https://github.com/CrX1x1/periodic_table"}]...
|
[{"post_id": 73339, "ts": "202 [{"post_id": 73339, "ts": "2026-09-24T22:26:01Z", "hours": 1.9089, "text": "i added basic scrolling and selection in the info panel, adding other stuff like more pages of information and horizontal scrolling to the next element"}, {"post_id": 72456, "ts": "2026-09-23T00:40:10Z", "hours": 1.6164, "text": "I made a splash screen and added softkeys… I dunno what else to say besides that also rewrote the stuff a tiny bit I guess"}, {"post_id": 64244, "ts": "2026-09-08T14:36:22Z", "hours": 1.0072, "text": "I added a way to see the element and the symbol that’s being selected because not everyone remembers their periodic tables. (me neither) I’ll be adding soft buttons and a graph in the next devlog so there will be room for more features. If you haven’t already, you should go check the periodic table app on the TI-84 Plus CE if you have one… or not. (Exactly 1 hour lol)"}, {"post_id": 56311, "ts": "2026-08-28T01:29:03Z", "hours": 1.5047, "text": "Well, I guess you could say I took a long break, huh? Anyways, I spend a good hour of my time hardcoding some extra lookups so it can actually select up and down just like how it is on the TI-84 Plus CE. Yes, I seriously should optimize it, I know, but if it works, it works. I’ll be sure to make it more readable next commit. Catch you in the next devlog!"}, {"post_id": 44799, "ts": "2026-08-10T20:12:55Z", "hours": 0.6464, "text": "Half functional selection, half functional brain, pushed commit anyways todos: add vertical selection as well work on page that says the info and stuff idk, whatever is on the TI-84 Plus CE but not on the Evo (srry for the horrible video quality, i should get a new phone lulz)"}]...
|
Title: Periodic by @crx1x1 | Stardance
Devlogs:
H Title: Periodic by @crx1x1 | Stardance
Devlogs:
Half functional selection, half functional brain, pushed commit anyways todos: add vertical selection as well work on page that says the info and stuff idk, whatever is on the TI-84 Plus CE but not on the Evo (srry for the horrible video quality, i should get a new phone lulz)
Well, I guess you could say I took a long break, huh? Anyways, I spend a good hour of my time hardcoding some extra lookups so it can actually select up and down just like how it is on the TI-84 Plus CE. Yes, I seriously should optimize it, I know, but if it works, it works. I’ll be sure to make it more readable next commit. Catch you in the next devlog!
I added a way to see the element and the symbol that’s being selected because not everyone remembers their periodic tables. (me neither) I’ll be adding soft buttons and a graph in the next devlog so there will be room for more features. If you haven’t already, you should go check the periodic table app on the TI-84 Plus CE if you have one… or not. (Exactly 1 hour lol)
I made a splash screen and added softkeys… I dunno what else to say besides that also rewrote the stuff a tiny bit I guess
i added basic scrolling and selection in the info panel, adding other stuff like more pages of information and horizontal scrolling to the next element
Ships:
After 8 hours of development, I present the Periodic Table for the Evo! It’s a fully custom and high-performance periodic table app based in MicroPython for the TI-84 Evo calculators. I literally built this because TI half-baked their product launch and forgot about literally every aspect of backwards compatibility! (looking at you, every appvar format ever built for the CE and lower) What I have: -A full 118-Element Data array: Complete data for every single element; atomic mass, electron config, electronegativity, density, phase, discovery year, and oxidation states. -Faithful GUI recreation: I recreated the original TI-84 Plus CE Periodic Table app layout and interface to look and feel exactly like the built-in app (minus the speed, TI really had to lobotomize that) AI Attribution: AI tools used: Google Gemini Scope: Generated almost the entirety of the 118-element dataset (E) as well a debugging partner. From me: everything else! Some side notes: -You might see some strings scattered around in the E array. Those are simply to prevent the calculator from trying to display float inaccuracies that overflow out of the GUI box -The screen recorder given in TI-Connect Evo is so slow, and my device camera is horrible, so whoopsies :P -Go and roast TI for their sloppy rushed release!...
|
1793346846.7691443
|
1793433246.7691443
|
|
28240
|
My awesome macropad! by @Shlok_P | Stardance
|
Shlok_P
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T23:07:56Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Made a macropad- Learned a lot about coding and how to make a pcb and solder it", "repo": "https://github.com/shlokrpatel/Shlok-Superpad", "demo": ""}]...
|
[{"post_id": 73345, "ts": "202 [{"post_id": 73345, "ts": "2026-09-24T23:07:15Z", "hours": 0.9333, "text": "Coding some stuff and got it working"}, {"post_id": 26174, "ts": "2026-07-10T20:30:17Z", "hours": 2.3333, "text": "I finally finished my macropad. I troubleshooted my qmk so many times and finally found the problem and fixed with claude. I then spent some time compiling all my files into git and am currently working on the submission"}, {"post_id": 25660, "ts": "2026-07-10T02:16:54Z", "hours": 5.2308, "text": "Absolutely huge day for me. I finished my case after hours of working on it and started on my qmk coding. Coding is sooooo hard. I had to use 3 different websites and some AI to help me and still couldn’t get it right."}, {"post_id": 24790, "ts": "2026-07-08T16:15:31Z", "hours": 4.6169, "text": "First post! I have had some trouble with attaching my timelapses to my project but thanks to some amazing help in the slack I compiled all 3 of my current timelapses into my first devlog. These 3 timelapses include me making my pcb with 9 switches, a oled screen, and a rotary encoder. After I finished with the pcb I spend a lot of time looking at other projects that people made for some inspiration for my case. I finally started making my case and ran into problems with sizing and trying to get a 3 degree tilt on it. I still have to finish my case and will probably seek some help again."}]...
|
Title: My awesome macropad! by @Shlok_P | Stardanc Title: My awesome macropad! by @Shlok_P | Stardance
Devlogs:
First post! I have had some trouble with attaching my timelapses to my project but thanks to some amazing help in the slack I compiled all 3 of my current timelapses into my first devlog. These 3 timelapses include me making my pcb with 9 switches, a oled screen, and a rotary encoder. After I finished with the pcb I spend a lot of time looking at other projects that people made for some inspiration for my case. I finally started making my case and ran into problems with sizing and trying to get a 3 degree tilt on it. I still have to finish my case and will probably seek some help again.
Absolutely huge day for me. I finished my case after hours of working on it and started on my qmk coding. Coding is sooooo hard. I had to use 3 different websites and some AI to help me and still couldn’t get it right.
I finally finished my macropad. I troubleshooted my qmk so many times and finally found the problem and fixed with claude. I then spent some time compiling all my files into git and am currently working on the submission
Coding some stuff and got it working
Ships:
Made a macropad- Learned a lot about coding and how to make a pcb and solder it...
|
1793347007.6113598
|
1793433407.6113598
|
|
57294
|
My awesome macropad! by @milo31231 | Stardance
|
milo31231
|
0
|
10.47
|
0
|
[]
|
[{"post_id": 73354, "ts": "202 [{"post_id": 73354, "ts": "2026-09-24T23:38:08Z", "hours": 1.0283, "text": "models done? fitment might need some tweaking"}, {"post_id": 72527, "ts": "2026-09-23T04:19:34Z", "hours": 1.7006, "text": "okay figured out the case finally"}, {"post_id": 68855, "ts": "2026-09-15T21:34:28Z", "hours": 1.5619, "text": "sadly will have to restart the case stuff since I didnt account for the top or bottom case bit… did move the microcontroller though"}, {"post_id": 66356, "ts": "2026-09-12T04:37:01Z", "hours": 1.7086, "text": "setting up the pcb any help with finding models would be greatly appreciated"}, {"post_id": 65656, "ts": "2026-09-10T22:55:06Z", "hours": 1.1239, "text": "its setup now the hard part wiring"}, {"post_id": 65588, "ts": "2026-09-10T20:28:42Z", "hours": 1.3789, "text": "setting up the pcb now"}, {"post_id": 61771, "ts": "2026-09-04T20:49:52Z", "hours": 1.4028, "text": "the base is donnnneeee"}, {"post_id": 60595, "ts": "2026-09-03T01:42:14Z", "hours": 0.5611, "text": "Just starting out with Ki Cad not too confusing I’m excited for using fusion 360 I’ve only really cad in on shape"}]...
|
Title: My awesome macropad! by @milo31231 | Starda Title: My awesome macropad! by @milo31231 | Stardance
Devlogs:
Just starting out with Ki Cad not too confusing I’m excited for using fusion 360 I’ve only really cad in on shape
the base is donnnneeee
setting up the pcb now
its setup now the hard part wiring
setting up the pcb any help with finding models would be greatly appreciated
sadly will have to restart the case stuff since I didnt account for the top or bottom case bit… did move the microcontroller though
okay figured out the case finally
models done? fitment might need some tweaking...
|
1792698836.2107167
|
1793303636.2107167
|
|
64789
|
Riftbook by @inoty | Stardance
|
inoty
|
0
|
5.32
|
0
|
[]
|
[{"post_id": 73360, "ts": "202 [{"post_id": 73360, "ts": "2026-09-25T00:04:38Z", "hours": 1.8511, "text": "Rough Draft - Driftbook Day 2-3 Hello, it’s me, Inoty, you know your weird uncle who was strangely into inspecting syringes at pharmacies? Yeah anyways, I don’t have much progress to share today… BUT! I still have lots of things to talk about as for the future of this project! Where have I been? I was busy getting my home pc to be remote accessible from school, so I can work on this project even more! This took a while, but it’s finally done. That’s why there wasn’t much progress yesterday, things should speed up from now on. What did I even do? Glad you asked! I worked a lot on the graphics this time around, made a banner for the project as you can tell, made a semi-finished readme.md, and guess what? The script finally DOES something! Yeah that’s right, The script will now install all the necessary packages! Will it configure them? No. But its certainly a start! I also made a lot of banner graphics and such, which took me a while… What’s next? After I make the script fully configure and install your system, I’ll make a proper CLI for it, after that design a custom launcher to start XPRA from! Then I’ll do little tweaks to the DE to make it truly good looking! Planning on adding the option to choose between Lxqt and Sway, right now it’ll only allow you to install sway unfortunately. Conclusion I am slowly losing my sanity, as the world spins, spins! The world keep moving on as im stuck here coding this project, I actually skipped gym today to finish this in preparation for this exact post! Why am I doing this? I got no clue honestly… Anyways, see you next time!"}, {"post_id": 72504, "ts": "2026-09-23T03:01:57Z", "hours": 3.47, "text": "Starting Work On Riftbook! - Day 0-1 Hello, it’s me, Inoty. You know, your long-list twin brother? Family relations aside, I want to talk about my great and amazing new project named “Riftbook”! Isn’t it just amazing? I certainly think so, Riftbook is a glorified install script for a Debian container meant to run inside of Chromebooks! “Oh but Inoty, oh your so cool and awesome, but doesn’t ChromeOS already ship with a Debian Container?” First off, shut up, and yeah, it does. But not all Chromebooks support it, either way this comes with a separate Desktop Enviroment that gets streamed directly to your browser for your pleasure! So even if you do have access to the container, I’d recommend using this anyway. (Not Biased In Any Way) What’s Currently Completed I have completed the watermark and branding for the project; alongside a rough outline of the install script, right now it’ll only install the container with some bundled packages, but fear not! More is coming soon! I want it to configure the Web Display for you, which might take me a while. But I think I may have the brain capacity to make it work (not really) Design Wowzers! A design section, I just cant wait! I designed the logo with the spiral tool in affinity, of course distorted a little, as a cheeky little reference to its Debian origins! The palette was proposed to me by @starvulkan (hate that guy) Where does the name come from? Well, this was originally going to be called “Driftbook” but I decided to change the name, due to the fact that I had the idea of it opening a “Rift” from ChromeOS to the Debian Container! The book comes from Chromebook (Duh) Conclusion My key takeaway from the short amount of time I’ve been working on this project is: I’ve already started going insane please help."}]...
|
Title: Riftbook by @inoty | Stardance
Devlogs:
St Title: Riftbook by @inoty | Stardance
Devlogs:
Starting Work On Riftbook! - Day 0-1 Hello, it’s me, Inoty. You know, your long-list twin brother? Family relations aside, I want to talk about my great and amazing new project named “Riftbook”! Isn’t it just amazing? I certainly think so, Riftbook is a glorified install script for a Debian container meant to run inside of Chromebooks! “Oh but Inoty, oh your so cool and awesome, but doesn’t ChromeOS already ship with a Debian Container?” First off, shut up, and yeah, it does. But not all Chromebooks support it, either way this comes with a separate Desktop Enviroment that gets streamed directly to your browser for your pleasure! So even if you do have access to the container, I’d recommend using this anyway. (Not Biased In Any Way) What’s Currently Completed I have completed the watermark and branding for the project; alongside a rough outline of the install script, right now it’ll only install the container with some bundled packages, but fear not! More is coming soon! I want it to configure the Web Display for you, which might take me a while. But I think I may have the brain capacity to make it work (not really) Design Wowzers! A design section, I just cant wait! I designed the logo with the spiral tool in affinity, of course distorted a little, as a cheeky little reference to its Debian origins! The palette was proposed to me by @starvulkan (hate that guy) Where does the name come from? Well, this was originally going to be called “Driftbook” but I decided to change the name, due to the fact that I had the idea of it opening a “Rift” from ChromeOS to the Debian Container! The book comes from Chromebook (Duh) Conclusion My key takeaway from the short amount of time I’ve been working on this project is: I’ve already started going insane please help.
Rough Draft - Driftbook Day 2-3 Hello, it’s me, Inoty, you know your weird uncle who was strangely into inspecting syringes at pharmacies? Yeah anyways, I don’t have much progress to share today… BUT! I still have lots of things to talk about as for the future of this project! Where have I been? I was busy getting my home pc to be remote accessible from school, so I can work on this project even more! This took a while, but it’s finally done. That’s why there wasn’t much progress yesterday, things should speed up from now on. What did I even do? Glad you asked! I worked a lot on the graphics this time around, made a banner for the project as you can tell, made a semi-finished readme.md, and guess what? The script finally DOES something! Yeah that’s right, The script will now install all the necessary packages! Will it configure them? No. But its certainly a start! I also made a lot of banner graphics and such, which took me a while… What’s next? After I make the script fully configure and install your system, I’ll make a proper CLI for it, after that design a custom launcher to start XPRA from! Then I’ll do little tweaks to the DE to make it truly good looking! Planning on adding the option to choose between Lxqt and Sway, right now it’ll only allow you to install sway unfortunately. Conclusion I am slowly losing my sanity, as the world spins, spins! The world keep moving on as im stuck here coding this project, I actually skipped gym today to finish this in preparation for this exact post! Why am I doing this? I got no clue honestly… Anyways, see you next time!...
|
1793066047.0342538
|
1793670847.0342538
|
|
24968
|
Game Randomiser by @Pixeleyesd | Stardance
|
Pixeleyesd
|
1
|
8.82
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T00:36:05Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a hardware project designed for ESP32 to help decide what game to play as well as what difficulty, alongside a timer feature. It features an I2c OLED as the display out and a rotary encoder for input.", "repo": "https://github.com/Pixeleyesd/Game-Chooser", "demo": ""}]...
|
[{"post_id": 73364, "ts": "202 [{"post_id": 73364, "ts": "2026-09-25T00:15:32Z", "hours": 3.0986, "text": "Sooooo i forgot that I’d have to update the README.md and do the BOM.csv, so there goes 3 hours of my life :/"}, {"post_id": 70912, "ts": "2026-09-20T00:55:05Z", "hours": 0.7247, "text": "I didn’t track any of my time, but here is the new progress :) I made a new case, with screws securing basically everything together. I have physically built this, and I am now printing the finalised project."}, {"post_id": 41026, "ts": "2026-08-04T22:54:47Z", "hours": 0.2744, "text": "I finished my readme.md complete with images, and I am making the release."}, {"post_id": 41023, "ts": "2026-08-04T22:32:15Z", "hours": 1.1128, "text": "I finished up my game randomiser, and I’m approaching 1k lines of code cuz im js that bad at coding guys T-T."}, {"post_id": 32190, "ts": "2026-07-21T06:05:29Z", "hours": 1.6272, "text": "I put everything together, making a menu and sub menus, following the flowchart.I then implemented the OLED display for a better viewing experience. Next step is to implement the SD Card reader, so the lists and consoles chosen in config stay remembered in persistent storage"}, {"post_id": 21800, "ts": "2026-07-03T22:32:28Z", "hours": 2.4717, "text": "I have already assembled my circuit. To begin with, I made a simple test code to run on the LCD. I then made the random function correlate to a list of games I made. Next, I integrated my game randomisation and my menu to randomise in specific categories. The current categories are: Xbox, Playstation, Nintendo and PC. I didn’t come across too many errors, as I was just combining code. An issue I did come across however, was mismatched list names, which was an easy fix (renaming case 0: chosenGame = String(xboxgames[index]); break; To case 0: chosenGame = String(xboxGames[index]); break;, notice the capital G.) After this, I made a menu and game randomisation work together to make a full version of my flowchart below. I will now make it use the SD card for the lists, and a webserver to send updated versions of the lists. (oh yeah I also added a rotary encoder to the circuit)"}]...
|
Title: Game Randomiser by @Pixeleyesd | Stardance
Title: Game Randomiser by @Pixeleyesd | Stardance
Devlogs:
I have already assembled my circuit. To begin with, I made a simple test code to run on the LCD. I then made the random function correlate to a list of games I made. Next, I integrated my game randomisation and my menu to randomise in specific categories. The current categories are: Xbox, Playstation, Nintendo and PC. I didn’t come across too many errors, as I was just combining code. An issue I did come across however, was mismatched list names, which was an easy fix (renaming case 0: chosenGame = String(xboxgames[index]); break; To case 0: chosenGame = String(xboxGames[index]); break;, notice the capital G.) After this, I made a menu and game randomisation work together to make a full version of my flowchart below. I will now make it use the SD card for the lists, and a webserver to send updated versions of the lists. (oh yeah I also added a rotary encoder to the circuit)
I put everything together, making a menu and sub menus, following the flowchart.I then implemented the OLED display for a better viewing experience. Next step is to implement the SD Card reader, so the lists and consoles chosen in config stay remembered in persistent storage
I finished up my game randomiser, and I’m approaching 1k lines of code cuz im js that bad at coding guys T-T.
I finished my readme.md complete with images, and I am making the release.
I didn’t track any of my time, but here is the new progress :) I made a new case, with screws securing basically everything together. I have physically built this, and I am now printing the finalised project.
Sooooo i forgot that I’d have to update the README.md and do the BOM.csv, so there goes 3 hours of my life :/
Ships:
I made a hardware project designed for ESP32 to help decide what game to play as well as what difficulty, alongside a timer feature. It features an I2c OLED as the display out and a rotary encoder for input....
|
1792828164.7171497
|
1793692164.7171497
|
|
43023
|
Worlds Unbound - Terrain Engine by @alpeka | Stard Worlds Unbound - Terrain Engine by @alpeka | Stardance...
|
alpeka
|
1
|
125.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T01:05:30Z", "hours": 125.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "— SHIP No.1 — I spent the last couple of months making a model terrain, which I will use for my game that I will continue to build after this competition. My game idea is quite ambitious, and given how long it took for me to get this basic terrain to work properly and well, that won’t even be coming with the extra month added one. I lot of you may be thinking though, what on earth were you doing for 125 hours, when all you came up with is a glorified green and grey piece of paper you could walk on. Well, not only was I learning and using Godot for the first time, it was the first time I learnt anything as complicated as this. I had to wrap my head around complex (at least for me) maths and computer science topics, like vectors and cross product, noise and FBM, TBN model, and UVs, not to mention just the sheer amount of logic I had to get through. It was so tiring to keep getting bugs for the chunking system I had, or the collisions. But thankfully, all that is behind me 😼. I’ll give you a more indepth look into what I’ve done over the past couple months. Devlogs 1-12: This period was the general beginning of my project. Not only was I learning Godot, and watching tutorials on it, I was also spending time on the player character, the camera system, and the world environment. Devlogs 13-15: I tried to implement LODs into my chunks, since the performance was simply too bad. Somehow this made it worse, possibly because of more chunks (the ones at the broder of LOD borders) being forced to be unloaded and loaded back in. Devlogs 16-21: I used my current technique, heavily based from devmars video on youtube about procedural terrain during this period. School had also started, so I spent less and less time on it, being significantly burnt out and tired. So I basically went through 3 iterations of terrain for my game, so that is why it took so long to get to this point.", "repo": "https://github.com/jona-mtw/Celestial", "demo": "https://alpeka.itch.io/worlds-unbound-terrain-engine"}]...
|
[{"post_id": 73370, "ts": "202 [{"post_id": 73370, "ts": "2026-09-25T00:42:51Z", "hours": 2.2056, "text": "Devlog 21 - Ship Prep!!! Colours I added colours to the terrain depending on how high the vertex is. This does create a very harsh border between the two colours, but I didn’t want to learn lerping, ik how to larp enough. Cleaned up my commits My commits were, and probably are still messy, and when I went ahead to revert some changes it said there were errors, but now thankfully that’s all fixed. :) I also updated quite small normals and some technical stuff."}, {"post_id": 72564, "ts": "2026-09-23T07:21:06Z", "hours": 3.9622, "text": "Devlog 20: GPU noise I found a way to make noise using a Godot addon called FastNoiseLite Runtime Shader . It was apparently identical to the FastNoiseLite in GDScript. So I gave it a try. I knew it was a gamble, given how much time I got left to ship an decent project, but I gave it a try since it seemed interesting. It wasn’t that hard to get the noise working, but to get it to sync with the collisions was a nightmare. In the end, I decided that even though the README stated it was 99.9% the same, the output seed by seed was different. So I decided to scrap it and now I’m going back to the old version with heightmaps. Why did I really want to switch? Because of the limited colour depth in images (has to be 8-bit for GDShader to read), theres not enough heights for each vertex to be at, so every so often, there’s this massive wall. It looks fine from afar, but thats probably because my terrain is 20km x 20km, so of course an 8m tall wall would look fine. (the image is from the addon readme)"}, {"post_id": 70779, "ts": "2026-09-19T19:04:39Z", "hours": 6.5594, "text": "Devlog 19 - Main Menu Added (and other things)! I spent quite a lot of time making the background for the main menu in Blender. After just copy and pasting the player model used in the game, I went ahead and made the main attraction: ✨ the planet in the background ✨ . My knowledge of noise that I gained from my previous attempts at the terrain generation helped me create the stars in the background, and the texture for the actual planet in the shader editor. I also added a slight atmosphere, which is (somewhat?) noticeable. I also went ahead and updated the shader code. Before, I used to use the visual shaders, since it was quite similar to the shader editor in Blender, which I was familiar with. But then I realised there’s just more flexibility with using GLSL . I can group uniforms in the inspector, making it clearer and less cluttered if I want to add textures in the future, including different images for the same texture (like Ambient Occlusion, Normals, Colours, and Roughness). Thus being able to group those different types images for the same texture was very important for future usability. Thankfully, Godot allows you to see the shader code that is generated from the visual shaders. Unfortunately, it was not readable at all. The generated code used a random(ish) collection of numbers and letters, and it was too long. Look below for the comparision for just the vertex shader, but it was something like 84 lines that was shruken down to 10 for the vertex shader. Even if you account for spaces in the generated code (which then it might be like 50-60 lines) thats a huge difference. So it took quite some time to get it to a readable state. edit: idk why the actual background looks so bumcheeks compared to the banner, hopefully itll be fixed by then 🤞"}, {"post_id": 67802, "ts": "2026-09-14T01:51:22Z", "hours": 4.0497, "text": "Devlog 18 - I am happy once again!! I FINALLY got the collisions to work!! Basically, it looks at the terrain model that is imported into Godot, and aligns the vertices of the CollisionShape3D with it. It also updates its position every time the player moves 1 unit (whatever the size of a quad of the mesh is). Then it looks at the heightmap, looks up the height of its coresponding pixel, multiplies that by the height shader param (2000, like in the vertex shaders), and thats the collision shape done. I noticed while walking around the world, that there were these massive ridges on the terrain. This is due to the lack of precision in the heightmap. The heightmap only has 256 shades of grey, and I need 2000 values. It is quite impossible to make a image file with that much precision, so instead, I’ll make it so that the CPU will just send an array to the vertex shader. Also, I’ve rebranded my project to Worlds Unbound, and this specific Stardance project will just be handling the terrain stuff for the game. p.s, it never goes above 16ms, i think thats probably because i was recording"}, {"post_id": 65723, "ts": "2026-09-11T02:05:18Z", "hours": 6.0086, "text": "Devlog 17 - I am incredibly frustrated. No matter what I do it feels like I just can’t get the collisions to work. Basically, I’m trying to fetch the heights from the height map to input into the CollisionShape3D, but the coordinates are always offset in some way or the other. I even used AI my friend to basically rewrite the entire script over and over again, but that didn’t work either. Maybe it’s cos school has started now, and I haven’t been able to spend that much time on this project than I would like to As you can see in the photo, the collision mesh (in blue) is offset from the normal terrain (in white)"}, {"post_id": 63142, "ts": "2026-09-06T19:41:46Z", "hours": 7.2203, "text": "Devlog 16 - AMAZING PROGRESS!! I’ve managed to get a massive 20km render distance with huge mountains and ridges using FastNoiseLite and vertex shaders. I used devmar ’s terrain technique, which he named the “Wandering Clipmap Terrain Technique”. The reason why the technique is called the “ Wandering Clipmap Terrain Technique” is because a flat plane that is subdivided a bunch (to make varrying levels of detail (LODs)) that follows the player. The vertex shaders then offset the heightmap so it gives off the illusions that your moving about in a massive world. All the displacement is done by the vertex shaders, which looks at a heightmap. In the future, I might make this heightmap be generated in gdscript instead of in the inspector, to deal with texture resolutions. Currently, from afar, the terrain looks amazing (except from the fact its not textured) but upclose, you can see rings in the terrain, which is caused by the heightmap’s resolution being too low. In fact each ring is about 8m tall so I really need to fix that 😭 The normals are calculated by just copying the heightmap and setting it ‘as normals’ in the inspector. They also are multiplied by a normal basis matrix, which allows me to configure the specific normal settings. I’ll need to calculate the normals in the fragment shader as well in the future for more convincing shadows, but for the mean time, the vertex shaders should do just fine. I’m planning on adding collisions, then maybe textures, biomes and vegetation soon!!"}, {"post_id": 61230, "ts": "2026-09-04T01:57:24Z", "hours": 4.8533, "text": "Devlog 15 - I’m an Idiot For the past 95ish hours, I’ve been working on a way to make procedural terrain for my game. I tried 2 main methods, one centred round the CPU, and one I was building centred around the GPU. The endless chunk seam bugs caused me to burnout/get tired of the entire project, and there was so many stuff (that I won’t really be explaining for the sake of my poor reader’s sanity) leading to me ✨ youtube ✨ I saw this AMAZINGLY smart video by devmar, showing an alternate way of generating terrain. I urge you to watch the video as well, the whole technique is very very clever, and he even goes on to make further videos on making collisions, recalculating normals and adding vegetation, especially if your interested in procedural generation. After watching this video however, I became incredibly frustrated. I spent nearly 100hrs of my summer making this procedural terrain which I know hadn’t gotten anywhere and theres this incredibly smart video from 4yrs ago that pops up on my feed. Welp, now ig i gotta try out this way, and quick cos my parents are on my tail talking about me finishing this project before school starts 🙏 (its my gcse year so ig its valid but still ) Now what I actually did that counted to my time Experimented with vertex shaders, and sending heightmaps to vertex shaders to displace. This however caused immense lag and caused VERY ANNOYING chunk seams. #epicfails"}, {"post_id": 59673, "ts": "2026-09-01T16:27:07Z", "hours": 9.5572, "text": "Devlog 14 - LOD chunks ——— OPTIMISATION IS SOO HARDD 10hrs to do practically do something I’ve already done? (i had already made a chunk system in previous devlogs) Well, whilst some of that time was transferring code from my old commits to the current one and making sure it works, most of the time I spent on this devlog was spent on ✨ “optimisation” ✨ Optimisation First of all, I added LODs into the chunk mesh. What this means is that since further away chunks take up less of your screen, the level of detail (LOD) is reduced the further away it is. I had already made the script that handled the creation of those different meshes with different LODs, so in this devlog, I added it to the main terrain generation script, and assigned each LOD to a certain distance, so that any chunk with a certain distance has a certain LOD. In my last version of the terrain generation, I relied on the name of the MeshInstance3d nodes created to identify what chunk they were. I realised when making this updated version that it was prone to failure, since if the node did not exist or a node with the same name were some how added to the scene tree, errors would be raised or at the very least, a logic error would occur. To recetify this, I switched to using dictionaries to house all the information of all the chunks: chunks : Dictionary [ Vector2i , int ] = { Vector2i ( 0 , 0 ): 0 , Vector2i ( 0 , 1 ): 0 , #etc } The key is chunk coordinate, and the value is the LOD (0 being the highest, 4 being the lowest) Every time I wanted to update the terrain, I would search the scene tree if a particular node was unwanted (again, by looking at the name) and then generating the rest of the ones wanted. This way would not work with LODs, since some chunks may still exist, but may have to change LOD depending on where the player is. So I made use of the dictionary and also created a new one that would store the chunks that I want created. It would loop through the dictionarys, checking certain conditions, and the terrain would be updated. All this looping is somewhat inefficient, and did cause some lag spikes, so I will try to fix that next devlog by only checking the chunks that would be affected based on which way the player moved. To help with the looping, I created chunk and lod lookup tables, that can be offset based on the players_position. These lookup tables are only changed when the render distance is changed, so the same calculation doesn’t have to run hundreds of times in 16ms (60 fps)."}, {"post_id": 57389, "ts": "2026-08-29T15:03:50Z", "hours": 3.8103, "text": "Devlog 13 - LOD template I basically deleted all the old code, and started over, by making a function where the noise will be given to the vertex shader, and one that will generate the actual flat mesh for it (which is going to be changed by the vertex shader). I made the template for making flat planes with different levels of detail (LOD), which will be changed by the vertex shaders, applying the noise to the mesh. I created a new script called lod.gd and gave it a class name, so that I can call multiple instances of it in the main terrain generation program. Every time the program wants to make another chunk, I have to pass the arguements: resolution - what ive defined as a synoymn of LOD chunk_pos - where the chunk is The function then loads an ArrayMesh from a pre-generated list of possible meshes and creates a new MeshInstance3D node to display it. Extra stuff I also added player coords and chunk position in the debug_screen :)"}, {"post_id": 56938, "ts": "2026-08-28T23:24:46Z", "hours": 4.2589, "text": "Devlog 12 - General updates 3.0 I PROMISE THIS IS THE LAST ONE GUYS 🙏 Performance Stats I added a little HUD showing the FPS, the time it takes to make one frame (has to be below 16.67ms (60fps) or there will be noticeable lag), and the memory usage. Lighting, Shadows, and World Environment I slightly changed the shadow bias and normal bias so that shadow artifacts are to a minimum. On top of that, I set it so that shadows aren’t cast for the terrain, which unintentionally handles with some of the artifacts, whilst keeping the “shadows” by illuminating the terrain depending on where the DirectionalLight3d is, making the “shadows” reponsive to a future day-night cycle. Also the volumetric fog and lighting looks better Camera Issues 2.0 So previously I had the player hide() when you go into first person, but that also effects the shadows. So instead I made the visor disappear when you go into first person. But then there was another problem. The head would move during the idle and walking animations, which is quite distracting and could be problematic for some players. So I stopped the animtions whilst in first person. It is a very rudimentary fix, since players can look at their shadows and see the lack of animation. Furthermore if I want to add multiplayer in the future, it’ll look very weird. Performance checks In preparation of the biome generation, I wanted to make sure the performance is fine. It takes a bit for the terrain to generate at the start, but thats common across nearly every game. And this will be lightened a bit when I implement LODs. Once the game is running, it runs relatively fine, except with (very quick) lag spikes when the chunks update. To address this, I’m planning of offloading some of the terrain generation to the GPU, which can calculate normals a LOT more effeciently and quicker than the CPU. Current, the CPU calculates all the vertices, indices, normals, and then compiles it into an ArrayMesh , which is given to the GPU for rendering. This can put a lot of strain on the CPU, especially later down the line, so it’s better and more effiecient if the GPU does the very repetetive calculations, by making it do all the normal calculations, including other stuff."}, {"post_id": 56302, "ts": "2026-08-28T01:02:37Z", "hours": 5.1292, "text": "Devlog 11 - General updates 2.0 Editor Tools!! - (to see the terrain in the editor) So in a previous devlog, I think I talked about how I added @tool in my terrain generation program to be able to see it in the editor. Once I made it dependent on the player position, it didn’t generate in the editor because the player wasn’t loaded in. So now I made it so that if the script was running while the editor (not the game) is open, the terrain would generate around (0, 0) based on how ever big the render distance is. Also I made it so that if you tweak the value of any of the primary noise settings in the editor, it updates in the editor. On top of that, I set the viewport to display wireframe so that I can see the triangles at different resolutions, which is where I came across:…. FLOATING POINT ERRORS!!! (yay ) I noticed that if I set the resolution to a decimal value that was not a power of 2, the triangles would be off by some amount, causing neighbouring triangles to overlap each other, causing normal and collision problems. The resolution variable is going to be eventually used for LODs, so since I’ll be the only setting it, I’ll just make sure to use a value thats a power of 2 The reason why this happens is because 16 (my chunk size) can be multplied and divided by 0.125 (2^-3) evenly to create an integer, compared to 0.1 which results in 1.6. Any smaller power of two is rounded it to the nearest 3dp, so 0.0625 (2^-4) doesn’t work. Camera Issues So I made functionality with the camera where you can scroll to zoom the camera in and out, and if you scroll far enough in, you’ll be in first person, much like how it works in Roblox. There was one problem though. Since the material for the visor on the player model was somewhat transluscent, your view would get darker. Also, you could free look inside the helmet, looking at the areas I wasn’t bothered to model and texture hadn’t modelled. So I disabled that in first person. The biggest timewaste of my life In an attempt to offload some of the generation to the GPU for more effecient parallel processing, I tried to figure out which parts of the algorthim were going to be handled by the CPU and GPU. There were some that had to be handled by the CPU, and there was no choice about those, and they were: collisions and figuring out what chunks should be rendered. At first I thought, how about I offload nearly everything to the GPU, including the noise function. Then I learnt that FastNoiseLite didn’t exist in .gdshader . So I did what any normal person would do, and CODE PERLIN NOISE BY HAND. I spent HOURS learning everything my dumbass could about it: vectors, normals, gradients, deviation, erosional generation, and finite difference approximation. At least I probably learnt something useful for FSMQ 🤷 (a British maths exam most students do in yr11 along with their other GCSEs)."}, {"post_id": 55266, "ts": "2026-08-26T23:25:21Z", "hours": 4.5936, "text": "Devlog 10 - General updates Alright, so ik I said I would work on the procedural terrain, but instead I worked on:… Debugging Tools!! (yayy! ) When tab is pressed, it toggles on debug mode, where all meshes turn into wireframes (to check LOD) and chunk boudaries are shown. There are problems with chunk boundaries not despawning when the terrain its on is gone, but that’s fixed when you toggle debug mode again :). I could fix it but icba I have other stuff that needs to be prioritsed. Resizabile UI So before, if you resized the window, the pause menu and settings menu would be offset from the centre and wouldn’t scale with the window. Now when you scale it, the pause and settings menu stay in the centre and scale accordingly. (the flickering in the video is just an artifact created by the godot editor, and will apparently be fixed once exported)"}, {"post_id": 55025, "ts": "2026-08-26T13:34:07Z", "hours": 7.725, "text": "Devlog 9 - Player Animation!! Walking and Idle Animations I finished a basic walking and idle animation for the player. The walking animation is also somewhat inspired from the kerbals from KSP. Both the animations are kinda choppy, especially when the animation loops round, but frankly icba I didn’t have enough time to fix them rn (mbmb 😭 ). Thankfully the walking animation is timed properly so that the player doesn’t look like its sliding around. Camera updates I added functionality to the camera where you can freelook around the player when holding the right mouse button. Once released, it goes back to the normal position (motion is lerped). Prepartions for next steps For the next steps, I want to go back to the terrain_generation program and start to add variation across the world (like biomes, mountains, etc.). I’m also looking to optimise it, making it generate terrain and collisions faster in prepartion for any future implementation of faster travel. So I added functionality that can allow me to make LODs, which will likely be implemented next devlog."}, {"post_id": 53506, "ts": "2026-08-24T02:34:01Z", "hours": 9.7758, "text": "Devlog 8 - Player Model and other assets! Player Model I finished with texturing, rigging and weight painting. Next Step is to make the walking and jumping animations. Worked on the settings menu I updated the setting menu layout to account for different settings I’ll add in the future Stupid Bugs So when trying to break the terrain generation, I set the speed of the player to like 300 (which it will never be in the game except when in a space ship) but when I tried to do that, the game kept crashing, spitting out an error saying that something didn’t exist. It was coming from my unload_terrain() function. Basically how it works is it checks for all the instances of the MeshInstance3D node, and checks the name of it. For every chunk that is created, I assigned a unique name to it on creation based on the x and y coordinates of it. The function would checking all the nodes, and seeing which ones were out of the “ collision_chunk_size ” radius, and then would delete them. But when going super fast, the processing of things got all weird, meaning that when it tried to delete a chunk, and if it didn’t exist, it would crash. So I added a simple if statement if len(child_name_array) > 2: (basically it would check if the length of the name was long enough to see if there was the coord data). Stupidly I wrote the greater than sign the wrong way round, which led to me being stumped for SO long on why the terrain was just not unloading. tldr: > was the wrong way round and cost me hours."}, {"post_id": 48656, "ts": "2026-08-17T04:20:08Z", "hours": 6.7203, "text": "Devlog 7 - Chunks # 2: PROCEDURAL GENERATION DONE (mostly) Bugs Managed to fix all the bugs related to this part of terrain generation. Weird chunk errors There was an if statement (I changed it out for something else that’s more efficient) that was like: if abs(player_position.x - chunk_pos.x) > collision_chunk_size or abs(player_position.y - chunk_pos.y) > collision_chunk_size This logic error create weird stuttering issues and lag. The fix was to switch or with and . Normals DEFINITELY the bane of my existence. I know roughly what normals are due to me doing 3D modelling/rendering, but I have no clue how it actually works. And plus, I’ve barely covered the maths I need for this in school, so I spent sooo much time (much of which wasn’t recorded) just researching about normals and how they work. I think that definitely helped me find a solution to the annoying chunk borders and random artifacts found inside each chunk. Chunk Sizing I stupidly and randomly changed the chunk size from 16 to 10, which worked completely fine, except for the fact that the player script was still using the 16x16 chunk system, causing the generation to lag behind, eventually leading to the player falling off the map. New Features There were also some ✨ features ✨ that I added. Colour I added colour to the world, and if I match it to the fog and sky, I think it would look AMAZING I will make it so that the colour does vary across the planet. Player I added the rig and refined the topology for animation."}, {"post_id": 47230, "ts": "2026-08-15T00:41:31Z", "hours": 7.1208, "text": "Devlog 6 - Chunks # 1 Previously, I had it so that the entire world was one big mesh, that could not be expanded without unloading and reloading the whole thing and more. This is obviously very inefficient, especially if I want the terrain to load in and out based on where the player is. Chunks is the answer to that. Split the world into chunks of your choice (I chose 16x16), and load/unload just the chunks you need to, not the whole thing. It seemed easy for me at first, clearly it wasn’t (the #1 for the header, ik this isnt gonna be the only devlog on this 😭 ). Bug 1 - The Normals aren’t normal Last devlog, I talked about calculating the normals, which went smoothly… For the old mesh… You see, to calculate normals, you need the vertices surrounding the vertex your trying to find out, and with chunks, that meant every 16 vertices, the normals were being calculated incorrectly, causing seams to be found in the terrain. However, since we did calculate the normals (for the most part) some pretty nice shadows have been cast on our terrain. Despite it being a bug, it is useful to find out where the chunk boundaries are, which is EXTREMELY useful for debugging, so I haven’t tried fixing it just yet. Bug 2 - Not so Good Performance After dividing the terrain into chunks, and making new chunks generate when the player moved into a new chunk, I tested it out. And every time I tried to cross a chunk border, there would be a huge lag spike. This would be caused by the fact the game prioritised the generation of chunks instead of the game. Thankfully I was able to make it so that the chunks would load whenever the processor was ready, to make sure not to overload it too much. Bug 3 - (Lack of) Collisions Another reason why chunks are useful is for limiting the area with active collisions. When the terrain was one big mesh, the entire mesh had active collisions, which would all be checking if something hit it, which is very resource intensive. Which is why I limited the area with collisions to a small radius around the player. While coding it, many logic erros came up, such as one that caused the collisions to just not work."}, {"post_id": 46583, "ts": "2026-08-13T22:19:41Z", "hours": 8.0178, "text": "Devlog 5 - Procedural Terrain (FINALLY!!) I made a start at making the procedural terrain, made some progress with the player model, and with configuring the basic shaders of the game. Elephant in the Room - Procedural Terrain Technically calling it procedural terrain is cheating a bit, cos really all it is right now is perlin noise applied to each vertex’s height. And with that, you can change the shape of the terrain by changing the values of some variables, like the seed, frequency, and octaves. I exported these variables so I could change them in the editor, and added @tool at the start so I can see it in the editor. I’m starting to work on a chunk system at the moment, which will load and unload chunks of the world as the player moves about. Player Model I finished modelling the player (added this version to the game) and added the bones for rigging, except when I move the arm bone, the helmet deforms, so next time I will be doing some weight painting Thankfully UV unwrapping is done as well so I should be able to texture everything before the next devlog. Also, addressing my last devlog, I said Lapse wasn’t syncing with hackatime. Turns out, if I just told it to create a new project called Celestial (which is what my project is called on hackatime), it’ll just add the time to it, so thats amazing!!! The WorldEnvironment Node I accidentally deleted my old configuration of this node while experimenting with stuff, and so I made some changes to the shading of the world. Next up is to recalculate all the normals of each triangle so shadows can be cast properly. I tried using SSAO, but every time I used that to make some sort of shadow, it changed depending on where the camera was and it made the terrain very pixelated. As you can see in the video, you can see the outlines of the terrain. That is because of the volumetric fog added. It sounds resource intensive, so if it starts to lag out my game I might remove it, which is a shame cos it looks really nice."}, {"post_id": 45513, "ts": "2026-08-12T01:47:27Z", "hours": 6.4792, "text": "Devlog 4 - A little bit of a few things I mostly did a combination of small bits, which is probably bad in terms of github commits and actual progress, but at least it’s not burning me out because I’m doing whatever part of the project I fancy at the time. UI I spent most of the time making a (hopefully) futuristic(?) looking pause menu that can also redirect you to a settings page, where I’m planning to hold the settings for terrain generation for the player to manipulate. Much of this time was spent experimenting with different Control nodes, finding out what they do and what they’re helpful for and manipulating the styles of them. I ended up with a style shown below 👇👇👇 Player Model I think I’ve finalised on a particular style, now I basically just have to make it and then texture it. The sad thing is that for some reason lapse doesn’t recognise my hackclub project anymore (already logged 5+ hrs on lapse), so all the time I spent on Blender wasn’t actually logged. If someone could please tell me how to fix this or if theres an extension for blender that would be SO helpful 🙏. Extras I also added the devlogs to my repository, it should appear there when I next commit, which should be soon!! I realise that the popular devlogs have assets from the get-go, so I probably might focus more on that, despite lapse not working if I wanna record time on Blender or Affinity. Again, if someone could please tell me if something is up with lapse or if there’s an extension that I can download for Blender or Affinity, that would be SOO helpful!! 🙏"}, {"post_id": 44908, "ts": "2026-08-10T23:37:53Z", "hours": 2.1228, "text": "Devlog 3 - Flat Plane I know this sounds INCREDIBLY trivial, but I finally figured out how to make a flat plane in Godot, that can be used to make an actual terrain. There were 2 main ways that I could have used to make this: Method 1: I can use a PlaneMesh and then subdivide it down into triangles. Then use vertex shaders or custom scripts to displace the plane as a whole based on noise. It is faster to make the flat plane using this method since you give Godot most of the control over the tessellation, and the individual vertex placement. This means however that it is a lot harder to load and unload certain parts of the terrain, and it is generally harder to add noise to the terrain since you do not have control over each vertex. Method 2: I can use an ArrayMesh , where I create the grid from scratch, telling Godot how to connect every single vertex to create triangles. The downside to this is how long this took. I know it seems short compared to my first devlog (I think the main reason I took so long in that one was not only because I was learning Godot, but it was also because I was experimenting with player models on Blender but hopefully now I’ll be more time efficient) but it is still more time consuming to tell Godot how to connect each and every vertex. I was in fact so stumped on how to go about doing this that it suddenly came to me when I was playing with my little cousin. I even noted down how to do it on my phones notes app (excuse my bad handwriting I was in the car writing with my finger) :/ Despite it being longer to setup, it is overall better for the needs of my game, since I’ll not only need to be able to change the height of each vertex based on a heightmap, but it can also aid with making biomes, by adding custom values to each vertex, which is simply not possible with PlaneMesh . It is also easier to load and unload certain parts of the mesh, and it is better for larger maps, since your CPU isnt doing all the hard work of choosing all the vertices and indexing them. In order to make the actually interesting part of the terrain (which btw I haven’t done in this devlog, I guess this is just like a future plans part) I can use either vertex shaders or custom scripts to make noise in the terrain. Both of these have their respective use cases, and I wouldn’t be able to say one is better than the other for my case. Vertex Shaders: GPU based no collisions (purely visual) written in Godot Shader Language (which is written in C, which is terrifying for me who practically only knows Python ( GDScript and Python are similar enough for me)) Custom Scripts: CPU based can create collisions (actually changes the vertex’s height) written in GDScript (happy days (ik I can write it in C# , but I’m staying far away from that)) Despite my fear of anything not similar to Python , I will still need to use vertex shaders. And I will explain that in my next devlog because this is getting too long. Now onto my struggles incredible skill when making a.. flat plane in Godot. I chose to do Method 2, because of it’s functionality later down the line. But that means I have to tell Godot what vertices to make, and how to connect them up. Obviously that was as simple as could be.. (you can see my failures in the screen recordings below)"}, {"post_id": 44630, "ts": "2026-08-10T15:03:15Z", "hours": 1.7508, "text": "Devlog 2 - One Lone Triangle I spent 2ish hours trying to make a triangle. In GDScript.. Absoutely terrible progress. I see people on Stardance making whole ass projects in 2 hours, and I’m spending those 2 hours making a simple triangle. I have no idea why decided to do a game with procedural terrain generation as my FIRST Godot project. I somewhat understand the theory behind procedural generation, mainly from watching a video on the breakdown of Minecraft’s code when I was like 10, but yeah 🤷 Unfortunately, I have no clue how to do it in practise.. so I guess hours of looking through the Godot docs awaits me yay -_-. (jk the docs are extremely helpful tysm godot 🙏)"}, {"post_id": 43355, "ts": "2026-08-08T15:43:46Z", "hours": 12.8333, "text": "Devlog 1 - Player Movement Okay I know what your thinking. 12 hours for just player movement. Surely you must be wasting time just to get as much stardust as possible. The thing is.. I’ve never used Godot before. Everything from the node tree, to project settings was all pretty much new to me. I should have honestly done the WarioWave Godot mission thingy, so that I would have at least been fimilarised with how Godot worked in 3D. And here I am thinking about making a game where you explore a procedurally generated world. Never before have I touched Godot, and I’m dreaming of making a game with procedural terrain, like in Minecraft or No Mans Sky. Time Waste No. 1 - Learning Godot I had to look through the docs just to figure out how to assign a key to going forwards, mind you all the code needed is given to you when you use the PlayerCharacter3D class. This is on of the many things I struggled with in Godot. 😭 Time Waste No. 2 - Experimenting with player models in blender I experiemented with different styles of player models to use in the game, and I landed on one inspired from the infamous space game Kerbal Space Program. Time Waste No. 3 - Being petty about a camera system 📷 I think this is what took up most of my time. As soon as I made a moveable player that doesn’t fall through the ground (a very quickly made glorified cube in blender), I thought about adding a third person camera. I initially thought of making it toggleable, like in Minecraft, where you press F5, it toggles between first, second(?) and third person. But you can’t change the distance away the camera is from the player in third person. Besides, my stupid ass made it so that each time you pressed F, the camera would keep zooming out endlessly instead of toggling between first and third person. So instead I made it zoomable, like in Roblox. First I tried to manually change the offset based on the scroll wheel (that took me so much time because I had no clue how to get inputs from the scroll wheel). But that posed a problem, which was that the player could clip through walls. Then I found there was a literal node called SpringArm3D to do all of this for me 😭 And its so useful, like I can change how much it zoom’s out by my just changing one variable, and it automatically detects collisions an stops clipping through them. This may seem like somehting that is really basic to some of you who have actually cared to read this far (ty btw :)) but this was crazy for me. And now, I realised you can’t orbit around the camera without the player moving. But that’s something to add next time 🤷 lmao this feels like smth to convince ppl that i wasnt afk or smth to farm stardust. i PROMISE im not trying to farm them, although i would love to get some, im not trying to cheat the system guys 😭"}]...
|
Title: Worlds Unbound - Terrain Engine by @alpeka Title: Worlds Unbound - Terrain Engine by @alpeka | Stardance
Devlogs:
Devlog 1 - Player Movement Okay I know what your thinking. 12 hours for just player movement. Surely you must be wasting time just to get as much stardust as possible. The thing is.. I’ve never used Godot before. Everything from the node tree, to project settings was all pretty much new to me. I should have honestly done the WarioWave Godot mission thingy, so that I would have at least been fimilarised with how Godot worked in 3D. And here I am thinking about making a game where you explore a procedurally generated world. Never before have I touched Godot, and I’m dreaming of making a game with procedural terrain, like in Minecraft or No Mans Sky. Time Waste No. 1 - Learning Godot I had to look through the docs just to figure out how to assign a key to going forwards, mind you all the code needed is given to you when you use the PlayerCharacter3D class. This is on of the many things I struggled with in Godot. 😭 Time Waste No. 2 - Experimenting with player models in blender I experiemented with different styles of player models to use in the game, and I landed on one inspired from the infamous space game Kerbal Space Program. Time Waste No. 3 - Being petty about a camera system 📷 I think this is what took up most of my time. As soon as I made a moveable player that doesn’t fall through the ground (a very quickly made glorified cube in blender), I thought about adding a third person camera. I initially thought of making it toggleable, like in Minecraft, where you press F5, it toggles between first, second(?) and third person. But you can’t change the distance away the camera is from the player in third person. Besides, my stupid ass made it so that each time you pressed F, the camera would keep zooming out endlessly instead of toggling between first and third person. So instead I made it zoomable, like in Roblox. First I tried to manually change the offset based on the scroll wheel (that took me so much time because I had no clue how to get inputs from the scroll wheel). But that posed a problem, which was that the player could clip through walls. Then I found there was a literal node called SpringArm3D to do all of this for me 😭 And its so useful, like I can change how much it zoom’s out by my just changing one variable, and it automatically detects collisions an stops clipping through them. This may seem like somehting that is really basic to some of you who have actually cared to read this far (ty btw :)) but this was crazy for me. And now, I realised you can’t orbit around the camera without the player moving. But that’s something to add next time 🤷 lmao this feels like smth to convince ppl that i wasnt afk or smth to farm stardust. i PROMISE im not trying to farm them, although i would love to get some, im not trying to cheat the system guys 😭
Devlog 2 - One Lone Triangle I spent 2ish hours trying to make a triangle. In GDScript.. Absoutely terrible progress. I see people on Stardance making whole ass projects in 2 hours, and I’m spending those 2 hours making a simple triangle. I have no idea why decided to do a game with procedural terrain generation as my FIRST Godot project. I somewhat understand the theory behind procedural generation, mainly from watching a video on the breakdown of Minecraft’s code when I was like 10, but yeah 🤷 Unfortunately, I have no clue how to do it in practise.. so I guess hours of looking through the Godot docs awaits me yay -_-. (jk the docs are extremely helpful tysm godot 🙏)
Devlog 3 - Flat Plane I know this sounds INCREDIBLY trivial, but I finally figured out how to make a flat plane in Godot, that can be used to make an actual terrain. There were 2 main ways that I could have used to make this: Method 1: I can use a PlaneMesh and then subdivide it down into triangles. Then use vertex shaders or custom scripts to displace the plane as a whole based on noise. It is faster to make the flat plane using this method since you give Godot most of the control over the tessellation, and the individual vertex placement. This means however that it is a lot harder to load and unload certain parts of the terrain, and it is generally harder to add noise to the terrain since you do not have control over each vertex. Method 2: I can use an ArrayMesh , where I create the grid from scratch, telling Godot how to connect every single vertex to create triangles. The downside to this is how long this took. I know it seems short compared to my first devlog (I think the main reason I took so long in that one was not only because I was learning Godot, but it was also because I was experimenting with player models on Blender but hopefully now I’ll be more time efficient) but it is still more time consuming to tell Godot how to connect each and every vertex. I was in fact so stumped on how to go about doing this that it suddenly came to me when I was playing with my little cousin. I even noted down how to do it on my phones notes app (excuse my bad handwriting I was in the car writing with my finger) :/ Despite it being longer to setup, it is overall better for the needs of my game, since I’ll not only need to be able to change the height of each vertex based on a heightmap, but it can also aid with making biomes, by adding custom values to each vertex, which is simply not possible with PlaneMesh . It is also easier to load and unload certain parts of the mesh, and it is better for larger maps, since your CPU isnt doing all the hard work of choosing all the vertices and indexing them. In order to make the actually interesting part of the terrain (which btw I haven’t done in this devlog, I guess this is just like a future plans part) I can use either vertex shaders or custom scripts to make noise in the terrain. Both of these have their respective use cases, and I wouldn’t be able to say one is better than the other for my case. Vertex Shaders: GPU based no collisions (purely visual) written in Godot Shader Language (which is written in C, which is terrifying for me who practically only knows Python ( GDScript and Python are similar enough for me)) Custom Scripts: CPU based can create collisions (actually changes the vertex’s height) written in GDScript (happy days (ik I can write it in C# , but I’m staying far away from that)) Despite my fear of anything not similar to Python , I will still need to use vertex shaders. And I will explain that in my next devlog because this is getting too long. Now onto my struggles incredible skill when making a.. flat plane in Godot. I chose to do Method 2, because of it’s functionality later down the line. But that means I have to tell Godot what vertices to make, and how to connect them up. Obviously that was as simple as could be.. (you can see my failures in the screen recordings below)
Devlog 4 - A little bit of a few things I mostly did a combination of small bits, which is probably bad in terms of github commits and actual progress, but at least it’s not burning me out because I’m doing whatever part of the project I fancy at the time. UI I spent most of the time making a (hopefully) futuristic(?) looking pause menu that can also redirect you to a settings page, where I’m planning to hold the settings for terrain generation for the player to manipulate. Much of this time was spent experimenting with different Control nodes, finding out what they do and what they’re helpful for and manipulating the styles of them. I ended up with a style shown below 👇👇👇 Player Model I think I’ve finalised on a particular style, now I basically just have to make it and then texture it. The sad thing is that for some reason lapse doesn’t recognise my hackclub project anymore (already logged 5+ hrs on lapse), so all the time I spent on Blender wasn’t actually logged. If someone could please tell me how to fix this or if theres an extension for blender that would be SO helpful 🙏. Extras I also added the devlogs to my repository, it should appear there when I next commit, which should be soon!! I realise that the popular devlogs have assets from the get-go, so I probably might focus more on that, despite lapse not working if I wanna record time on Blender or Affinity. Again, if someone could please tell me if something is up with lapse or if there’s an extension that I can download for Blender or Affinity, that would be SOO helpful!! 🙏
Devlog 5 - Procedural Terrain (FINALLY!!) I made a start at making the procedural terrain, made some progress with the player model, and with configuring the basic shaders of the game. Elephant in the Room - Procedural Terrain Technically calling it procedural terrain is cheating a bit, cos really all it is right now is perlin noise applied to each vertex’s height. And with that, you can change the shape of the terrain by changing the values of some variables, like the seed, frequency, and octaves. I exported these variables so I could change them in the editor, and added @tool at the start so I can see it in the editor. I’m starting to work on a chunk system at the moment, which will load and unload chunks of the world as the player moves about. Player Model I finished modelling the player (added this version to the game) and added the bones for rigging, except when I move the arm bone, the helmet deforms, so next time I will be doing some weight painting Thankfully UV unwrapping is done as well so I should be able to texture everything before the next devlog. Also, addressing my last devlog, I said Lapse wasn’t syncing with hackatime. Turns out, if I just told it to create a new project called Celestial (which is what my project is called on hackatime), it’ll just add the time to it, so thats amazing!!! The WorldEnvironment Node I accidentally deleted my old configuration of this node while experimenting with stuff, and so I made some changes to the shading of the world. Next up is to recalculate all the normals of each triangle so shadows can be cast properly. I tried using SSAO, but every time I used that to make some sort of shadow, it changed depending on where the camera was and it made the terrain very pixelated. As you can see in the video, you can see the outlines of the terrain. That is because of the volumetric fog added. It sounds resource intensive, so if it starts to lag out my game I might remove it, which is a shame cos it looks really nice.
Devlog 6 - Chunks # 1 Previously, I had it so that the entire world was one big mesh, that could not be expanded without unloading and reloading the whole thing and more. This is obviously very inefficient, especially if I want the terrain to load in and out based on where the player is. Chunks is the answer to that. Split the world into chunks of your choice (I chose 16x16), and load/unload just the chunks you need to, not the whole thing. It seemed easy for me at first, clearly it wasn’t (the #1 for the header, ik this isnt gonna be the only devlog on this 😭 ). Bug 1 - The Normals aren’t normal Last devlog, I talked about calculating the normals, which went smoothly… For the old mesh… You see, to calculate normals, you need the vertices surrounding the vertex your trying to find out, and with chunks, that meant every 16 vertices, the normals were being calculated incorrectly, causing seams to be found in the terrain. However, since we did calculate the normals (for the most part) some pretty nice shadows have been cast on our terrain. Despite it being a bug, it is useful to find out where the chunk boundaries are, which is EXTREMELY useful for debugging, so I haven’t tried fixing it just yet. Bug 2 - Not so Good Performance After dividing the terrain into chunks, and making new chunks generate when the player moved into a new chunk, I tested it out. And every time I tried to cross a chunk border, there would be a huge lag spike. This would be caused by the fact the game prioritised the generation of chunks instead of the game. Thankfully I was able to make it so that the chunks would load whenever the processor was ready, to make sure not to overload it too much. Bug 3 - (Lack of) Collisions Another reason why chunks are useful is for limiting the area with active collisions. When the terrain was one big mesh, the entire mesh had active collisions, which would all be checking if something hit it, which is very resource intensive. Which is why I limited the area with collisions to a small radius around the player. While coding it, many logic erros came up, such as one that caused the collisions to just not work.
Devlog 7 - Chunks # 2: PROCEDURAL GENERATION DONE (mostly) Bugs Managed to fix all the bugs related to this part of terrain generation. Weird chunk errors There was an if statement (I changed it out for something else that’s more efficient) that was like: if abs(player_position.x - chunk_pos.x) > collision_chunk_size or abs(player_position.y - chunk_pos.y) > collision_chunk_size This logic error create weird stuttering issues and lag. The fix was to switch or with and . Normals DEFINITELY the bane of my existence. I know roughly what normals are due to me doing 3D modelling/rendering, but I have no clue how it actually works. And plus, I’ve barely covered the maths I need for this in school, so I spent sooo much time (much of which wasn’t recorded) just researching about normals and how they work. I think that definitely helped me find a solution to the annoying chunk borders and random artifacts found inside each chunk. Chunk Sizing I stupidly and randomly changed the chunk size from 16 to 10, which worked completely fine, except for the fact that the player script was still using the 16x16 chunk system, causing the generation to lag behind, eventually leading to the player falling off the map. New Features There were also some ✨ features ✨ that I added. Colour I added colour to the world, and if I match it to the fog and sky, I think it would look AMAZING I will make it so that the colour does vary across the planet. Player I added the rig and refined the topology for animation.
Devlog 8 - Player Model and other assets! Player Model I finished with texturing, rigging and weight painting. Next Step is to make the walking and jumping animations. Worked on the settings menu I updated the setting menu layout to account for different settings I’ll add in the future Stupid Bugs So when trying to break the terrain generation, I set the speed of the player to like 300 (which it will never be in the game except when in a space ship) but when I tried to do that, the game kept crashing, spitting out an error saying that something didn’t exist. It was coming from my unload_terrain() function. Basically how it works is it checks for all the instances of the MeshInstance3D node, and checks the name of it. For every chunk that is created, I assigned a unique name to it on creation based on the x and y coordinates of it. The function would checking all the nodes, and seeing which ones were out of the “ collision_chunk_size ” radius, and then would delete them. But when going super fast, the processing of things got all weird, meaning that when it tried to delete a chunk, and if it didn’t exist, it would crash. So I added a simple if statement if len(child_name_array) > 2: (basically it would check if the length of the name was long enough to see if there was the coord data). Stupidly I wrote the greater than sign the wrong way round, which led to me being stumped for SO long on why the terrain was just not unloading. tldr: > was the wrong way round and cost me hours.
Devlog 9 - Player Animation!! Walking and Idle Animations I finished a basic walking and idle animation for the player. The walking animation is also somewhat inspired from the kerbals from KSP. Both the animations are kinda choppy, especially when the animation loops round, but frankly icba I didn’t have enough time to fix them rn (mbmb 😭 ). Thankfully the walking animation is timed properly so that the player doesn’t look like its sliding around. Camera updates I added functionality to the camera where you can freelook around the player when holding the right mouse button. Once released, it goes back to the normal position (motion is lerped). Prepartions for next steps For the next steps, I want to go back to the terrain_generation program and start to add variation across the world (like biomes, mountains, etc.). I’m also looking to optimise it, making it generate terrain and collisions faster in prepartion for any future implementation of faster travel. So I added functionality that can allow me to make LODs, which will likely be implemented next devlog.
Devlog 10 - General updates Alright, so ik I said I would work on the procedural terrain, but instead I worked on:… Debugging Tools!! (yayy! ) When tab is pressed, it toggles on debug mode, where all meshes turn into wireframes (to check LOD) and chunk boudaries are shown. There are problems with chunk boundaries not despawning when the terrain its on is gone, but that’s fixed when you toggle debug mode again :). I could fix it but icba I have other stuff that needs to be prioritsed. Resizabile UI So before, if you resized the window, the pause menu and settings menu would be offset from the centre and wouldn’t scale with the window. Now when you scale it, the pause and settings menu stay in the centre and scale accordingly. (the flickering in the video is just an artifact created by the godot editor, and will apparently be fixed once exported)
Devlog 11 - General updates 2.0 Editor Tools!! - (to see the terrain in the editor) So in a previous devlog, I think I talked about how I added @tool in my terrain generation program to be able to see it in the editor. Once I made it dependent on the player position, it didn’t generate in the editor because the player wasn’t loaded in. So now I made it so that if the script was running while the editor (not the game) is open, the terrain would generate around (0, 0) based on how ever big the render distance is. Also I made it so that if you tweak the value of any of the primary noise settings in the editor, it updates in the editor. On top of that, I set the viewport to display wireframe so that I can see the triangles at different resolutions, which is where I came across:…. FLOATING POINT ERRORS!!! (yay ) I noticed that if I set the resolution to a decimal value that was not a power of 2, the triangles would be off by some amount, causing neighbouring triangles to overlap each other, causing normal and collision problems. The resolution variable is going to be eventually used for LODs, so since I’ll be the only setting it, I’ll just make sure to use a value thats a power of 2 The reason why this happens is because 16 (my chunk size) can be multplied and divided by 0.125 (2^-3) evenly to create an integer, compared to 0.1 which results in 1.6. Any smaller power of two is rounded it to the nearest 3dp, so 0.0625 (2^-4) doesn’t work. Camera Issues So I made functionality with the camera where you can scroll to zoom the camera in and out, and if you scroll far enough in, you’ll be in first person, much like how it works in Roblox. There was one problem though. Since the material for the visor on the player model was somewhat transluscent, your view would get darker. Also, you could free look inside the helmet, looking at the areas I wasn’t bothered to model and texture hadn’t modelled. So I disabled that in first person. The biggest timewaste of my life In an attempt to offload some of the generation to the GPU for more effecient parallel processing, I tried to figure out which parts of the algorthim were going to be handled by the CPU and GPU. There were some that had to be handled by the CPU, and there was no choice about those, and they were: collisions and figuring out what chunks should be rendered. At first I thought, how about I offload nearly everything to the GPU, including the noise function. Then I learnt that FastNoiseLite didn’t exist in .gdshader . So I did what any normal person would do, and CODE PERLIN NOISE BY HAND. I spent HOURS learning everything my dumbass could about it: vectors, normals, gradients, deviation, erosional generation, and finite difference approximation. At least I probably learnt something useful for FSMQ 🤷 (a British maths exam most students do in yr11 along with their other GCSEs).
Devlog 12 - General updates 3.0 I PROMISE THIS IS THE LAST ONE GUYS 🙏 Performance Stats I added a little HUD showing the FPS, the time it takes to make one frame (has to be below 16.67ms (60fps) or there will be noticeable lag), and the memory usage. Lighting, Shadows, and World Environment I slightly changed the shadow bias and normal bias so that shadow artifacts are to a minimum. On top of that, I set it so that shadows aren’t cast for the terrain, which unintentionally handles with some of the artifacts, whilst keeping the “shadows” by illuminating the terrain depending on where the DirectionalLight3d is, making the “shadows” reponsive to a future day-night cycle. Also the volumetric fog and lighting looks better Camera Issues 2.0 So previously I had the player hide() when you go into first person, but that also effects the shadows. So instead I made the visor disappear when you go into first person. But then there was another problem. The head would move during the idle and walking animations, which is quite distracting and could be problematic for some players. So I stopped the animtions whilst in first person. It is a very rudimentary fix, since players can look at their shadows and see the lack of animation. Furthermore if I want to add multiplayer in the future, it’ll look very weird. Performance checks In preparation of the biome generation, I wanted to make sure the performance is fine. It takes a bit for the terrain to generate at the start, but thats common across nearly every game. And this will be lightened a bit when I implement LODs. Once the game is running, it runs relatively fine, except with (very quick) lag spikes when the chunks update. To address this, I’m planning of offloading some of the terrain generation to the GPU, which can calculate normals a LOT more effeciently and quicker than the CPU. Current, the CPU calculates all the vertices, indices, normals, and then compiles it into an ArrayMesh , which is given to the GPU for rendering. This can put a lot of strain on the CPU, especially later down the line, so it’s better and more effiecient if the GPU does the very repetetive calculations, by making it do all the normal calculations, including other stuff.
Devlog 13 - LOD template I basically deleted all the old code, and started over, by making a function where the noise will be given to the vertex shader, and one that will generate the actual flat mesh for it (which is going to be changed by the vertex shader). I made the template for making flat planes with different levels of detail (LOD), which will be changed by the vertex shaders, applying the noise to the mesh. I created a new script called lod.gd and gave it a class name, so that I can call multiple instances of it in the main terrain generation program. Every time the program wants to make another chunk, I have to pass the arguements: resolution - what ive defined as a synoymn of LOD chunk_pos - where the chunk is The function then loads an ArrayMesh from a pre-generated list of possible meshes and creates a new MeshInstance3D node to display it. Extra stuff I also added player coords and chunk position in the debug_screen :)
Devlog 14 - LOD chunks ——— OPTIMISATION IS SOO HARDD 10hrs to do practically do something I’ve already done? (i had already made a chunk system in previous devlogs) Well, whilst some of that time was transferring code from my old commits to the current one and making sure it works, most of the time I spent on this devlog was spent on ✨ “optimisation” ✨ Optimisation First of all, I added LODs into the chunk mesh. What this means is that since further away chunks take up less of your screen, the level of detail (LOD) is reduced the further away it is. I had already made the script that handled the creation of those different meshes with different LODs, so in this devlog, I added it to the main terrain generation script, and assigned each LOD to a certain distance, so that any chunk with a certain distance has a certain LOD. In my last version of the terrain generation, I relied on the name of the MeshInstance3d nodes created to identify what chunk they were. I realised when making this updated version that it was prone to failure, since if the node did not exist or a node with the same name were some how added to the scene tree, errors would be raised or at the very least, a logic error would occur. To recetify this, I switched to using dictionaries to house all the information of all the chunks: chunks : Dictionary [ Vector2i , int ] = { Vector2i ( 0 , 0 ): 0 , Vector2i ( 0 , 1 ): 0 , #etc } The key is chunk coordinate, and the value is the LOD (0 being the highest, 4 being the lowest) Every time I wanted to update the terrain, I would search the scene tree if a particular node was unwanted (again, by looking at the name) and then generating the rest of the ones wanted. This way would not work with LODs, since some chunks may still exist, but may have to change LOD depending on where the player is. So I made use of the dictionary and also created a new one that would store the chunks that I want created. It would loop through the dictionarys, checking certain conditions, and the terrain would be updated. All this looping is somewhat inefficient, and did cause some lag spikes, so I will try to fix that next devlog by only checking the chunks that would be affected based on which way the player moved. To help with the looping, I created chunk and lod lookup tables, that can be offset based on the players_position. These lookup tables are only changed when the render distance is changed, so the same calculation doesn’t have to run hundreds of times in 16ms (60 fps).
Devlog 15 - I’m an Idiot For the past 95ish hours, I’ve been working on a way to make procedural terrain for my game. I tried 2 main methods, one centred round the CPU, and one I was building centred around the GPU. The endless chunk seam bugs caused me to burnout/get tired of the entire project, and there was so many stuff (that I won’t really be explaining for the sake of my poor reader’s sanity) leading to me ✨ youtube ✨ I saw this AMAZINGLY smart video by devmar, showing an alternate way of generating terrain. I urge you to watch the video as well, the whole technique is very very clever, and he even goes on to make further videos on making collisions, recalculating normals and adding vegetation, especially if your interested in procedural generation. After watching this video however, I became incredibly frustrated. I spent nearly 100hrs of my summer making this procedural terrain which I know hadn’t gotten anywhere and theres this incredibly smart video from 4yrs ago that pops up on my feed. Welp, now ig i gotta try out this way, and quick cos my parents are on my tail talking about me finishing this project before school starts 🙏 (its my gcse year so ig its valid but still ) Now what I actually did that counted to my time Experimented with vertex shaders, and sending heightmaps to vertex shaders to displace. This however caused immense lag and caused VERY ANNOYING chunk seams. #epicfails
Devlog 16 - AMAZING PROGRESS!! I’ve managed to get a massive 20km render distance with huge mountains and ridges using FastNoiseLite and vertex shaders. I used devmar ’s terrain technique, which he named the “Wandering Clipmap Terrain Technique”. The reason why the technique is called the “ Wandering Clipmap Terrain Technique” is because a flat plane that is subdivided a bunch (to make varrying levels of detail (LODs)) that follows the player. The vertex shaders then offset the heightmap so it gives off the illusions that your moving about in a massive world. All the displacement is done by the vertex shaders, which looks at a heightmap. In the future, I might make this heightmap be generated in gdscript instead of in the inspector, to deal with texture resolutions. Currently, from afar, the terrain looks amazing (except from the fact its not textured) but upclose, you can see rings in the terrain, which is caused by the heightmap’s resolution being too low. In fact each ring is about 8m tall so I really need to fix that 😭 The normals are calculated by just copying the heightmap and setting it ‘as normals’ in the inspector. They also are multiplied by a normal basis matrix, which allows me to configure the specific normal settings. I’ll need to calculate the normals in the fragment shader as well in the future for more convincing shadows, but for the mean time, the vertex shaders should do just fine. I’m planning on adding collisions, then maybe textures, biomes and vegetation soon!!
Devlog 17 - I am incredibly frustrated. No matter what I do it feels like I just can’t get the collisions to work. Basically, I’m trying to fetch the heights from the height map to input into the CollisionShape3D, but the coordinates are always offset in some way or the other. I even used AI my friend to basically rewrite the entire script over and over again, but that didn’t work either. Maybe it’s cos school has started now, and I haven’t been able to spend that much time on this project than I would like to As you can see in the photo, the collision mesh (in blue) is offset from the normal terrain (in white)
Devlog 18 - I am happy once again!! I FINALLY got the collisions to work!! Basically, it looks at the terrain model that is imported into Godot, and aligns the vertices of the CollisionShape3D with it. It also updates its position every time the player moves 1 unit (whatever the size of a quad of the mesh is). Then it looks at the heightmap, looks up the height of its coresponding pixel, multiplies that by the height shader param (2000, like in the vertex shaders), and thats the collision shape done. I noticed while walking around the world, that there were these massive ridges on the terrain. This is due to the lack of precision in the heightmap. The heightmap only has 256 shades of grey, and I need 2000 values. It is quite impossible to make a image file with that much precision, so instead, I’ll make it so that the CPU will just send an array to the vertex shader. Also, I’ve rebranded my project to Worlds Unbound, and this specific Stardance project will just be handling the terrain stuff for the game. p.s, it never goes above 16ms, i think thats probably because i was recording
Devlog 19 - Main Menu Added (and other things)! I spent quite a lot of time making the background for the main menu in Blender. After just copy and pasting the player model used in the game, I went ahead and made the main attraction: ✨ the planet in the background ✨ . My knowledge of noise that I gained from my previous attempts at the terrain generation helped me create the stars in the background, and the texture for the actual planet in the shader editor. I also added a slight atmosphere, which is (somewhat?) noticeable. I also went ahead and updated the shader code. Before, I used to use the visual shaders, since it was quite similar to the shader editor in Blender, which I was familiar with. But then I realised there’s just more flexibility with using GLSL . I can group uniforms in the inspector, making it clearer and less cluttered if I want to add textures in the future, including different images for the same texture (like Ambient Occlusion, Normals, Colours, and Roughness). Thus being able to group those different types images for the same texture was very important for future usability. Thankfully, Godot allows you to see the shader code that is generated from the visual shaders. Unfortunately, it was not readable at all. The generated code used a random(ish) collection of numbers and letters, and it was too long. Look below for the comparision for just the vertex shader, but it was something like 84 lines that was shruken down to 10 for the vertex shader. Even if you account for spaces in the generated code (which then it might be like 50-60 lines) thats a huge difference. So it took quite some time to get it to a readable state. edit: idk why the actual background looks so bumcheeks compared to the banner, hopefully itll be fixed by then 🤞
Devlog 20: GPU noise I found a way to make noise using a Godot addon called FastNoiseLite Runtime Shader . It was apparently identical to the FastNoiseLite in GDScript. So I gave it a try. I knew it was a gamble, given how much time I got left to ship an decent project, but I gave it a try since it seemed interesting. It wasn’t that hard to get the noise working, but to get it to sync with the collisions was a nightmare. In the end, I decided that even though the README stated it was 99.9% the same, the output seed by seed was different. So I decided to scrap it and now I’m going back to the old version with heightmaps. Why did I really want to switch? Because of the limited colour depth in images (has to be 8-bit for GDShader to read), theres not enough heights for each vertex to be at, so every so often, there’s this massive wall. It looks fine from afar, but thats probably because my terrain is 20km x 20km, so of course an 8m tall wall would look fine. (the image is from the addon readme)
Devlog 21 - Ship Prep!!! Colours I added colours to the terrain depending on how high the vertex is. This does create a very harsh border between the two colours, but I didn’t want to learn lerping, ik how to larp enough. Cleaned up my commits My commits were, and probably are still messy, and when I went ahead to revert some changes it said there were errors, but now thankfully that’s all fixed. :) I also updated quite small normals and some technical stuff.
Ships:
— SHIP No.1 — I spent the last couple of months making a model terrain, which I will use for my game that I will continue to build after this competition. My game idea is quite ambitious, and given how long it took for me to get this basic terrain to work properly and well, that won’t even be coming with the extra month added one. I lot of you may be thinking though, what on earth were you doing for 125 hours, when all you came up with is a glorified green and grey piece of paper you could walk on. Well, not only was I learning and using Godot for the first time, it was the first time I learnt anything as complicated as this. I had to wrap my head around complex (at least for me) maths and computer science topics, like vectors and cross product, noise and FBM, TBN model, and UVs, not to mention just the sheer amount of logic I had to get through. It was so tiring to keep getting bugs for the chunking system I had, or the collisions. But thankfully, all that is behind me 😼. I’ll give you a more indepth look into what I’ve done over the past couple months. Devlogs 1-12: This period was the general beginning of my project. Not only was I learning Godot, and watching tutorials on it, I was also spending time on the player character, the camera system, and the world environment. Devlogs 13-15: I tried to implement LODs into my chunks, since the performance was simply too bad. Somehow this made it worse, possibly because of more chunks (the ones at the broder of LOD borders) being forced to be unloaded and loaded back in. Devlogs 16-21: I used my current technique, heavily based from devmars video on youtube about procedural terrain during this period. School had also started, so I spent less and less time on it, being significantly burnt out and tired. So I basically went through 3 iterations of terrain for my game, so that is why it took so long to get to this point....
|
1793339389.6048944
|
1793425789.6048944
|
|
21375
|
STANDTall by @akshay369 | Stardance
|
akshay369
|
3
|
7.0
|
37
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T01:01:00Z", "hours": 2.0, "multiplier": 6.33, "payout": 5, "blessing": "neutral", "text": "I built StandTall, a lightweight system tray utility designed for desk workers to encourage regular movement and help prevent back pain during long working hours. So try this and StandTall", "repo": "https://github.com/akshaykpillai369-max/StandTall", "demo": "https://github.com/akshaykpillai369-max/StandTall/releases/tag/v4.0"}, {"ship_num": 2, "ts": "2026-07-06T13:36:46Z", "hours": 2.0, "multiplier": 3.17, "payout": 5, "blessing": "neutral", "text": "I made the app modern, added more features so it is worth check in out . So try it and StandTall.", "repo": "https://github.com/akshaykpillai369-max/StandTall", "demo": "https://github.com/akshaykpillai369-max/StandTall/releases/tag/v4.0"}, {"ship_num": 3, "ts": "2026-06-29T10:05:50Z", "hours": 3.0, "multiplier": 9.57, "payout": 27, "blessing": "neutral", "text": "I made an application for those who sit more, and it is challenging to look for bugs and test the app", "repo": "https://github.com/akshaykpillai369-max/StandTall", "demo": "https://github.com/akshaykpillai369-max/StandTall/releases/tag/v4.0"}]...
|
[{"post_id": 73372, "ts": "202 [{"post_id": 73372, "ts": "2026-09-25T00:54:27Z", "hours": 1.5414, "text": "Version V4 is live. The major feature in this version is Cursor Inactivity Pause — automatically pauses the timer after five minutes of cursor inactivity and resumes when you move the cursor again. So guys, Try it and always StandTall"}, {"post_id": 23293, "ts": "2026-07-06T05:03:27Z", "hours": 0.7544, "text": "Previously, there was a bug of multiple instances running, now it is solved and new features have been added NEW FEATURES 1, Break Nudges — Full-screen overlay during eye breaks with countdown + Dismiss button. Toggle on/off in Settings. 2, Statistics Dashboard — Tracks stands and eye breaks per day. View today’s totals, all-time totals, and a 7-day bar chart. 3, Tray Tooltip — Hover the tray icon to see remaining time until next stand and eye break (Stand↑ Xm Eye Ym). 4, Auto-Update Check — “Check for Updates” button in Settings queries GitHub releases and notifies you when a newer version is available."}, {"post_id": 22226, "ts": "2026-07-04T16:18:09Z", "hours": 0.5997, "text": "StandTall Pro is now available on Windows, macOS, and Linux! This release features a completely rewritten cross-platform codebase, near-zero startup impact, a first-launch setup window, and standalone packages for all platforms. What’s new 1, 🌍 Cross-platform — works on Windows, macOS, and Linux 2, 🚀 Near-zero startup impact — CustomTkinter now loads only when you open Settings 3, 🪟 First-launch window — settings appear automatically on first run so new users can configure the app 4, 🔒 Single-instance lock — prevents duplicate app instances (works on all OS)"}, {"post_id": 20778, "ts": "2026-07-02T13:59:09Z", "hours": 0.3683, "text": "How to install it correctly 1, Download the zip file from the assets 2, Unzip it 3, Open the exe file 4, It does not show any windows at first; look at the system tray and right-click the application, then select Settings 5, Done. Now you can adjust the remainder"}, {"post_id": 18229, "ts": "2026-06-29T09:43:42Z", "hours": 2.8225, "text": "StandTall Pro is a health-focused Windows desktop utility tailored for desk-bound professionals. Operating quietly from the system tray, it helps mitigate back pain and digital eye strain by prompting users to take physical standing breaks and practice the 20-20-20 rule (looking at an object 20 feet away for 20 seconds every 20 minutes)."}]...
|
Title: STANDTall by @akshay369 | Stardance
Devlog Title: STANDTall by @akshay369 | Stardance
Devlogs:
StandTall Pro is a health-focused Windows desktop utility tailored for desk-bound professionals. Operating quietly from the system tray, it helps mitigate back pain and digital eye strain by prompting users to take physical standing breaks and practice the 20-20-20 rule (looking at an object 20 feet away for 20 seconds every 20 minutes).
How to install it correctly 1, Download the zip file from the assets 2, Unzip it 3, Open the exe file 4, It does not show any windows at first; look at the system tray and right-click the application, then select Settings 5, Done. Now you can adjust the remainder
StandTall Pro is now available on Windows, macOS, and Linux! This release features a completely rewritten cross-platform codebase, near-zero startup impact, a first-launch setup window, and standalone packages for all platforms. What’s new 1, 🌍 Cross-platform — works on Windows, macOS, and Linux 2, 🚀 Near-zero startup impact — CustomTkinter now loads only when you open Settings 3, 🪟 First-launch window — settings appear automatically on first run so new users can configure the app 4, 🔒 Single-instance lock — prevents duplicate app instances (works on all OS)
Previously, there was a bug of multiple instances running, now it is solved and new features have been added NEW FEATURES 1, Break Nudges — Full-screen overlay during eye breaks with countdown + Dismiss button. Toggle on/off in Settings. 2, Statistics Dashboard — Tracks stands and eye breaks per day. View today’s totals, all-time totals, and a 7-day bar chart. 3, Tray Tooltip — Hover the tray icon to see remaining time until next stand and eye break (Stand↑ Xm Eye Ym). 4, Auto-Update Check — “Check for Updates” button in Settings queries GitHub releases and notifies you when a newer version is available.
Version V4 is live. The major feature in this version is Cursor Inactivity Pause — automatically pauses the timer after five minutes of cursor inactivity and resumes when you move the cursor again. So guys, Try it and always StandTall
Ships:
I made an application for those who sit more, and it is challenging to look for bugs and test the app
I made the app modern, added more features so it is worth check in out . So try it and StandTall.
I built StandTall, a lightweight system tray utility designed for desk workers to encourage regular movement and help prevent back pain during long working hours. So try this and StandTall...
|
1793335657.5754852
|
1793422057.5754852
|
|
64293
|
MatchRatingCalc by @Allen | Stardance
|
Allen
|
1
|
11.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T01:33:57Z", "hours": 11.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made Veyro", "repo": "https://github.com/awang03-crypto/Veyrov2.6", "demo": "https://darksalmon-lark-983637.hostingersite.com/calculator"}]...
|
[{"post_id": 73381, "ts": "202 [{"post_id": 73381, "ts": "2026-09-25T01:29:20Z", "hours": 10.9056, "text": "I just worked on making the site better"}]...
|
Title: MatchRatingCalc by @Allen | Stardance
Devl Title: MatchRatingCalc by @Allen | Stardance
Devlogs:
I just worked on making the site better
Ships:
I made Veyro...
|
1793213545.6679099
|
1793299945.6679099
|
|
429
|
High Roller by @sri2arul | Stardance
|
sri2arul
|
1
|
15.17
|
18
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-26T13:21:38Z", "hours": 6.0, "multiplier": 2.95, "payout": 18, "blessing": "neutral", "text": "My game is High Roller. High Roller is a game inspired by Drive Mad Aesthetics and those flipping games. You launch a six-sided dice off of a platform and try to land it as PERFECT as possible. The most challenging part for me was to start back on it after making it earlier for HCTG. I’m proud of the work and time I’ve put in and how I’m still dedicated to my project.", "repo": "https://github.com/sri2arul/high-roller", "demo": "https://fdqifbudy.itch.io/high-roller"}]...
|
[{"post_id": 73382, "ts": "202 [{"post_id": 73382, "ts": "2026-09-25T01:29:27Z", "hours": 5.0242, "text": "okay this was a long one and it was mainly fixing up my code, my spawnpoint stopped working again after a tweak to map, you can land on all 4 sides now (bug), levels slide thru properly, fixed spec level achievments, and now the only thing is to make ui, 3d assets and ux and then done (or if i wanna add a shop) ((and that other thing)) and ive had problems with godot super waka waka aii aii so there that picture"}, {"post_id": 61871, "ts": "2026-09-05T00:49:27Z", "hours": 2.9697, "text": "(i forgor bout devving) okay so what i did is that i made the new map and polished it to my ability and after that i set up the levels for each by creating level platforms, copying them on each level 6-10, added the map to each one, and then setting and rotating and yeah putting them in the place they need to be - going to a random ahh cabin this weekend so hoping that i can keep that sticky streak"}, {"post_id": 22247, "ts": "2026-07-04T16:46:50Z", "hours": 1.1781, "text": "okay so updated the readme after i shipped like a week ago and today i just created the basis for my world two and spent like two hours making the map on blender(theme anartic base (forgot to press record so here i am ahhh)) not finished tho and lotto bugs but tomm il fix so yay"}, {"post_id": 16142, "ts": "2026-06-26T07:29:02Z", "hours": 0.9244, "text": "fixed spec goals liek a lot (made diff ones bc the earler models were ehh and implemented them onto the ui)so yay prob gonna ship v1 now before i make the 75 lvls and art for everything (i hope) but yayay"}, {"post_id": 8311, "ts": "2026-06-13T20:28:08Z", "hours": 0.3344, "text": "faa so im doing this jst to get to 5 hrs this week so rn what i did in this spare time is i started and locked in the special goals functions and got them to work but its jst code so the user has no idea how to get them and what they are so ill work on that next and TODO:"}, {"post_id": 7641, "ts": "2026-06-12T19:24:50Z", "hours": 1.2794, "text": "so today i overhauled best scores by first allowing them to load without overloading them in winscr so they popped up after i finished a level and then i made a bar at the bottom of the level that lets u look at your high score for each level and i left that there but i thought of a better way to show best score so i made it so when u hover over the button it shows your best and then wait half a sec before closing then to make it to an hour i added also the bsgds to that so that when u complete a point goal it shows up as complete and yea sooooo TODO ( not on the thing agaiinnnnn :0 )and a horrible crooping job pic :))))"}, {"post_id": 6541, "ts": "2026-06-10T23:59:47Z", "hours": 1.0614, "text": "okay today i first fixed a bug abt only having coinlbl (the thing that shows coins) on level select and not on the levels too so i added a global ui and made an entire new coin label that i added a png to for like coin and allat and then i fixed up a problem with the bsgds and because i do an hour at least a day i jst whipped up pngs for each of the bsgds so that they show when you havent completed them it shows the coin but when you did complete them they dissapear and give you coins (for bsgd, b=5,s=10,g=15, and d=20) and yea and so TODO(pluh none of this was on the todo), the pic of it working before today (for ysterday),and then today w/h the new stuff all in one pic"}, {"post_id": 5956, "ts": "2026-06-09T23:39:20Z", "hours": 1.2856, "text": "devlog 2- so yea started on points and got them connected and persistant so i moved to creating b/s/g/d goals that connected to coins and greyed out when finished and that worked out too! and so TODO and pic of the bronze/silver/gold/diamond function working"}, {"post_id": 4323, "ts": "2026-06-07T16:16:03Z", "hours": 1.1842, "text": "so yea starting on ts again after hctg so jst started by fixing bugs in settings and adding musica and yeah so TODO:"}]...
|
Title: High Roller by @sri2arul | Stardance
Devlo Title: High Roller by @sri2arul | Stardance
Devlogs:
so yea starting on ts again after hctg so jst started by fixing bugs in settings and adding musica and yeah so TODO:
devlog 2- so yea started on points and got them connected and persistant so i moved to creating b/s/g/d goals that connected to coins and greyed out when finished and that worked out too! and so TODO and pic of the bronze/silver/gold/diamond function working
okay today i first fixed a bug abt only having coinlbl (the thing that shows coins) on level select and not on the levels too so i added a global ui and made an entire new coin label that i added a png to for like coin and allat and then i fixed up a problem with the bsgds and because i do an hour at least a day i jst whipped up pngs for each of the bsgds so that they show when you havent completed them it shows the coin but when you did complete them they dissapear and give you coins (for bsgd, b=5,s=10,g=15, and d=20) and yea and so TODO(pluh none of this was on the todo), the pic of it working before today (for ysterday),and then today w/h the new stuff all in one pic
so today i overhauled best scores by first allowing them to load without overloading them in winscr so they popped up after i finished a level and then i made a bar at the bottom of the level that lets u look at your high score for each level and i left that there but i thought of a better way to show best score so i made it so when u hover over the button it shows your best and then wait half a sec before closing then to make it to an hour i added also the bsgds to that so that when u complete a point goal it shows up as complete and yea sooooo TODO ( not on the thing agaiinnnnn :0 )and a horrible crooping job pic :))))
faa so im doing this jst to get to 5 hrs this week so rn what i did in this spare time is i started and locked in the special goals functions and got them to work but its jst code so the user has no idea how to get them and what they are so ill work on that next and TODO:
fixed spec goals liek a lot (made diff ones bc the earler models were ehh and implemented them onto the ui)so yay prob gonna ship v1 now before i make the 75 lvls and art for everything (i hope) but yayay
okay so updated the readme after i shipped like a week ago and today i just created the basis for my world two and spent like two hours making the map on blender(theme anartic base (forgot to press record so here i am ahhh)) not finished tho and lotto bugs but tomm il fix so yay
(i forgor bout devving) okay so what i did is that i made the new map and polished it to my ability and after that i set up the levels for each by creating level platforms, copying them on each level 6-10, added the map to each one, and then setting and rotating and yeah putting them in the place they need to be - going to a random ahh cabin this weekend so hoping that i can keep that sticky streak
okay this was a long one and it was mainly fixing up my code, my spawnpoint stopped working again after a tweak to map, you can land on all 4 sides now (bug), levels slide thru properly, fixed spec level achievments, and now the only thing is to make ui, 3d assets and ux and then done (or if i wanna add a shop) ((and that other thing)) and ive had problems with godot super waka waka aii aii so there that picture
Ships:
My game is High Roller. High Roller is a game inspired by Drive Mad Aesthetics and those flipping games. You launch a six-sided dice off of a platform and try to land it as PERFECT as possible. The most challenging part for me was to start back on it after making it earlier for HCTG. I’m proud of the work and time I’ve put in and how I’m still dedicated to my project....
|
1793220496.6964564
|
1793306896.6964564
|
|
35799
|
TurboNinja by @TheGeekachu | Stardance
|
TheGeekachu
|
1
|
15.0
|
161
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T01:34:28Z", "hours": 15.0, "multiplier": 10.89, "payout": 161, "blessing": "neutral", "text": "I made this. TurboNinja. Yes, I suck at naming stuff. But this game taught me more about gamedev than any game I’ve made, mostly because I didn’t use an engine. Nope. This is all pure code, written by yours truly. Thanks for being here! BTW, arrow keys to move and X to dash attack.", "repo": "https://github.com/vijayakasee-debug/TurboNinja", "demo": "https://thegeekachu.itch.io/turboninja-preview"}]...
|
[{"post_id": 73383, "ts": "202 [{"post_id": 73383, "ts": "2026-09-25T01:30:42Z", "hours": 0.6725, "text": "I’m done. I’m finally done. The game is now on Itch.io and available to play! THE GAME DOES NOT WORK ON SAFARI BECAUSE APPLE IS STUPID. I just discovered this after the ship, so I came back to edit. Please play on Chrome or Firefox."}, {"post_id": 72905, "ts": "2026-09-24T00:16:24Z", "hours": 0.6064, "text": "IM DONE!!!! All that’s left is making an exec and putting it on Itch.io!!!! THE GRAPHICS ARE AMAZING!!!"}, {"post_id": 72893, "ts": "2026-09-23T23:40:35Z", "hours": 0.3989, "text": "I’m currently working on silhouettes for the game and all characters, but I’m having just a teensy bit of layering issues… Only the silhouettes are visible and literally nothing else…"}, {"post_id": 72377, "ts": "2026-09-22T19:48:13Z", "hours": 0.7825, "text": "SO, I added level transitions. You can now beat a level and go to the next one. I also just realised that the levels I’ve been designing are insanely hard, so good luck playing them all the way through!"}, {"post_id": 71984, "ts": "2026-09-21T22:13:01Z", "hours": 2.9931, "text": "AAaaaaahhhh!!! I finally implemented a particle system for sparks that uses advanced trigonometry, and I added enemy and player death, the animations for which are completely written without any assets using only trigonometry, pygame.polygon() and the math module. PAINNN!!!"}, {"post_id": 70824, "ts": "2026-09-19T20:39:05Z", "hours": 0.6794, "text": "I added a Dash mechanic. After much pain in the arse, I realised that the reason he was shooting leaves when dashing was I forgot to import the Ninja dash effect, so VS Code for some reason decided to import leaves instead. He no longer spews leaves when dashing, which I consider a win!"}, {"post_id": 70408, "ts": "2026-09-19T04:04:20Z", "hours": 0.4569, "text": "He no longer can jump to the high heavens to meet Jesus. He gets one jump, and I’ve added some really nice walljumps, yippee!"}, {"post_id": 70402, "ts": "2026-09-19T03:29:51Z", "hours": 1.0106, "text": "So, I really didn’t need to do this, but the tutorial I’m following for the base functionality because it comes with the assets I’m using said I can add a particle system for leaves, so I thought, why not? The results look beautiful and I’m glad I did it. Also, check out the new levels, made by yours truly with the new level editor!"}, {"post_id": 66847, "ts": "2026-09-12T19:25:12Z", "hours": 0.5358, "text": "After much pain and annoyance, I got fed up with coding my own level editor, and got a pre-made Python file for one, then modified it to the controls I like, which took longer than I appreciate. Unfortunately, some editing work was done on a different computer, so Hackatime didn’t track it. Not much though, so no biggie."}, {"post_id": 40830, "ts": "2026-08-04T16:27:24Z", "hours": 1.3808, "text": "I added animations. I realised that you wouldn’t be able to tell there were animations if I just took a photo of the idle one, so I locked in and took a screenshot while he was in midair, in the jumping animation. Next step is gonna be cooked. I have to write a level editor from scratch!"}, {"post_id": 37756, "ts": "2026-07-30T17:47:05Z", "hours": 0.8744, "text": "I added clouds. Exciting, I know. But this took a lot more work than I care to admit. At first the clouds were going diagonal. I spent half an hour fixing it, and succeeded in making them go the other way, still diagonal. Then I realised that in my endless wisdom, I’d updated the y-axis with the values meant for the x-axis. Now it’s fixed."}, {"post_id": 31022, "ts": "2026-07-19T02:35:16Z", "hours": 0.5706, "text": "I added a camera that follows the player, so you can watch him infinitely jump across the heavens. Bro’s on his god tier loadout."}, {"post_id": 29739, "ts": "2026-07-16T20:40:52Z", "hours": 1.5772, "text": "Added collisions and jumping so he doesn’t fall endlessly. I have the opposite problem now. He isn’t restricted to double jumps. Either my ninja knows how to fly or air is solid. Pick one, beats me!"}, {"post_id": 29196, "ts": "2026-07-15T22:41:02Z", "hours": 2.2247, "text": "Added gravity, tilemaps, and a ninja. You can’t see him in the photo because I’v added gravity, but, er, not collisions as of yet, so he’s infinitely falling through space, poor guy."}]...
|
Title: TurboNinja by @TheGeekachu | Stardance
Dev Title: TurboNinja by @TheGeekachu | Stardance
Devlogs:
Added gravity, tilemaps, and a ninja. You can’t see him in the photo because I’v added gravity, but, er, not collisions as of yet, so he’s infinitely falling through space, poor guy.
Added collisions and jumping so he doesn’t fall endlessly. I have the opposite problem now. He isn’t restricted to double jumps. Either my ninja knows how to fly or air is solid. Pick one, beats me!
I added a camera that follows the player, so you can watch him infinitely jump across the heavens. Bro’s on his god tier loadout.
I added clouds. Exciting, I know. But this took a lot more work than I care to admit. At first the clouds were going diagonal. I spent half an hour fixing it, and succeeded in making them go the other way, still diagonal. Then I realised that in my endless wisdom, I’d updated the y-axis with the values meant for the x-axis. Now it’s fixed.
I added animations. I realised that you wouldn’t be able to tell there were animations if I just took a photo of the idle one, so I locked in and took a screenshot while he was in midair, in the jumping animation. Next step is gonna be cooked. I have to write a level editor from scratch!
After much pain and annoyance, I got fed up with coding my own level editor, and got a pre-made Python file for one, then modified it to the controls I like, which took longer than I appreciate. Unfortunately, some editing work was done on a different computer, so Hackatime didn’t track it. Not much though, so no biggie.
So, I really didn’t need to do this, but the tutorial I’m following for the base functionality because it comes with the assets I’m using said I can add a particle system for leaves, so I thought, why not? The results look beautiful and I’m glad I did it. Also, check out the new levels, made by yours truly with the new level editor!
He no longer can jump to the high heavens to meet Jesus. He gets one jump, and I’ve added some really nice walljumps, yippee!
I added a Dash mechanic. After much pain in the arse, I realised that the reason he was shooting leaves when dashing was I forgot to import the Ninja dash effect, so VS Code for some reason decided to import leaves instead. He no longer spews leaves when dashing, which I consider a win!
AAaaaaahhhh!!! I finally implemented a particle system for sparks that uses advanced trigonometry, and I added enemy and player death, the animations for which are completely written without any assets using only trigonometry, pygame.polygon() and the math module. PAINNN!!!
SO, I added level transitions. You can now beat a level and go to the next one. I also just realised that the levels I’ve been designing are insanely hard, so good luck playing them all the way through!
I’m currently working on silhouettes for the game and all characters, but I’m having just a teensy bit of layering issues… Only the silhouettes are visible and literally nothing else…
IM DONE!!!! All that’s left is making an exec and putting it on Itch.io!!!! THE GRAPHICS ARE AMAZING!!!
I’m done. I’m finally done. The game is now on Itch.io and available to play! THE GAME DOES NOT WORK ON SAFARI BECAUSE APPLE IS STUPID. I just discovered this after the ship, so I came back to edit. Please play on Chrome or Firefox.
Ships:
I made this. TurboNinja. Yes, I suck at naming stuff. But this game taught me more about gamedev than any game I’ve made, mostly because I didn’t use an engine. Nope. This is all pure code, written by yours truly. Thanks for being here! BTW, arrow keys to move and X to dash attack....
|
1793350128.8962805
|
1793436528.8962805
|
|
55598
|
WackyRecipes by @OrangeJuice | Stardance
|
OrangeJuice
|
0
|
8.97
|
0
|
[]
|
[{"post_id": 73391, "ts": "202 [{"post_id": 73391, "ts": "2026-09-25T01:47:59Z", "hours": 3.1381, "text": "WackyRecipes A rng-like website that gives you weird foods to make! Background info I swear imma get more consistent with these devlogs💔 BUT we’re taking major steps forward regarding this project!!! What’s new Recipe generator is complete!!! (sorta) The main generate area is complete. check out it’s designated section for more info! Added more recipes and images! Created basic outline for the recipe collection/index This page will have all the recipes for those who want to choose the recipe themselves. Clicking on the images will bring in another container that has the name, ingredients, and instructions (not finished with this part tho) Removed the ‘saved’ page Supposed to be the page where you could see all your fav recipes I felt like this page would too hard to implement and was redundant I’ll probably just add the main feature to the ‘collection’ page somehow Feature done!: Generate page I used an array to store all the info about each recipe (the images, recipe name, etc.) Then I connected it to each and . The array value is connected to a rng that changes everytime the page refreshes. Then, to make the recipes “reroll” I just used the refresh function. Here’s where I could use some help. I want each ingredient and instruction to be on it’s own seperate line. I’ve tried joining each value with ‘/n’, ‘/ln’, ‘/br’, ‘’, but nothing worked. So if anyone knows how to fix this, please let me know!! To-do Add ingredients and instructions to the remaining of the recipes Work on the collection page Hopefully by the next devlog, when the image is clicked, a sidebar will appear. And, maybe it’ll have some animations too :^) !! That’s it for now. Until next time!"}, {"post_id": 66297, "ts": "2026-09-12T01:53:14Z", "hours": 4.1181, "text": "WackyRecipes A rng-like website that gives you weird foods to make! Background info Just like I mentioned in my last devlog, I mainly focused on making the home page look better. I also worked on the rng-like mechanics of the generate page and worked a bit on the js. What’s new Changed the color scheme I replaced the brown with this deep red color because it looks more inviting and yummy New home page layout I put each section into a box to keep the layout organized. I might make some tweaks to it, but I’m happy with it for now! Created basically on the generate page so far Made the roll box, the recipe box, and made the buttons actually work (except there’s no randomizing yet </3) Created an array for all the recipes Linked the css to the other 2 pages To-do Mainly focus on finishing the generate page Upload images of the food Work on the js to actually make the recipes appear Extra info I wanted to work on this project a bit more but I’m already over 4 hours for this devlog so I just decided to showcase what I have so far. Hopefully next devlog will be a bit more interesting. That’s it for now. Until next time!"}, {"post_id": 59340, "ts": "2026-09-01T02:30:48Z", "hours": 1.715, "text": "WackyRecipes - First devlog! A rng-like website that gives you weird foods to make! Background info New project wooooo!! I’ve had the idea of a website that gives you absurd recipes for a while. Now that sticky streaks came out, I finally have a reason to start a new project!! What I have so far I was mostly focused on getting the aesthetics of the website down. Top/nav bar with css animations I love css animations so much they’re so cool. Originally, the hovered text covered the other. However, this was quickly fixed by changing the transform from scale() to font-size Added text/instructions to home screen Linked the other pages (e.g. generate, saved) to the main/home page To-do Change the top bar color to a more reddish color Format the text on the home page better Right now it looks a bit ugly since I was just trying to get an outline of what I want. By the next devlog it should be looking a little better Add css to button at the bottom Add/link css to the other pages Extra This project’s looks was inspired by Flavortown’s website. Though I never participated in it, I thought the website looked really cute. I’m planning for this to be a short project (~10 hours) but I’m not the most professional expert coder, so it might take longer. That’s it for now. Until next time!"}]...
|
Title: WackyRecipes by @OrangeJuice | Stardance
D Title: WackyRecipes by @OrangeJuice | Stardance
Devlogs:
WackyRecipes - First devlog! A rng-like website that gives you weird foods to make! Background info New project wooooo!! I’ve had the idea of a website that gives you absurd recipes for a while. Now that sticky streaks came out, I finally have a reason to start a new project!! What I have so far I was mostly focused on getting the aesthetics of the website down. Top/nav bar with css animations I love css animations so much they’re so cool. Originally, the hovered text covered the other. However, this was quickly fixed by changing the transform from scale() to font-size Added text/instructions to home screen Linked the other pages (e.g. generate, saved) to the main/home page To-do Change the top bar color to a more reddish color Format the text on the home page better Right now it looks a bit ugly since I was just trying to get an outline of what I want. By the next devlog it should be looking a little better Add css to button at the bottom Add/link css to the other pages Extra This project’s looks was inspired by Flavortown’s website. Though I never participated in it, I thought the website looked really cute. I’m planning for this to be a short project (~10 hours) but I’m not the most professional expert coder, so it might take longer. That’s it for now. Until next time!
WackyRecipes A rng-like website that gives you weird foods to make! Background info Just like I mentioned in my last devlog, I mainly focused on making the home page look better. I also worked on the rng-like mechanics of the generate page and worked a bit on the js. What’s new Changed the color scheme I replaced the brown with this deep red color because it looks more inviting and yummy New home page layout I put each section into a box to keep the layout organized. I might make some tweaks to it, but I’m happy with it for now! Created basically on the generate page so far Made the roll box, the recipe box, and made the buttons actually work (except there’s no randomizing yet </3) Created an array for all the recipes Linked the css to the other 2 pages To-do Mainly focus on finishing the generate page Upload images of the food Work on the js to actually make the recipes appear Extra info I wanted to work on this project a bit more but I’m already over 4 hours for this devlog so I just decided to showcase what I have so far. Hopefully next devlog will be a bit more interesting. That’s it for now. Until next time!
WackyRecipes A rng-like website that gives you weird foods to make! Background info I swear imma get more consistent with these devlogs💔 BUT we’re taking major steps forward regarding this project!!! What’s new Recipe generator is complete!!! (sorta) The main generate area is complete. check out it’s designated section for more info! Added more recipes and images! Created basic outline for the recipe collection/index This page will have all the recipes for those who want to choose the recipe themselves. Clicking on the images will bring in another container that has the name, ingredients, and instructions (not finished with this part tho) Removed the ‘saved’ page Supposed to be the page where you could see all your fav recipes I felt like this page would too hard to implement and was redundant I’ll probably just add the main feature to the ‘collection’ page somehow Feature done!: Generate page I used an array to store all the info about each recipe (the images, recipe name, etc.) Then I connected it to each and . The array value is connected to a rng that changes everytime the page refreshes. Then, to make the recipes “reroll” I just used the refresh function. Here’s where I could use some help. I want each ingredient and instruction to be on it’s own seperate line. I’ve tried joining each value with ‘/n’, ‘/ln’, ‘/br’, ‘’, but nothing worked. So if anyone knows how to fix this, please let me know!! To-do Add ingredients and instructions to the remaining of the recipes Work on the collection page Hopefully by the next devlog, when the image is clicked, a sidebar will appear. And, maybe it’ll have some animations too :^) !! That’s it for now. Until next time!...
|
1793166848.080417
|
1793771648.080417
|
|
60002
|
OpenTasks by @noahplaysmario | Stardance
|
noahplaysmario
|
1
|
16.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T01:51:56Z", "hours": 16.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an open-source server for tracking tasks and events. Everything is securely encrypted, and easy to make custom clients for. One thing you should know is that this software only contains the server and a basic testing client, but a custom client is very simple, especially if you use the testing client as a starting point.", "repo": "https://github.com/noah560/OpenTasks", "demo": "https://github.com/noah560/OpenTasks/blob/main/server.py"}]...
|
[{"post_id": 73392, "ts": "202 [{"post_id": 73392, "ts": "2026-09-25T01:48:45Z", "hours": 3.2003, "text": "I finished the server and test client!!!!!!!!! I am very happy, if it isn’t obvious by the number of exclamation points in the top line of this devlog. I finally finished the main part, now I can use this myself and implement clients for whatever I want. Also, I added a debug mode to help with client development."}, {"post_id": 71552, "ts": "2026-09-21T01:40:11Z", "hours": 2.6672, "text": "Finished server code for now- now to make a testing client to make sure it works! I am almost done with the project. For this devlog, I mainly fixed a bunch of errors found by AI (even if it doesn’t code the best, it can still find mistakes after all it’s pretty much just a lot of pattern detection) and fixed them(myself, not with AI). Next, I will make a simple CLI test/demo client to make sure it works."}, {"post_id": 71218, "ts": "2026-09-20T14:01:27Z", "hours": 5.6742, "text": "Redesigned protocol to be more extensible without modifying the server much."}, {"post_id": 68920, "ts": "2026-09-16T01:38:08Z", "hours": 2.2131, "text": "Started work on the actual server code!"}, {"post_id": 65714, "ts": "2026-09-11T01:46:52Z", "hours": 0.6372, "text": "Made it more secure and added a version number to the protocol. Next thing to do: the server code!"}, {"post_id": 65683, "ts": "2026-09-11T00:23:37Z", "hours": 0.9097, "text": "Documented the TCP protocol and request types."}, {"post_id": 64736, "ts": "2026-09-09T11:26:19Z", "hours": 0.5064, "text": "Started making the protocol. I am making the protocol first so I know exactly what to program and custom clients can easily be made."}]...
|
Title: OpenTasks by @noahplaysmario | Stardance
D Title: OpenTasks by @noahplaysmario | Stardance
Devlogs:
Started making the protocol. I am making the protocol first so I know exactly what to program and custom clients can easily be made.
Documented the TCP protocol and request types.
Made it more secure and added a version number to the protocol. Next thing to do: the server code!
Started work on the actual server code!
Redesigned protocol to be more extensible without modifying the server much.
Finished server code for now- now to make a testing client to make sure it works! I am almost done with the project. For this devlog, I mainly fixed a bunch of errors found by AI (even if it doesn’t code the best, it can still find mistakes after all it’s pretty much just a lot of pattern detection) and fixed them(myself, not with AI). Next, I will make a simple CLI test/demo client to make sure it works.
I finished the server and test client!!!!!!!!! I am very happy, if it isn’t obvious by the number of exclamation points in the top line of this devlog. I finally finished the main part, now I can use this myself and implement clients for whatever I want. Also, I added a debug mode to help with client development.
Ships:
I made an open-source server for tracking tasks and events. Everything is securely encrypted, and easy to make custom clients for. One thing you should know is that this software only contains the server and a basic testing client, but a custom client is very simple, especially if you use the testing client as a starting point....
|
1793206299.6865573
|
1793292699.6865573
|
|
30453
|
slate by @swedishsplidney | Stardance
|
swedishsplidney
|
0
|
150.35
|
0
|
[]
|
[{"post_id": 73395, "ts": "202 [{"post_id": 73395, "ts": "2026-09-25T01:57:08Z", "hours": 8.295, "text": "shadows this one is really cool, i feel like it really takes it from looking like its from 1995 to like… 2015 maybe? it doesnt look that good but i think its a massive improvement! right now, its a 4096x4096 shadowmap with an extent of 24 units, a random noise filter to reduce pixelation, and 3x3 pcf to make it look somewhat smooth it is currently orthographic light projection only, but I think i’ll work on getting perspective lighting soon :) shadows did reqire implementing a whole new imageview, descriptor set, render pass, all that, but i’m getting used to it atp lol serialization is also completely broken right now, so I do need to fix that…"}, {"post_id": 67098, "ts": "2026-09-13T04:51:35Z", "hours": 7.6267, "text": "texture loading!!! absolute yipee moment this took like a lot of thinking to figure out how to implement for reasons that i think are obvious, but some of them are: how tf do you load an image what does the loaded image data mean how do you map the texture to the model’s uv coords how does normal mapping work how does the shader know where on the image its reading and a lot more that i prolly forgot lol this whole thing basically meant a whole shader overhaul again (even though i alr did that last devlog but its whatever loll) you can now map albedo (color), normal (height/offset), orm (occlusion, roughness, metallic), and emmision (glowiness) emission only kind of works rn lol, but i will get to it soon also, you currently have to manually set filepaths to the textures you want in the .json sidecar for that model, i need to add filepicker stuff to the inspector but i will get to it ok the textures in the video below were manually baked, packed, etc at 4096*4096 in blender i think another feature i should work on soon is procedural material generating, because texture mapping will always have a resolution limit (even 4k textures look kinda bad when mapped to larger models) i also want to change how reflections work a little bit, or maybe add anti-aliasing because right now the reflections look deep fried (as you will see in the video below)"}, {"post_id": 65721, "ts": "2026-09-11T02:04:30Z", "hours": 7.1881, "text": "shader overhaul so i noticed that the pbr shader lowkey looked kinda ugly and my microfacet solver was buns af so i js spent a while fixing it up and basically ended up going down a rabbit hole of tonemapping and completely rewrote the whole thing i switched from some random generic tonemapping to khronos standard neutral pbr mapping, which i think looks wayyyyyy better, the colors actually feel accurate now i also spent a little while setting up the shader to support texture colors when i get that all working it is wayyy better now, especially metallic things i also started setting up for texture imports but right now its only albedo and it does NOT work in the slightest lmao i think i will hopefully have texture importing and mapping done by next devlog, but uhhhhh…. no promises"}, {"post_id": 63897, "ts": "2026-09-07T22:41:08Z", "hours": 8.7083, "text": "physics aaaaaaaaaaaaaaaaa it works concerningly well and it actually makes me really happy to see it working i legit jumped for joy when i first saw stuff dropping due to gravity the actual underlying physics engine is jolt physics, but all the init and handling and all that is custom from me its all linked to the inspector and allat, so you can tweak values real time, such as body type, bounciness, friction, and mass its now a physics playground instead of just a glorified obj viewer scaling is very broken as far as colliders go, ill probably fix that soon you can start and stop the physics sim with f5"}, {"post_id": 62615, "ts": "2026-09-06T02:39:32Z", "hours": 5.9828, "text": "working scene serialization (saving) if you hit ctrl + s (or hit the gui button) then it creates a .slate file, containing all the data of every object in the scene this .slate file is human readable (and editable), written in a format very similar to toml heres an example .slate file: [ scene ] name = \"SlateScene\" version = \"1.0\" [[ entity ]] index = 0 name = \"\" mesh_path = \"models/test_obj.obj\" position = [ -0.310723 , 0.927019 , 1.47743 ] rotation = [ 0 , -0 , 0 ] scale = [ 1.9916 , 2.28848 , 3.38984 ] [ entity . material ] albedo = [ 0.183333 , 1 , 0 , 1 ] roughness = 0.5 metallic = 1 ior = 1.5 transmission = 0 [[ entity ]] index = 1 name = \"\" mesh_path = \"models/emerald_monkey.obj\" position = [ 1.29034 , 0 , -5.64025e-08 ] rotation = [ 8.61461 , 6.18611 , 2.71029 ] scale = [ 3.07852 , 3.38535 , 3.86504 ] [ entity . material ] albedo = [ 0.050432 , 0.800023 , 0.302281 , 1 ] roughness = 0 metallic = 0 ior = 2.418 transmission = 1 next, ill probably start working on physics"}, {"post_id": 61285, "ts": "2026-09-04T04:09:23Z", "hours": 8.2292, "text": "scene serialization okay so this is akward but it doesnt actually work yet, but in my defense serialization is really confusing to me since i generally don’t do a whole lot with file writing and loading, especially in a custom formatted and extensioned .slate file it basically just takes a bunch of data by looping through scene objects and records them, then it also has to do that backwards, then i also have to implement a command and gui system to trigger the logic and i also want the .slate to be easily readable, so i need to format the text in a way that makes sense (i’m taking inspiration from TOML) hopefully its done next devlog, but no promises lol"}, {"post_id": 59368, "ts": "2026-09-01T04:03:06Z", "hours": 8.3792, "text": "color picking! i noticed that setting color in the inspector with 3 rgb values was really annoying, so i made a whole new ui class ( ui_color_picker.hpp/cpp ), that can hook into any other ui it supports: S/B box + hue bar RGB input CMYK input (mildly broken) hex input (very broken) it actually works pretty well, there is some bug where an object can never be fully white but i think thats a command issue not color picker or inspector next, it might be time to work on physics"}, {"post_id": 58306, "ts": "2026-08-30T17:59:13Z", "hours": 8.5094, "text": "bugfixes and writing docs i spent a good 4 hours just going through some code, finding anything that might be wrong and fixing them. surprisingly, i didnt find that much, which means that i’m better at coding than i thought i found a few places where i just forgot to add something to a cleanup function, which could have led to a small memory leak over time, but nothing major some bugs i fixed: the background of any dropdown menu was rendering behind the viewport selecting stuff in the hierarchy wouldnt sync with the inspector properly i forgot to add screenPointToRay to my cleanup function some other things that i forgot i also added a few std::couts in some spots that needed them i also decided to start writing some docs because my brain was fried i basically just dug through my ~3000 lines of vulkan init and rendering code, and took notes throughout and tried explaining my confusing mental processes in a .md file this kinda made me realize that i do not have enough annotation in my code but thats a problem for future me :)"}, {"post_id": 56986, "ts": "2026-08-29T01:24:41Z", "hours": 8.5281, "text": "hierarchy panel and scrolling the hierarchy panel itself was actually not that hard, the hard part was coming up with a reliable system that can detect and list every object currently loaded in the scene without turning your pc into an explosive the other hard part was modifying the dockspace layout to be able to handle multiple different panels, because previously, it was just one window per dockspace panel, but now it can be as many as you want also, the scrolling system is new, it is its own class ui_scrollable_container , and it is basically doing what the dockspace used to do, but it also lets you scroll. so now, the dockspace just loads a scrollable container, and the scrollable container does all the arrangement and sizing logic. the hierarchy works exactly as you would expect it to, it lists current scene objects and then you can select them from it eventually, ill prolly add support for parenting, which should be pretty easy its kinda crazy to see my custom persistent ui system slowly turn into something useful as i add more features to it so far ive just been adding features when i need them, i havent just thought of features i might need and added all of them"}, {"post_id": 55367, "ts": "2026-08-27T04:34:36Z", "hours": 8.7392, "text": "inspector updates and dropdowns the inspector now has IOR and transmission values that you can change, ui updates, and dropdowns this took literally like 45 epochs because i was running into a materialgpu indexing issue where the inspector boxes would update the wrong values and my peanut brain didnt even think to check if i set the indices correctly dropdowns also took a good 3-4 hours, but it wasnt too bad, mostly just figuring out the correct logic in total, the dropdown class (ui_dropdown.cpp/hpp) is at 169 lines, and the inspector class (ui_inspector_panel.cpp/hpp) is at 470 lines next, i think ill either work on ui rounding or a file hierarchy viewer"}, {"post_id": 52171, "ts": "2026-08-22T08:13:19Z", "hours": 8.115, "text": "ui inspector the inspector is by no means done, but its a start! right now its just supposed to be purely functional, but i plan on making it look better in the future the input boxes are their own ui class, meaning i can have those input boxes everywhere making the ui system from scratch is very fun, but it at times i do regret not using qml or im gui, but overall, i dont regret making it from scratch too much the main issues with it right now is that the sensitivity values in the input boxes feel wrong, i think the position needs less sensitivity and the rotation needs more also, the color ones are a bit broken, theres a little bit of discrepancy between what the ui shows and what the actual .json material sidecar has written, so i’ll have to figure out how to fix that i think at some point, i want to add support for dropdowns, so each row can be expanded into larger input boxes if needed, or so the entire transform or material section can be collapsed i also need to add input boxes for IOR and transmission, i jus forgot to do that lol, should be pretty easy tho"}, {"post_id": 49355, "ts": "2026-08-18T04:12:43Z", "hours": 5.6403, "text": "rotation gizmo, multi-object support you can now switch between the translation gizmo, and the rotation gizmo, and click between objects to change what one has the gizmo active the gizmo also stays locked to the selected meshes’ local axes, i might add switching between local and global axis orientation at some point, but for right now local only is good enough all of the gizmo mesh is generated from code, not as an obj, making it very efficient and fast and robust, but making the logic that generates vertices in the right position was very annoying lol next, ill probably work on an inspector panel where you can edit an object’s location, rotation, scale, material data, etc or maybe saving the scene to file but now you can move and rotate any amount of objects to your heart’s content"}, {"post_id": 47420, "ts": "2026-08-15T10:46:06Z", "hours": 9.2511, "text": "translation gizmo this was like miserable to make lol it took me sooooooo long to get translation working, basically i had this samurai battle with a scaling issue for the longest time, i accidentally told my code that the viewport was smaller than it actually was and it just took forever to find that out this issue caused a really annoying issue where the actual location of the rendered gizmo was different than the clickable area there was also this other issue where the gizmo would move twice the speed of the mesh it was translating, but it was just a flaw with the mesh class, the gizmo was basically constantly recieving its own center as well as the meshes’ center which made it translate double but it works now, i think it works pretty well its all based off of the modular command system, so anything can call translatemeshcommand and it translate meshes next is prolly working on rotate and scale and stuff, all the other gizmos that we need the gizmos also meant a new .vert and .frag pair, and a whole new vulkan render pipeline lol"}, {"post_id": 43684, "ts": "2026-08-09T02:47:19Z", "hours": 9.0197, "text": "grid generation this took forever, and was much harder than i expected basically, i needed to create a whole new rendering pipeline and a whole new glsl shader pair, as well as coming up with logic so the triangle-focused renderer can actually render some super thin infinite lines the grid does generate dynamically around the camera view, so it is endless i think it does look pretty good tho next, ill prolly work on adding some move and rotation and maybe even scale tools"}, {"post_id": 37279, "ts": "2026-07-29T21:25:56Z", "hours": 9.8689, "text": "mesh importing and refraction ima start off by saying that this isn’t true refraction, since that requires path tracing, which is really computationally intensive instead, i went with screen space refraction offset approximation , which is a good, efficient refraction approximator that i still think looks pretty cool material data for refraction the value that determines the transparency of an object is called transmission , and the value for refraction is index of refraction (or IOR) the current filesystem for materials that i have is .mtl files, because thats the standard filetype for exporting materials with objs from programs like blender. however, .mtl is a filesystem from the 1990s that was originally created for phong systems, meaning it doesnt really contain transmission values so, i created a json sidecar system, that generates a better, more robust, human readable material file for every model. so now, when you import an obj/mtl pair: it checks for a json sidecar file if there is one already, just load from that and finish! if there isn’t one already, now read the .mtl, extract as much info as you can from that, and write it to a new json file multi pass rendering in order to correctly render transparent meshes, you need at least 2 render passes (render the opaque ones first, then the transparent ones) also, for the refraction to work, it needs an image of everything behind it, so in between the opaque and transparent pass, it quickly copies everything on the screen to an offscreen framebuffer how the refraction works 1. get the view vector (v): this one’s simple, just evaluate the view direction from the fragment position to the camera position also, adjust the normal (n) if rendering backface 2. refraction vector (snell’s law): the refraction vector is actually easy too, glsl has a built in refract intrinsic so you just drive that with a clamped ior value 3. deviation mapping: to determine how much to bend the background scene texture, just calculate the deviation vector between the refracted ray and the view ray: vec3 rayDeviation = refractDir - (- V ); vec2 distortion = ( push . viewProjMatrix * vec4 ( rayDeviation , 0.0 )). xy * 0.05 * transmission ; 4. uv sampling + composite blending offset the screen coordinates, but in order to prevent the edges from exploding, it needs to be clamped also, sample the background buffer to blend lighting and make a fresnel rim other stuff i did: i also made a full custom persistent ui system (this took a while), and a command system, because hardcoding the ui to do stuff is bad so instead of the ui code directly running logic, clicking a button just sends a command to the command system this meant creating another render pass, meaning i’m up to 3 render passes per frame now the only command so far is file.import_mesh , which is also hooked into the ui (you can see in the video below)"}, {"post_id": 35648, "ts": "2026-07-27T07:01:43Z", "hours": 7.2731, "text": "pbr materials pbr math reflectance: this is the main equation that a cook-torrance pbr system, all the other equations lead back to this one at some point 𝐿𝑜(𝑝,𝜔𝑜) =𝐿𝑒(𝑝,𝜔𝑜) +∫Ω𝑓𝑟(𝑝,𝜔𝑖,𝜔𝑜)𝐿𝑖(𝑝,𝜔𝑖)(𝐧⋅𝜔𝑖)𝑑𝜔𝑖 this equation essentially just determines what light does after hitting a surface with specific parameters we approximate the integral with two different light interactions: diffuse (𝑘𝐷): any light that penetrates the surface, scatters internally, and re-emerges specular (𝑘𝑆): light that reflects directly off the micro-surface in the code itself, the total outgoing radiance ($L_o$) is calculated with: vec3 Lo = ( kD * albedo / PI + specular ) * radiance * NdotL ; cook-torrance brdf: the specular component is calculated using the cook-torrance microfacet brdf: ## 𝑓cook-torrance =𝐷⋅𝐺⋅𝐹 / 4(𝐍⋅𝐕)(𝐍⋅𝐋) where 𝐷, 𝐺, and 𝐹 represent: normal distribution (𝐷): the NDF statistical distribution calculates how many microfacets are aligned with the halfway vector ($𝐇=𝐕+𝐋 / abs(𝐕+𝐋)) 𝐷GGX(𝐍,𝐇,𝛼) = 𝛼^2 / 𝜋((𝐍⋅𝐇)2(𝛼2−1)+1)2 ```glsl float DistributionGGX(vec3 N, vec3 H, float roughness) { float a = roughness * roughness; float a2 = a * a; float NdotH = max(dot(N, H), 0.0); float NdotH2 = NdotH * NdotH; float num = a2; float denom = (NdotH2 * (a2 - 1.0) + 1.0); denom = PI * denom * denom; return num / max(denom, 0.000001); } ``` geometry (𝐺): smiths schlick-ggx microfacets can cast shadows and obscure light from the camera too, so the geometry function calculates the self shading factor using smiths method: 𝐺(𝐍,𝐕,𝐋,𝑘) =𝐺1(𝐍,𝐕,𝑘) ⋅𝐺1(𝐍,𝐋,𝑘) where 𝑘 maps roughness for direct lighting using 𝑘 = (roughness+1)^2 / 8: ```glsl float GeometrySchlickGGX(float NdotV, float roughness) { float r = (roughness + 1.0); float k = (r * r) / 8.0; float num = NdotV; float denom = NdotV * (1.0 - k) + k; return num / denom; } float GeometrySmith(vec3 N, vec3 V, vec3 L, float roughness) { float NdotV = max(dot(N, V), 0.0); float NdotL = max(dot(N, L), 0.0); float ggx2 = GeometrySchlickGGX(NdotV, roughness); float ggx1 = GeometrySchlickGGX(NdotL, roughness); return ggx1 * ggx2; } ``` fresnel equation (𝐹): fresnel-schlick approximation the fresnel factor calculates the percentage of light reflected versus absorbed based on the viewing angle (𝜃): 𝐹(𝜃,𝐹0) =𝐹0 +(1−𝐹0)(1−cos𝜃)^5 nonmetals reflect around 4% of light (𝐹0 =0.04), while metals (conductors) use their tinted base albedo color as 𝐹0: ```glsl vec3 fresnelSchlick(float cosTheta, vec3 F0) { return F0 + (1.0 - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0); } // lower, inside main(): vec3 F0 = mix(vec3(0.04), albedo, metallic); vec3 F = fresnelSchlick(max(dot(H, V), 0.0), F0); ``` other stuff: a surface cant reflect more light than it recieves, so a simple equation is used to make sure this doesnt happen: ## 𝐤𝐃 =(1−𝐤𝐒) ⋅(1−metallic) right now, all the material data is pulled from a .mtl file i also added bindless ssbo storage so it doesnt explode when you have a lot of models next, i might keep working on the custom persistent ui system"}, {"post_id": 32732, "ts": "2026-07-22T02:20:30Z", "hours": 8.3064, "text": "custom obj file loading all of the obj loading is done using tinyobjloader , which is a popular header file that im using to get the raw vertex coords of any .obj file however, all tinyobj does is pass the raw vertex data to my code (technically it can do some basic triangulation, but thats not its main purpose so its not perfect) this means that any model with n-gons (complex polygons) will not work and will look super weird technically you can tell blender to explicitly triangulate a file when you export it, but i think that it should be able to take any obj that you can throw at it without needing external setup so i also added a popular header file called earcut , which at a basic level, just cuts any complex polygons into 3-vertex triangles (which my index pass and renderer accepts). this now means that it can load any custom obj file i want to add auto color loading (from the obj data) or texture loading next, or maybe work on the ui or add ambient occlusion"}, {"post_id": 25108, "ts": "2026-07-09T03:12:17Z", "hours": 6.5614, "text": "entered the 3rd dimension wasd movement made a whole separate Camera class (look at me keepin things organized ) this means that now the vulkan_renderer class has model, projection, view, and transform matrices: the model matrix tracks the transformations the view matrix essentially tracks where the camera is the projection matrix sets a perspective frustum in order to make things actually have perspective and not just be flat the lerping is also based on deltaTime, which means smooth movement no matter ur fps the mouse tracking is locked via SDL_SetWindowRelativeMouseMode , and can be unlocked with the escape key vertices and index buffers right now, the vertices are being set manually in my code… however, importing obj (and maybe gltf and stl) files is next on the feature list, i’m planning on using tinyobj all the geometry is indexed, which basically means that instead of wasting a ton of memory repeating data for 36 raw vertices, you can just define the 8 corner vertices, then use an index buffer pass to tell the gpu how to connect those 8 vertices into 12 triangles window resizing this was easy, basically just had to tell it to make new image views and framebuffers based on the current aspect ratio (w/h) when the size of the window changes so now, its a spinning cube in a resizeable window that you can move around with wasd"}, {"post_id": 22507, "ts": "2026-07-05T00:42:28Z", "hours": 6.1236, "text": "the window opens (!!) so, why did it take me 6 hours to get a window to open? it kinda just comes down to the fact that vulkan is vulkan on other apis such as opengl, the graphics driver just does stuff for you. you can say sumn like “open a window and make it pink” and it just does the memory, thread syncing, and goofy platform stuff for you vulkan on the other hand, wants none of that. if you dont specifically ask for something, it wont happen. this does make it significantly harder (and much easier to create a gpu-ending vram overflow) to code with, but it does have the benifit of being much more powerful, having no overhead, and 100% control. its not gonna do anything that you dont tell it to so what do you have to do to open a beautiful grey window with vulkan? os bridge (sdl3): instead of writing a whole abstraction for wayland/x11, win32 and metal, you just have to tell sdl3 that you’re making a vulkan window, and it does some magic stuff vulkan instance ( VkInstance ): this is how you get into the vulkan sdk. you kinda just have to tell vulkan everything it needs to know and ask sdl what extensions you need window surface ( VkSurfaceKHR ): vulkan is kinda dumb and doesnt know what a window actually is, so this is where sdl tells vulkan where it can actually write pixels pick a physical device: scan the current hardware, loop through every available device, and then just pick the best one (eventually ill probably add a way to select a custom one) logical device ( VkDevice ): the physical device is the actual doohickey in your computer that runs stuff, the logical device is the software’s interface to it. swapchain ( VkSwapchainKHR ): vulkan can’t actually write images directly to the screen (and that would look bad anyway), so you make a swapchain. my code does double buffering (basically vsync), which means that the screen displays image a, while the gpu is rendering image b. render pass and framebuffers: basically just telling vulkan what to do (in this case, clear the screen, then draw the color). the framebuffer just binds the swapchain image views to the render pass synchronization and command subsystem: believe it or not, your gpu’s clock speed is usually around (or more than) half of your cpu’s clock speed, so you have to make sure that your code waits for the gpu is ready before running the next c++ line. if you don’t, your gpu ram and cache will overflow. overall, this took a total of 764 lines of code just to get a grey window the nice part is that the progress that i’ll make is exponential, since the very beginning stuff takes the longest i also made a logo (the current project page banner)"}]...
|
Title: slate by @swedishsplidney | Stardance
Devl Title: slate by @swedishsplidney | Stardance
Devlogs:
the window opens (!!) so, why did it take me 6 hours to get a window to open? it kinda just comes down to the fact that vulkan is vulkan on other apis such as opengl, the graphics driver just does stuff for you. you can say sumn like “open a window and make it pink” and it just does the memory, thread syncing, and goofy platform stuff for you vulkan on the other hand, wants none of that. if you dont specifically ask for something, it wont happen. this does make it significantly harder (and much easier to create a gpu-ending vram overflow) to code with, but it does have the benifit of being much more powerful, having no overhead, and 100% control. its not gonna do anything that you dont tell it to so what do you have to do to open a beautiful grey window with vulkan? os bridge (sdl3): instead of writing a whole abstraction for wayland/x11, win32 and metal, you just have to tell sdl3 that you’re making a vulkan window, and it does some magic stuff vulkan instance ( VkInstance ): this is how you get into the vulkan sdk. you kinda just have to tell vulkan everything it needs to know and ask sdl what extensions you need window surface ( VkSurfaceKHR ): vulkan is kinda dumb and doesnt know what a window actually is, so this is where sdl tells vulkan where it can actually write pixels pick a physical device: scan the current hardware, loop through every available device, and then just pick the best one (eventually ill probably add a way to select a custom one) logical device ( VkDevice ): the physical device is the actual doohickey in your computer that runs stuff, the logical device is the software’s interface to it. swapchain ( VkSwapchainKHR ): vulkan can’t actually write images directly to the screen (and that would look bad anyway), so you make a swapchain. my code does double buffering (basically vsync), which means that the screen displays image a, while the gpu is rendering image b. render pass and framebuffers: basically just telling vulkan what to do (in this case, clear the screen, then draw the color). the framebuffer just binds the swapchain image views to the render pass synchronization and command subsystem: believe it or not, your gpu’s clock speed is usually around (or more than) half of your cpu’s clock speed, so you have to make sure that your code waits for the gpu is ready before running the next c++ line. if you don’t, your gpu ram and cache will overflow. overall, this took a total of 764 lines of code just to get a grey window the nice part is that the progress that i’ll make is exponential, since the very beginning stuff takes the longest i also made a logo (the current project page banner)
entered the 3rd dimension wasd movement made a whole separate Camera class (look at me keepin things organized ) this means that now the vulkan_renderer class has model, projection, view, and transform matrices: the model matrix tracks the transformations the view matrix essentially tracks where the camera is the projection matrix sets a perspective frustum in order to make things actually have perspective and not just be flat the lerping is also based on deltaTime, which means smooth movement no matter ur fps the mouse tracking is locked via SDL_SetWindowRelativeMouseMode , and can be unlocked with the escape key vertices and index buffers right now, the vertices are being set manually in my code… however, importing obj (and maybe gltf and stl) files is next on the feature list, i’m planning on using tinyobj all the geometry is indexed, which basically means that instead of wasting a ton of memory repeating data for 36 raw vertices, you can just define the 8 corner vertices, then use an index buffer pass to tell the gpu how to connect those 8 vertices into 12 triangles window resizing this was easy, basically just had to tell it to make new image views and framebuffers based on the current aspect ratio (w/h) when the size of the window changes so now, its a spinning cube in a resizeable window that you can move around with wasd
custom obj file loading all of the obj loading is done using tinyobjloader , which is a popular header file that im using to get the raw vertex coords of any .obj file however, all tinyobj does is pass the raw vertex data to my code (technically it can do some basic triangulation, but thats not its main purpose so its not perfect) this means that any model with n-gons (complex polygons) will not work and will look super weird technically you can tell blender to explicitly triangulate a file when you export it, but i think that it should be able to take any obj that you can throw at it without needing external setup so i also added a popular header file called earcut , which at a basic level, just cuts any complex polygons into 3-vertex triangles (which my index pass and renderer accepts). this now means that it can load any custom obj file i want to add auto color loading (from the obj data) or texture loading next, or maybe work on the ui or add ambient occlusion
pbr materials pbr math reflectance: this is the main equation that a cook-torrance pbr system, all the other equations lead back to this one at some point 𝐿𝑜(𝑝,𝜔𝑜) =𝐿𝑒(𝑝,𝜔𝑜) +∫Ω𝑓𝑟(𝑝,𝜔𝑖,𝜔𝑜)𝐿𝑖(𝑝,𝜔𝑖)(𝐧⋅𝜔𝑖)𝑑𝜔𝑖 this equation essentially just determines what light does after hitting a surface with specific parameters we approximate the integral with two different light interactions: diffuse (𝑘𝐷): any light that penetrates the surface, scatters internally, and re-emerges specular (𝑘𝑆): light that reflects directly off the micro-surface in the code itself, the total outgoing radiance ($L_o$) is calculated with: vec3 Lo = ( kD * albedo / PI + specular ) * radiance * NdotL ; cook-torrance brdf: the specular component is calculated using the cook-torrance microfacet brdf: ## 𝑓cook-torrance =𝐷⋅𝐺⋅𝐹 / 4(𝐍⋅𝐕)(𝐍⋅𝐋) where 𝐷, 𝐺, and 𝐹 represent: normal distribution (𝐷): the NDF statistical distribution calculates how many microfacets are aligned with the halfway vector ($𝐇=𝐕+𝐋 / abs(𝐕+𝐋)) 𝐷GGX(𝐍,𝐇,𝛼) = 𝛼^2 / 𝜋((𝐍⋅𝐇)2(𝛼2−1)+1)2 ```glsl float DistributionGGX(vec3 N, vec3 H, float roughness) { float a = roughness * roughness; float a2 = a * a; float NdotH = max(dot(N, H), 0.0); float NdotH2 = NdotH * NdotH; float num = a2; float denom = (NdotH2 * (a2 - 1.0) + 1.0); denom = PI * denom * denom; return num / max(denom, 0.000001); } ``` geometry (𝐺): smiths schlick-ggx microfacets can cast shadows and obscure light from the camera too, so the geometry function calculates the self shading factor using smiths method: 𝐺(𝐍,𝐕,𝐋,𝑘) =𝐺1(𝐍,𝐕,𝑘) ⋅𝐺1(𝐍,𝐋,𝑘) where 𝑘 maps roughness for direct lighting using 𝑘 = (roughness+1)^2 / 8: ```glsl float GeometrySchlickGGX(float NdotV, float roughness) { float r = (roughness + 1.0); float k = (r * r) / 8.0; float num = NdotV; float denom = NdotV * (1.0 - k) + k; return num / denom; } float GeometrySmith(vec3 N, vec3 V, vec3 L, float roughness) { float NdotV = max(dot(N, V), 0.0); float NdotL = max(dot(N, L), 0.0); float ggx2 = GeometrySchlickGGX(NdotV, roughness); float ggx1 = GeometrySchlickGGX(NdotL, roughness); return ggx1 * ggx2; } ``` fresnel equation (𝐹): fresnel-schlick approximation the fresnel factor calculates the percentage of light reflected versus absorbed based on the viewing angle (𝜃): 𝐹(𝜃,𝐹0) =𝐹0 +(1−𝐹0)(1−cos𝜃)^5 nonmetals reflect around 4% of light (𝐹0 =0.04), while metals (conductors) use their tinted base albedo color as 𝐹0: ```glsl vec3 fresnelSchlick(float cosTheta, vec3 F0) { return F0 + (1.0 - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0); } // lower, inside main(): vec3 F0 = mix(vec3(0.04), albedo, metallic); vec3 F = fresnelSchlick(max(dot(H, V), 0.0), F0); ``` other stuff: a surface cant reflect more light than it recieves, so a simple equation is used to make sure this doesnt happen: ## 𝐤𝐃 =(1−𝐤𝐒) ⋅(1−metallic) right now, all the material data is pulled from a .mtl file i also added bindless ssbo storage so it doesnt explode when you have a lot of models next, i might keep working on the custom persistent ui system
mesh importing and refraction ima start off by saying that this isn’t true refraction, since that requires path tracing, which is really computationally intensive instead, i went with screen space refraction offset approximation , which is a good, efficient refraction approximator that i still think looks pretty cool material data for refraction the value that determines the transparency of an object is called transmission , and the value for refraction is index of refraction (or IOR) the current filesystem for materials that i have is .mtl files, because thats the standard filetype for exporting materials with objs from programs like blender. however, .mtl is a filesystem from the 1990s that was originally created for phong systems, meaning it doesnt really contain transmission values so, i created a json sidecar system, that generates a better, more robust, human readable material file for every model. so now, when you import an obj/mtl pair: it checks for a json sidecar file if there is one already, just load from that and finish! if there isn’t one already, now read the .mtl, extract as much info as you can from that, and write it to a new json file multi pass rendering in order to correctly render transparent meshes, you need at least 2 render passes (render the opaque ones first, then the transparent ones) also, for the refraction to work, it needs an image of everything behind it, so in between the opaque and transparent pass, it quickly copies everything on the screen to an offscreen framebuffer how the refraction works 1. get the view vector (v): this one’s simple, just evaluate the view direction from the fragment position to the camera position also, adjust the normal (n) if rendering backface 2. refraction vector (snell’s law): the refraction vector is actually easy too, glsl has a built in refract intrinsic so you just drive that with a clamped ior value 3. deviation mapping: to determine how much to bend the background scene texture, just calculate the deviation vector between the refracted ray and the view ray: vec3 rayDeviation = refractDir - (- V ); vec2 distortion = ( push . viewProjMatrix * vec4 ( rayDeviation , 0.0 )). xy * 0.05 * transmission ; 4. uv sampling + composite blending offset the screen coordinates, but in order to prevent the edges from exploding, it needs to be clamped also, sample the background buffer to blend lighting and make a fresnel rim other stuff i did: i also made a full custom persistent ui system (this took a while), and a command system, because hardcoding the ui to do stuff is bad so instead of the ui code directly running logic, clicking a button just sends a command to the command system this meant creating another render pass, meaning i’m up to 3 render passes per frame now the only command so far is file.import_mesh , which is also hooked into the ui (you can see in the video below)
grid generation this took forever, and was much harder than i expected basically, i needed to create a whole new rendering pipeline and a whole new glsl shader pair, as well as coming up with logic so the triangle-focused renderer can actually render some super thin infinite lines the grid does generate dynamically around the camera view, so it is endless i think it does look pretty good tho next, ill prolly work on adding some move and rotation and maybe even scale tools
translation gizmo this was like miserable to make lol it took me sooooooo long to get translation working, basically i had this samurai battle with a scaling issue for the longest time, i accidentally told my code that the viewport was smaller than it actually was and it just took forever to find that out this issue caused a really annoying issue where the actual location of the rendered gizmo was different than the clickable area there was also this other issue where the gizmo would move twice the speed of the mesh it was translating, but it was just a flaw with the mesh class, the gizmo was basically constantly recieving its own center as well as the meshes’ center which made it translate double but it works now, i think it works pretty well its all based off of the modular command system, so anything can call translatemeshcommand and it translate meshes next is prolly working on rotate and scale and stuff, all the other gizmos that we need the gizmos also meant a new .vert and .frag pair, and a whole new vulkan render pipeline lol
rotation gizmo, multi-object support you can now switch between the translation gizmo, and the rotation gizmo, and click between objects to change what one has the gizmo active the gizmo also stays locked to the selected meshes’ local axes, i might add switching between local and global axis orientation at some point, but for right now local only is good enough all of the gizmo mesh is generated from code, not as an obj, making it very efficient and fast and robust, but making the logic that generates vertices in the right position was very annoying lol next, ill probably work on an inspector panel where you can edit an object’s location, rotation, scale, material data, etc or maybe saving the scene to file but now you can move and rotate any amount of objects to your heart’s content
ui inspector the inspector is by no means done, but its a start! right now its just supposed to be purely functional, but i plan on making it look better in the future the input boxes are their own ui class, meaning i can have those input boxes everywhere making the ui system from scratch is very fun, but it at times i do regret not using qml or im gui, but overall, i dont regret making it from scratch too much the main issues with it right now is that the sensitivity values in the input boxes feel wrong, i think the position needs less sensitivity and the rotation needs more also, the color ones are a bit broken, theres a little bit of discrepancy between what the ui shows and what the actual .json material sidecar has written, so i’ll have to figure out how to fix that i think at some point, i want to add support for dropdowns, so each row can be expanded into larger input boxes if needed, or so the entire transform or material section can be collapsed i also need to add input boxes for IOR and transmission, i jus forgot to do that lol, should be pretty easy tho
inspector updates and dropdowns the inspector now has IOR and transmission values that you can change, ui updates, and dropdowns this took literally like 45 epochs because i was running into a materialgpu indexing issue where the inspector boxes would update the wrong values and my peanut brain didnt even think to check if i set the indices correctly dropdowns also took a good 3-4 hours, but it wasnt too bad, mostly just figuring out the correct logic in total, the dropdown class (ui_dropdown.cpp/hpp) is at 169 lines, and the inspector class (ui_inspector_panel.cpp/hpp) is at 470 lines next, i think ill either work on ui rounding or a file hierarchy viewer
hierarchy panel and scrolling the hierarchy panel itself was actually not that hard, the hard part was coming up with a reliable system that can detect and list every object currently loaded in the scene without turning your pc into an explosive the other hard part was modifying the dockspace layout to be able to handle multiple different panels, because previously, it was just one window per dockspace panel, but now it can be as many as you want also, the scrolling system is new, it is its own class ui_scrollable_container , and it is basically doing what the dockspace used to do, but it also lets you scroll. so now, the dockspace just loads a scrollable container, and the scrollable container does all the arrangement and sizing logic. the hierarchy works exactly as you would expect it to, it lists current scene objects and then you can select them from it eventually, ill prolly add support for parenting, which should be pretty easy its kinda crazy to see my custom persistent ui system slowly turn into something useful as i add more features to it so far ive just been adding features when i need them, i havent just thought of features i might need and added all of them
bugfixes and writing docs i spent a good 4 hours just going through some code, finding anything that might be wrong and fixing them. surprisingly, i didnt find that much, which means that i’m better at coding than i thought i found a few places where i just forgot to add something to a cleanup function, which could have led to a small memory leak over time, but nothing major some bugs i fixed: the background of any dropdown menu was rendering behind the viewport selecting stuff in the hierarchy wouldnt sync with the inspector properly i forgot to add screenPointToRay to my cleanup function some other things that i forgot i also added a few std::couts in some spots that needed them i also decided to start writing some docs because my brain was fried i basically just dug through my ~3000 lines of vulkan init and rendering code, and took notes throughout and tried explaining my confusing mental processes in a .md file this kinda made me realize that i do not have enough annotation in my code but thats a problem for future me :)
color picking! i noticed that setting color in the inspector with 3 rgb values was really annoying, so i made a whole new ui class ( ui_color_picker.hpp/cpp ), that can hook into any other ui it supports: S/B box + hue bar RGB input CMYK input (mildly broken) hex input (very broken) it actually works pretty well, there is some bug where an object can never be fully white but i think thats a command issue not color picker or inspector next, it might be time to work on physics
scene serialization okay so this is akward but it doesnt actually work yet, but in my defense serialization is really confusing to me since i generally don’t do a whole lot with file writing and loading, especially in a custom formatted and extensioned .slate file it basically just takes a bunch of data by looping through scene objects and records them, then it also has to do that backwards, then i also have to implement a command and gui system to trigger the logic and i also want the .slate to be easily readable, so i need to format the text in a way that makes sense (i’m taking inspiration from TOML) hopefully its done next devlog, but no promises lol
working scene serialization (saving) if you hit ctrl + s (or hit the gui button) then it creates a .slate file, containing all the data of every object in the scene this .slate file is human readable (and editable), written in a format very similar to toml heres an example .slate file: [ scene ] name = "SlateScene" version = "1.0" [[ entity ]] index = 0 name = "" mesh_path = "models/test_obj.obj" position = [ -0.310723 , 0.927019 , 1.47743 ] rotation = [ 0 , -0 , 0 ] scale = [ 1.9916 , 2.28848 , 3.38984 ] [ entity . material ] albedo = [ 0.183333 , 1 , 0 , 1 ] roughness = 0.5 metallic = 1 ior = 1.5 transmission = 0 [[ entity ]] index = 1 name = "" mesh_path = "models/emerald_monkey.obj" position = [ 1.29034 , 0 , -5.64025e-08 ] rotation = [ 8.61461 , 6.18611 , 2.71029 ] scale = [ 3.07852 , 3.38535 , 3.86504 ] [ entity . material ] albedo = [ 0.050432 , 0.800023 , 0.302281 , 1 ] roughness = 0 metallic = 0 ior = 2.418 transmission = 1 next, ill probably start working on physics
physics aaaaaaaaaaaaaaaaa it works concerningly well and it actually makes me really happy to see it working i legit jumped for joy when i first saw stuff dropping due to gravity the actual underlying physics engine is jolt physics, but all the init and handling and all that is custom from me its all linked to the inspector and allat, so you can tweak values real time, such as body type, bounciness, friction, and mass its now a physics playground instead of just a glorified obj viewer scaling is very broken as far as colliders go, ill probably fix that soon you can start and stop the physics sim with f5
shader overhaul so i noticed that the pbr shader lowkey looked kinda ugly and my microfacet solver was buns af so i js spent a while fixing it up and basically ended up going down a rabbit hole of tonemapping and completely rewrote the whole thing i switched from some random generic tonemapping to khronos standard neutral pbr mapping, which i think looks wayyyyyy better, the colors actually feel accurate now i also spent a little while setting up the shader to support texture colors when i get that all working it is wayyy better now, especially metallic things i also started setting up for texture imports but right now its only albedo and it does NOT work in the slightest lmao i think i will hopefully have texture importing and mapping done by next devlog, but uhhhhh…. no promises
texture loading!!! absolute yipee moment this took like a lot of thinking to figure out how to implement for reasons that i think are obvious, but some of them are: how tf do you load an image what does the loaded image data mean how do you map the texture to the model’s uv coords how does normal mapping work how does the shader know where on the image its reading and a lot more that i prolly forgot lol this whole thing basically meant a whole shader overhaul again (even though i alr did that last devlog but its whatever loll) you can now map albedo (color), normal (height/offset), orm (occlusion, roughness, metallic), and emmision (glowiness) emission only kind of works rn lol, but i will get to it soon also, you currently have to manually set filepaths to the textures you want in the .json sidecar for that model, i need to add filepicker stuff to the inspector but i will get to it ok the textures in the video below were manually baked, packed, etc at 4096*4096 in blender i think another feature i should work on soon is procedural material generating, because texture mapping will always have a resolution limit (even 4k textures look kinda bad when mapped to larger models) i also want to change how reflections work a little bit, or maybe add anti-aliasing because right now the reflections look deep fried (as you will see in the video below)
shadows this one is really cool, i feel like it really takes it from looking like its from 1995 to like… 2015 maybe? it doesnt look that good but i think its a massive improvement! right now, its a 4096x4096 shadowmap with an extent of 24 units, a random noise filter to reduce pixelation, and 3x3 pcf to make it look somewhat smooth it is currently orthographic light projection only, but I think i’ll work on getting perspective lighting soon :) shadows did reqire implementing a whole new imageview, descriptor set, render pass, all that, but i’m getting used to it atp lol serialization is also completely broken right now, so I do need to fix that…...
|
1792774523.8995285
|
1793379323.8995285
|
|
4361
|
Untitled project by @ARCreator | Stardance
|
ARCreator
|
0
|
0.31
|
0
|
[]
|
[{"post_id": 734, "ts": "2026- [{"post_id": 734, "ts": "2026-06-02T10:45:14Z", "hours": 0.3133, "text": "this is supposed to be an air quality monitorr but idk how to us erhackatimer toi damn track my work"}]...
|
Title: Untitled project by @ARCreator | Stardance
Title: Untitled project by @ARCreator | Stardance
Devlogs:
this is supposed to be an air quality monitorr but idk how to us erhackatimer toi damn track my work...
|
1792921959.157686
|
1793785959.157686
|
|
34416
|
My own site! by @HarvyLiu | Stardance
|
HarvyLiu
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T02:26:34Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "IDK why it only recorded 1h but I’m 100% sure I spent at least 3 hours on this… Well anyways, I’ve finished my own site which is just some Me-info HOWEVER, THERE is a FLAG hidden here, the format is HLCTF{…} tho it’s not a ctf but just for fun :D. Have fun finding it, hint1: open inspect (F12)", "repo": "https://github.com/HarvyLiu/My-own-site", "demo": "https://harvyliu.github.io/My-own-site/"}]...
|
[{"post_id": 73428, "ts": "202 [{"post_id": 73428, "ts": "2026-09-25T02:12:46Z", "hours": 0.2939, "text": "Done! still doing a little tweaks and I’ll ship"}, {"post_id": 72761, "ts": "2026-09-23T17:59:36Z", "hours": 0.7486, "text": "Wrote some css… this is like the first time touching web since I was like in junior high… the feeling that I don’t wanna be a web dev is still in here (jk). Ricing linux would be more motivated but, welp trying out this to a depth that I havent been to is still a bit interesting…"}, {"post_id": 71835, "ts": "2026-09-21T16:56:41Z", "hours": 0.2719, "text": "Still working on it, it looks very ugly now, planning to make it into slide format, like slide to the right (using arrows) and show the next section."}]...
|
Title: My own site! by @HarvyLiu | Stardance
Devl Title: My own site! by @HarvyLiu | Stardance
Devlogs:
Still working on it, it looks very ugly now, planning to make it into slide format, like slide to the right (using arrows) and show the next section.
Wrote some css… this is like the first time touching web since I was like in junior high… the feeling that I don’t wanna be a web dev is still in here (jk). Ricing linux would be more motivated but, welp trying out this to a depth that I havent been to is still a bit interesting…
Done! still doing a little tweaks and I’ll ship
Ships:
IDK why it only recorded 1h but I’m 100% sure I spent at least 3 hours on this… Well anyways, I’ve finished my own site which is just some Me-info HOWEVER, THERE is a FLAG hidden here, the format is HLCTF{…} tho it’s not a ctf but just for fun :D. Have fun finding it, hint1: open inspect (F12)...
|
1793339314.2679372
|
1793425714.2679372
|
|
9392
|
WaveX by @ElliotsLittleWave | Stardance
|
ElliotsLittleWave
|
0
|
2.59
|
0
|
[]
|
[{"post_id": 7343, "ts": "2026 [{"post_id": 7343, "ts": "2026-06-12T07:39:20Z", "hours": 2.5881, "text": "DEVLOG #1 HEY GUYS! this website is an elliot wave pattern detector thats based on real-time price of gold, btc etc. my goal is to perform on the same level as other indicators while being a website myself!! currently i finished the basics of my backend detector but its not yet fully perfect as the internal 1min, 5min, 15 min waves are not yet accounted for which leads to big errors and pls dont mind the UI i didnt focus on it much since im at the backend phase rn GOAL: By next DEVLOG ill better the UI that AI made myself since i was too focused on backend and ill see you guys later BYEE!!"}]...
|
Title: WaveX by @ElliotsLittleWave | Stardance
De Title: WaveX by @ElliotsLittleWave | Stardance
Devlogs:
DEVLOG #1 HEY GUYS! this website is an elliot wave pattern detector thats based on real-time price of gold, btc etc. my goal is to perform on the same level as other indicators while being a website myself!! currently i finished the basics of my backend detector but its not yet fully perfect as the internal 1min, 5min, 15 min waves are not yet accounted for which leads to big errors and pls dont mind the UI i didnt focus on it much since im at the backend phase rn GOAL: By next DEVLOG ill better the UI that AI made myself since i was too focused on backend and ill see you guys later BYEE!!...
|
1793332509.100559
|
1793937309.100559
|
|
20483
|
Pulse by @mithbhasker | Stardance
|
mithbhasker
|
2
|
71.0
|
378
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-19T02:27:09Z", "hours": 16.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a website to help people like my dad who is a manager manage his team without multiple tools.", "repo": "https://github.com/Mithilessh2010/Pulse", "demo": "https://pulse-beta-nine.vercel.app/"}, {"ship_num": 2, "ts": "2026-08-01T05:26:05Z", "hours": 55.0, "multiplier": 9.75, "payout": 378, "blessing": "neutral", "text": "I did it for part of my startup this is the basic stuff I used a very basic AI looking UI but that is because I wanted base product out first but most core concepts I did.", "repo": "https://github.com/Mithilessh2010/Pulse", "demo": "https://pulse-beta-nine.vercel.app/"}]...
|
[{"post_id": 73434, "ts": "202 [{"post_id": 73434, "ts": "2026-09-25T02:36:18Z", "hours": 15.8133, "text": "I added some animations and to the bottom right corner of the website there is an AI chatbot and since I gave it a proper API key it can do much more making a managers life much easier"}, {"post_id": 36029, "ts": "2026-07-27T21:00:55Z", "hours": 17.9003, "text": "I couldn’t get all the API keys for the integrations so for now I am going to ship this and add things for a later ship"}, {"post_id": 28738, "ts": "2026-07-15T05:36:35Z", "hours": 10.7378, "text": "I added the rest of the buttons and made sure a quick prototype is in work it looks good to me as of now more updates will happen"}, {"post_id": 26057, "ts": "2026-07-10T17:22:29Z", "hours": 17.2972, "text": "I finished cleaning up the UI for the dashboard itself as most buttons and containers were unsatisfactory, I am going to work on getting the API keys next"}, {"post_id": 10952, "ts": "2026-06-17T23:25:23Z", "hours": 1.8375, "text": "Reworked the app shell and related screens to match the latest Pulse UI pass, added the calls surface, refreshed shared styling and auth presentation, and updated mock data, state, and assets to support the new layout. Included the current deliverables and dependency updates tied to the build changes."}, {"post_id": 10717, "ts": "2026-06-17T16:07:40Z", "hours": 1.2131, "text": "The Pulse demo data was moved to a centralized persisted store so changes are saved across navigation, page refreshes, and browser restarts. A reset option was also added in Settings to restore the original sample workspace."}, {"post_id": 10403, "ts": "2026-06-17T03:05:03Z", "hours": 1.0364, "text": "The Ask Pulse AI assistant was improved with better context, smarter fallback responses, and a request timeout to make it more reliable. The system prompt and API were updated for better flexibility, UI components were enhanced with improved interactivity, data fields were made consistent, and the deliverable was updated with the latest changes."}, {"post_id": 10364, "ts": "2026-06-17T01:27:19Z", "hours": 4.725, "text": "I just finished the Home Page, it has cool animations and fonts to really grab the person’s attention and get them more interested in using PULSE and paying to use it. As you scroll many animations will happen and I am now coding the buttons to look at more info."}]...
|
Title: Pulse by @mithbhasker | Stardance
Devlogs: Title: Pulse by @mithbhasker | Stardance
Devlogs:
I just finished the Home Page, it has cool animations and fonts to really grab the person’s attention and get them more interested in using PULSE and paying to use it. As you scroll many animations will happen and I am now coding the buttons to look at more info.
The Ask Pulse AI assistant was improved with better context, smarter fallback responses, and a request timeout to make it more reliable. The system prompt and API were updated for better flexibility, UI components were enhanced with improved interactivity, data fields were made consistent, and the deliverable was updated with the latest changes.
The Pulse demo data was moved to a centralized persisted store so changes are saved across navigation, page refreshes, and browser restarts. A reset option was also added in Settings to restore the original sample workspace.
Reworked the app shell and related screens to match the latest Pulse UI pass, added the calls surface, refreshed shared styling and auth presentation, and updated mock data, state, and assets to support the new layout. Included the current deliverables and dependency updates tied to the build changes.
I finished cleaning up the UI for the dashboard itself as most buttons and containers were unsatisfactory, I am going to work on getting the API keys next
I added the rest of the buttons and made sure a quick prototype is in work it looks good to me as of now more updates will happen
I couldn’t get all the API keys for the integrations so for now I am going to ship this and add things for a later ship
I added some animations and to the bottom right corner of the website there is an AI chatbot and since I gave it a proper API key it can do much more making a managers life much easier
Ships:
I did it for part of my startup this is the basic stuff I used a very basic AI looking UI but that is because I wanted base product out first but most core concepts I did.
I made a website to help people like my dad who is a manager manage his team without multiple tools....
|
1793314613.8767219
|
1793401013.8767219
|
|
25598
|
itinerarey by @nate | Stardance
|
nate
|
1
|
25.0
|
369
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T03:25:36Z", "hours": 25.0, "multiplier": 14.57, "payout": 369, "blessing": "neutral", "text": "Itinerarey is the better way to plan out your trips! When getting ready for a vacation, it can be incredibly stressful to plan out flights, hotels, activities, and more! So, I built itinerarey to make it a bit easier! It uses APIs and web scrapers to compile information from across the internet to have a centralized place to get information. The most challenging part of Itinerarey was the flights and hotels system. There are no free APIs (with good limits) for showing either, so I had to get a bit creative and spend a few hours researching. The flights system runs by contacting an API that runs a python web scraper that is hosted on Render, while the hotels call from an online Booking.com scraper. I am really proud of the recap page, mainly. To me, it feels like a representation of the entire project in its entireity. It shows everything the user did, and it works as a confirmation of every system performing as it should. For testing, please be aware that the render server mmight take up to a minute to load up. Also, due to web scraping being a bit finnicky, some results might not show up. If this happens, try clearing your localstorage and using a new destination. Enjoy your vacations! -nate", "repo": "https://github.com/Np3-0/itinerarey", "demo": "https://itinerarey.vercel.app/"}]...
|
[{"post_id": 73441, "ts": "202 [{"post_id": 73441, "ts": "2026-09-25T03:12:47Z", "hours": 3.2119, "text": "Itinerarey is complete! The last thing that I needed to get done was the recap page, which takes all the data in your localstorage and displays it for you! I had to rewrite how the flights and hotels are displayed to show the booking links, but overall it was pretty simple. The main thing that I am proud of is the budget tracker, which shows the prices for everything, including how much is leftover in the budget! This is done with some pretty simple math, but it definitely ties the project together. Lastly, the user can save a copy of this page to their computer. They can then also reset their localstorage to create a brand new trip! Lastly, I got the readme and license done (id take a look if I were you!), and finished deploying everything on vercel. Overall, I am really happy with how Itinerarey came out. I learned a lot about web scrapping and hosting websites from this project, which I hope will come in handy in the future! Thank you all for the support, stardance has been incredible! feel free to dm me in slack! - nate"}, {"post_id": 72073, "ts": "2026-09-22T03:31:50Z", "hours": 3.2789, "text": "The activities portion of the website is done! I did some research, and it turns out that the best way for me to find information on local events is AI! The way it works is by using Google Gemini along with Zod, which allows me to format my API requests to return in JSON. Since it has the same information each time, I can then just treat it as a regular API call. However, I might change it and put this on the backend to try to hide the API key. Anyways, we are almost at the end! The last major portion of the project is the recap page, where I plan to show all info on the trip, let users download, and maybe more! Today went pretty well, and I am excited to finally get this thing done."}, {"post_id": 70976, "ts": "2026-09-20T04:34:37Z", "hours": 3.3614, "text": "So… quick update, I tore my ACL! havent really been able to do much since, but today I sat down and got work done. Mainly, I got the hotels done! It works pretty similar to flights system, where the user is prompted with a list, and they choose whichever they want. Now, if you remember, I have been struggling with finding a hotel API, since amadeus shut down. Originally, the plan was rapidAPI, but the rate limits are horrid for that. After some very intense googling, I found omkar.cloud ! They have a bunch of web scrappers with a 200/month limit, so their booking.com API works perfectly. I genuinely was considering dropping the project from this, and I am so happy I found something that worked. Now, the future. There is like 10 days left in stardance, and I need to do the activities, final page, and fix deployment. Activities shouldn’t be that dificult, my plan is to use gemini and prompt it for activity ideas, and then format it to look cool? Im going to still do some research. Now, the main issue is deployment. Github pages doesn’t really support having a .env, so I tried switching to vercel. However, I now need to get localstorage (which I had to use as the cookie got too big lol) working on that, plus the flight API and everything else."}, {"post_id": 65159, "ts": "2026-09-10T03:14:31Z", "hours": 2.3381, "text": "Did I get work done on the hotels part? No! BUT, I did some very needed work on the flight system so that it should work in general. The main issue was that there was no way to convert from cities to airport codes, but I sat down and actually got it done. When the user enters a city and goes to the flight screen, a modal now appears. In the background, a function runs that gets the coordinates of the city, and then creates a 100 km circle around the location, returning all airports inside of it! Originally, the plan was to use nominatim for the geolocating, since it’s free, open source, and the goat, but I may have gotten IP banned for having it run 60 times a second for a good few minutes. (This is around 60 times the amount I am supposed to do it). I forgot to remove a variable from a dependency array. ANYWAYS, I used Mapbox instead! I have some experience with it, and its free tier is pretty comprehensive. Once the locations show on the modal, they choose which ones, it reloads to show departures, and then the same system as before applies! This works SO much better, and I’m really proud of the system."}, {"post_id": 61266, "ts": "2026-09-04T03:42:26Z", "hours": 1.16, "text": "So, I got some work done on itinerarey since. Mainly, I’ve been working on error trapping and trying to find a hotel’s API. Firstly, I am trying to use airport-data-js to convert city names to airports, but it returns the incorrect values usually. Otherwise, I got the base for the hotel page done. It’s going to look pretty similar to the flights, just with different information. Currently, I need to find an API that works for hotels, but it’s going to be a bit of a struggle. I tried fast-hotels, but they are no longer maintained, or at least the current version broke on me. Wish me luck!"}, {"post_id": 59366, "ts": "2026-09-01T03:57:08Z", "hours": 1.375, "text": "The flight system is complete! To reiterate how it works, once you put in a date, a render server with an API is called that uses Python to scrape Google Flights and return (hopefully) accurate flight data. Then, a user chooses the flight they want, it gets saved to the cookie, and it does the same actions for the return flight. The main issue I had with this was getting to swap between departure and returns, since it required some refactoring of the code. It wasn’t anything too bad, though. Next up is going to be finding a hotel API. This is going to be probably just as annoying as with the flights, but there is only one way to find out. That’ll be tomorrow, though; I am so tired right now lol. Lastly, I am writing this 3 minutes before my time as a Stardance Ambassador ends. I want to thank the team for letting me take this role; Nay-nay and Alex for their help; and everyone whom I’ve interacted with. While the role is done, I’m going to finish this project!"}, {"post_id": 57779, "ts": "2026-08-30T02:17:46Z", "hours": 0.9856, "text": "Now, the flights will actually show up in the website! Using the API, I get an array, and then each flight is put into a custom object that allows it to be displayed! Each option includes basic info such as airline, price, legs, locations, timings, and more! Now that it is styled, the next goal is to save flights to the cookie, and than rerun the same process for the return flight! Overall, I think it looks pretty good!"}, {"post_id": 52020, "ts": "2026-08-22T01:49:59Z", "hours": 1.9211, "text": "This time is fully my bad, I sort of (100%) forgot about this. ANYWAYS, I got some of the biggest progress done yet. Firstly, I got trips to save as cookies in your browser, since its an easier way for me to store data across the website. dont worry, im not stealing your data or anything lol. Then, I did some research (with help from Claude) and found fast-flights, a Python library that is basically a Google Flights scraper, so it works perfectly. Except it’s a Python library… on a React website. So, I created a seperate repo that contains an API that requests the library and hosted it on render.com. One note is that the links supplied reroute to google flights, so users will have to be careful with choosing correctly. Sadly, theres really no good free options for a flight API (literally everyone shut theirs down lol). Lastly, I connected it all together by writing the base code for querying the API and getting the data back. I do need to actually format it, modify it to work with my data, and display it. But, its a good stopping point for now. By next time, I want to have the flights page looking good, and my API to be more polished!"}, {"post_id": 38419, "ts": "2026-07-31T19:38:47Z", "hours": 1.1278, "text": "So… its been a minute! I’ve been out of state doing an engineering program at ND for the past few weeks, and I am FINALLY back home! So, here’s what I got done today! I finished the layout (for now) on for the planning page. For now, you put in the departure/arrival, number of people, dates, and overall budgets. The worst part of getting it to work was the date picker. I spent like 2 hours researching different date-range pickers and trying them out, such as react aria, react-date-range, and more. Eventually, I settled on cally since its lightweight, easy to customize, and didn’t require me to spend 3 hours making it work! I also created a new input type to shrink the file size down. For the future, I plan to get data to actually save in the app, and then start looking for a flights API. The API is going to be an issue. There is really not a lot of choices for a free and large-scale API for what I want. But, its the internet. Theres gotta be something! the website thats published isn’t updated yet, since I have some code that needs to be implemented before I can redeploy."}, {"post_id": 23955, "ts": "2026-07-07T05:30:43Z", "hours": 2.0186, "text": "I started to get some work done on the planning settings! Mainly, I need to track budgets, dates, and what the user actually wants to do and spend money on. The main issue I am currently having is making the date system work. I am going to do more research, though!"}, {"post_id": 21772, "ts": "2026-07-03T21:28:54Z", "hours": 0.9672, "text": "The home page is completely done! I spent around an hour adding in all of the other info, mainly about how the program works. I also spent a decent amount of time redoing the file structure of the website, just so everything is more organized. Now, I have to find the APIs I need. Google Flights doesn’t have one, so I am going to need to do some deep research."}, {"post_id": 20522, "ts": "2026-07-02T04:20:43Z", "hours": 0.6714, "text": "Been on vacation so progress been slow but here’s what I got done! Mainly, the search bar is done! I haven’t been able to program my custom algorithm yet, so right now it just links to google maps. I tried to mimic websites like Kayak and Google Earth, and I think its pretty decent. The main issue I had was with the website crashing when clicking the search bar. ThreeJS couldnt handle the pointer event (it doesnt really make sense), but with changing the z-order and adding a LOT of e.stoppropagation() fixed it. Overall, good progress, and next post I want to get the home page done!"}, {"post_id": 18112, "ts": "2026-06-29T03:36:57Z", "hours": 0.5631, "text": "Two major things for today: I fixed responsiveness, so it looks better on small screens. Also, I started work on the search bar. I have to style it, but its coming along well! shoutout to my friends @ fallout, wish i was allowed to come with! enjoy!"}, {"post_id": 16726, "ts": "2026-06-27T05:22:25Z", "hours": 0.9508, "text": "Card system works! When you click on a point (I added more), with around 3 per continent except Australia, a popup with basic info, a photo, and a button shows up. The button will eventually go to the itinerary algorithim, but for now just links to google maps. I have to make it responsive, but tomorrow I will (hopefully) finish the base page. check it out here!"}, {"post_id": 15870, "ts": "2026-06-25T19:58:46Z", "hours": 1.4225, "text": "Itinerarey (get it?) is going to be a website where you can put in a plan for a trip and get a full detailed list of what you can do, taking into consideration price, dates, and suggested ideas. I got this idea while waiting at EWR for 3 hours before my flight got cancelled, lol. I was supposed to go to Atlanta, and I would have had a free day by myself. If I had this, I could have figured out what to do. The plan is to take data from APIs to get flights, hotels, and other stuff, and combine it with AI to get a full list of what to do! But, so far, all I got done is the start of the hero page. I want to have a globe spinning in the BG with points that can pop up some ideas, which I got done using globe.gl. The points are not coded in yet to pop up, but that’ll be later."}]...
|
Title: itinerarey by @nate | Stardance
Devlogs:
I Title: itinerarey by @nate | Stardance
Devlogs:
Itinerarey (get it?) is going to be a website where you can put in a plan for a trip and get a full detailed list of what you can do, taking into consideration price, dates, and suggested ideas. I got this idea while waiting at EWR for 3 hours before my flight got cancelled, lol. I was supposed to go to Atlanta, and I would have had a free day by myself. If I had this, I could have figured out what to do. The plan is to take data from APIs to get flights, hotels, and other stuff, and combine it with AI to get a full list of what to do! But, so far, all I got done is the start of the hero page. I want to have a globe spinning in the BG with points that can pop up some ideas, which I got done using globe.gl. The points are not coded in yet to pop up, but that’ll be later.
Card system works! When you click on a point (I added more), with around 3 per continent except Australia, a popup with basic info, a photo, and a button shows up. The button will eventually go to the itinerary algorithim, but for now just links to google maps. I have to make it responsive, but tomorrow I will (hopefully) finish the base page. check it out here!
Two major things for today: I fixed responsiveness, so it looks better on small screens. Also, I started work on the search bar. I have to style it, but its coming along well! shoutout to my friends @ fallout, wish i was allowed to come with! enjoy!
Been on vacation so progress been slow but here’s what I got done! Mainly, the search bar is done! I haven’t been able to program my custom algorithm yet, so right now it just links to google maps. I tried to mimic websites like Kayak and Google Earth, and I think its pretty decent. The main issue I had was with the website crashing when clicking the search bar. ThreeJS couldnt handle the pointer event (it doesnt really make sense), but with changing the z-order and adding a LOT of e.stoppropagation() fixed it. Overall, good progress, and next post I want to get the home page done!
The home page is completely done! I spent around an hour adding in all of the other info, mainly about how the program works. I also spent a decent amount of time redoing the file structure of the website, just so everything is more organized. Now, I have to find the APIs I need. Google Flights doesn’t have one, so I am going to need to do some deep research.
I started to get some work done on the planning settings! Mainly, I need to track budgets, dates, and what the user actually wants to do and spend money on. The main issue I am currently having is making the date system work. I am going to do more research, though!
So… its been a minute! I’ve been out of state doing an engineering program at ND for the past few weeks, and I am FINALLY back home! So, here’s what I got done today! I finished the layout (for now) on for the planning page. For now, you put in the departure/arrival, number of people, dates, and overall budgets. The worst part of getting it to work was the date picker. I spent like 2 hours researching different date-range pickers and trying them out, such as react aria, react-date-range, and more. Eventually, I settled on cally since its lightweight, easy to customize, and didn’t require me to spend 3 hours making it work! I also created a new input type to shrink the file size down. For the future, I plan to get data to actually save in the app, and then start looking for a flights API. The API is going to be an issue. There is really not a lot of choices for a free and large-scale API for what I want. But, its the internet. Theres gotta be something! the website thats published isn’t updated yet, since I have some code that needs to be implemented before I can redeploy.
This time is fully my bad, I sort of (100%) forgot about this. ANYWAYS, I got some of the biggest progress done yet. Firstly, I got trips to save as cookies in your browser, since its an easier way for me to store data across the website. dont worry, im not stealing your data or anything lol. Then, I did some research (with help from Claude) and found fast-flights, a Python library that is basically a Google Flights scraper, so it works perfectly. Except it’s a Python library… on a React website. So, I created a seperate repo that contains an API that requests the library and hosted it on render.com. One note is that the links supplied reroute to google flights, so users will have to be careful with choosing correctly. Sadly, theres really no good free options for a flight API (literally everyone shut theirs down lol). Lastly, I connected it all together by writing the base code for querying the API and getting the data back. I do need to actually format it, modify it to work with my data, and display it. But, its a good stopping point for now. By next time, I want to have the flights page looking good, and my API to be more polished!
Now, the flights will actually show up in the website! Using the API, I get an array, and then each flight is put into a custom object that allows it to be displayed! Each option includes basic info such as airline, price, legs, locations, timings, and more! Now that it is styled, the next goal is to save flights to the cookie, and than rerun the same process for the return flight! Overall, I think it looks pretty good!
The flight system is complete! To reiterate how it works, once you put in a date, a render server with an API is called that uses Python to scrape Google Flights and return (hopefully) accurate flight data. Then, a user chooses the flight they want, it gets saved to the cookie, and it does the same actions for the return flight. The main issue I had with this was getting to swap between departure and returns, since it required some refactoring of the code. It wasn’t anything too bad, though. Next up is going to be finding a hotel API. This is going to be probably just as annoying as with the flights, but there is only one way to find out. That’ll be tomorrow, though; I am so tired right now lol. Lastly, I am writing this 3 minutes before my time as a Stardance Ambassador ends. I want to thank the team for letting me take this role; Nay-nay and Alex for their help; and everyone whom I’ve interacted with. While the role is done, I’m going to finish this project!
So, I got some work done on itinerarey since. Mainly, I’ve been working on error trapping and trying to find a hotel’s API. Firstly, I am trying to use airport-data-js to convert city names to airports, but it returns the incorrect values usually. Otherwise, I got the base for the hotel page done. It’s going to look pretty similar to the flights, just with different information. Currently, I need to find an API that works for hotels, but it’s going to be a bit of a struggle. I tried fast-hotels, but they are no longer maintained, or at least the current version broke on me. Wish me luck!
Did I get work done on the hotels part? No! BUT, I did some very needed work on the flight system so that it should work in general. The main issue was that there was no way to convert from cities to airport codes, but I sat down and actually got it done. When the user enters a city and goes to the flight screen, a modal now appears. In the background, a function runs that gets the coordinates of the city, and then creates a 100 km circle around the location, returning all airports inside of it! Originally, the plan was to use nominatim for the geolocating, since it’s free, open source, and the goat, but I may have gotten IP banned for having it run 60 times a second for a good few minutes. (This is around 60 times the amount I am supposed to do it). I forgot to remove a variable from a dependency array. ANYWAYS, I used Mapbox instead! I have some experience with it, and its free tier is pretty comprehensive. Once the locations show on the modal, they choose which ones, it reloads to show departures, and then the same system as before applies! This works SO much better, and I’m really proud of the system.
So… quick update, I tore my ACL! havent really been able to do much since, but today I sat down and got work done. Mainly, I got the hotels done! It works pretty similar to flights system, where the user is prompted with a list, and they choose whichever they want. Now, if you remember, I have been struggling with finding a hotel API, since amadeus shut down. Originally, the plan was rapidAPI, but the rate limits are horrid for that. After some very intense googling, I found omkar.cloud ! They have a bunch of web scrappers with a 200/month limit, so their booking.com API works perfectly. I genuinely was considering dropping the project from this, and I am so happy I found something that worked. Now, the future. There is like 10 days left in stardance, and I need to do the activities, final page, and fix deployment. Activities shouldn’t be that dificult, my plan is to use gemini and prompt it for activity ideas, and then format it to look cool? Im going to still do some research. Now, the main issue is deployment. Github pages doesn’t really support having a .env, so I tried switching to vercel. However, I now need to get localstorage (which I had to use as the cookie got too big lol) working on that, plus the flight API and everything else.
The activities portion of the website is done! I did some research, and it turns out that the best way for me to find information on local events is AI! The way it works is by using Google Gemini along with Zod, which allows me to format my API requests to return in JSON. Since it has the same information each time, I can then just treat it as a regular API call. However, I might change it and put this on the backend to try to hide the API key. Anyways, we are almost at the end! The last major portion of the project is the recap page, where I plan to show all info on the trip, let users download, and maybe more! Today went pretty well, and I am excited to finally get this thing done.
Itinerarey is complete! The last thing that I needed to get done was the recap page, which takes all the data in your localstorage and displays it for you! I had to rewrite how the flights and hotels are displayed to show the booking links, but overall it was pretty simple. The main thing that I am proud of is the budget tracker, which shows the prices for everything, including how much is leftover in the budget! This is done with some pretty simple math, but it definitely ties the project together. Lastly, the user can save a copy of this page to their computer. They can then also reset their localstorage to create a brand new trip! Lastly, I got the readme and license done (id take a look if I were you!), and finished deploying everything on vercel. Overall, I am really happy with how Itinerarey came out. I learned a lot about web scrapping and hosting websites from this project, which I hope will come in handy in the future! Thank you all for the support, stardance has been incredible! feel free to dm me in slack! - nate
Ships:
Itinerarey is the better way to plan out your trips! When getting ready for a vacation, it can be incredibly stressful to plan out flights, hotels, activities, and more! So, I built itinerarey to make it a bit easier! It uses APIs and web scrapers to compile information from across the internet to have a centralized place to get information. The most challenging part of Itinerarey was the flights and hotels system. There are no free APIs (with good limits) for showing either, so I had to get a bit creative and spend a few hours researching. The flights system runs by contacting an API that runs a python web scraper that is hosted on Render, while the hotels call from an online Booking.com scraper. I am really proud of the recap page, mainly. To me, it feels like a representation of the entire project in its entireity. It shows everything the user did, and it works as a confirmation of every system performing as it should. For testing, please be aware that the render server mmight take up to a minute to load up. Also, due to web scraping being a bit finnicky, some results might not show up. If this happens, try clearing your localstorage and using a new destination. Enjoy your vacations! -nate...
|
1793350604.3197749
|
1793437004.3197749
|
|
41036
|
new tab by @aishikamahanta | Stardance
|
aishikamahanta
|
2
|
9.92
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-04T11:46:56Z", "hours": 1.0, "multiplier": 1.23, "payout": 1, "blessing": "neutral", "text": "i changed the search tab, the alignment was a little though i also changed the global news heading", "repo": "https://github.com/Aishika23/newtab", "demo": "https://aishika23.github.io/newtab/"}, {"ship_num": 2, "ts": "2026-08-03T05:05:16Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I followed the “give your website a pulse” mission, it was fun to work with, the css part was most challenging for me, it was kinda annoying as well, but i am proud with the little animations that i implemented with css", "repo": "https://github.com/Aishika23/newtab", "demo": "https://aishika23.github.io/newtab/"}]...
|
[{"post_id": 73447, "ts": "202 [{"post_id": 73447, "ts": "2026-09-25T03:29:17Z", "hours": 3.0464, "text": "heyyy, i i couldn’t work for a month due to my exams but now i have finally completed the shortcuts feature, now you can edit and store any shortcuts and it will be there forever! though i don’t really know what kind of styling i should put in the pop up so any suggestions will be appreciated. To edit your shortcuts, you must click on the settings icon on the top right corner and edit accordingly and click on save!"}, {"post_id": 54246, "ts": "2026-08-25T04:10:11Z", "hours": 1.8725, "text": "i got some recommendations to add shortcuts, time, calendar and some fixes as well out of which i have added shortcuts and time and optimised the search function for enter key. The shortcuts are not customisable yet i will add that later. For now, i have stored the domains of shortcuts in an array, this array will be customisable, and every other function related to the shortcuts will be accessed through the array, and i have used a google favicons link to access the favicons, anyone can check for it in the source code. The time wasn’t that much of an headache, i just followed any youtube tutorial to add it and that’s all the updates for now!"}, {"post_id": 40660, "ts": "2026-08-04T10:49:09Z", "hours": 1.1333, "text": "i changed the css of search tab and it took me an awful amount of time to get it all aligned as i changed the search icon and used it as a font from google fonts, it’s still a little bit off centred but that’s the best i could do"}, {"post_id": 39881, "ts": "2026-08-03T05:01:09Z", "hours": 0.5789, "text": "I added a global news heading and some css thats it"}, {"post_id": 37492, "ts": "2026-07-30T08:52:25Z", "hours": 0.4981, "text": "i added two more news tabs and optimised it a little for phone users"}, {"post_id": 37461, "ts": "2026-07-30T07:10:00Z", "hours": 1.2361, "text": "i did some modifications to search bar and added news at the bottom using newsdata.io’s api"}, {"post_id": 36993, "ts": "2026-07-29T13:20:39Z", "hours": 2.0167, "text": "i am working on a new tab and first i searched for some api by nasa but only apod worked the best for me so i decided to use it as a background and whenever a youtube link will be posted, a custom image i have selected will appear as background (that you see in the screenshot) then i added some css to the search bar (i got the search icon from google icons)"}]...
|
Title: new tab by @aishikamahanta | Stardance
Dev Title: new tab by @aishikamahanta | Stardance
Devlogs:
i am working on a new tab and first i searched for some api by nasa but only apod worked the best for me so i decided to use it as a background and whenever a youtube link will be posted, a custom image i have selected will appear as background (that you see in the screenshot) then i added some css to the search bar (i got the search icon from google icons)
i did some modifications to search bar and added news at the bottom using newsdata.io’s api
i added two more news tabs and optimised it a little for phone users
I added a global news heading and some css thats it
i changed the css of search tab and it took me an awful amount of time to get it all aligned as i changed the search icon and used it as a font from google fonts, it’s still a little bit off centred but that’s the best i could do
i got some recommendations to add shortcuts, time, calendar and some fixes as well out of which i have added shortcuts and time and optimised the search function for enter key. The shortcuts are not customisable yet i will add that later. For now, i have stored the domains of shortcuts in an array, this array will be customisable, and every other function related to the shortcuts will be accessed through the array, and i have used a google favicons link to access the favicons, anyone can check for it in the source code. The time wasn’t that much of an headache, i just followed any youtube tutorial to add it and that’s all the updates for now!
heyyy, i i couldn’t work for a month due to my exams but now i have finally completed the shortcuts feature, now you can edit and store any shortcuts and it will be there forever! though i don’t really know what kind of styling i should put in the pop up so any suggestions will be appreciated. To edit your shortcuts, you must click on the settings icon on the top right corner and edit accordingly and click on save!
Ships:
I followed the “give your website a pulse” mission, it was fun to work with, the css part was most challenging for me, it was kinda annoying as well, but i am proud with the little animations that i implemented with css
i changed the search tab, the alignment was a little though i also changed the global news heading...
|
1793292847.9545329
|
1793379247.9545329
|
|
65278
|
Receipt printer! by @bobafrog282 | Stardance
|
bobafrog282
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-23T02:50:21Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a printer receipt for the little challenge that they gave us in stardance!", "repo": "https://github.com/normalcivilian0343/printer_reciept", "demo": "https://github.com/normalcivilian0343/printer_reciept/blob/main"}]...
|
[{"post_id": 73449, "ts": "202 [{"post_id": 73449, "ts": "2026-09-25T03:39:46Z", "hours": 0.2856, "text": "What did I do? I tinkered and came up with a cool design for the thermal printer (+ to get the stickers :)"}, {"post_id": 72961, "ts": "2026-09-24T03:31:02Z", "hours": 0.3486, "text": "What I did? I started working on this project, and I just figured out how to run it! I have no idea how to adjust my print pattern to get something with lines - and my changes were completely random! I do want to ship this tomorrow for the challenge, so I’ll need to cook up something good tomorrow!"}]...
|
Title: Receipt printer! by @bobafrog282 | Stardanc Title: Receipt printer! by @bobafrog282 | Stardance
Devlogs:
What I did? I started working on this project, and I just figured out how to run it! I have no idea how to adjust my print pattern to get something with lines - and my changes were completely random! I do want to ship this tomorrow for the challenge, so I’ll need to cook up something good tomorrow!
What did I do? I tinkered and came up with a cool design for the thermal printer (+ to get the stickers :)
Ships:
I made a printer receipt for the little challenge that they gave us in stardance!...
|
1793245993.7014127
|
1793332393.7014127
|
|
17163
|
My very own WebOS by @zach_w | Stardance
|
zach_w
|
0
|
0.33
|
0
|
[]
|
[{"post_id": 7345, "ts": "2026 [{"post_id": 7345, "ts": "2026-06-12T07:43:14Z", "hours": 0.3292, "text": "The begginings of a Web OS"}]...
|
Title: My very own WebOS by @zach_w | Stardance
D Title: My very own WebOS by @zach_w | Stardance
Devlogs:
The begginings of a Web OS...
|
1793231501.3301406
|
1793836301.3301406
|
|
63760
|
My own site! by @notfix133 | Stardance
|
notfix133
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T03:43:20Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "this is my first project on stardance!! i tried to follow a simple yt tutorial and made this simple sectioned website. it turned out to be kind of cute like a banana pancake but alls well!!! thank you for visiting this humble site of mine :) demo link: https://github.com/Abhrajit-Gogoi/personal-site", "repo": "https://github.com/Abhrajit-Gogoi/personal-site", "demo": "https://abhrajit-gogoi.github.io/personal-site/"}]...
|
[{"post_id": 73450, "ts": "202 [{"post_id": 73450, "ts": "2026-09-25T03:40:31Z", "hours": 0.4481, "text": "added my styling and a little bit of color. although it looks like a banana pancake to me. i really need to work on my styling sense."}, {"post_id": 73145, "ts": "2026-09-24T14:13:48Z", "hours": 0.4806, "text": "made the index.html after following the guide!!!!!"}]...
|
Title: My own site! by @notfix133 | Stardance
Dev Title: My own site! by @notfix133 | Stardance
Devlogs:
made the index.html after following the guide!!!!!
added my styling and a little bit of color. although it looks like a banana pancake to me. i really need to work on my styling sense.
Ships:
this is my first project on stardance!! i tried to follow a simple yt tutorial and made this simple sectioned website. it turned out to be kind of cute like a banana pancake but alls well!!! thank you for visiting this humble site of mine :) demo link: https://github.com/Abhrajit-Gogoi/personal-site...
|
1793213374.8371184
|
1793299774.8371184
|
|
7353
|
Red Door Yellow Door by @isadora_M | Stardance
|
isadora_M
|
0
|
22.24
|
0
|
[]
|
[{"post_id": 73452, "ts": "202 [{"post_id": 73452, "ts": "2026-09-25T03:43:57Z", "hours": 4.5422, "text": "Red Door Delvog #6 - I’ve been working on lots of materials, meshes, and other various art-related parts of this game! I’ve been working on some UI elements, and I hope soon the game will be looking a little better."}, {"post_id": 68910, "ts": "2026-09-16T00:59:07Z", "hours": 3.2178, "text": "Red Door Devlog #5 - I’ve done a lot of work on the special levels, including the meadow level. I decided to use physical walls and terrain to make the meadow rather than a skybox to help contribute to the uncanny vibes. I also created a basic startup screen, although it looks pretty bad, so I will probably change it later."}, {"post_id": 66963, "ts": "2026-09-12T23:05:52Z", "hours": 3.6042, "text": "Red Door Devlog #4 - I have finally started working on some custom 3D models! Im probably going to get most of my models off the unity store, but I wanted to make the door models myself, as there are very specific colors that I am imagining. In terms of base game mechanics, I am working on an algorithm that places sub-walls throughout rooms so that they aren’t just one big box. It’s going slowly as I, shockingly, still suck at C#."}, {"post_id": 62461, "ts": "2026-09-05T20:20:30Z", "hours": 3.1867, "text": "Red Door Devlog #3 - I finally got the infinite room generation working! This involved creating empty door frames in the newly generated rooms so the player can pass through the door. This was pretty difficult, as my C# skills are severely lacking. Next, I want to make a system so older rooms will automatically be deleted."}, {"post_id": 60000, "ts": "2026-09-02T02:58:00Z", "hours": 4.4006, "text": "Red Door Devlog #2 – Unfortunately, I still suck at C# so this project has been very slow going. I tried to follow some tutorials online, but they weren’t super helpful. If anyone knows some really good Unity/ C# free courses, lmk. I have accomplished making a script that will automatically generate a room of a random size with a door on a random wall. I also have the outlines for the functions that will allow a new room to generate when the player walks through the door, so soon hopefully I will have an infinite room generation system!"}, {"post_id": 50693, "ts": "2026-08-20T00:36:25Z", "hours": 3.2853, "text": "Red Door Devlog #1 - Starting a new game project! This game is going to be a video game adaptation of the urban legend “Red Door Yellow Door”. I haven’t worked out all of the details yet, but the premise of the game will be the player exploring a creepy maze where they must choose their path by entering differently colored doors. It will be made using Unity, and so far I have created a basic 1st person movement script. This is my first time using Unity and coding in C#, which is why this took 3 hours. My first goal is basic room generation, where entering a door generates a new room of a random size."}]...
|
Title: Red Door Yellow Door by @isadora_M | Starda Title: Red Door Yellow Door by @isadora_M | Stardance
Devlogs:
Red Door Devlog #1 - Starting a new game project! This game is going to be a video game adaptation of the urban legend “Red Door Yellow Door”. I haven’t worked out all of the details yet, but the premise of the game will be the player exploring a creepy maze where they must choose their path by entering differently colored doors. It will be made using Unity, and so far I have created a basic 1st person movement script. This is my first time using Unity and coding in C#, which is why this took 3 hours. My first goal is basic room generation, where entering a door generates a new room of a random size.
Red Door Devlog #2 – Unfortunately, I still suck at C# so this project has been very slow going. I tried to follow some tutorials online, but they weren’t super helpful. If anyone knows some really good Unity/ C# free courses, lmk. I have accomplished making a script that will automatically generate a room of a random size with a door on a random wall. I also have the outlines for the functions that will allow a new room to generate when the player walks through the door, so soon hopefully I will have an infinite room generation system!
Red Door Devlog #3 - I finally got the infinite room generation working! This involved creating empty door frames in the newly generated rooms so the player can pass through the door. This was pretty difficult, as my C# skills are severely lacking. Next, I want to make a system so older rooms will automatically be deleted.
Red Door Devlog #4 - I have finally started working on some custom 3D models! Im probably going to get most of my models off the unity store, but I wanted to make the door models myself, as there are very specific colors that I am imagining. In terms of base game mechanics, I am working on an algorithm that places sub-walls throughout rooms so that they aren’t just one big box. It’s going slowly as I, shockingly, still suck at C#.
Red Door Devlog #5 - I’ve done a lot of work on the special levels, including the meadow level. I decided to use physical walls and terrain to make the meadow rather than a skybox to help contribute to the uncanny vibes. I also created a basic startup screen, although it looks pretty bad, so I will probably change it later.
Red Door Delvog #6 - I’ve been working on lots of materials, meshes, and other various art-related parts of this game! I’ve been working on some UI elements, and I hope soon the game will be looking a little better....
|
1793296503.720954
|
1793901303.720954
|
|
65205
|
Nova Tab by @gdev | Stardance
|
gdev
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T04:02:39Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "NovaTab is my custom newtab page where you can be greated with a beautiful tab everytime you open a new tab! NovaTab has everything from custom calendar support, to a custom-made bookmark widget, and dymanic weather and timezone systems using various apis.", "repo": "https://github.com/galaxydevvv/NovaTab", "demo": "https://galaxydevvv.github.io/NovaTab/"}]...
|
[{"post_id": 73454, "ts": "202 [{"post_id": 73454, "ts": "2026-09-25T03:56:56Z", "hours": 0.2822, "text": "DEVLOG #3 I added a clock from my old website to go above the search bar and wrote a quick readme for the website so people can easily read how to config and setup the new tab"}, {"post_id": 73122, "ts": "2026-09-24T13:12:12Z", "hours": 0.6708, "text": "DEVLOG #2 Today I added a bookmarks and calendar widget! The calendar took forever to add, working and cool-looking, without doxxing myself lol, and the bookmarks are just a new widget form I recoded from my old bookmark manager project."}, {"post_id": 72917, "ts": "2026-09-24T01:04:27Z", "hours": 1.5039, "text": "DEVLOG #1 YAYYY FIRST DEV LOG!!! I tried using the guide but it was really boring lol so I made my own new tab and after some research I found out its actually REALLY easy to add a working google search-bar so I added that the to center and also I added a cool weather widget I made so you can view the weather from inside the website! Its pretty basic right now so I added some blur effects and outlines, etc with css so it looks pretty good at least :D"}]...
|
Title: Nova Tab by @gdev | Stardance
Devlogs:
DEV Title: Nova Tab by @gdev | Stardance
Devlogs:
DEVLOG #1 YAYYY FIRST DEV LOG!!! I tried using the guide but it was really boring lol so I made my own new tab and after some research I found out its actually REALLY easy to add a working google search-bar so I added that the to center and also I added a cool weather widget I made so you can view the weather from inside the website! Its pretty basic right now so I added some blur effects and outlines, etc with css so it looks pretty good at least :D
DEVLOG #2 Today I added a bookmarks and calendar widget! The calendar took forever to add, working and cool-looking, without doxxing myself lol, and the bookmarks are just a new widget form I recoded from my old bookmark manager project.
DEVLOG #3 I added a clock from my old website to go above the search bar and wrote a quick readme for the website so people can easily read how to config and setup the new tab
Ships:
NovaTab is my custom newtab page where you can be greated with a beautiful tab everytime you open a new tab! NovaTab has everything from custom calendar support, to a custom-made bookmark widget, and dymanic weather and timezone systems using various apis....
|
1793213711.2654448
|
1793300111.2654448
|
|
63192
|
event-horizon by @tejasv | Stardance
|
tejasv
|
1
|
1.73
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T09:46:55Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made event-horizon , a NASA-powered custom new-tab dashboard. It displays NASA’s Astronomy Picture of the Day with the image or video, title, date, explanation, and a link to the original media. I designed it as a fixed Chrome-style browser window using a neo-brutalist and maximalist visual style. It has bold borders, bright colors, large typography, a live clock, a date picker, a Today button, a reload button, signal status, and an internal scroll area for reading the NASA explanation without scrolling the entire page. The most challenging parts were connecting the NASA APOD API, supporting both image and video results, handling loading and error states, and keeping the browser-style layout fixed while allowing only the content panel to scroll. I also learned how to use Vite environment variables and deploy a production build. To test the project, open the site and wait for the NASA picture to load. Use the date picker to explore another date, click “Jump to Today” to return to today’s picture, and click the original-image link to view the full-resolution media. Press the T key to return to today’s picture.", "repo": "https://github.com/tejasvswipe/event-horizon", "demo": "https://event-horizon-fur.vercel.app"}]...
|
[{"post_id": 73457, "ts": "202 [{"post_id": 73457, "ts": "2026-09-25T04:03:05Z", "hours": 0.3428, "text": "i worked here to chnge the ui hope u like it"}, {"post_id": 72691, "ts": "2026-09-23T14:52:59Z", "hours": 0.3911, "text": "its been a good vibe with the pin the favourites features yepiee, checkout : event-horizon-fur.vercel.app"}, {"post_id": 70080, "ts": "2026-09-18T12:42:23Z", "hours": 0.77, "text": "see what happened in space on ur bday ,for cool ppl only event-horizon-fur.vercel.app"}]...
|
Title: event-horizon by @tejasv | Stardance
Devlo Title: event-horizon by @tejasv | Stardance
Devlogs:
see what happened in space on ur bday ,for cool ppl only event-horizon-fur.vercel.app
its been a good vibe with the pin the favourites features yepiee, checkout : event-horizon-fur.vercel.app
i worked here to chnge the ui hope u like it
Ships:
I made event-horizon , a NASA-powered custom new-tab dashboard. It displays NASA’s Astronomy Picture of the Day with the image or video, title, date, explanation, and a link to the original media. I designed it as a fixed Chrome-style browser window using a neo-brutalist and maximalist visual style. It has bold borders, bright colors, large typography, a live clock, a date picker, a Today button, a reload button, signal status, and an internal scroll area for reading the NASA explanation without scrolling the entire page. The most challenging parts were connecting the NASA APOD API, supporting both image and video results, handling loading and error states, and keeping the browser-style layout fixed while allowing only the content panel to scroll. I also learned how to use Vite environment variables and deploy a production build. To test the project, open the site and wait for the NASA picture to load. Use the date picker to explore another date, click “Jump to Today” to return to today’s picture, and click the original-image link to view the full-resolution media. Press the T key to return to today’s picture....
|
1793044090.1141288
|
1793908090.1141288
|
|
37706
|
FormulaOS by @Stellar | Stardance
|
Stellar
|
1
|
26.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T14:51:27Z", "hours": 26.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Formula One web-based operating system! I started this project forever ago and just never had the time to actually work on it. It is currently very simple and I wish I had the time to actually make it better, but unfortunately Stardance is coming to an end soon. This project was built using React JS (more so Typescript than Javascript) which is a simple Javascript framework. It features three apps: notes, calculator, and terminal. It has a (static/non-movable) clock widget along with the time and date being displayed in the top-right corner. This project wasn’t very hard to make with probably the most difficult part being deploying the project itself.", "repo": "https://github.com/Ansh2021/FormulaOS", "demo": "https://ansh2021.github.io/FormulaOS/"}]...
|
[{"post_id": 73460, "ts": "202 [{"post_id": 73460, "ts": "2026-09-25T04:13:29Z", "hours": 10.9867, "text": "Finished (hopefully) Devlog #3 It’s been way too long since I’ve worked on this project. I decided to make it simpler for myself so I could actually get this project shipped. This is the main reason why I decided to remove part of the topbar (it didn’t really have much purpose anyway). I added a useable terminal filled with commands and fixed window ordering when clicking on multiple windows in any order. That’s really it for this devlog. I’ll probably ship this project very soon."}, {"post_id": 38900, "ts": "2026-08-01T14:11:31Z", "hours": 8.7997, "text": "Notes App & Clock Devlog #2 I added a simple notes app that is heavily inspired by the Apple Notes app (right now at least). I also added an analog clock drawn through JS graphics. Notes App The notes app is currently very simple and only has the capability to create and edit notes (no delete functionality yet). The first line in your note determines its title and the rest is considered its content (similar to Apple Notes). The Clock The analog clock is drawn through simple JavaScript graphics. It is repeatedly drawn over and over again to update the clock’s hands by using the the requestAnimationFrame() function which automatically synchronizes repeated updates to the refresh rate of the user’s display. This is taking way too long for WebOS 1. I’ll try to finish the first ship by the next devlog."}, {"post_id": 33087, "ts": "2026-07-22T17:55:59Z", "hours": 6.3911, "text": "Frontend Skeleton Devlog #1 FormulaOS, a little OS for F1 lovers. Progress I really just added a lot of the skeleton/components I will be using throughout this project. For example, I made a reusable window component. It currently has a full screen button working but isn’t freely resizable by the user like actual OS windows typically are. Next Steps Find a better color scheme? Add wallpapers (although I might save this for later) Add a bottom bar Clock and maybe calendar widget(s) Add more apps (I’ll decide which ones to add later) F1 themed fonts?"}]...
|
Title: FormulaOS by @Stellar | Stardance
Devlogs: Title: FormulaOS by @Stellar | Stardance
Devlogs:
Frontend Skeleton Devlog #1 FormulaOS, a little OS for F1 lovers. Progress I really just added a lot of the skeleton/components I will be using throughout this project. For example, I made a reusable window component. It currently has a full screen button working but isn’t freely resizable by the user like actual OS windows typically are. Next Steps Find a better color scheme? Add wallpapers (although I might save this for later) Add a bottom bar Clock and maybe calendar widget(s) Add more apps (I’ll decide which ones to add later) F1 themed fonts?
Notes App & Clock Devlog #2 I added a simple notes app that is heavily inspired by the Apple Notes app (right now at least). I also added an analog clock drawn through JS graphics. Notes App The notes app is currently very simple and only has the capability to create and edit notes (no delete functionality yet). The first line in your note determines its title and the rest is considered its content (similar to Apple Notes). The Clock The analog clock is drawn through simple JavaScript graphics. It is repeatedly drawn over and over again to update the clock’s hands by using the the requestAnimationFrame() function which automatically synchronizes repeated updates to the refresh rate of the user’s display. This is taking way too long for WebOS 1. I’ll try to finish the first ship by the next devlog.
Finished (hopefully) Devlog #3 It’s been way too long since I’ve worked on this project. I decided to make it simpler for myself so I could actually get this project shipped. This is the main reason why I decided to remove part of the topbar (it didn’t really have much purpose anyway). I added a useable terminal filled with commands and fixed window ordering when clicking on multiple windows in any order. That’s really it for this devlog. I’ll probably ship this project very soon.
Ships:
I made a Formula One web-based operating system! I started this project forever ago and just never had the time to actually work on it. It is currently very simple and I wish I had the time to actually make it better, but unfortunately Stardance is coming to an end soon. This project was built using React JS (more so Typescript than Javascript) which is a simple Javascript framework. It features three apps: notes, calculator, and terminal. It has a (static/non-movable) clock widget along with the time and date being displayed in the top-right corner. This project wasn’t very hard to make with probably the most difficult part being deploying the project itself....
|
1793339799.4661794
|
1793426199.4661794
|
|
57691
|
rhythm pad ! by @kirbyy | Stardance
|
kirbyy
|
0
|
11.0
|
0
|
[]
|
[{"post_id": 73464, "ts": "202 [{"post_id": 73464, "ts": "2026-09-25T04:37:31Z", "hours": 0.6672, "text": "(09/25/26) final devlog for the rhythm pad most likely! Figured out how to work QMK firmware after hours of suffering (though, it won’t track </3) It was such a leaning curve, but joe scotto is the goat. Additonally, readjusted measurments on the plate due to it being mis-aligned. Importing the .dxf file of the PCB was a great help."}, {"post_id": 67069, "ts": "2026-09-13T03:41:14Z", "hours": 2.2136, "text": "(9/12/2026) huge update! finally finished the case after some unfortunate stressing and embarrassing tears (thought I broke fillet tool..). Added the plate and bezel with colors inspired by the Artemis spaceship. Learning CAD for the first time to create this has been such a great experience."}, {"post_id": 65798, "ts": "2026-09-11T05:30:45Z", "hours": 1.9008, "text": "(9/11/2026) not that huge of an update, but I feel like logging the 2 hours I spent overthinking. Starting to work on the plate. It’s gonna be a sandwich mounting style. All the measurements and scale were confusing me so bad, but I think it’s coming along."}, {"post_id": 65176, "ts": "2026-09-10T03:49:10Z", "hours": 1.6953, "text": "(9/9/2026) beginning the construction of the case! I can honestly say I’m super proud of how it’s coming out so far. I did struggle with learning onshape and I still don’t know everything, not by a long shot, but I def feel way more capable. This is just the bottom half."}, {"post_id": 63996, "ts": "2026-09-08T03:05:57Z", "hours": 2.2803, "text": "(9/7/2026) finally finished up the PCB! i definitely spent way too long overthinking the layout and measurements. When routing started to get difficult due to the order of pins in the schematic, I figured I could switch the order. It got wayyy easier, and I didn´t have to cross as much."}, {"post_id": 63246, "ts": "2026-09-06T23:26:32Z", "hours": 2.2453, "text": "(9/6/2026) current iteration of the PCB schematics, just a few days ago, I knew nothing about PCB design but learning has honestly been so fun! I struggled the most with understanding how to route the rotary encoder. I think connecting the switch pins to the matrix works ? May change it if I recieve feedback."}]...
|
Title: rhythm pad ! by @kirbyy | Stardance
Devlog Title: rhythm pad ! by @kirbyy | Stardance
Devlogs:
(9/6/2026) current iteration of the PCB schematics, just a few days ago, I knew nothing about PCB design but learning has honestly been so fun! I struggled the most with understanding how to route the rotary encoder. I think connecting the switch pins to the matrix works ? May change it if I recieve feedback.
(9/7/2026) finally finished up the PCB! i definitely spent way too long overthinking the layout and measurements. When routing started to get difficult due to the order of pins in the schematic, I figured I could switch the order. It got wayyy easier, and I didn´t have to cross as much.
(9/9/2026) beginning the construction of the case! I can honestly say I’m super proud of how it’s coming out so far. I did struggle with learning onshape and I still don’t know everything, not by a long shot, but I def feel way more capable. This is just the bottom half.
(9/11/2026) not that huge of an update, but I feel like logging the 2 hours I spent overthinking. Starting to work on the plate. It’s gonna be a sandwich mounting style. All the measurements and scale were confusing me so bad, but I think it’s coming along.
(9/12/2026) huge update! finally finished the case after some unfortunate stressing and embarrassing tears (thought I broke fillet tool..). Added the plate and bezel with colors inspired by the Artemis spaceship. Learning CAD for the first time to create this has been such a great experience.
(09/25/26) final devlog for the rhythm pad most likely! Figured out how to work QMK firmware after hours of suffering (though, it won’t track </3) It was such a leaning curve, but joe scotto is the goat. Additonally, readjusted measurments on the plate due to it being mis-aligned. Importing the .dxf file of the PCB was a great help....
|
1792716733.87133
|
1793321533.87133
|
|
65335
|
Num Pad by @Porker_12 | Stardance
|
Porker_12
|
0
|
3.04
|
0
|
[]
|
[{"post_id": 73467, "ts": "202 [{"post_id": 73467, "ts": "2026-09-25T05:21:13Z", "hours": 1.3536, "text": "FInished coding the firmware for the numpad with the help of claude"}, {"post_id": 73355, "ts": "2026-09-24T23:49:41Z", "hours": 0.3708, "text": "So i finished the case and now i have to figure out how to create the firmware"}, {"post_id": 73343, "ts": "2026-09-24T22:53:31Z", "hours": 0.3594, "text": "So i finished sketching the case and now i just need to extrude it"}, {"post_id": 73091, "ts": "2026-09-24T11:25:21Z", "hours": 0.3417, "text": "Just finished wiring up the PCB for 9 keys so i just need to move this into cad and then build the firmware"}, {"post_id": 73049, "ts": "2026-09-24T08:35:42Z", "hours": 0.6106, "text": "So I built the basic pcb for a number pad only keyboard I only did the 3 buttons for now but i am planning on having all ten, i also built the case for it after a long struggle with Autodesk"}]...
|
Title: Num Pad by @Porker_12 | Stardance
Devlogs: Title: Num Pad by @Porker_12 | Stardance
Devlogs:
So I built the basic pcb for a number pad only keyboard I only did the 3 buttons for now but i am planning on having all ten, i also built the case for it after a long struggle with Autodesk
Just finished wiring up the PCB for 9 keys so i just need to move this into cad and then build the firmware
So i finished sketching the case and now i just need to extrude it
So i finished the case and now i have to figure out how to create the firmware
FInished coding the firmware for the numpad with the help of claude...
|
1793087276.0252466
|
1793692076.0252466
|
|
44008
|
The Status Tracker by @Spaceccandy | Stardance
|
Spaceccandy
|
0
|
6.48
|
0
|
[]
|
[{"post_id": 73468, "ts": "202 [{"post_id": 73468, "ts": "2026-09-25T05:37:11Z", "hours": 2.5942, "text": "Dev log #6 Added a interactable system tray icon to launch the status tracker to make the user experience better plus some data tracking. Updates Used pystray to create a system tray icon for windows with menu options(Start, Stop, Quit) Added a txt file with tracking of how long user spends on each activity. At the beginning of every use, the program reads from txt file. What’s next Writing back to the txt file when user quits, adding another menu option to check status data."}, {"post_id": 46660, "ts": "2026-08-14T02:49:26Z", "hours": 0.5831, "text": "Dev log #5 Testing I didn’t code much but I just ran my program across multiple days, and tweaked the prompt to make the categorizer more accurate. I think I’ve tweaked it to a point where it correctly categorizes daily activities done on a computer, and rarely gives a incorrect status. Updates Added a examples folder to add training data along with a description for each image Added more specific constraints to the prompt like if 3 screenshot are exactly the same, user is idle Fixed the status if statement. Before it checked for the mention of the categories STEM, GAMES, STUDY, DOOM_SCROLLING, and MEETING, in that order. But now it checks the boxed phase for the category. What’s next (UX) Packaging this program up for others to easily run (Data tracking) Track how much time a user spends in a certain category each day because people like to see data."}, {"post_id": 42929, "ts": "2026-08-07T22:13:08Z", "hours": 0.9708, "text": "Dev log #4 I did some looking into prompt engineering, and I’m realizing it’s tough. Sometimes the AI, mistakes things I’m doing and puts them in the wrong category. Ex, if I had Discord open, and a friend sends me a video, the AI would mark that under doom scrolling, even though I didn’t do it. I’m also trying to keep it simple because sometimes when I tell it something specific, it thinks all cases should be considered the same way. Updates Refined the prompt AI now looks through 3 of the most recent screenshots to determine what I’m doing. Issues The AI still gets what I’m doing wrong sometimes. What’s next Have it just run while I’m using my computer, and check my status every once in a while, and refine my prompt based on what the AI reasoned."}, {"post_id": 42377, "ts": "2026-08-07T02:04:36Z", "hours": 1.0492, "text": "Dev log #3 So I got it working!!! I tried it out in Discord for a few hours, and the AI usage limits is holding up well. I was about to switch to a different AI because there were usage limits, and I kept hitting it. I realized it was because I didn’t have to upload the images to the Gemini cloud. I just let my program read them directly. And I made it so it takes a screenshot every 2 minutes instead of 20 seconds. Updates AI now takes screenshots every 2 minutes AI Processes screenshot, and depending on the response and prompt, changes the status variable Connected AI to Discord program (Sends new status to bot after analysis) What’s next The AI isn’t the best at differentiating what I’m doing right now, but I’m also not sure how good it is. I need to find a way to stress test it and teach it what screenshots are in what category. This also includes doing better prompt engineering."}, {"post_id": 42264, "ts": "2026-08-06T21:53:02Z", "hours": 0.8675, "text": "Dev log #2 So I started testing out the AI here because I’ve never worked with it, and it wasn’t as hard as I thought it’d be. I decided to use a Gemini API, which I had to get from the Google AI Studio API Keys page. Then they also had a page somewhere teaching you how to use the API, which helped a lot ( Gemini API help ). The biggest issue I had was which model of Gemini I was using. 3.5 lite allowed more usage, and was the latest model that I could use. Updates I made a test file for testing the pyautogui to take a screenshot and save it. Got a Gemini API key Learned how to make a hidden file called .env(environmental variables) and gitignore(Put the name of files you don’t want to commit) to hide my API key when I commit it to my GitHub Created a basic AI interaction with Gemini to take a text input, and an image input to generate a response. What’s next Tune the prompt a bit to generate the response in a specific format(Right now I get an explanation sometimes, and not others) Connect this to the application display I made last time to show what I’m doing right now. Check out the code below to see how my simple AI interaction works."}, {"post_id": 41750, "ts": "2026-08-06T04:21:44Z", "hours": 0.4142, "text": "Dev log 1 This is the start of a mini program I’m making that’s going to track my activities on my computer to give me an incentive to be productive! So below here I have a plan of what I’m trying to build, and it seems I’m going to have to learn about using APIs, communication between different local programs like IPC. I’m not sure how to track the time I spent planning so I started a bit of code to log this. Development I had to make a app in discord to act as my status display, and this gave me a app ID Then I got a test script and tested to see if I could connect my script to the app using app ID. I had to install the pypresence plugin, which is how, python can communicate with discord. What’s next I have to figure out what AI I could use, and learn how to incorporate a AI in a python script. I’m calling it Nozi bot for now because it sounds like “nosy” and it’s like tracking what you’re doing for your nosy friends."}]...
|
Title: The Status Tracker by @Spaceccandy | Starda Title: The Status Tracker by @Spaceccandy | Stardance
Devlogs:
Dev log 1 This is the start of a mini program I’m making that’s going to track my activities on my computer to give me an incentive to be productive! So below here I have a plan of what I’m trying to build, and it seems I’m going to have to learn about using APIs, communication between different local programs like IPC. I’m not sure how to track the time I spent planning so I started a bit of code to log this. Development I had to make a app in discord to act as my status display, and this gave me a app ID Then I got a test script and tested to see if I could connect my script to the app using app ID. I had to install the pypresence plugin, which is how, python can communicate with discord. What’s next I have to figure out what AI I could use, and learn how to incorporate a AI in a python script. I’m calling it Nozi bot for now because it sounds like “nosy” and it’s like tracking what you’re doing for your nosy friends.
Dev log #2 So I started testing out the AI here because I’ve never worked with it, and it wasn’t as hard as I thought it’d be. I decided to use a Gemini API, which I had to get from the Google AI Studio API Keys page. Then they also had a page somewhere teaching you how to use the API, which helped a lot ( Gemini API help ). The biggest issue I had was which model of Gemini I was using. 3.5 lite allowed more usage, and was the latest model that I could use. Updates I made a test file for testing the pyautogui to take a screenshot and save it. Got a Gemini API key Learned how to make a hidden file called .env(environmental variables) and gitignore(Put the name of files you don’t want to commit) to hide my API key when I commit it to my GitHub Created a basic AI interaction with Gemini to take a text input, and an image input to generate a response. What’s next Tune the prompt a bit to generate the response in a specific format(Right now I get an explanation sometimes, and not others) Connect this to the application display I made last time to show what I’m doing right now. Check out the code below to see how my simple AI interaction works.
Dev log #3 So I got it working!!! I tried it out in Discord for a few hours, and the AI usage limits is holding up well. I was about to switch to a different AI because there were usage limits, and I kept hitting it. I realized it was because I didn’t have to upload the images to the Gemini cloud. I just let my program read them directly. And I made it so it takes a screenshot every 2 minutes instead of 20 seconds. Updates AI now takes screenshots every 2 minutes AI Processes screenshot, and depending on the response and prompt, changes the status variable Connected AI to Discord program (Sends new status to bot after analysis) What’s next The AI isn’t the best at differentiating what I’m doing right now, but I’m also not sure how good it is. I need to find a way to stress test it and teach it what screenshots are in what category. This also includes doing better prompt engineering.
Dev log #4 I did some looking into prompt engineering, and I’m realizing it’s tough. Sometimes the AI, mistakes things I’m doing and puts them in the wrong category. Ex, if I had Discord open, and a friend sends me a video, the AI would mark that under doom scrolling, even though I didn’t do it. I’m also trying to keep it simple because sometimes when I tell it something specific, it thinks all cases should be considered the same way. Updates Refined the prompt AI now looks through 3 of the most recent screenshots to determine what I’m doing. Issues The AI still gets what I’m doing wrong sometimes. What’s next Have it just run while I’m using my computer, and check my status every once in a while, and refine my prompt based on what the AI reasoned.
Dev log #5 Testing I didn’t code much but I just ran my program across multiple days, and tweaked the prompt to make the categorizer more accurate. I think I’ve tweaked it to a point where it correctly categorizes daily activities done on a computer, and rarely gives a incorrect status. Updates Added a examples folder to add training data along with a description for each image Added more specific constraints to the prompt like if 3 screenshot are exactly the same, user is idle Fixed the status if statement. Before it checked for the mention of the categories STEM, GAMES, STUDY, DOOM_SCROLLING, and MEETING, in that order. But now it checks the boxed phase for the category. What’s next (UX) Packaging this program up for others to easily run (Data tracking) Track how much time a user spends in a certain category each day because people like to see data.
Dev log #6 Added a interactable system tray icon to launch the status tracker to make the user experience better plus some data tracking. Updates Used pystray to create a system tray icon for windows with menu options(Start, Stop, Quit) Added a txt file with tracking of how long user spends on each activity. At the beginning of every use, the program reads from txt file. What’s next Writing back to the txt file when user quits, adding another menu option to check status data....
|
1793249603.61839
|
1793854403.61839
|
|
53023
|
The Aviator by @MFalcon | Stardance
|
MFalcon
|
0
|
1.08
|
0
|
[]
|
[{"post_id": 73469, "ts": "202 [{"post_id": 73469, "ts": "2026-09-25T05:40:17Z", "hours": 1.0842, "text": "Im trying to figure out the shape of this controller with the buttons in good spots. Some of them turn off the drone so i dont want those to be hit accidentally."}]...
|
Title: The Aviator by @MFalcon | Stardance
Devlog Title: The Aviator by @MFalcon | Stardance
Devlogs:
Im trying to figure out the shape of this controller with the buttons in good spots. Some of them turn off the drone so i dont want those to be hit accidentally....
|
1792734481.505813
|
1793339281.505813
|
|
55400
|
birthday calender by @colyflower | Stardance
|
colyflower
|
0
|
0.59
|
0
|
[]
|
[{"post_id": 73470, "ts": "202 [{"post_id": 73470, "ts": "2026-09-25T06:01:58Z", "hours": 0.5878, "text": "I am working on making the calendar, I picked up the basics of this from W3 schools, they so goated, also y’all so goated, and just tried to figure out the direction this project will go towards, imma go drink some water, bai y’all, and stay hydrated 🌼"}]...
|
Title: birthday calender by @colyflower | Stardanc Title: birthday calender by @colyflower | Stardance
Devlogs:
I am working on making the calendar, I picked up the basics of this from W3 schools, they so goated, also y’all so goated, and just tried to figure out the direction this project will go towards, imma go drink some water, bai y’all, and stay hydrated 🌼...
|
1793162918.1270983
|
1793767718.1270983
|
|
53120
|
Tab Grab by @ImBatman | Stardance
|
ImBatman
|
1
|
20.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-30T02:52:29Z", "hours": 20.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Overall I made a Bookmarking tool, that enhances the features that I always wished bookmarking and tab grouping had, which includes auto organization and easily and quick bookmarking without much user labor. I always wanted to look at tutorials and articles and videos that I always found interesting. But I never really had the attention span to look at them at that moment, and proceed to doomscroll. However, as I kept on adding more and more tabs into my tab space my browser would get messy. Obviously people’s first approach would be to bookmark and group tabs, my biggest problem with bookmarking and grouping tabs were that it required so much more user labor and especially for bookmarking you needed much more labor to organize it into individual folders. So overall made this extension to enhance the easiness of organizing tabs you want to go back to. I like to call it Bookmarking+.This project overall was a great learning experience as it was the first time i ever really used HTML/CSS/JS and other APIs. Overall I was able to make it so that my extension could automatically AI organize(Gemini api key) every single tab sent to your tab dashboard. Overall I am really proud of this because even though it may not seem special I find lots of use in this since it really answers to problems I always dealt with browsing the web. Though my biggest hassle with the project was managing all my ideas. Over this project I had many ideas, but the biggest problem was that I started working on this project so late. There were 2 big ideas that I badly wanted to implement but never found the time to do so. I wanted to add a tab flow chart connection network(similar to notes for obsidian) and a chatbot to help you with things. But overall, this was a great learning experience.and I feel like I made something worth remembering and being proud of!", "repo": "https://github.com/ReallyBADatWritingCode/TabGrab", "demo": "https://github.com/ReallyBADatWritingCode/TabGrab/releases/tag/v1.0.0"}]...
|
[{"post_id": 73479, "ts": "202 [{"post_id": 73479, "ts": "2026-09-25T06:35:01Z", "hours": 13.4164, "text": "Hi its been a long time since i last logged my development! My journey is almost at an end I’m hoping to finish in these the next 2 days but i have overall done plenty. Last time I posted a devlog I finished styling my V1 popup, however lots has changed. In my tab organization/saving extension I wanted to overall make it so that you could either manually send in tabs that you wanted to be saved or it would automatically send it in after a tab had been open for a certain amount of time. After lots of thinking, I didn’t see the use of the automatically sending in since there was a chance that a tab that you wouldn’t want to be closed could be closed and it would overall cause more stress for the user. I still wanted to play with the idea, so I vibecoded a version of this idea into my extension. As expected it didn’t’ seem to provide any use. This feature is still in app, since I feel like its just cool to have in any scenario the user is in, but it is disabled on default. Next the main point of this extension was so I could send in tabs and have it be auto organized by topic or whatever, so that I could always look back at the tabs whenever I wanted to. So I created this menu when a tab is right clicked called Send To Dashboard, sending tabs to the code. However, at that point this extension is no different from bookmarking. I wanted to put an emphasis on organization. However the easiest way to do organize was by domain, which itself wasn’t very organized. The user would refer to the tab they are looking for not by a random url, but by a topic. However, in order to do this you would need an AI to easily guestimate a good topic name for a folder that would be created for the tab to be stored in. So I used an old Gemini model api(free) and created a server.js where I’d create an asynchronous function that all I had to do was import the API and then use the functions of it to give it a prompt(ex. Asking to return a topic based on the tab details, URL, TITLE, etc.) and based off that result it would create a folder based on that name. However, I would need to transmitt these functions throughout files. This caused lots of export errors for me whenever I tried. So what I did was I posted a new POST route(ex. /organize) and then in the corresponding file i needed it in I would fetch that URL and call the async function. However I would constantly need to go into my terminal and individually call the command: node server.js. So I did some research and found a web service hosting platform called render where I could upload my git repo and it would run these API requests I needed!(These requests included, Organizing tabs into folders, Generating a summary for each tab, integrating a chat-bot(will get into later), and an obsidian like flow-chart(will get into later). Though since I am running on Render free, the requests are somewhat slow. Now overall the extension is basically done, it serves its purpose of being bookmarking pro, as it auto organizes your tabs making it easy for you to go back on things you want to look at and isn’t as cramped as normal bookmarking, or grouping tabs, which requires manual labor while this extension automatically organizes your tabs for you. However I felt like this wasn’t enough emphasis on the organization part I felt like I could add more. So obviously I did. So far it has been 2 weeks into this journey to make the extension better as I approach the deadline. My 3 main ideas were to 1) Generate a summary for each tab in a side bar 2) Integrate a chat-bot to make looking for tabs of related topics easier 3) I wanted to make a obsidian like flow-chart that connects tabs with lines based on relevance and color codes relevance. So far I have completely finished summaries for each tabs, the chat-bot works but needs some fine tuning, and gotten the base of the obsidian like flow-chart done, as it connects tabs based on relevance. Overall heavy polish is needed now."}, {"post_id": 52769, "ts": "2026-08-23T03:32:57Z", "hours": 6.8894, "text": "Finished Pop-Up! So basically this past week I have been looking at an extensions tutorial to create gain experience with HTML/CSS/JS and the extension I am planning to make will help store and view old links that you wish to view sooner or later, but just don’t have the time or will to look at it currently. Overall, I struggled with this problem a lot, I was interested in all these things but never had the attention span to look at them, which made me have a lot of tabs open all the time. I always closed the tabs and bookmarked them but it got increasingly messy similar to my tabs. So I was planning on making an extension that could handle all these tabs. It would overall either automatically close these tabs after a period of time or you could manually close them and it would auto sort into another web page with into sub folders related to each topic so you could easily look back at these links and tabs you wanted to look at earlier. It may not be an amazing idea but I think its a great start for where I am at, and so far I have finished the Pop-Up Panel for the extension!"}]...
|
Title: Tab Grab by @ImBatman | Stardance
Devlogs: Title: Tab Grab by @ImBatman | Stardance
Devlogs:
Finished Pop-Up! So basically this past week I have been looking at an extensions tutorial to create gain experience with HTML/CSS/JS and the extension I am planning to make will help store and view old links that you wish to view sooner or later, but just don’t have the time or will to look at it currently. Overall, I struggled with this problem a lot, I was interested in all these things but never had the attention span to look at them, which made me have a lot of tabs open all the time. I always closed the tabs and bookmarked them but it got increasingly messy similar to my tabs. So I was planning on making an extension that could handle all these tabs. It would overall either automatically close these tabs after a period of time or you could manually close them and it would auto sort into another web page with into sub folders related to each topic so you could easily look back at these links and tabs you wanted to look at earlier. It may not be an amazing idea but I think its a great start for where I am at, and so far I have finished the Pop-Up Panel for the extension!
Hi its been a long time since i last logged my development! My journey is almost at an end I’m hoping to finish in these the next 2 days but i have overall done plenty. Last time I posted a devlog I finished styling my V1 popup, however lots has changed. In my tab organization/saving extension I wanted to overall make it so that you could either manually send in tabs that you wanted to be saved or it would automatically send it in after a tab had been open for a certain amount of time. After lots of thinking, I didn’t see the use of the automatically sending in since there was a chance that a tab that you wouldn’t want to be closed could be closed and it would overall cause more stress for the user. I still wanted to play with the idea, so I vibecoded a version of this idea into my extension. As expected it didn’t’ seem to provide any use. This feature is still in app, since I feel like its just cool to have in any scenario the user is in, but it is disabled on default. Next the main point of this extension was so I could send in tabs and have it be auto organized by topic or whatever, so that I could always look back at the tabs whenever I wanted to. So I created this menu when a tab is right clicked called Send To Dashboard, sending tabs to the code. However, at that point this extension is no different from bookmarking. I wanted to put an emphasis on organization. However the easiest way to do organize was by domain, which itself wasn’t very organized. The user would refer to the tab they are looking for not by a random url, but by a topic. However, in order to do this you would need an AI to easily guestimate a good topic name for a folder that would be created for the tab to be stored in. So I used an old Gemini model api(free) and created a server.js where I’d create an asynchronous function that all I had to do was import the API and then use the functions of it to give it a prompt(ex. Asking to return a topic based on the tab details, URL, TITLE, etc.) and based off that result it would create a folder based on that name. However, I would need to transmitt these functions throughout files. This caused lots of export errors for me whenever I tried. So what I did was I posted a new POST route(ex. /organize) and then in the corresponding file i needed it in I would fetch that URL and call the async function. However I would constantly need to go into my terminal and individually call the command: node server.js. So I did some research and found a web service hosting platform called render where I could upload my git repo and it would run these API requests I needed!(These requests included, Organizing tabs into folders, Generating a summary for each tab, integrating a chat-bot(will get into later), and an obsidian like flow-chart(will get into later). Though since I am running on Render free, the requests are somewhat slow. Now overall the extension is basically done, it serves its purpose of being bookmarking pro, as it auto organizes your tabs making it easy for you to go back on things you want to look at and isn’t as cramped as normal bookmarking, or grouping tabs, which requires manual labor while this extension automatically organizes your tabs for you. However I felt like this wasn’t enough emphasis on the organization part I felt like I could add more. So obviously I did. So far it has been 2 weeks into this journey to make the extension better as I approach the deadline. My 3 main ideas were to 1) Generate a summary for each tab in a side bar 2) Integrate a chat-bot to make looking for tabs of related topics easier 3) I wanted to make a obsidian like flow-chart that connects tabs with lines based on relevance and color codes relevance. So far I have completely finished summaries for each tabs, the chat-bot works but needs some fine tuning, and gotten the base of the obsidian like flow-chart done, as it connects tabs based on relevance. Overall heavy polish is needed now.
Ships:
Overall I made a Bookmarking tool, that enhances the features that I always wished bookmarking and tab grouping had, which includes auto organization and easily and quick bookmarking without much user labor. I always wanted to look at tutorials and articles and videos that I always found interesting. But I never really had the attention span to look at them at that moment, and proceed to doomscroll. However, as I kept on adding more and more tabs into my tab space my browser would get messy. Obviously people’s first approach would be to bookmark and group tabs, my biggest problem with bookmarking and grouping tabs were that it required so much more user labor and especially for bookmarking you needed much more labor to organize it into individual folders. So overall made this extension to enhance the easiness of organizing tabs you want to go back to. I like to call it Bookmarking+.This project overall was a great learning experience as it was the first time i ever really used HTML/CSS/JS and other APIs. Overall I was able to make it so that my extension could automatically AI organize(Gemini api key) every single tab sent to your tab dashboard. Overall I am really proud of this because even though it may not seem special I find lots of use in this since it really answers to problems I always dealt with browsing the web. Though my biggest hassle with the project was managing all my ideas. Over this project I had many ideas, but the biggest problem was that I started working on this project so late. There were 2 big ideas that I badly wanted to implement but never found the time to do so. I wanted to add a tab flow chart connection network(similar to notes for obsidian) and a chatbot to help you with things. But overall, this was a great learning experience.and I feel like I made something worth remembering and being proud of!...
|
1793350347.0834336
|
1793436747.0834336
|
|
839
|
ball simulation by @nightlywave | Stardance
|
nightlywave
|
0
|
2.4
|
0
|
[]
|
[{"post_id": 7348, "ts": "2026 [{"post_id": 7348, "ts": "2026-06-12T07:59:58Z", "hours": 1.2242, "text": "Devlog #2: Collisions, Stats, and Damage new features: working collisions health damage ball death stats bar left click while hovering a ball to select a ball; selected balls are highlighted green left click to add balls right click to remove balls i FINALLY got collisions working today, turns out that i had a ‘>’ instead of a ‘<’ for my if statement (but also my math was wrong) ⠀ damage is calculated using: speed / 300 300 was just an arbitrary number, i’ll likely adjust it in the future ⠀ so far the hardest part of this project was relearning physics all over again lol ⠀ next goal: abilities"}, {"post_id": 6552, "ts": "2026-06-11T00:22:28Z", "hours": 1.1806, "text": "Devlog #1: Working prototype i got most of the core physics working today, only problem i came across was getting balls to properly collide against each other. right now they just slide against each other but bouncing against wall is working. goal for tomorrow is to fix ball collisions"}]...
|
Title: ball simulation by @nightlywave | Stardance Title: ball simulation by @nightlywave | Stardance
Devlogs:
Devlog #1: Working prototype i got most of the core physics working today, only problem i came across was getting balls to properly collide against each other. right now they just slide against each other but bouncing against wall is working. goal for tomorrow is to fix ball collisions
Devlog #2: Collisions, Stats, and Damage new features: working collisions health damage ball death stats bar left click while hovering a ball to select a ball; selected balls are highlighted green left click to add balls right click to remove balls i FINALLY got collisions working today, turns out that i had a ‘>’ instead of a ‘<’ for my if statement (but also my math was wrong) ⠀ damage is calculated using: speed / 300 300 was just an arbitrary number, i’ll likely adjust it in the future ⠀ so far the hardest part of this project was relearning physics all over again lol ⠀ next goal: abilities...
|
1793346647.8831146
|
1793951447.8831146
|
|
64356
|
BOYOS by @joboi_east | Stardance
|
joboi_east
|
0
|
1.02
|
0
|
[]
|
[{"post_id": 73480, "ts": "202 [{"post_id": 73480, "ts": "2026-09-25T06:47:52Z", "hours": 1.0156, "text": "This must be higher level of web development. So, i started working on a WebOS. Turns out I will be using HTML again. Interesting. It is kinda hard but that means i am learning. Currently, building the foundation. Then will work on the designs and etc, etc."}]...
|
Title: BOYOS by @joboi_east | Stardance
Devlogs:
Title: BOYOS by @joboi_east | Stardance
Devlogs:
This must be higher level of web development. So, i started working on a WebOS. Turns out I will be using HTML again. Interesting. It is kinda hard but that means i am learning. Currently, building the foundation. Then will work on the designs and etc, etc....
|
1793062366.4109888
|
1793667166.4109888
|
|
65620
|
Pong Game In C by @Axy | Stardance
|
Axy
|
0
|
1.23
|
0
|
[]
|
[{"post_id": 73481, "ts": "202 [{"post_id": 73481, "ts": "2026-09-25T06:53:08Z", "hours": 1.2333, "text": "Hey Everyone , today i created a basic pong game using c and raylib. I had fun creating this too.Had to search find and mess around to get this working.Its not perfect but it is something of mine and im happy to make it"}]...
|
Title: Pong Game In C by @Axy | Stardance
Devlogs Title: Pong Game In C by @Axy | Stardance
Devlogs:
Hey Everyone , today i created a basic pong game using c and raylib. I had fun creating this too.Had to search find and mess around to get this working.Its not perfect but it is something of mine and im happy to make it...
|
1793090874.7710972
|
1793695674.7710972
|
|
61318
|
coolkeeb (driftpad) by @coolcream | Stardance
|
coolcream
|
0
|
3.3
|
0
|
[]
|
[{"post_id": 73486, "ts": "202 [{"post_id": 73486, "ts": "2026-09-25T07:04:10Z", "hours": 0.7136, "text": "Made some tweaks to the case and also added the 3d models"}, {"post_id": 67906, "ts": "2026-09-14T06:31:42Z", "hours": 0.5833, "text": "I remodeled the case with reference to the new pcb i made. Now, i need to add the usb cutout"}, {"post_id": 67420, "ts": "2026-09-13T14:51:47Z", "hours": 0.9667, "text": "I then discovered that the pcb was kinda different than the usual ones. So then, i remade the full pcb!!"}, {"post_id": 67299, "ts": "2026-09-13T11:35:36Z", "hours": 0.3, "text": "There its is, i modified my pcb to have 4 keys, because i wanted 4, but then i accidentally modelled a case for 5 key so why not just update my pcb to have another key!"}, {"post_id": 66569, "ts": "2026-09-12T12:29:46Z", "hours": 0.7336, "text": "Wooo created the pcb and schematic. its all done, just need to finish the case now"}]...
|
Title: coolkeeb (driftpad) by @coolcream | Stardan Title: coolkeeb (driftpad) by @coolcream | Stardance
Devlogs:
Wooo created the pcb and schematic. its all done, just need to finish the case now
There its is, i modified my pcb to have 4 keys, because i wanted 4, but then i accidentally modelled a case for 5 key so why not just update my pcb to have another key!
I then discovered that the pcb was kinda different than the usual ones. So then, i remade the full pcb!!
I remodeled the case with reference to the new pcb i made. Now, i need to add the usb cutout
Made some tweaks to the case and also added the 3d models...
|
1793040540.2699034
|
1793645340.2699034
|
|
183
|
vejas.zip by @vejas | Stardance
|
vejas
|
0
|
10.65
|
0
|
[]
|
[{"post_id": 7349, "ts": "2026 [{"post_id": 7349, "ts": "2026-06-12T08:02:58Z", "hours": 3.4861, "text": "Loads of changes and a new contact form!! Contact Page So, on my previous site, I had a contact form that would send me a message on Slack when somebody filled it out. This time, I was thinking that it would be much easier to just have the messages come as emails straight into my inbox! I used Resend to easily send POST requests that would then send an email to me with the filled out form. I honestly wasn’t able to decide, or think of a cool design so i kinda went for my previous design, and made it more modern looking by using elements like shadcn/ui buttons with lucide icons. I added a link section with links to my socials and where people can find me on the right side of the page, (i’m pretty sure some of the links are still empty lol) and used had a huge headache with the icons. Since I have started using CloudFlare CDN, I wanted to host all the assets over there for caching stuff. This is a good idea, but it kinda didn’t work for svg icons. I would always use lucide icons since they look great, but they don’t have brand icons like discord or slack, which is why I had to find svg icons of those brands. I currently have the icons hardcoded into the page, but I will probably transfer them to the CDN at some point. The rest included a bunch of small UI tweaks and things like that. I have yet to make the About page, the Guestbook and the blog, but I think progress is good! Changelog added simple headings for pages that didn’t have them, added a contact form, that sends emails to me ( a8ccf63 ) fix maybe? ( 9331357 ) more tiny changes ( 861709b ) clumsy me ( 3ee4c63 ) couple quick fixes ( 53c74c6 )"}, {"post_id": 6271, "ts": "2026-06-10T15:17:14Z", "hours": 3.1886, "text": "I build the projects page I used markdown files to keep records of the projects and display them on the page, so each card can look similar but have diff content. I’m making the cards open a popup with a longer description about each project which is located in each respective md file. It was pretty hard to set everything up correctly, but I got it working in the end. I am trying to add a ‘blueprint’ (as in the YSWS) variant to the button element im using from shadcn/ui and lowk failing bcs ive forgotten how to use tailwind custom colour classes. Bugs The description text in the popout card, is stuck in dark mode so the text is still white in light mode as well."}, {"post_id": 5498, "ts": "2026-06-09T09:37:51Z", "hours": 1.2078, "text": "I started work on the website!! So, the first thing I did, was create the navbar, to make life easier in the future. Having already made the entire desing in Figma, is making the process of coding SOOO much easier! I have a clear plan of what I want to implement and how I want things to look, which really helps me. I imported the hero section from the figma and stuck that dead center on the page, which looks pretty good I’d say, the sides are a little plain but I will have stickers that people will be able to drag around. Plan create the section under the hero section design about page design contact page brainstorm and think about projects page host on cloudflare I’d say that was a pretty good hour of work."}, {"post_id": 4520, "ts": "2026-06-07T21:12:36Z", "hours": 2.7708, "text": "Design in Figma Link to figma page I layed the whole thing out (not yet done) on my figma, so that I would have a clear plan for this version. I also learned how to use autolayout and I hope that that will make it easier to layout in the future, when I start coding the site. My design process So this time around, I wanted to polish my site, and give it a nice modern look. This time, I will be using big headings and a nice font, for a nice modern, clean aesthetic, for all my stuff to live on. I am planning to keep the fun aspect with the guestbook, and i will be adding things like stickers on the homepage to make it fun. This is also so that the site looks good to formal ppl and that i can get a job someday. The guestbook I was browsing the interwebs one day, when I came across Ky Decker’s Guestbook which really caught my eye. I have a guestbook in place on my old page but now that I’m redesigning, I thought that making a super nice guestbook would be the way. I’m opting to make a postcard design that I got inspired from Ky.fyi since I feel like the postcards that I have made will really let people express themselves. I also got started by setting up the astro site with installing shadcn/ui so that I could benefit from the rrly nice UI components they provide."}]...
|
Title: vejas.zip by @vejas | Stardance
Devlogs:
D Title: vejas.zip by @vejas | Stardance
Devlogs:
Design in Figma Link to figma page I layed the whole thing out (not yet done) on my figma, so that I would have a clear plan for this version. I also learned how to use autolayout and I hope that that will make it easier to layout in the future, when I start coding the site. My design process So this time around, I wanted to polish my site, and give it a nice modern look. This time, I will be using big headings and a nice font, for a nice modern, clean aesthetic, for all my stuff to live on. I am planning to keep the fun aspect with the guestbook, and i will be adding things like stickers on the homepage to make it fun. This is also so that the site looks good to formal ppl and that i can get a job someday. The guestbook I was browsing the interwebs one day, when I came across Ky Decker’s Guestbook which really caught my eye. I have a guestbook in place on my old page but now that I’m redesigning, I thought that making a super nice guestbook would be the way. I’m opting to make a postcard design that I got inspired from Ky.fyi since I feel like the postcards that I have made will really let people express themselves. I also got started by setting up the astro site with installing shadcn/ui so that I could benefit from the rrly nice UI components they provide.
I started work on the website!! So, the first thing I did, was create the navbar, to make life easier in the future. Having already made the entire desing in Figma, is making the process of coding SOOO much easier! I have a clear plan of what I want to implement and how I want things to look, which really helps me. I imported the hero section from the figma and stuck that dead center on the page, which looks pretty good I’d say, the sides are a little plain but I will have stickers that people will be able to drag around. Plan create the section under the hero section design about page design contact page brainstorm and think about projects page host on cloudflare I’d say that was a pretty good hour of work.
I build the projects page I used markdown files to keep records of the projects and display them on the page, so each card can look similar but have diff content. I’m making the cards open a popup with a longer description about each project which is located in each respective md file. It was pretty hard to set everything up correctly, but I got it working in the end. I am trying to add a ‘blueprint’ (as in the YSWS) variant to the button element im using from shadcn/ui and lowk failing bcs ive forgotten how to use tailwind custom colour classes. Bugs The description text in the popout card, is stuck in dark mode so the text is still white in light mode as well.
Loads of changes and a new contact form!! Contact Page So, on my previous site, I had a contact form that would send me a message on Slack when somebody filled it out. This time, I was thinking that it would be much easier to just have the messages come as emails straight into my inbox! I used Resend to easily send POST requests that would then send an email to me with the filled out form. I honestly wasn’t able to decide, or think of a cool design so i kinda went for my previous design, and made it more modern looking by using elements like shadcn/ui buttons with lucide icons. I added a link section with links to my socials and where people can find me on the right side of the page, (i’m pretty sure some of the links are still empty lol) and used had a huge headache with the icons. Since I have started using CloudFlare CDN, I wanted to host all the assets over there for caching stuff. This is a good idea, but it kinda didn’t work for svg icons. I would always use lucide icons since they look great, but they don’t have brand icons like discord or slack, which is why I had to find svg icons of those brands. I currently have the icons hardcoded into the page, but I will probably transfer them to the CDN at some point. The rest included a bunch of small UI tweaks and things like that. I have yet to make the About page, the Guestbook and the blog, but I think progress is good! Changelog added simple headings for pages that didn’t have them, added a contact form, that sends emails to me ( a8ccf63 ) fix maybe? ( 9331357 ) more tiny changes ( 861709b ) clumsy me ( 3ee4c63 ) couple quick fixes ( 53c74c6 )...
|
1792727707.9573631
|
1793332507.9573631
|
|
65622
|
Flappy Stardance by @tomdeax2 | Stardance
|
tomdeax2
|
0
|
0.34
|
0
|
[]
|
[{"post_id": 73491, "ts": "202 [{"post_id": 73491, "ts": "2026-09-25T07:22:16Z", "hours": 0.3428, "text": "Working On The Backend (And Learning How To Do HTML)"}]...
|
Title: Flappy Stardance by @tomdeax2 | Stardance
Title: Flappy Stardance by @tomdeax2 | Stardance
Devlogs:
Working On The Backend (And Learning How To Do HTML)...
|
1793090876.524566
|
1793695676.524566
|
|
64379
|
My very very personal website by @mian | Stardance
|
mian
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T08:30:52Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "#About I made a personal website that has three sections. There is the About, project, and my food tier list. In the projects, there are links which you can find the project. What did I learn? I learnt how to make a table and list. I used to manually do like <\\p> and then to split it but then i realised i can just do that list thing lol.", "repo": "https://github.com/mianyay/My-personal-website", "demo": "https://mianyay.github.io/My-personal-website/"}]...
|
[{"post_id": 73493, "ts": "202 [{"post_id": 73493, "ts": "2026-09-25T07:25:21Z", "hours": 0.5017, "text": "Added a third section cause i didnt realise we needed 3"}, {"post_id": 73477, "ts": "2026-09-25T06:27:32Z", "hours": 1.9336, "text": "I made a personal site for the mission. It has an about me and a table of projects. I learnt how to make a table using html!"}]...
|
Title: My very very personal website by @mian | St Title: My very very personal website by @mian | Stardance
Devlogs:
I made a personal site for the mission. It has an about me and a table of projects. I learnt how to make a table using html!
Added a third section cause i didnt realise we needed 3
Ships:
#About I made a personal website that has three sections. There is the About, project, and my food tier list. In the projects, there are links which you can find the project. What did I learn? I learnt how to make a table and list. I used to manually do like <\p> and then to split it but then i realised i can just do that list thing lol....
|
1793213577.2802072
|
1793299977.2802072
|
|
57113
|
Blare Phone Locker by @anasluqman089 | Stardance
|
anasluqman089
|
0
|
18.02
|
0
|
[]
|
[{"post_id": 73499, "ts": "202 [{"post_id": 73499, "ts": "2026-09-25T07:45:57Z", "hours": 0.2836, "text": "The staff said to remove the capacitor, enlarge the hinge and edit the size holding the screen so I did that and I edit the file a bit in the repos"}, {"post_id": 68610, "ts": "2026-09-15T12:11:45Z", "hours": 0.2836, "text": "I have finished modelling and the hinge system."}, {"post_id": 67929, "ts": "2026-09-14T07:35:39Z", "hours": 0.8336, "text": "Almost ready for submitting for funding"}, {"post_id": 67182, "ts": "2026-09-13T07:43:57Z", "hours": 0.6336, "text": "I have refined the design a bit but Im still continuing the locking mechanism"}, {"post_id": 66463, "ts": "2026-09-12T09:37:24Z", "hours": 1.8342, "text": "Devlog #7 Hello everyone! One of the staff has given me recommendations to change how the locker lock itself. I will now use hinges and tomorrow I will put a locking mechanism using the servo"}, {"post_id": 65141, "ts": "2026-09-10T02:21:15Z", "hours": 0.3061, "text": "Devlog #6 Hello everyone! Today I want to explain something about the phone section. The lid that is disconnected from the phone locker will be connected to the servo, so the servo can open it and close it. Then, the wire of the servo will go under the support and throught the hole and connected to the PCB. Finally, the phone locker section is connected to the alarm section. This means the alarm section and the phone locker section will be printed together but if the 3D printer printing margins is to small, the alarm section and the locker section will be printed separatedly and be glued by using a 3D pen but it will not looked as good. so that is all from me and also follow along my other projects."}, {"post_id": 62755, "ts": "2026-09-06T08:41:32Z", "hours": 2.325, "text": "Devlog #5 Hello everyone today I continue on building the 3D model. There is a hole for the wire to connect to the servo. The locker is almost ready but I need to add the support for the servo and the lid but there is something bugging me. How should the alarm and the locker be connected? That is all for me see you again~~~~"}, {"post_id": 62027, "ts": "2026-09-05T07:39:30Z", "hours": 3.0128, "text": "DEVLOG #4 Hello everyone today I continued on building the 3D model but I decided to make the 3D model of the alarm and the phone locker separate, It so confusing using OnShape for me but I managed. As you can see below, thats the alarm. It only take 2 AND A HALF HOUR but it look so horrible but I will continue."}, {"post_id": 61500, "ts": "2026-09-04T13:25:17Z", "hours": 2.6578, "text": "Devlog #3 Hello everyone, today I have flipped the connection pin for the display and servo motor so it will be an easier connection. I continued on building the 3D model but it took me 1 HOUR just to understand how 3D modelling work and another 1 HOUR for the first sketch but i I continued but I did my sketch wrong and as you can see the model below it is incomplete but I will continue tomorrow. Finally, I will be using a 500 mah Li-Po battery for the power sources. That is all for today"}, {"post_id": 60790, "ts": "2026-09-03T11:52:26Z", "hours": 0.5389, "text": "Quick Question Should I made it battery powered or usb powered"}, {"post_id": 60269, "ts": "2026-09-02T15:20:00Z", "hours": 3.0767, "text": "Devlog #2 Hello everyone, so I realized I need to change the PCB so I decided to edit it. At first, I edit the old PCB with the new part but it got very messy because THERE ARE TOO MANY TRACES. I NEED TO PUT SO MANY HOLE but then, I realized I can redo it. So I redo it but THERE IS STILL TOO MANY TRACESSSSS . It was tiring but the new PCB have a vertical pin for the servo. Then I continue with CAD and it was very confusing, I keep rotating SO MUCH . Tomorrow I can’t continue because I’m going to vacation but my STREAKKK gonna enddd . So that’s all for today and give me your advice"}, {"post_id": 60123, "ts": "2026-09-02T09:19:26Z", "hours": 2.2319, "text": "Devlog 1 : First time using the software so it took me 2 hours just to do the basic thing but I will continue"}]...
|
Title: Blare Phone Locker by @anasluqman089 | Star Title: Blare Phone Locker by @anasluqman089 | Stardance
Devlogs:
Devlog 1 : First time using the software so it took me 2 hours just to do the basic thing but I will continue
Devlog #2 Hello everyone, so I realized I need to change the PCB so I decided to edit it. At first, I edit the old PCB with the new part but it got very messy because THERE ARE TOO MANY TRACES. I NEED TO PUT SO MANY HOLE but then, I realized I can redo it. So I redo it but THERE IS STILL TOO MANY TRACESSSSS . It was tiring but the new PCB have a vertical pin for the servo. Then I continue with CAD and it was very confusing, I keep rotating SO MUCH . Tomorrow I can’t continue because I’m going to vacation but my STREAKKK gonna enddd . So that’s all for today and give me your advice
Quick Question Should I made it battery powered or usb powered
Devlog #3 Hello everyone, today I have flipped the connection pin for the display and servo motor so it will be an easier connection. I continued on building the 3D model but it took me 1 HOUR just to understand how 3D modelling work and another 1 HOUR for the first sketch but i I continued but I did my sketch wrong and as you can see the model below it is incomplete but I will continue tomorrow. Finally, I will be using a 500 mah Li-Po battery for the power sources. That is all for today
DEVLOG #4 Hello everyone today I continued on building the 3D model but I decided to make the 3D model of the alarm and the phone locker separate, It so confusing using OnShape for me but I managed. As you can see below, thats the alarm. It only take 2 AND A HALF HOUR but it look so horrible but I will continue.
Devlog #5 Hello everyone today I continue on building the 3D model. There is a hole for the wire to connect to the servo. The locker is almost ready but I need to add the support for the servo and the lid but there is something bugging me. How should the alarm and the locker be connected? That is all for me see you again~~~~
Devlog #6 Hello everyone! Today I want to explain something about the phone section. The lid that is disconnected from the phone locker will be connected to the servo, so the servo can open it and close it. Then, the wire of the servo will go under the support and throught the hole and connected to the PCB. Finally, the phone locker section is connected to the alarm section. This means the alarm section and the phone locker section will be printed together but if the 3D printer printing margins is to small, the alarm section and the locker section will be printed separatedly and be glued by using a 3D pen but it will not looked as good. so that is all from me and also follow along my other projects.
Devlog #7 Hello everyone! One of the staff has given me recommendations to change how the locker lock itself. I will now use hinges and tomorrow I will put a locking mechanism using the servo
I have refined the design a bit but Im still continuing the locking mechanism
Almost ready for submitting for funding
I have finished modelling and the hinge system.
The staff said to remove the capacitor, enlarge the hinge and edit the size holding the screen so I did that and I edit the file a bit in the repos...
|
1792691659.083976
|
1793296459.083976
|