|
651
|
My awesome macropad! by @Hugo | Stardance
|
Hugo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Hugo | Stardance
|
1792496911.7440174
|
1793101711.7440174
|
|
652
|
Untitled by @Hugo | Stardance
|
Hugo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Hugo | Stardance
|
1792770566.9159439
|
1793375366.9159439
|
|
653
|
My first slack bot! by @IamVithun | Stardance
|
IamVithun
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @IamVithun | Stardan Title: My first slack bot! by @IamVithun | Stardance...
|
1792648220.490016
|
1793253020.490016
|
|
654
|
My awesome macropad! by @theskibmarshy | Stardance
|
theskibmarshy
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @theskibmarshy | St Title: My awesome macropad! by @theskibmarshy | Stardance...
|
1792529496.0835721
|
1793134296.0835721
|
|
655
|
My first slack bot! by @parth | Stardance
|
parth
|
0
|
9.82
|
0
|
[]
|
[{"post_id": 1642, "ts": "2026 [{"post_id": 1642, "ts": "2026-06-03T19:27:13Z", "hours": 9.8189, "text": "hi"}]...
|
Title: My first slack bot! by @parth | Stardance
Title: My first slack bot! by @parth | Stardance
Devlogs:
hi...
|
1792777915.6835077
|
1793382715.6835077
|
|
656
|
My first slack bot! by @George | Stardance
|
George
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @George | Stardance
|
1792734864.139022
|
1793339664.139022
|
|
657
|
My awesome macropad! by @QubXio | Stardance
|
QubXio
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @QubXio | Stardance
|
1792723754.7007992
|
1793328554.7007992
|
|
658
|
Untitled Algorithm by @Da_BFBM_show | Stardance
|
Da_BFBM_show
|
0
|
0.95
|
0
|
[]
|
[{"post_id": 5250, "ts": "2026 [{"post_id": 5250, "ts": "2026-06-08T23:15:58Z", "hours": 0.3919, "text": "Everything’s breaking before me. I need to take a break ;_;"}, {"post_id": 264, "ts": "2026-06-01T13:53:42Z", "hours": 0.5597, "text": "Finished a bit of the onboarding process. Sure, there’s actually no functionality, but that’s for later."}]...
|
Title: Untitled Algorithm by @Da_BFBM_show | Stard Title: Untitled Algorithm by @Da_BFBM_show | Stardance
Devlogs:
Finished a bit of the onboarding process. Sure, there’s actually no functionality, but that’s for later.
Everything’s breaking before me. I need to take a break ;_;...
|
1792536617.5398645
|
1793141417.5398645
|
|
659
|
FolderHarbor SDK by @Nova | Stardance
|
Nova
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: FolderHarbor SDK by @Nova | Stardance
|
1792910950.4613829
|
1793774950.4613829
|
|
660
|
Calc college by @QubXio | Stardance
|
QubXio
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Calc college by @QubXio | Stardance
|
1792619669.3940918
|
1793224469.3940918
|
|
661
|
Unbounded: Demo by @TheDiamondAce | Stardance
|
TheDiamondAce
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Unbounded: Demo by @TheDiamondAce | Stardan Title: Unbounded: Demo by @TheDiamondAce | Stardance...
|
1792803242.9660194
|
1793408042.9660194
|
|
662
|
Network Suite by @Argentrhino | Stardance
|
Argentrhino
|
2
|
6.0
|
16
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-06T00:49:24Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a terminal‑based network monitoring tool built with Python and Textual. It scans the local network, shows active devices, logs online/offline events, and provides commands like /ping, /scan, and /log for deeper inspection. The challenging parts were getting async tasks to run without freezing the UI and making the status bar behave correctly while multiple workers update it. I am proud of how the project behaves correctly across the different platforms, running through the binary EXE and the downloaded source code. If running the EXE, logs are stored in: %APPDATA%\\NetworkSuite\\history.json If running from source, logs are stored in: ./data/history.json Before running the project from source, you must install the dependencies: pip install -r dependencies.txt Then you can run: python tui.py The app requires Python 3.10+ if running from source. Please look at README.md for more details on the different commands and their functions.", "repo": "https://github.com/Argentrhino/network-suite", "demo": "https://github.com/Argentrhino/network-suite/blob/main/Network%20Suite.exe"}, {"ship_num": 2, "ts": "2026-06-01T08:37:34Z", "hours": 2.0, "multiplier": 7.23, "payout": 16, "blessing": "neutral", "text": "I built a terminal‑based network scanner that lists the devices connected to your LAN using ARP, mDNS, vendor lookup, hostname resolution, ping stats, and multi‑mode port scanning. The hardest part was getting all the networking features to run smoothly without freezing the UI with all the components in the code. I’m proud that it feels like a real tool because it is fast and functions well. To test it, just install Python, run pip install -r dependencies.txt, then start it with python tui.py and try commands like /scan or /ping.", "repo": "https://github.com/Argentrhino/network-suite", "demo": "https://github.com/Argentrhino/network-suite/blob/main/Network%20Suite.exe"}]...
|
[{"post_id": 23185, "ts": "202 [{"post_id": 23185, "ts": "2026-07-06T00:33:27Z", "hours": 1.4156, "text": "Added a logging feature so that it now logs to a history.json in appdata for the exe, and it logs to history.json in the repository folder if the source code is downloaded and run."}, {"post_id": 1971, "ts": "2026-06-04T07:10:19Z", "hours": 1.2478, "text": "I added a customisable auto-refresh interval and made the status bar show a corresponding message. I also updated the readme. As I am not very familiar with git, I used an incorrect command at some point and broke my project when syncing. Then restored it back to a known good point and implemented that update again."}, {"post_id": 749, "ts": "2026-06-02T11:46:06Z", "hours": 1.2697, "text": "Cross-platform support! MacOS and Linux support is now live. I added OS detection to the scanner so it switches seamlessly between Windows, macOS and Linux. The hardest part was handling the OS differences as they each use different commands and formatting. After a couple rounds of debugging, I have verified that the utility works on macOS in addition to Windows, but Linux still needs proper testing."}, {"post_id": 227, "ts": "2026-06-01T10:36:57Z", "hours": 0.275, "text": "Compiled an EXE of the code as is, published on my repository. Much easier than downloading the python files to set up - just download the EXE and open!"}, {"post_id": 206, "ts": "2026-06-01T08:23:56Z", "hours": 0.4939, "text": "Added a detailed README which will include setup for the packaged exe version when I release it."}, {"post_id": 194, "ts": "2026-06-01T07:05:37Z", "hours": 1.8508, "text": "Changed from IMCP ping sweep to arp first hybrid scanning and added TCP and UDP port databases to show port names/functions when scanning. I couldn’t stand the way the UI blocked when it was scanning. I thought it was caused by the scan being too slow so I changed to parallel scanning. After an hour of wrestling with the code and many errors later it still didn’t work as I thought it was fixed by getting the scan done faster. Then found out that I had to put scanning in a background thread and this finally allowed the UI to be responsive during scanning."}]...
|
Title: Network Suite by @Argentrhino | Stardance
Title: Network Suite by @Argentrhino | Stardance
Devlogs:
Changed from IMCP ping sweep to arp first hybrid scanning and added TCP and UDP port databases to show port names/functions when scanning. I couldn’t stand the way the UI blocked when it was scanning. I thought it was caused by the scan being too slow so I changed to parallel scanning. After an hour of wrestling with the code and many errors later it still didn’t work as I thought it was fixed by getting the scan done faster. Then found out that I had to put scanning in a background thread and this finally allowed the UI to be responsive during scanning.
Added a detailed README which will include setup for the packaged exe version when I release it.
Compiled an EXE of the code as is, published on my repository. Much easier than downloading the python files to set up - just download the EXE and open!
Cross-platform support! MacOS and Linux support is now live. I added OS detection to the scanner so it switches seamlessly between Windows, macOS and Linux. The hardest part was handling the OS differences as they each use different commands and formatting. After a couple rounds of debugging, I have verified that the utility works on macOS in addition to Windows, but Linux still needs proper testing.
I added a customisable auto-refresh interval and made the status bar show a corresponding message. I also updated the readme. As I am not very familiar with git, I used an incorrect command at some point and broke my project when syncing. Then restored it back to a known good point and implemented that update again.
Added a logging feature so that it now logs to a history.json in appdata for the exe, and it logs to history.json in the repository folder if the source code is downloaded and run.
Ships:
I built a terminal‑based network scanner that lists the devices connected to your LAN using ARP, mDNS, vendor lookup, hostname resolution, ping stats, and multi‑mode port scanning. The hardest part was getting all the networking features to run smoothly without freezing the UI with all the components in the code. I’m proud that it feels like a real tool because it is fast and functions well. To test it, just install Python, run pip install -r dependencies.txt, then start it with python tui.py and try commands like /scan or /ping.
I made a terminal‑based network monitoring tool built with Python and Textual. It scans the local network, shows active devices, logs online/offline events, and provides commands like /ping, /scan, and /log for deeper inspection. The challenging parts were getting async tasks to run without freezing the UI and making the status bar behave correctly while multiple workers update it. I am proud of how the project behaves correctly across the different platforms, running through the binary EXE and the downloaded source code. If running the EXE, logs are stored in: %APPDATA%\NetworkSuite\history.json If running from source, logs are stored in: ./data/history.json Before running the project from source, you must install the dependencies: pip install -r dependencies.txt Then you can run: python tui.py The app requires Python 3.10+ if running from source. Please look at README.md for more details on the different commands and their functions....
|
1792849744.1570477
|
1792936144.1570477
|
|
663
|
Untitled project by @haashini | Stardance
|
haashini
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @haashini | Stardance
|
1792590877.4376757
|
1793195677.4376757
|
|
664
|
My first slack bot! by @TheSeagullDev | Stardance
|
TheSeagullDev
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @TheSeagullDev | Sta Title: My first slack bot! by @TheSeagullDev | Stardance...
|
1792572776.3744988
|
1793177576.3744988
|
|
665
|
My awesome macropad! by @rowan | Stardance
|
rowan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @rowan | Stardance
|
1792749078.04439
|
1793353878.04439
|
|
666
|
Untitled by @Rohan | Stardance
|
Rohan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Rohan | Stardance
|
1792536724.4719803
|
1793141524.4719803
|
|
667
|
Untitled by @Rohan | Stardance
|
Rohan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Rohan | Stardance
|
1792684333.3833148
|
1793289133.3833148
|
|
668
|
My first slack bot! by @olive_test1 | Stardance
|
olive_test1
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @olive_test1 | Stard Title: My first slack bot! by @olive_test1 | Stardance...
|
1792788808.6466632
|
1793393608.6466632
|
|
669
|
Untitled by @Hugo | Stardance
|
Hugo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Hugo | Stardance
|
1792551133.0014641
|
1793155933.0014641
|
|
670
|
Untitled by @Naytik | Stardance
|
Naytik
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Naytik | Stardance
|
1792615901.2216759
|
1793220701.2216759
|
|
671
|
Mad Scientist by @Angle_Mad | Stardance
|
Angle_Mad
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Mad Scientist by @Angle_Mad | Stardance
|
1792741888.5480573
|
1793346688.5480573
|
|
672
|
Untitled project by @shrivi | Stardance
|
shrivi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @shrivi | Stardance
|
1792601589.6225226
|
1793206389.6225226
|
|
673
|
Untitled by @TheSeagullDev | Stardance
|
TheSeagullDev
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @TheSeagullDev | Stardance
|
1792601595.4892623
|
1793206395.4892623
|
|
674
|
Caldera by @1 | Stardance
|
1
|
0
|
30.0
|
0
|
[]
|
[{"post_id": 56138, "ts": "202 [{"post_id": 56138, "ts": "2026-05-08T00:00:00Z", "hours": 2.0, "text": "I spent this session polishing the design. This includes assembling everything in cad, thinking about a real life assembly process, and making a couple renders of the project. Here you can see how the entire design comes together. The filament path is like this: Heatbreak -> Supervolcano adapter -> Nozzle. Overall really simple. You can also see how close together everything else is in this view, which includes the heater, thermistor, and filament path. You can also see how efficient the heatbreak mounting is. yay!"}, {"post_id": 46151, "ts": "2026-05-08T00:00:00Z", "hours": 2.0, "text": "I spent this session polishing the design. This includes assembling everything in cad, thinking about a real life assembly process, and making a couple renders of the project. Here you can see how the entire design comes together. The filament path is like this: Heatbreak -> Supervolcano adapter -> Nozzle. Overall really simple. You can also see how close together everything else is in this view, which includes the heater, thermistor, and filament path. You can also see how efficient the heatbreak mounting is. yay!"}, {"post_id": 56137, "ts": "2026-05-07T00:00:00Z", "hours": 4.0, "text": "I started this project thinking that I would make the hotend air cooled. I realized pretty quickly that that wouldnt work very well for a number of reasons. If the filament path was centered in the heatsink, then there wouldnt be much of an issue with turning a decent heatsink. But since the filament path is not centered, turning it would be literally impossible. You can see here how difficult it would be to turn that. I ended up switching to a new idea. Conduction! why have heatsink fins when you can have a big block of metal for a toolhead. ok very cool! You can see the big block here ^^ The way the heatsink is mounted is pretty interesting IMO. I am using two SLM Titanium arms to connect the heatsink to the block. Since titanium has fairly low heat conductivity, its pretty perfect for this. The geometry also helps a lot with stopping excess heat from going into the block. You can see how everything connects together with m2 screws here. I designed in some interesting geometry on the connector itself to try to minimise contact area between the block and the connector. it kinda looks like a castle. Im using a standard v6 heatbreak in this hotend. It has a smooth side and a threaded side, which lets me use my fancy mounting style accurately. yay! Total time spent: 4 hours"}, {"post_id": 46150, "ts": "2026-05-07T00:00:00Z", "hours": 4.0, "text": "I started this project thinking that I would make the hotend air cooled. I realized pretty quickly that that wouldnt work very well for a number of reasons. If the filament path was centered in the heatsink, then there wouldnt be much of an issue with turning a decent heatsink. But since the filament path is not centered, turning it would be literally impossible. You can see here how difficult it would be to turn that. I ended up switching to a new idea. Conduction! why have heatsink fins when you can have a big block of metal for a toolhead. ok very cool! You can see the big block here ^^ The way the heatsink is mounted is pretty interesting IMO. I am using two SLM Titanium arms to connect the heatsink to the block. Since titanium has fairly low heat conductivity, its pretty perfect for this. The geometry also helps a lot with stopping excess heat from going into the block. You can see how everything connects together with m2 screws here. I designed in some interesting geometry on the connector itself to try to minimise contact area between the block and the connector. it kinda looks like a castle. Im using a standard v6 heatbreak in this hotend. It has a smooth side and a threaded side, which lets me use my fancy mounting style accurately. yay! Total time spent: 4 hours"}, {"post_id": 46148, "ts": "2026-05-06T00:00:00Z", "hours": 3.0, "text": "Hotend design!! this is my second shot at making a decent hotend. My goals for this are to have a large melt zone, nice heater, filament path, and thermistor packaging, while keeping it small and lightweight. I was inspired by hotends like v9 ( https://www.v9hotend.com/ ), tricorn ( http://tricornhotend.com/ ) and Turtle’s double barrel hotend he made for #rework ( https://github.com/ProgrammerTurtle/DoubleBarrel ). These all have CNC’d heater blocks and heatsinks. My idea for this hotend is to use a supervolcano heater cartridge (likely a high wattage one from Lukes Lab), in combonation with a very light weight and compact block to have as little temperature gradient between the heater and the thermistor as possible. You can see that idea here in Turtle’s hotend. The heaters are extremely close to the filament path and nozzle, which means that they dont waste energy heating the rest of the block. The walls are also very thin, which means that less heat is lost into the block. Another advantage of this is that the thermistor is able to read a very accurate temperature at the nozzle. The further the thermistor is from the heater the larger the difference will be. Total time spent: 3 hours"}, {"post_id": 56136, "ts": "2026-05-06T00:00:00Z", "hours": 6.0, "text": "There are multiple things I needed to balance in the block design for this hotend. Performance: this is pretty self explanitory. I want big meltzone so lots of plastic can be pushed out. Manufacturability (is that a word?): Even though I am not the one who is milling this part, I dont want the JLCCNC worker machining this to have a hard time. Also other people might want to machine it themselves. Cost: Keep the machining simple so cost is low Weight: I had to keep all the parts as light as possible. This is going to be moving at high speeds, so the less weight the better the rigidity will be. Low rigidity leads to crap print quality. The design is fairly simple. I started with a couple circles to give holes for the heater bore, meltzone, and thermisor to sit. I origonally planned to use an M3 pt1000 thermistor, but was told that a cartridge thermistor would have better thermal control. I basically just extruded that upwards enough to fit the threaded part of a heatbreak, a supervolcano nozzle adapter (more on that in a sec), and a nozzle. I also added a section at the top for heatbreak stuff. I added features to allow the pt1000 and heater to fit in, and cleaned up the cad a bit. Here you can see something close to the final heater block design. I added holes for grubscrews to clamp the heater as well as mounting holes for the heatsink mounts. About the supervolcano adapter. JLC does not like drilling 2mm holes 51mm long. So instead ill be using an m6 tap all the way through the part to create a 2mm hole. nice! and its cheap too. This also gives me a really nice mating surface for the nozzle so overall really helpful. Total time spent: 6 hours"}, {"post_id": 56135, "ts": "2026-05-06T00:00:00Z", "hours": 3.0, "text": "Hotend design!! this is my second shot at making a decent hotend. My goals for this are to have a large melt zone, nice heater, filament path, and thermistor packaging, while keeping it small and lightweight. I was inspired by hotends like v9 ( https://www.v9hotend.com/ ), tricorn ( http://tricornhotend.com/ ) and Turtle’s double barrel hotend he made for #rework ( https://github.com/ProgrammerTurtle/DoubleBarrel ). These all have CNC’d heater blocks and heatsinks. My idea for this hotend is to use a supervolcano heater cartridge (likely a high wattage one from Lukes Lab), in combonation with a very light weight and compact block to have as little temperature gradient between the heater and the thermistor as possible. You can see that idea here in Turtle’s hotend. The heaters are extremely close to the filament path and nozzle, which means that they dont waste energy heating the rest of the block. The walls are also very thin, which means that less heat is lost into the block. Another advantage of this is that the thermistor is able to read a very accurate temperature at the nozzle. The further the thermistor is from the heater the larger the difference will be. Total time spent: 3 hours"}, {"post_id": 46149, "ts": "2026-05-06T00:00:00Z", "hours": 6.0, "text": "There are multiple things I needed to balance in the block design for this hotend. Performance: this is pretty self explanitory. I want big meltzone so lots of plastic can be pushed out. Manufacturability (is that a word?): Even though I am not the one who is milling this part, I dont want the JLCCNC worker machining this to have a hard time. Also other people might want to machine it themselves. Cost: Keep the machining simple so cost is low Weight: I had to keep all the parts as light as possible. This is going to be moving at high speeds, so the less weight the better the rigidity will be. Low rigidity leads to crap print quality. The design is fairly simple. I started with a couple circles to give holes for the heater bore, meltzone, and thermisor to sit. I origonally planned to use an M3 pt1000 thermistor, but was told that a cartridge thermistor would have better thermal control. I basically just extruded that upwards enough to fit the threaded part of a heatbreak, a supervolcano nozzle adapter (more on that in a sec), and a nozzle. I also added a section at the top for heatbreak stuff. I added features to allow the pt1000 and heater to fit in, and cleaned up the cad a bit. Here you can see something close to the final heater block design. I added holes for grubscrews to clamp the heater as well as mounting holes for the heatsink mounts. About the supervolcano adapter. JLC does not like drilling 2mm holes 51mm long. So instead ill be using an m6 tap all the way through the part to create a 2mm hole. nice! and its cheap too. This also gives me a really nice mating surface for the nozzle so overall really helpful. Total time spent: 6 hours"}]...
|
Title: Caldera by @1 | Stardance
Devlogs:
There a Title: Caldera by @1 | Stardance
Devlogs:
There are multiple things I needed to balance in the block design for this hotend. Performance: this is pretty self explanitory. I want big meltzone so lots of plastic can be pushed out. Manufacturability (is that a word?): Even though I am not the one who is milling this part, I dont want the JLCCNC worker machining this to have a hard time. Also other people might want to machine it themselves. Cost: Keep the machining simple so cost is low Weight: I had to keep all the parts as light as possible. This is going to be moving at high speeds, so the less weight the better the rigidity will be. Low rigidity leads to crap print quality. The design is fairly simple. I started with a couple circles to give holes for the heater bore, meltzone, and thermisor to sit. I origonally planned to use an M3 pt1000 thermistor, but was told that a cartridge thermistor would have better thermal control. I basically just extruded that upwards enough to fit the threaded part of a heatbreak, a supervolcano nozzle adapter (more on that in a sec), and a nozzle. I also added a section at the top for heatbreak stuff. I added features to allow the pt1000 and heater to fit in, and cleaned up the cad a bit. Here you can see something close to the final heater block design. I added holes for grubscrews to clamp the heater as well as mounting holes for the heatsink mounts. About the supervolcano adapter. JLC does not like drilling 2mm holes 51mm long. So instead ill be using an m6 tap all the way through the part to create a 2mm hole. nice! and its cheap too. This also gives me a really nice mating surface for the nozzle so overall really helpful. Total time spent: 6 hours
Hotend design!! this is my second shot at making a decent hotend. My goals for this are to have a large melt zone, nice heater, filament path, and thermistor packaging, while keeping it small and lightweight. I was inspired by hotends like v9 ( https://www.v9hotend.com/ ), tricorn ( http://tricornhotend.com/ ) and Turtle’s double barrel hotend he made for #rework ( https://github.com/ProgrammerTurtle/DoubleBarrel ). These all have CNC’d heater blocks and heatsinks. My idea for this hotend is to use a supervolcano heater cartridge (likely a high wattage one from Lukes Lab), in combonation with a very light weight and compact block to have as little temperature gradient between the heater and the thermistor as possible. You can see that idea here in Turtle’s hotend. The heaters are extremely close to the filament path and nozzle, which means that they dont waste energy heating the rest of the block. The walls are also very thin, which means that less heat is lost into the block. Another advantage of this is that the thermistor is able to read a very accurate temperature at the nozzle. The further the thermistor is from the heater the larger the difference will be. Total time spent: 3 hours
There are multiple things I needed to balance in the block design for this hotend. Performance: this is pretty self explanitory. I want big meltzone so lots of plastic can be pushed out. Manufacturability (is that a word?): Even though I am not the one who is milling this part, I dont want the JLCCNC worker machining this to have a hard time. Also other people might want to machine it themselves. Cost: Keep the machining simple so cost is low Weight: I had to keep all the parts as light as possible. This is going to be moving at high speeds, so the less weight the better the rigidity will be. Low rigidity leads to crap print quality. The design is fairly simple. I started with a couple circles to give holes for the heater bore, meltzone, and thermisor to sit. I origonally planned to use an M3 pt1000 thermistor, but was told that a cartridge thermistor would have better thermal control. I basically just extruded that upwards enough to fit the threaded part of a heatbreak, a supervolcano nozzle adapter (more on that in a sec), and a nozzle. I also added a section at the top for heatbreak stuff. I added features to allow the pt1000 and heater to fit in, and cleaned up the cad a bit. Here you can see something close to the final heater block design. I added holes for grubscrews to clamp the heater as well as mounting holes for the heatsink mounts. About the supervolcano adapter. JLC does not like drilling 2mm holes 51mm long. So instead ill be using an m6 tap all the way through the part to create a 2mm hole. nice! and its cheap too. This also gives me a really nice mating surface for the nozzle so overall really helpful. Total time spent: 6 hours
Hotend design!! this is my second shot at making a decent hotend. My goals for this are to have a large melt zone, nice heater, filament path, and thermistor packaging, while keeping it small and lightweight. I was inspired by hotends like v9 ( https://www.v9hotend.com/ ), tricorn ( http://tricornhotend.com/ ) and Turtle’s double barrel hotend he made for #rework ( https://github.com/ProgrammerTurtle/DoubleBarrel ). These all have CNC’d heater blocks and heatsinks. My idea for this hotend is to use a supervolcano heater cartridge (likely a high wattage one from Lukes Lab), in combonation with a very light weight and compact block to have as little temperature gradient between the heater and the thermistor as possible. You can see that idea here in Turtle’s hotend. The heaters are extremely close to the filament path and nozzle, which means that they dont waste energy heating the rest of the block. The walls are also very thin, which means that less heat is lost into the block. Another advantage of this is that the thermistor is able to read a very accurate temperature at the nozzle. The further the thermistor is from the heater the larger the difference will be. Total time spent: 3 hours
I started this project thinking that I would make the hotend air cooled. I realized pretty quickly that that wouldnt work very well for a number of reasons. If the filament path was centered in the heatsink, then there wouldnt be much of an issue with turning a decent heatsink. But since the filament path is not centered, turning it would be literally impossible. You can see here how difficult it would be to turn that. I ended up switching to a new idea. Conduction! why have heatsink fins when you can have a big block of metal for a toolhead. ok very cool! You can see the big block here ^^ The way the heatsink is mounted is pretty interesting IMO. I am using two SLM Titanium arms to connect the heatsink to the block. Since titanium has fairly low heat conductivity, its pretty perfect for this. The geometry also helps a lot with stopping excess heat from going into the block. You can see how everything connects together with m2 screws here. I designed in some interesting geometry on the connector itself to try to minimise contact area between the block and the connector. it kinda looks like a castle. Im using a standard v6 heatbreak in this hotend. It has a smooth side and a threaded side, which lets me use my fancy mounting style accurately. yay! Total time spent: 4 hours
I started this project thinking that I would make the hotend air cooled. I realized pretty quickly that that wouldnt work very well for a number of reasons. If the filament path was centered in the heatsink, then there wouldnt be much of an issue with turning a decent heatsink. But since the filament path is not centered, turning it would be literally impossible. You can see here how difficult it would be to turn that. I ended up switching to a new idea. Conduction! why have heatsink fins when you can have a big block of metal for a toolhead. ok very cool! You can see the big block here ^^ The way the heatsink is mounted is pretty interesting IMO. I am using two SLM Titanium arms to connect the heatsink to the block. Since titanium has fairly low heat conductivity, its pretty perfect for this. The geometry also helps a lot with stopping excess heat from going into the block. You can see how everything connects together with m2 screws here. I designed in some interesting geometry on the connector itself to try to minimise contact area between the block and the connector. it kinda looks like a castle. Im using a standard v6 heatbreak in this hotend. It has a smooth side and a threaded side, which lets me use my fancy mounting style accurately. yay! Total time spent: 4 hours
I spent this session polishing the design. This includes assembling everything in cad, thinking about a real life assembly process, and making a couple renders of the project. Here you can see how the entire design comes together. The filament path is like this: Heatbreak -> Supervolcano adapter -> Nozzle. Overall really simple. You can also see how close together everything else is in this view, which includes the heater, thermistor, and filament path. You can also see how efficient the heatbreak mounting is. yay!
I spent this session polishing the design. This includes assembling everything in cad, thinking about a real life assembly process, and making a couple renders of the project. Here you can see how the entire design comes together. The filament path is like this: Heatbreak -> Supervolcano adapter -> Nozzle. Overall really simple. You can also see how close together everything else is in this view, which includes the heater, thermistor, and filament path. You can also see how efficient the heatbreak mounting is. yay!...
|
1792612532.1178505
|
1793217332.1178505
|
|
675
|
Untitled project by @cognitivity | Stardance
|
cognitivity
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @cognitivity | Stardanc Title: Untitled project by @cognitivity | Stardance...
|
1792558202.9571362
|
1793163002.9571362
|
|
676
|
My first slack bot! by @michaelr | Stardance
|
michaelr
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @michaelr | Stardanc Title: My first slack bot! by @michaelr | Stardance...
|
1792698716.1272712
|
1793303516.1272712
|
|
677
|
My first slack bot! by @olive_test2 | Stardance
|
olive_test2
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @olive_test2 | Stard Title: My first slack bot! by @olive_test2 | Stardance...
|
1792608833.0275083
|
1793213633.0275083
|
|
678
|
Quacky by @linus | Stardance
|
linus
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Quacky by @linus | Stardance
|
1792500632.1289537
|
1793105432.1289537
|
|
679
|
oral-b Library by @brian | Stardance
|
brian
|
1
|
22.0
|
399
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-14T03:43:08Z", "hours": 22.0, "multiplier": 18.43, "payout": 399, "blessing": "neutral", "text": "I built a Node.js library for bidirectional Bluetooth communication with Oral-B smart toothbrushes, without needing the app! The most challenging part was definitely reverse engineering the Bluetooth characteristic logic in the Oral-B Android app using jadx. Since testing out this project may be difficult for obvious reasons (not too many people have an overpriced smart toothbrush xD), the demo link will bring you to a sample demo video of how it works!", "repo": "https://github.com/brianwalczak/oral-b", "demo": "https://github.com/brianwalczak/oral-b/releases/tag/v0.1.0"}]...
|
[{"post_id": 46678, "ts": "202 [{"post_id": 46678, "ts": "2026-08-14T03:40:12Z", "hours": 0.5619, "text": "I made a quick demonstration video and added some example scripts to the project!"}, {"post_id": 45767, "ts": "2026-08-12T13:53:31Z", "hours": 1.6933, "text": "I spent some time cleaning up the package.json and implementing some bug fixes like adding reads and subscriptions to a queue (since before it would send them at the same time and crash the brush occasionally). Some newer brushes also require an “unlock code” to use the Bluetooth API, so I implemented that too! The first version is now live on npm.js!"}, {"post_id": 44277, "ts": "2026-08-09T22:30:20Z", "hours": 3.8067, "text": "I’ve finally finished working on the documentation! I also added a commands table in the README.md which lists all of the current commands and a link to their designated Markdown page. I’m preparing to publish it to npm.js now!"}, {"post_id": 43100, "ts": "2026-08-08T05:44:03Z", "hours": 1.8494, "text": "I finished adding some more commands: deviceState which tells you what “state” the brush is in (running, idle, charging, etc), buttonState which allows you to subscribe to button events and notifies you when the power or mode button was pressed, and brushingTime which allows you to view the live stopwatch as you brush your teeth. I built a simple demo script to give you all a visual example of how these can be used!"}, {"post_id": 38363, "ts": "2026-07-31T18:24:38Z", "hours": 7.2906, "text": "Been a while! Most of this 7 hours was spent digging through the source code of the Oral-B codebase again, but I finished implementing a Bluetooth command transport layer and added a command handler for easy additions. I also implemented protocol versioning, which each brush specifies in its manufacturer data so the host knows what commands/values are available for the brush. In most cases, the newer the brush model (especially in the iO series of brushes), the higher the protocol, resulting in more available commands / data values to read from. I’ve also added the first incoming command: batteryLevel ! This method requests battery data from the brush, and depending on the protocol version of your brush, you’ll be able to view info like the battery percentage, estimated runtime, and even the technical specifications of the battery (like voltage, current, temperature, etc). From here on, all I’ll be doing is adding more support for commands!"}, {"post_id": 27549, "ts": "2026-07-13T06:54:55Z", "hours": 2.1819, "text": "It’s been a while but I’m back! I made huge changes to the overall layout of the library, and decided that… Brush objects are the devices themselves, and will allow you to connect, disconnect, view its state, send/receive BLE commands, etc. OralBClient will only act as a “discovery layer”, which lets you search for new Brush objects and keep track of your connections (like a “management” layer I guess you could call it???) I finished building the connect/disconnect commands with an optional timeout option for connections, and I moved rssi and macAddress into getters so they’re read directly from the peripheral and update automatically. Had to switch to the @stoprocent/noble fork because the previous one caused issues with discovery in Fedora. In OralBClient , I added a way to track the brushes and store the connected ones in a Map (so users don’t have to keep track of the Brush objects elsewhere). I also added the option to stop discovery early, and an adapter state check before it starts discovering (so it waits for the Bluetooth adapter to power on first!)"}, {"post_id": 1031, "ts": "2026-06-02T20:27:41Z", "hours": 4.2644, "text": "First devlog! Spent a LONG time exploring the Oral-B app codebase to learn about how devices are discovered, and what bytes are interpreted from the manufacturer data. So far I’ve built a discover() method which hooks onto the @abandonware/noble library and searches for brushes nearby. I managed to reverse engineer the manufacturer data payload which let’s me identify the model line of the brush and filter out non Oral-B devices! :D"}]...
|
Title: oral-b Library by @brian | Stardance
Devlo Title: oral-b Library by @brian | Stardance
Devlogs:
First devlog! Spent a LONG time exploring the Oral-B app codebase to learn about how devices are discovered, and what bytes are interpreted from the manufacturer data. So far I’ve built a discover() method which hooks onto the @abandonware/noble library and searches for brushes nearby. I managed to reverse engineer the manufacturer data payload which let’s me identify the model line of the brush and filter out non Oral-B devices! :D
It’s been a while but I’m back! I made huge changes to the overall layout of the library, and decided that… Brush objects are the devices themselves, and will allow you to connect, disconnect, view its state, send/receive BLE commands, etc. OralBClient will only act as a “discovery layer”, which lets you search for new Brush objects and keep track of your connections (like a “management” layer I guess you could call it???) I finished building the connect/disconnect commands with an optional timeout option for connections, and I moved rssi and macAddress into getters so they’re read directly from the peripheral and update automatically. Had to switch to the @stoprocent/noble fork because the previous one caused issues with discovery in Fedora. In OralBClient , I added a way to track the brushes and store the connected ones in a Map (so users don’t have to keep track of the Brush objects elsewhere). I also added the option to stop discovery early, and an adapter state check before it starts discovering (so it waits for the Bluetooth adapter to power on first!)
Been a while! Most of this 7 hours was spent digging through the source code of the Oral-B codebase again, but I finished implementing a Bluetooth command transport layer and added a command handler for easy additions. I also implemented protocol versioning, which each brush specifies in its manufacturer data so the host knows what commands/values are available for the brush. In most cases, the newer the brush model (especially in the iO series of brushes), the higher the protocol, resulting in more available commands / data values to read from. I’ve also added the first incoming command: batteryLevel ! This method requests battery data from the brush, and depending on the protocol version of your brush, you’ll be able to view info like the battery percentage, estimated runtime, and even the technical specifications of the battery (like voltage, current, temperature, etc). From here on, all I’ll be doing is adding more support for commands!
I finished adding some more commands: deviceState which tells you what “state” the brush is in (running, idle, charging, etc), buttonState which allows you to subscribe to button events and notifies you when the power or mode button was pressed, and brushingTime which allows you to view the live stopwatch as you brush your teeth. I built a simple demo script to give you all a visual example of how these can be used!
I’ve finally finished working on the documentation! I also added a commands table in the README.md which lists all of the current commands and a link to their designated Markdown page. I’m preparing to publish it to npm.js now!
I spent some time cleaning up the package.json and implementing some bug fixes like adding reads and subscriptions to a queue (since before it would send them at the same time and crash the brush occasionally). Some newer brushes also require an “unlock code” to use the Bluetooth API, so I implemented that too! The first version is now live on npm.js!
I made a quick demonstration video and added some example scripts to the project!
Ships:
I built a Node.js library for bidirectional Bluetooth communication with Oral-B smart toothbrushes, without needing the app! The most challenging part was definitely reverse engineering the Bluetooth characteristic logic in the Oral-B Android app using jadx. Since testing out this project may be difficult for obvious reasons (not too many people have an overpriced smart toothbrush xD), the demo link will bring you to a sample demo video of how it works!...
|
1792820844.5093439
|
1792907244.5093439
|
|
680
|
test by @shreyas | Stardance
|
shreyas
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: test by @shreyas | Stardance
|
1792622893.0508764
|
1793227693.0508764
|
|
681
|
My first slack bot! by @rebecca_johnson | Stardanc My first slack bot! by @rebecca_johnson | Stardance...
|
rebecca_johnson
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @rebecca_johnson | S Title: My first slack bot! by @rebecca_johnson | Stardance...
|
1792731093.487482
|
1793335893.487482
|
|
682
|
My awesome macropad! by @Harshith_Gyara | Stardanc My awesome macropad! by @Harshith_Gyara | Stardance...
|
Harshith_Gyara
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Harshith_Gyara | S Title: My awesome macropad! by @Harshith_Gyara | Stardance...
|
1792659026.1667469
|
1793263826.1667469
|
|
683
|
Untitled project by @bob | Stardance
|
bob
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @bob | Stardance
|
1792666385.2307653
|
1793271185.2307653
|
|
684
|
pluto1! by @sal2x | Stardance
|
sal2x
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: pluto1! by @sal2x | Stardance
|
1792554527.8517342
|
1793159327.8517342
|
|
685
|
Game? by @Lan2two | Stardance
|
Lan2two
|
0
|
18.49
|
0
|
[]
|
[{"post_id": 3243, "ts": "2026 [{"post_id": 3243, "ts": "2026-06-06T02:28:10Z", "hours": 6.1206, "text": "Added a god awful tileset for the background made by yours truly Revamped attack to send an attack packet for all the data instead of a billion params (damage, knockback, special effects in the future?) Speaking of which, we have knockback now! clap clap The game also has a melee weapon (the coin) that follows the player’s cursor via the WEAPON CONTROLLER which does that and other things coming soon tm Revamped the damage component to toggle between continuous damage using physics process and one time damage each time it enters the area2d The bullet can pierce enemies with an exportable count And that’s all folks or some"}, {"post_id": 1701, "ts": "2026-06-03T21:18:43Z", "hours": 3.3131, "text": "Added a damage component so the enemy and the bullet uses it Player can roll for immunity frames (disables hitbox on roll) Added a GUN that automatically tracks the nearest enemy"}, {"post_id": 964, "ts": "2026-06-02T18:53:39Z", "hours": 1.9008, "text": "Was working on the ai/pathfinding of the enemy this morning. added wandering and chasing the player."}, {"post_id": 619, "ts": "2026-06-02T03:48:43Z", "hours": 3.3728, "text": "Changed the node structure so that the states’ code can be split into more components. Added a little bit of utilities to find the player node Added a velocity component to do movement stuff Working on the enemy ai - not going well (it’s so over what am I even doing T-T)"}, {"post_id": 345, "ts": "2026-06-01T17:26:09Z", "hours": 2.1861, "text": "Stuff I did this morning: Imported the knight sprite from Brackeys’ Platformer Bundle (placeholder pretty much) animations for idle, attack, and for moving movement and transitions between states hitbox and health components a scene for bullets that checks for the hitbox component flash from taking damage"}, {"post_id": 176, "ts": "2026-06-01T05:29:16Z", "hours": 1.6, "text": "Made a state machine in godot c# (why are signals this way in c#)"}]...
|
Title: Game? by @Lan2two | Stardance
Devlogs:
Mad Title: Game? by @Lan2two | Stardance
Devlogs:
Made a state machine in godot c# (why are signals this way in c#)
Stuff I did this morning: Imported the knight sprite from Brackeys’ Platformer Bundle (placeholder pretty much) animations for idle, attack, and for moving movement and transitions between states hitbox and health components a scene for bullets that checks for the hitbox component flash from taking damage
Changed the node structure so that the states’ code can be split into more components. Added a little bit of utilities to find the player node Added a velocity component to do movement stuff Working on the enemy ai - not going well (it’s so over what am I even doing T-T)
Was working on the ai/pathfinding of the enemy this morning. added wandering and chasing the player.
Added a damage component so the enemy and the bullet uses it Player can roll for immunity frames (disables hitbox on roll) Added a GUN that automatically tracks the nearest enemy
Added a god awful tileset for the background made by yours truly Revamped attack to send an attack packet for all the data instead of a billion params (damage, knockback, special effects in the future?) Speaking of which, we have knockback now! clap clap The game also has a melee weapon (the coin) that follows the player’s cursor via the WEAPON CONTROLLER which does that and other things coming soon tm Revamped the damage component to toggle between continuous damage using physics process and one time damage each time it enters the area2d The bullet can pierce enemies with an exportable count And that’s all folks or some...
|
1792713297.1313384
|
1793318097.1313384
|
|
686
|
Dev's Ukelele Emulator 2010 by @ninja9000 | St Dev's Ukelele Emulator 2010 by @ninja9000 | Stardance...
|
ninja9000
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Dev's Ukelele Emulator 2010 by @ninja90 Title: Dev's Ukelele Emulator 2010 by @ninja9000 | Stardance...
|
1792543683.0150726
|
1793148483.0150726
|
|
687
|
Software Renderer by @DeltaBob | Stardance
|
DeltaBob
|
0
|
8.75
|
0
|
[]
|
[{"post_id": 36990, "ts": "202 [{"post_id": 36990, "ts": "2026-07-29T13:13:39Z", "hours": 8.7456, "text": "I just finished adding textures (via mtl parsing) and basic lighting (via normal maps) to my software renderer (in rust)! I also implemented some much needed optimisation and improved fps by 400%! (~30fps in Sponza)"}]...
|
Title: Software Renderer by @DeltaBob | Stardance
Title: Software Renderer by @DeltaBob | Stardance
Devlogs:
I just finished adding textures (via mtl parsing) and basic lighting (via normal maps) to my software renderer (in rust)! I also implemented some much needed optimisation and improved fps by 400%! (~30fps in Sponza)...
|
1792727359.7495344
|
1793332159.7495344
|
|
688
|
AI Physics Engine (APE) by @MrMaho | Stardance
|
MrMaho
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: AI Physics Engine (APE) by @MrMaho | Starda Title: AI Physics Engine (APE) by @MrMaho | Stardance...
|
1792709594.3604963
|
1793314394.3604963
|
|
689
|
My first slack bot! by @0 | Stardance
|
0
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @0 | Stardance
|
1792479187.2044904
|
1793083987.2044904
|
|
690
|
My awesome macropad! by @Amelia | Stardance
|
Amelia
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Amelia | Stardance
|
1792741752.7212405
|
1793346552.7212405
|
|
691
|
pluto1 by @ardelle54321 | Stardance
|
ardelle54321
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: pluto1 by @ardelle54321 | Stardance
|
1792662466.6896908
|
1793267266.6896908
|
|
692
|
Pinball by @jms | Stardance
|
jms
|
1
|
10.46
|
19
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T03:36:43Z", "hours": 10.0, "multiplier": 1.99, "payout": 19, "blessing": "neutral", "text": "This is a game of pinball. Some problems with this game are the button at the start may not load quickly so you may need to wait a few seconds and with everything with collision there may be some bugs in relation to collision", "repo": "https://github.com/Chickenhatter/pinball", "demo": "https://chickenhatter.itch.io/pinball"}]...
|
[{"post_id": 7939, "ts": "2026 [{"post_id": 7939, "ts": "2026-06-13T07:48:14Z", "hours": 0.4619, "text": "Fixed something about conrol nodes stealing clicks and added a smacker in start scene"}, {"post_id": 7852, "ts": "2026-06-13T02:56:28Z", "hours": 1.0372, "text": "Game Finished with also start scene"}, {"post_id": 7809, "ts": "2026-06-13T01:06:14Z", "hours": 0.7289, "text": "Making main scene ready to be shipped"}, {"post_id": 7389, "ts": "2026-06-12T09:58:24Z", "hours": 0.5383, "text": "Ball loop now works"}, {"post_id": 6783, "ts": "2026-06-11T11:12:08Z", "hours": 0.5767, "text": "Coded the second ball"}, {"post_id": 6135, "ts": "2026-06-10T10:07:12Z", "hours": 0.5706, "text": "I added a second ball and the path works"}, {"post_id": 5510, "ts": "2026-06-09T09:50:16Z", "hours": 0.5864, "text": "Added images"}, {"post_id": 4829, "ts": "2026-06-08T10:45:15Z", "hours": 0.6136, "text": "First few sprites being done"}, {"post_id": 4093, "ts": "2026-06-07T09:03:19Z", "hours": 0.61, "text": "Code for all boosters and path"}, {"post_id": 3439, "ts": "2026-06-06T11:41:27Z", "hours": 0.5353, "text": "Added boosters and added an area that makes the ramp physical"}, {"post_id": 2708, "ts": "2026-06-05T12:48:53Z", "hours": 0.6819, "text": "Mapshape starting to look like a normal one"}, {"post_id": 2673, "ts": "2026-06-05T10:56:11Z", "hours": 0.5731, "text": "better map shape"}, {"post_id": 2057, "ts": "2026-06-04T11:14:28Z", "hours": 0.6503, "text": "added shoot and finally made the hooks work when flat"}, {"post_id": 1342, "ts": "2026-06-03T09:09:05Z", "hours": 0.6597, "text": "I started working on the plunger/some extra code"}, {"post_id": 672, "ts": "2026-06-02T06:55:12Z", "hours": 0.6336, "text": "I have now added the hooks(whatever the swinging parts are called)"}, {"post_id": 190, "ts": "2026-06-01T07:00:27Z", "hours": 0.5636, "text": "I have made the pinball drop and collide so my next goal will be to have it have different collisions with specific objects"}]...
|
Title: Pinball by @jms | Stardance
Devlogs:
I hav Title: Pinball by @jms | Stardance
Devlogs:
I have made the pinball drop and collide so my next goal will be to have it have different collisions with specific objects
I have now added the hooks(whatever the swinging parts are called)
I started working on the plunger/some extra code
added shoot and finally made the hooks work when flat
better map shape
Mapshape starting to look like a normal one
Added boosters and added an area that makes the ramp physical
Code for all boosters and path
First few sprites being done
Added images
I added a second ball and the path works
Coded the second ball
Ball loop now works
Making main scene ready to be shipped
Game Finished with also start scene
Fixed something about conrol nodes stealing clicks and added a smacker in start scene
Ships:
This is a game of pinball. Some problems with this game are the button at the start may not load quickly so you may need to wait a few seconds and with everything with collision there may be some bugs in relation to collision...
|
1792828560.658922
|
1792914960.658922
|
|
693
|
Untitled project by @Cethiano | Stardance
|
Cethiano
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @Cethiano | Stardance
|
1792637371.9271593
|
1793242171.9271593
|
|
694
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792882243.154233
|
1793746243.154233
|
|
695
|
wintunnel by @not-willem | Stardance
|
not-willem
|
1
|
8.0
|
63
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-02T04:48:58Z", "hours": 8.0, "multiplier": 8.03, "payout": 63, "blessing": "neutral", "text": "I’ve made a cool wind tunnel as my introduction type thing into pygame but now i know some useful things and I’m happy with what i’ve made :) Its very cool and i’m pretty proud of the SVG importing which took the most time.", "repo": "https://github.com/not-willem/WintUnnel", "demo": "https://github.com/not-willem/WintUnnel/releases/tag/V1.0"}]...
|
[{"post_id": 20536, "ts": "202 [{"post_id": 20536, "ts": "2026-07-02T04:46:00Z", "hours": 0.8394, "text": "changed the readme and i’m ready to ship :D"}, {"post_id": 1931, "ts": "2026-06-04T05:16:39Z", "hours": 1.1606, "text": "okay probably gonna stop now tried to add blocking forces but idk how well they work ig maybe other people can edit this but im gonna work on another project now"}, {"post_id": 1273, "ts": "2026-06-03T04:54:33Z", "hours": 1.0697, "text": "i locked innn made it so you can see points of drag and also made it actually work :D"}, {"post_id": 637, "ts": "2026-06-02T04:46:41Z", "hours": 1.0392, "text": "changed the gui on the wind tunnel and made the particles move :D"}, {"post_id": 547, "ts": "2026-06-02T01:17:18Z", "hours": 1.0592, "text": "lmao added a button and made particles but i still need to make them actually move i think the ui is looking nice so far tho"}, {"post_id": 470, "ts": "2026-06-01T22:38:05Z", "hours": 0.6169, "text": "really cool svg thing and wind source also does anyone know how to make the imported svg look less pixelated? using pygame"}, {"post_id": 168, "ts": "2026-06-01T02:44:08Z", "hours": 1.4467, "text": "added more buttons and an svg importer"}, {"post_id": 161, "ts": "2026-06-01T01:02:34Z", "hours": 0.6781, "text": "pygame :3"}]...
|
Title: wintunnel by @not-willem | Stardance
Devlo Title: wintunnel by @not-willem | Stardance
Devlogs:
pygame :3
added more buttons and an svg importer
really cool svg thing and wind source also does anyone know how to make the imported svg look less pixelated? using pygame
lmao added a button and made particles but i still need to make them actually move i think the ui is looking nice so far tho
changed the gui on the wind tunnel and made the particles move :D
i locked innn made it so you can see points of drag and also made it actually work :D
okay probably gonna stop now tried to add blocking forces but idk how well they work ig maybe other people can edit this but im gonna work on another project now
changed the readme and i’m ready to ship :D
Ships:
I’ve made a cool wind tunnel as my introduction type thing into pygame but now i know some useful things and I’m happy with what i’ve made :) Its very cool and i’m pretty proud of the SVG importing which took the most time....
|
1792821169.027494
|
1792907569.027494
|
|
696
|
Untitled project by @sarveshvijay47 | Stardance
|
sarveshvijay47
|
0
|
1.84
|
0
|
[]
|
[{"post_id": 23566, "ts": "202 [{"post_id": 23566, "ts": "2026-07-06T16:33:07Z", "hours": 1.8381, "text": "setup the code and website locally still working on the database but recently the website crashed and working on fixing it"}]...
|
Title: Untitled project by @sarveshvijay47 | Stard Title: Untitled project by @sarveshvijay47 | Stardance
Devlogs:
setup the code and website locally still working on the database but recently the website crashed and working on fixing it...
|
1792594545.2840335
|
1793199345.2840335
|
|
697
|
Untitled project by @Sp17 | Stardance
|
Sp17
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @Sp17 | Stardance
|
1792522412.0675771
|
1793127212.0675771
|
|
698
|
Amaan - women's safety device by @Ksshfii | St Amaan - women's safety device by @Ksshfii | Stardance...
|
Ksshfii
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Amaan - women's safety device by @Ksshf Title: Amaan - women's safety device by @Ksshfii | Stardance...
|
1792482904.9806252
|
1793087704.9806252
|
|
699
|
Epic macropad by @Bingley | Stardance
|
Bingley
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Epic macropad by @Bingley | Stardance
|
1792741683.8290024
|
1793346483.8290024
|
|
700
|
Void Strike by @JudeW | Stardance
|
JudeW
|
1
|
103.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-26T15:27:38Z", "hours": 103.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hi! The project I’ve been working on is called Void Strike. It’s a space shooter game in which the player controls a spaceship and must survive hordes of enemy waves. The reason why I chose to create this game is that I thought it would be easy. Since I’ve never really used Godot, I thought I should start simple. By the end of working on it, I can confidently say that I’ve learned at least the basics of the engine. That’s all anyway. Have Fun! Also, last night when I was trying to add it to Itch.io, I accidentally overwrote LITERALLY ALL of my files and everything, so the only thing I have left is the HTML export, and the entire project on my Godot account is just gone, and I can’t recover it, so if there is anything a little buggy, that’s probably why. And I can’t do anything about it, sorry. I just decided to ship it as it currently is instead of not shipping it at all, since I’ve already spent too much of my time on this. Once more, I’m sorry.", "repo": "https://github.com/judeweibley-cell/Void-Strike", "demo": "https://ludew.itch.io/void-strike"}]...
|
[{"post_id": 73757, "ts": "202 [{"post_id": 73757, "ts": "2026-09-25T21:24:54Z", "hours": 2.5992, "text": "Finally finished the game!!! Just posting a quick devlog before shipping. I added satellites and space junk that can fly in from the right side of your screen, which adds an extra obstacle. The only hard part about it was figuring out some physics equations with Newton’s Law of Universal Gravitation. After that, it was finished. Here’s my code if you want to look at it(GDScript): extends Node2D var item = 0 var active_node: Node2D = null var velocity := Vector2.ZERO var rotation_speed := 0.0 var spawning_enabled := true const MIN_SPAWN_TIME = 10.0 const MAX_SPAWN_TIME = 15.0 const PLANET_POSITION = Vector2(300, 1500) const GRAVITY_STRENGTH = 450000.0 @onready var timer = $Timer @onready var small_satellite = $“Small satelltite” @onready var large_satellite = $“Large satellite” @onready var scrap = $Scrap func _ready() -> void: randomize_next_spawn_time() func _process(delta: float) -> void: if active_node and active_node.visible: var vector_to_planet = PLANET_POSITION - active_node.global_position var distance = vector_to_planet.length() var direction = vector_to_planet.normalized() var gravity_force = direction * (GRAVITY_STRENGTH / (distance * distance)) velocity += gravity_force * delta active_node.global_position += velocity * delta active_node.rotation += rotation_speed * delta if active_node.global_position.x < -150: disable_active_node() func _on_timer_timeout() -> void: randomize_next_spawn_time() if not spawning_enabled: return item = randi_range(1, 3) if item == 1: pick_small() elif item == 2: pick_large() else: pick_scrap() func randomize_next_spawn_time() -> void: if timer: timer.wait_time = randf_range(MIN_SPAWN_TIME, MAX_SPAWN_TIME) timer.start() func reset_and_launch(node: Node2D): disable_active_node() small_satellite.hide() large_satellite.hide() scrap.hide() node.show() node.global_position = Vector2(600, randi_range(0, 960)) velocity = Vector2(-150, -45) rotation_speed = randf_range(-1.5, 1.5) if node.has_method(\"set_deferred\"): node.set_deferred(\"monitoring\", true) node.set_deferred(\"monitorable\", true) active_node = node func disable_active_node(): if active_node: active_node.hide() if active_node.has_method(“set_deferred”): active_node.set_deferred(“monitoring”, false) active_node.set_deferred(“monitorable”, false) func stop_spawning() -> void: spawning_enabled = false timer.stop() func start_spawning() -> void: spawning_enabled = true randomize_next_spawn_time() func pick_small(): reset_and_launch(small_satellite) func pick_large(): reset_and_launch(large_satellite) func pick_scrap(): reset_and_launch(scrap) func _on_scrap_body_entered(body: Node2D) -> void: if body.has_method(“take_damage”): body.take_damage() disable_active_node() func _on_large_satellite_body_entered(body: Node2D) -> void: if body.has_method(“take_damage”): body.take_damage() disable_active_node() func _on_small_satelltite_body_entered(body: Node2D) -> void: if body.has_method(“take_damage”): body.take_damage() disable_active_node()"}, {"post_id": 73337, "ts": "2026-09-24T22:14:34Z", "hours": 10.0881, "text": "Lately I’ve just been polishing the game. Nothing super interesting. I fixed the keybindings because when you selected a key with a long name like RightBracket, the label would expand into the button and overlap. I just made a better layout for it and made it so the text would be aligned on the right side, making it expand to the left instead. Then I worked on cleaning up some of my code since I’m planning on shipping tomorrow. Then I added a TON of polish to the main menu. I added a little rotating tip at the bottom and displayed your high score and highest wave at the top of the menu, which was easy enough. I still want to log at least two more hours, so if anyone has ideas, please let me know, because I’m out of ideas. Also, in the pictures, if the text looks sideways, it’s because I rotated it as a little animation. I think the current total for lines of code is 3005, if you’re interested, btw."}, {"post_id": 67665, "ts": "2026-09-13T20:25:53Z", "hours": 5.2769, "text": "I’ve just been working on adding some finishing touches lately, most of which include working with the new log feature. Inside of it I have three different tabs Enemies which is just a list of all of the different enemies and their stats like hp and speed. The second one is for achievements. I have ten so far, which include: First Orbit, earned by playing for 15 mins. Deep Space Transit for 30 minutes, and Time Flies for an hour. Atmosphere Cleared for getting to wave 5. Flight Lieutenant for wave 15. Squadron Leader for wave 30, and Cosmic Anomaly for 50. Just Getting Warm for killing a thousand enemies. Determined I for dying 50 times and Determined II for dying 100 times. I also added some progress bars to visually show your progress towards the achievements. For the stats menu, all I changed was adding a darker panel behind all the stats to add some detail; other than that, that’s all I did. Also, the scrolling menus were almost my downfall."}, {"post_id": 66787, "ts": "2026-09-12T17:48:29Z", "hours": 3.1139, "text": "This morning, I’ve been working on adding a statistics menu to the menu, which keeps track of stuff like your highest wave or how many power-ups you’ve bought. All of the things are saved after closing the window, so not much has been added, but it’s something."}, {"post_id": 66317, "ts": "2026-09-12T02:32:23Z", "hours": 6.9156, "text": "Fairly large update!!! Over the past few days, I’ve been working and have gotten quite a lot done. Recent changes include A new bomber enemy who appears on wave 15, dropping bombs as it passes through. Bombs have 3 seconds before exploding and deal the standard 1 HP. Then I polished the menu so that instead of having ugly buttons down at the bottom of the screen, I now have large transparent buttons right in the middle of the screen. I also made the buttons feel really juicy, changing color and playing a short clicking sound when hovered over with the mouse. I changed up the settings panel by adding some darker panels for detail and organization. Instead of the set WASD and arrow keys, I now have key binding as an option. I don’t know what other controls players would use, but just in case, and it also makes the game feel more polished. I think right now I plan on adding a stats page in the menu next that can showcase stuff like your highest wave, how many attempts, and enemies killed. But I think I’m going to save that for tomorrow. So for now, I’ll see you in the next devlog. :)"}, {"post_id": 62492, "ts": "2026-09-05T21:34:48Z", "hours": 9.9294, "text": "🎉🎉Major Update🎉🎉 After a little bit of playtesting, I came to the conclusion that the game needed to be much harder because it came up as a problem more often than not. I was already planning to add a few more enemy types, so it didn’t really matter. New Enemy Types 1) A horde of diver enemies 2) A large tank enemy that has double shots 3) A Suicider enemy which pathfinds to the player 4) An asteroid field that can spawn I also plan on adding a bomber enemy with explosions, and a flame thrower enemy which will deal more damage the longer you are in the flames and will burn your fuel. But because I was so close to the 10-hour limit, I have to make a devlog before continuing on it. I also decreased the wavelength from 30 seconds to just 20 because it made for a much faster-paced game and was easier on the player. In the future, I plan on adding a keybind option to the settings, which might take a while to figure out, bosses, which probably won’t happen, and a ton more polish to the menu because it looks terrible."}, {"post_id": 57756, "ts": "2026-08-30T01:10:30Z", "hours": 0.6822, "text": "Small Update: I just added a notes and acknowledgements page to replace the old broken leaderboard page. It just includes some writing and a link to my new Discord Page. If you want to join early to the launch, here’s the link: https://discord.gg/ccgyRZArYm"}, {"post_id": 57724, "ts": "2026-08-29T23:55:41Z", "hours": 8.8753, "text": "🎉🎉MAJOR UPDATE🎉🎉: For the past few days I’ve been working on a few updates, which include finishing and balancing the new Super Nova feature. When you max out all 3 power-up upgrades, it allows you to super charge. One of them includes Double Shot, 2x score on top of 2x score, and buffs for a short amount of time after your shield breaks. I made waves infinitely and made them progressively harder with each passing wave. I added a slight amount of polish to the menu where a little click sound plays when you toggle settings or press a button. I realized that when the player got hit it wasn’t very noticeable since it played the same sound as when an enemy got hit, so I added screen shake which was something I wanted to add for a while but procrastinated it because the way I made my scrolling background with a Parallax background that had a Parallax layer and sprite 2D as a child so when I added the camera 2D node it stopped the background from scrolling so I had to delete all of that and update it with the newer method. But after an hour or so, I got it looking clean and was happy with it, so now when the player takes damage, there is a very noticeable shake to the screen, which helps indicate that you got hit. I also added this to the enemy, but you have to build up a fairly large consecutive hit counter to really notice it. I did start to work on a new tank enemy since all of the existing ones are relatively weak, so this one will have 5 HP, which is half of an asteroid, and will shoot double-shot bullets, which will be punishing if the player gets hit by it. Speaking of HP, instead of healing the player’s hearts back to their maximum amount despite the current amount, it now only heals you by one heart. Now normally, I would have a video to showcase all of these new features, but my thing is weird and will only take images, not videos, so sorry if it’s missing, like all of the updates."}, {"post_id": 48557, "ts": "2026-08-17T00:20:01Z", "hours": 10.9817, "text": "Major Update: Over the past few days, I’ve added a lot of features that will have a significant impact on the game. The first of which is a new shop where the player can purchase upgrades, including a +5% speed increase (limit of 25%), a +5% fire rate upgrade (limit of 25%), and, lastly, a refuel upgrade, which will refill 5% for the cost of 1 coin. The player now has 3 lives instead of just 1, which will allow the player to progress through the game more. In the shop the player can upgrade the amount of lives they have(max of 5). After each wave their health returns to it’s maximum, but fuel will remain the same. In the power-ups tab, the player can increase the duration of each power-up by a maximum of 5 seconds. Once the player maxes out all 3 power-ups, they will unlock a feature called Super Nova were they can select one of the three power-ups to gain a new feature that will help the player survive new waves. Speaking of waves, the next change includes breaking up the game into multiple waves. This change allows the player to get a break between waves to upgrade their ship in the shop. This also makes the player feel like they are progressing through the game more."}, {"post_id": 45996, "ts": "2026-08-12T20:45:30Z", "hours": 5.9294, "text": "Large Update: Last night and this morning, I’ve been working on some new features, including a new fuel tank that slowly depletes, and the only way to refill it is by collecting fuel canisters. This change also allows the player to hold down Shift to get a 50% speed increase, but the fuel tank goes down twice as fast. I also added a new fire particle effect that follows the player, making the game feel much livelier. Coins are also a new feature that have a 10% drop rate on the death of an enemy. Right now, coins do nothing, but in the future I have plans to add a shop/upgrade feature. The player now has three lives instead of one; this makes the game feel more forgiving, but when you lose a heart, your fuel tank decreases by 20%, making fuel a much bigger problem than before. When your fuel tank hits 0, the game is over regardless of how many hearts the player has."}, {"post_id": 45420, "ts": "2026-08-11T21:06:05Z", "hours": 2.1111, "text": "Today’s changes include adding a new power-up, which is a shield that protects the player from one hit for 10 seconds. There is a shield Icon which follows the player around, acting as a visual indicator for the power-up. I also made the player movement much smoother by making the player accelerate in a direction instead of moving at a flat rate, which makes the game overall feel much more “alive”."}, {"post_id": 44986, "ts": "2026-08-11T03:37:37Z", "hours": 9.8844, "text": "Major update: as you can tell from me logging in more than 9 hours, I made a lot of changes, which include two new enemies because I realized as long as you don’t actively try to die, you can live forever, so we have two new enemies, both of which fire bullets at the player, so you have something that poses a threat unlike the old enemies. One is quick, has a fast firing speed, and is small, but only has 1 hp. It also provides more points than its much slower partner, who has 2 hp, a slower firing rate, and a bigger hitbox. I also added two power-ups, randomly selected from the two as collectable items: the first doubles your shoot cooldown for 5 seconds, and the second doubles your score income for 15 seconds. When you collect a power-up, a bar appears at the bottom of your screen, showing how much time remains on your power-up. That’s all that I did for this week, and more features are on their way. Thanks! p.s. I can’t add a video containing the update because my thing is weird and only lets me upload images to Stardance. Sorry about the inconvenience😭"}, {"post_id": 41458, "ts": "2026-08-05T17:55:55Z", "hours": 3.8344, "text": "These past few days, I worked on adding polish, bug fixes, and a new load screen. The load screen GUI is just a placeholder until I can polish it off. I might have to scrap an online leaderboard because I’m new to Godot and know very little GD script, so I can’t use SilentWolf. I’ve been working on implementing Talo, but I can’t find any tutorials, and Google can’t help me with it. Unless I can get it working I don’t think I can add an online leader board."}, {"post_id": 38325, "ts": "2026-07-31T17:27:19Z", "hours": 1.1819, "text": "I need help. I did finally fix the one bug that stopped enemies from spawning, but my next goal was to make a leaderboard, so I set up all of the UI for it, and when I realized I had no idea what I was doing, I ultimately looked up a YouTube tutorial. I didn’t realize that I needed to use a plugin to create an online server for my game. And when I tried to download Silent Wolf, it wouldn’t let me because I was still using version 4.4, and I didn’t want to update it in case it broke my game. So do I scrap leaderboards, or is there some other way?"}, {"post_id": 38211, "ts": "2026-07-31T14:41:42Z", "hours": 5.3556, "text": "Lately I’ve been working on adding a settings feature that includes options for music, sound effects, and a reset data button. While working on this feature, I managed to break my entire game, so fingers crossed I can fix it. I plan on adding an online leaderboard (If I can fix the game)."}, {"post_id": 35191, "ts": "2026-07-26T13:44:00Z", "hours": 4.8325, "text": "Void Strike is a space shooter-type game in which the player must test their skills by trying to survive for as long as possible while gaining points by killing enemies. Changelog: Added an asteroid, which is a new obstacle that has a lot of HP and permits the enemies to advance closer to the player. Bug fixes I haven’t posted a devlog because I’ve been on vacation so I’m very behind on my project."}, {"post_id": 3278, "ts": "2026-06-06T04:13:02Z", "hours": 6.4203, "text": "Void Strike is a space shooter-type game in which the player must test their skills by trying to survive for as long as possible while gaining points by killing enemies. I haven’t posted a Dev-log for a while, but I’ve added a lot of features in that time. Changelog Scrolling background and particle effects Sound effects On-screen score counter High-score Game over screen Player Balancing Difficulty increases over time My next steps will be to add a main menu, possibly a shop and a currency to buy player upgrades, and a competitive global scoreboard. P.S. I would take a video, but my internet keeps showing an error, so I’ve taken a photo instead. Believe me, I added what I said I did."}, {"post_id": 1829, "ts": "2026-06-04T01:27:56Z", "hours": 1.7686, "text": "Void Strike is a simple space shooter type game that I’m working on. I know it’s a little simple, but I’m inexperienced with Godot. Changelog You can hold down space to shoot 2 new enemies (1 fast, and 1 slow) Randomized enemy spawning"}, {"post_id": 1748, "ts": "2026-06-03T22:43:16Z", "hours": 2.7453, "text": "Void Strike, which is a space shooter I just started working on. It will be on the simpler side, because I’m new to using Godot. So far I have the player movement, and shooting working. I plan to add a lot more in the future."}]...
|
Title: Void Strike by @JudeW | Stardance
Devlogs: Title: Void Strike by @JudeW | Stardance
Devlogs:
Void Strike, which is a space shooter I just started working on. It will be on the simpler side, because I’m new to using Godot. So far I have the player movement, and shooting working. I plan to add a lot more in the future.
Void Strike is a simple space shooter type game that I’m working on. I know it’s a little simple, but I’m inexperienced with Godot. Changelog You can hold down space to shoot 2 new enemies (1 fast, and 1 slow) Randomized enemy spawning
Void Strike is a space shooter-type game in which the player must test their skills by trying to survive for as long as possible while gaining points by killing enemies. I haven’t posted a Dev-log for a while, but I’ve added a lot of features in that time. Changelog Scrolling background and particle effects Sound effects On-screen score counter High-score Game over screen Player Balancing Difficulty increases over time My next steps will be to add a main menu, possibly a shop and a currency to buy player upgrades, and a competitive global scoreboard. P.S. I would take a video, but my internet keeps showing an error, so I’ve taken a photo instead. Believe me, I added what I said I did.
Void Strike is a space shooter-type game in which the player must test their skills by trying to survive for as long as possible while gaining points by killing enemies. Changelog: Added an asteroid, which is a new obstacle that has a lot of HP and permits the enemies to advance closer to the player. Bug fixes I haven’t posted a devlog because I’ve been on vacation so I’m very behind on my project.
Lately I’ve been working on adding a settings feature that includes options for music, sound effects, and a reset data button. While working on this feature, I managed to break my entire game, so fingers crossed I can fix it. I plan on adding an online leaderboard (If I can fix the game).
I need help. I did finally fix the one bug that stopped enemies from spawning, but my next goal was to make a leaderboard, so I set up all of the UI for it, and when I realized I had no idea what I was doing, I ultimately looked up a YouTube tutorial. I didn’t realize that I needed to use a plugin to create an online server for my game. And when I tried to download Silent Wolf, it wouldn’t let me because I was still using version 4.4, and I didn’t want to update it in case it broke my game. So do I scrap leaderboards, or is there some other way?
These past few days, I worked on adding polish, bug fixes, and a new load screen. The load screen GUI is just a placeholder until I can polish it off. I might have to scrap an online leaderboard because I’m new to Godot and know very little GD script, so I can’t use SilentWolf. I’ve been working on implementing Talo, but I can’t find any tutorials, and Google can’t help me with it. Unless I can get it working I don’t think I can add an online leader board.
Major update: as you can tell from me logging in more than 9 hours, I made a lot of changes, which include two new enemies because I realized as long as you don’t actively try to die, you can live forever, so we have two new enemies, both of which fire bullets at the player, so you have something that poses a threat unlike the old enemies. One is quick, has a fast firing speed, and is small, but only has 1 hp. It also provides more points than its much slower partner, who has 2 hp, a slower firing rate, and a bigger hitbox. I also added two power-ups, randomly selected from the two as collectable items: the first doubles your shoot cooldown for 5 seconds, and the second doubles your score income for 15 seconds. When you collect a power-up, a bar appears at the bottom of your screen, showing how much time remains on your power-up. That’s all that I did for this week, and more features are on their way. Thanks! p.s. I can’t add a video containing the update because my thing is weird and only lets me upload images to Stardance. Sorry about the inconvenience😭
Today’s changes include adding a new power-up, which is a shield that protects the player from one hit for 10 seconds. There is a shield Icon which follows the player around, acting as a visual indicator for the power-up. I also made the player movement much smoother by making the player accelerate in a direction instead of moving at a flat rate, which makes the game overall feel much more “alive”.
Large Update: Last night and this morning, I’ve been working on some new features, including a new fuel tank that slowly depletes, and the only way to refill it is by collecting fuel canisters. This change also allows the player to hold down Shift to get a 50% speed increase, but the fuel tank goes down twice as fast. I also added a new fire particle effect that follows the player, making the game feel much livelier. Coins are also a new feature that have a 10% drop rate on the death of an enemy. Right now, coins do nothing, but in the future I have plans to add a shop/upgrade feature. The player now has three lives instead of one; this makes the game feel more forgiving, but when you lose a heart, your fuel tank decreases by 20%, making fuel a much bigger problem than before. When your fuel tank hits 0, the game is over regardless of how many hearts the player has.
Major Update: Over the past few days, I’ve added a lot of features that will have a significant impact on the game. The first of which is a new shop where the player can purchase upgrades, including a +5% speed increase (limit of 25%), a +5% fire rate upgrade (limit of 25%), and, lastly, a refuel upgrade, which will refill 5% for the cost of 1 coin. The player now has 3 lives instead of just 1, which will allow the player to progress through the game more. In the shop the player can upgrade the amount of lives they have(max of 5). After each wave their health returns to it’s maximum, but fuel will remain the same. In the power-ups tab, the player can increase the duration of each power-up by a maximum of 5 seconds. Once the player maxes out all 3 power-ups, they will unlock a feature called Super Nova were they can select one of the three power-ups to gain a new feature that will help the player survive new waves. Speaking of waves, the next change includes breaking up the game into multiple waves. This change allows the player to get a break between waves to upgrade their ship in the shop. This also makes the player feel like they are progressing through the game more.
🎉🎉MAJOR UPDATE🎉🎉: For the past few days I’ve been working on a few updates, which include finishing and balancing the new Super Nova feature. When you max out all 3 power-up upgrades, it allows you to super charge. One of them includes Double Shot, 2x score on top of 2x score, and buffs for a short amount of time after your shield breaks. I made waves infinitely and made them progressively harder with each passing wave. I added a slight amount of polish to the menu where a little click sound plays when you toggle settings or press a button. I realized that when the player got hit it wasn’t very noticeable since it played the same sound as when an enemy got hit, so I added screen shake which was something I wanted to add for a while but procrastinated it because the way I made my scrolling background with a Parallax background that had a Parallax layer and sprite 2D as a child so when I added the camera 2D node it stopped the background from scrolling so I had to delete all of that and update it with the newer method. But after an hour or so, I got it looking clean and was happy with it, so now when the player takes damage, there is a very noticeable shake to the screen, which helps indicate that you got hit. I also added this to the enemy, but you have to build up a fairly large consecutive hit counter to really notice it. I did start to work on a new tank enemy since all of the existing ones are relatively weak, so this one will have 5 HP, which is half of an asteroid, and will shoot double-shot bullets, which will be punishing if the player gets hit by it. Speaking of HP, instead of healing the player’s hearts back to their maximum amount despite the current amount, it now only heals you by one heart. Now normally, I would have a video to showcase all of these new features, but my thing is weird and will only take images, not videos, so sorry if it’s missing, like all of the updates.
Small Update: I just added a notes and acknowledgements page to replace the old broken leaderboard page. It just includes some writing and a link to my new Discord Page. If you want to join early to the launch, here’s the link: https://discord.gg/ccgyRZArYm
🎉🎉Major Update🎉🎉 After a little bit of playtesting, I came to the conclusion that the game needed to be much harder because it came up as a problem more often than not. I was already planning to add a few more enemy types, so it didn’t really matter. New Enemy Types 1) A horde of diver enemies 2) A large tank enemy that has double shots 3) A Suicider enemy which pathfinds to the player 4) An asteroid field that can spawn I also plan on adding a bomber enemy with explosions, and a flame thrower enemy which will deal more damage the longer you are in the flames and will burn your fuel. But because I was so close to the 10-hour limit, I have to make a devlog before continuing on it. I also decreased the wavelength from 30 seconds to just 20 because it made for a much faster-paced game and was easier on the player. In the future, I plan on adding a keybind option to the settings, which might take a while to figure out, bosses, which probably won’t happen, and a ton more polish to the menu because it looks terrible.
Fairly large update!!! Over the past few days, I’ve been working and have gotten quite a lot done. Recent changes include A new bomber enemy who appears on wave 15, dropping bombs as it passes through. Bombs have 3 seconds before exploding and deal the standard 1 HP. Then I polished the menu so that instead of having ugly buttons down at the bottom of the screen, I now have large transparent buttons right in the middle of the screen. I also made the buttons feel really juicy, changing color and playing a short clicking sound when hovered over with the mouse. I changed up the settings panel by adding some darker panels for detail and organization. Instead of the set WASD and arrow keys, I now have key binding as an option. I don’t know what other controls players would use, but just in case, and it also makes the game feel more polished. I think right now I plan on adding a stats page in the menu next that can showcase stuff like your highest wave, how many attempts, and enemies killed. But I think I’m going to save that for tomorrow. So for now, I’ll see you in the next devlog. :)
This morning, I’ve been working on adding a statistics menu to the menu, which keeps track of stuff like your highest wave or how many power-ups you’ve bought. All of the things are saved after closing the window, so not much has been added, but it’s something.
I’ve just been working on adding some finishing touches lately, most of which include working with the new log feature. Inside of it I have three different tabs Enemies which is just a list of all of the different enemies and their stats like hp and speed. The second one is for achievements. I have ten so far, which include: First Orbit, earned by playing for 15 mins. Deep Space Transit for 30 minutes, and Time Flies for an hour. Atmosphere Cleared for getting to wave 5. Flight Lieutenant for wave 15. Squadron Leader for wave 30, and Cosmic Anomaly for 50. Just Getting Warm for killing a thousand enemies. Determined I for dying 50 times and Determined II for dying 100 times. I also added some progress bars to visually show your progress towards the achievements. For the stats menu, all I changed was adding a darker panel behind all the stats to add some detail; other than that, that’s all I did. Also, the scrolling menus were almost my downfall.
Lately I’ve just been polishing the game. Nothing super interesting. I fixed the keybindings because when you selected a key with a long name like RightBracket, the label would expand into the button and overlap. I just made a better layout for it and made it so the text would be aligned on the right side, making it expand to the left instead. Then I worked on cleaning up some of my code since I’m planning on shipping tomorrow. Then I added a TON of polish to the main menu. I added a little rotating tip at the bottom and displayed your high score and highest wave at the top of the menu, which was easy enough. I still want to log at least two more hours, so if anyone has ideas, please let me know, because I’m out of ideas. Also, in the pictures, if the text looks sideways, it’s because I rotated it as a little animation. I think the current total for lines of code is 3005, if you’re interested, btw.
Finally finished the game!!! Just posting a quick devlog before shipping. I added satellites and space junk that can fly in from the right side of your screen, which adds an extra obstacle. The only hard part about it was figuring out some physics equations with Newton’s Law of Universal Gravitation. After that, it was finished. Here’s my code if you want to look at it(GDScript): extends Node2D var item = 0 var active_node: Node2D = null var velocity := Vector2.ZERO var rotation_speed := 0.0 var spawning_enabled := true const MIN_SPAWN_TIME = 10.0 const MAX_SPAWN_TIME = 15.0 const PLANET_POSITION = Vector2(300, 1500) const GRAVITY_STRENGTH = 450000.0 @onready var timer = $Timer @onready var small_satellite = $“Small satelltite” @onready var large_satellite = $“Large satellite” @onready var scrap = $Scrap func _ready() -> void: randomize_next_spawn_time() func _process(delta: float) -> void: if active_node and active_node.visible: var vector_to_planet = PLANET_POSITION - active_node.global_position var distance = vector_to_planet.length() var direction = vector_to_planet.normalized() var gravity_force = direction * (GRAVITY_STRENGTH / (distance * distance)) velocity += gravity_force * delta active_node.global_position += velocity * delta active_node.rotation += rotation_speed * delta if active_node.global_position.x < -150: disable_active_node() func _on_timer_timeout() -> void: randomize_next_spawn_time() if not spawning_enabled: return item = randi_range(1, 3) if item == 1: pick_small() elif item == 2: pick_large() else: pick_scrap() func randomize_next_spawn_time() -> void: if timer: timer.wait_time = randf_range(MIN_SPAWN_TIME, MAX_SPAWN_TIME) timer.start() func reset_and_launch(node: Node2D): disable_active_node() small_satellite.hide() large_satellite.hide() scrap.hide() node.show() node.global_position = Vector2(600, randi_range(0, 960)) velocity = Vector2(-150, -45) rotation_speed = randf_range(-1.5, 1.5) if node.has_method("set_deferred"): node.set_deferred("monitoring", true) node.set_deferred("monitorable", true) active_node = node func disable_active_node(): if active_node: active_node.hide() if active_node.has_method(“set_deferred”): active_node.set_deferred(“monitoring”, false) active_node.set_deferred(“monitorable”, false) func stop_spawning() -> void: spawning_enabled = false timer.stop() func start_spawning() -> void: spawning_enabled = true randomize_next_spawn_time() func pick_small(): reset_and_launch(small_satellite) func pick_large(): reset_and_launch(large_satellite) func pick_scrap(): reset_and_launch(scrap) func _on_scrap_body_entered(body: Node2D) -> void: if body.has_method(“take_damage”): body.take_damage() disable_active_node() func _on_large_satellite_body_entered(body: Node2D) -> void: if body.has_method(“take_damage”): body.take_damage() disable_active_node() func _on_small_satelltite_body_entered(body: Node2D) -> void: if body.has_method(“take_damage”): body.take_damage() disable_active_node()
Ships:
Hi! The project I’ve been working on is called Void Strike. It’s a space shooter game in which the player controls a spaceship and must survive hordes of enemy waves. The reason why I chose to create this game is that I thought it would be easy. Since I’ve never really used Godot, I thought I should start simple. By the end of working on it, I can confidently say that I’ve learned at least the basics of the engine. That’s all anyway. Have Fun! Also, last night when I was trying to add it to Itch.io, I accidentally overwrote LITERALLY ALL of my files and everything, so the only thing I have left is the HTML export, and the entire project on my Godot account is just gone, and I can’t recover it, so if there is anything a little buggy, that’s probably why. And I can’t do anything about it, sorry. I just decided to ship it as it currently is instead of not shipping it at all, since I’ve already spent too much of my time on this. Once more, I’m sorry....
|
1792853818.207402
|
1792940218.207402
|