|
6376
|
Soundboword by @Axwabo | Stardance
|
Axwabo
|
1
|
69.0
|
995
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-05T23:05:38Z", "hours": 69.0, "multiplier": 14.42, "payout": 995, "blessing": "neutral", "text": "Soundboword is an actually usable desktop soundboard for (primarily) Linux and (with apparent support for) windows tired of other soundboards paywalling slots? not anymore! [insert Phil Swift Flex Tape meme, not sponsored] this is a .NET app built with Avalonia, SoundFlow, and YoutubeExplode you don’t need to install .NET, it’s compiled into a native binary the SoundFlow backend in use is based on miniaudio, so the app only supports mp3 and wav files download audio from YouTube (paste a link or search) for Linux, there is additional PipeWire support use the PipeWire wizard to create a virtual device named “Soundboword Microphone” which you can select in apps (e.g. Discord) after setting up the microphone, you can use the toggles in the bottom left to manage some node links (connect/disconnect audio nodes) Hear Sounds: plays the soundboard to your headphones Mic Sounds: plays the soundboard into the virtual microphone Mic Passthrough: connects the selected physical microphone to the virtual mic Hear Myself: connects your physical mic to your headphones, echoing what you say windows support is partial, macos support will not be provided global hotkeys should work out of the box on losedows the Linux version uses xdg-desktop-portal for global shortcuts if you have a Launchpad Mini MKII lying around, you can use it with this program :3", "repo": "https://github.com/Axwabo/Soundboword", "demo": "https://github.com/Axwabo/Soundboword/releases/tag/v1.0.0"}]...
|
[{"post_id": 62313, "ts": "202 [{"post_id": 62313, "ts": "2026-09-05T16:50:40Z", "hours": 3.6683, "text": "most likely the last devlog before i outgrow hackclub :’3 finalized the project, improved the CI workflow to bundle the program properly and include 3rd party licenses completed the README added a simple sound “editor” that lets you specify the following: start time: where to begin playback loop start: where to jump when restarting on loop (start of file by default) loop end: the point where loop triggers (end of file by default) made the sidebar (Sounds and Inputs views) consistent added icons to almost every window (Linux crashed because the PipeWire icon wasn’t in that project lol) message to future self: you need the leading slash in the Icon property (e.g. /Assets/sus.ico works but not Assets/sus.ico ) the video shows the new configure sound on trigger click feature, resembling the behavior of Voicemod implemented the missing “Auto Mic Passthrough” (as described in the README) the physical microphone preference is now saved fixed the hidden toggles taking up space on slopdows RowDefinitions don’t support binding, not even OnPlatform :( hopefully i don’t gotta fix anything, and it’s ready to ship"}, {"post_id": 60689, "ts": "2026-09-03T07:25:41Z", "hours": 9.5664, "text": "I’M GONNA TWEAK OUT 9 hours on slopdows bullshit… IT FINALLY WORKS (except not really because removing keybinds doesn’t..?) okay so i restored some of the styling, 0 padding in the Inputs listbox looked bad not sure what else i did that isn’t losedows suffering lmao sooooooo “win”dows is special if you hold Ctrl, it doesn’t call the TextInput event, meaning that i have to translate the Key enum the TextInput event isn’t flawless either, it can be ambiguous (e.g. hungarian layout: AltGr+J = í, AltGr+I = Í, Soundboword makes them uppercase) should i remove the automatic uppercase conversion? i spent a lot of time “debugging” (as in, having the CI build it, download the zip, transfer it to a slopdows machine, since native cross-compilation is not supported) the biggest headache was the shortcut list update handler… i negated the TryAdd call, which meant that the global hotkey would only get registered if the same gesture has been added to the dictionary already (therefore it would only work on subsequent binds) i spent way too much time figuring this out another oversight was the lack of Target assignment when you clicked ⚙️ on an input method, meaning that binding shortcuts did nothing idk why the entire panel is bold, gotta fix that hotkeys are temporarily removed while you’re assigning a shortcut however, as mentioned before, this doesn’t work xd i tried it on a slopdows laptop, and removing the A hotkey made the A key unusable until i closed Soundboword setting up CI wasn’t difficult, gotta make sure to separate rm commands and use -f so files not found don’t error using || doesn’t run the latter command if the first one succeeds, i should’ve known that"}, {"post_id": 41841, "ts": "2026-08-06T09:41:33Z", "hours": 2.6206, "text": "i did mostly polishing work during this time, now i can torture myself with windows global shortcuts gotta crash out first though cuz this wonderful website has 3 different markdown renderers somehow, and i’ve been using --- to make sections actually separate changed the TabControl to a TabStrip so i can use my on page switching logic most views are only created once now, which gives a slight performance boost i’d noticed that quickly switching between tabs while using TabControl lead to slight crackles in audio, that’s taken care of now oh and you can use the Tab key to navigate, cuz TabStrip can magically do that getting the lazy-ish loading was pretty funky though, UserControls are lazy by default so i had to hack around it to preload the views by setting IsVisible to false after the control loads (i think that’s what i did, i kinda forgor) fixed the YouTube stream loader, and added a local error display so you can immediately see if something went wrong made it so non-bound XDG-Desktop-Portal shortcuts are no longer detected removed the sound edit button for now, i would like to ship without having to figure all that out made StackPanel spacing mostly uniform using a style selector, though it looks pretty bad in device selectors general settings & logging settings are now saved and loaded added Rescan and Relink All buttons Rescan checks not found files again to locate them Relink All lets you pick directories to look for not found sounds by their filenames in the video, i unmounted the disk that had some files, then relinked sounds to locate it elsewhere"}, {"post_id": 36680, "ts": "2026-07-28T21:57:59Z", "hours": 4.8294, "text": "dev log about logging, crazy added logging in-app and also to files you can configure log levels, None disables file logging altogether i was looking around to find a simple file logger for Microsoft.Extensions.Logging, but i didn’t like it so i made my own, even simpler version took a bunch of attempts to make the architecture bearable, but it’s still kinda jank with the existence of LogPreferences.Instance (instead of using the service provider… but whatever, i make the rules :3) turns out that MultiBinding doesn’t work for a bool that hides the bottom bar (idk why), so i did some wiring by subscribing to PropertyChanged in the preferences and the log list only at the time of recording did i realize that the initial value isn’t set properly, so i gotta fix that tried to set PublishAot to true for all projects (so i don’t have to specify it in dotnet publish ), but that breaks the preview, so i had to revert the change unhandled UI exceptions are now written to the file the unobserved task exception event just… doesn’t seem to fire… i got rid of that tried to use SemaphoreSlim to make the exiting thread block until an in-progress write operation completes, but that probably caused a deadlock because the app wouldn’t close if a log entry happens to be in the middle of being written while you’re quitting, it gets cut in half, oh well fun fact: the ItemsRepeater Avalonia control exists on GitHub, even the docs describe how to use it, but it just didn’t show up for me despite using the latest Avalonia version this made me use a ListBox, which has selection (although you can’t see it because of the background of each log entry)"}, {"post_id": 34591, "ts": "2026-07-25T13:27:50Z", "hours": 4.0242, "text": "made settings sections with a whole lot of unnecessary abstractions for the funny [FromKeyedServices] when i could just access a static instance? absolutely yes!! i couldn’t figure out how to style the children of an ItemsControl externally, so i had to give it an ItemTemplate with a class (which would be unnecessary if i could style the thing) all that for a separator line… and padding… and margin… what if i just nuke this idea and simply have some spacing between the sections? i tried organizing classes into vertical slices architecture, but i gave up and only did it for the Linux project instead the using updates would’ve been funky + some global usings would become useless PipeWire the toggle list now no longer “flickers” on/off when refreshing devices, as i only set the link manager after PipeWire objects have been queried device lists and link toggles are now disabled when switching devices so the user doesn’t accidentally break the linking process added a button that refreshes links (in case things go wrong somehow) you can now select the physical microphone from the PipeWire list, and it will update links this preference isn’t saved to disk just yet in my last devlog i mentioned some issues, which have now been fixed: upon startup, the first two switches don’t work sometimes (race condition maybe?) turns out that i had forgotten to add a potentially valid node to the list after looping through all lines, so it just discarded the last entry certain links might not reconnect properly when switching the output device what did i do to fix that? i’m not sure anymore maybe it was a bit of delay? this one might be linked related to the former issue"}, {"post_id": 34223, "ts": "2026-07-24T19:01:37Z", "hours": 8.9867, "text": "PIPEWIRE WORKS!!1!1! spent almost all day adding PipeWire node linking support i was genuinely tweaking when i found out that the pw-cli create-link command doesn’t create a link… it does NOTHING wishful thinking to assume that i can simply tell PipeWire to connect nodes automatically now i have to query the ports, too, and connect those automatically; make sure to sort them, otherwise the channels might be mixed up ahaha (a0b498e7 khm khm) i spent plenty of the time debugging, the parser i wrote had some funky stuff how to use it there are 4 toggles you can activate, as shown in the video: sounds to primary output: this will play the soundboard’s audio in your headphones/primary speakers sounds to virtual mic: forwards soundboard audio to the virtual microphone, letting others (e.g. in a call or in a game) hear the sounds mic passthrough: connects your “real” microphone to the virtual microphone, allowing others to hear your voice when using the virtual mic hear myself: connects your real microphone to your primary output device more issues upon startup, the first two switches don’t work sometimes (race condition maybe?) certain links might not reconnect properly when switching the output device (it used to be worse when i queried links every time; it would connect only one port to the destination because the port ID was now assigned to something else) some miscellaneous fixes: fixed certain issues with xdg-desktop-portal shortcut assignments removed the upload date from YouTube video views fixed the NativeAOT build (an attribute was missing that let the ServiceProvider know not to strip view & viewmodel constructors) added a DataToggle control that inherits from ToggleSwitch : clicking on it doesn’t toggle it automatically, the binding controls the state"}, {"post_id": 32372, "ts": "2026-07-21T14:38:36Z", "hours": 6.5217, "text": "FINALLY figured out how to interface with xdg-desktop-portal, global shortcuts now work on Linux!!! (with a caveat ofc) subsequent bind requests to the same action will just be ignored by the portal, even if you closed the dialog without binding any shortcuts you should still be abe to bind them in System Settings props to Pinta for the example on how to do this (the DBus flow kinda sucks ngl) making this was partially possible because Avalonia updated to the latest Tmds.DBus version adjusted the YouTube downloader layout: removed the description in favor of a stream selector that also got rid of the upload date, oops added a dummy ✏️ button to sounds (basic editor coming soon) i don’t even want to think about how i’ll render waveforms without making the system go kaboom also added a number input for volume, letting users type in the desired percentage Avalonia magically handles the percentage conversion, i didn’t have to make a converter that multiplies the input by 0.01 made pages dynamic, fixing the inconsistent layout this will make it easier to add platform-specific tabs instead of having to dump everything into settings TabStrip just didn’t work properly, so i’ll stick with the TabControl (which doesn’t have… tab… focus…) OtherSoundInteraction now lets you mute, pause or stop other sounds when a new playback is triggered adopted Injectio so i can slap a [RegisterSingleton] attribute on each class i want in dependency injection without having to go to a different place to add a statement the “Stop All Instances” button is now replaced by the “Relink” button for files that were not found you can now drag-and-drop sounds into the board from the file manager"}, {"post_id": 9155, "ts": "2026-06-15T10:26:57Z", "hours": 6.5614, "text": "Did a bit of refactoring to accomodate for later NativeAOT support: Each view & viewmodel has to be registered as a service Moved to source-generated JSON handling Hopefully, NativeAOT will make the app noticeably faster when I publish the project Added global usings, and split up the project for better platform-specific service organization Fixed the delete button not stopping the sound (how did I manage to fail that??) Replaced the loop toggle with an Assign Shortcut button for quick access I think the latter will be used more often, but having the loop toggle update two buttons at once was really cool Sounds can now be added from YouTube; they are cached for fast access (how else would it work xd) The window is not a dialog, so you can still interact with the soundboard while waiting for download(s) (Idk if dialogs prevent interactions on some desktop environments tbh) This is not the final layout, but it looks decent for now: clicking on a video (left side) takes you to the details page (right side) in the same window Fun fact: pasting a youtube link automatically opens the video view, letting you download it even while the details are loading (will have to fix that up a little)"}, {"post_id": 7556, "ts": "2026-06-12T17:03:41Z", "hours": 5.6711, "text": "More (almost zero) progress on global shortcuts: I’ve figured out the object path & destination from the Kotlin library zugaldia/stargate , but xdg-desktop-portal just crashes now upon calling CreateSession Nothing usable yet Added a devices page to select the output device I tried to implement device switching by creating a separate Mixer, but SoundFlow already has functionality for that, so it became much simpler Refactored code to use the new SoundFlowDeviceManager A “Stop All Sounds” shortcut can now be assigned to each input when clicking the gear icon next to it Fixed shortcut assignment not working after switching pages Editing context is reopened on page change The SelectionChanged event fired for every child control, not just the TabControl -> I now check for the source of the event Attempted to add consistent text alignment in tab headers, that turned out to be stupid, so I just added a space after the Playbacks emoji Removed the “Raise Maximum Volume” (a 0-150% range makes more sense imo) Adjusted buttons in the sound editing view, this is not yet final On the image you can see a pipewire graph I created, this is similar to how I want it to work A sink for soundboard output which can be forwarded to the primary output device (e.g. headphones) A mixer virtual device (discord doesn’t support sinks) that combines the microphone input and the soundboard sink, acting as a virtual mic which can be selected in apps From a bit of testing, it turns out that connecting a sink to the primary output device produces some annoying popping, so I’ll probably just link/unlink the app’s playback to/from the primary output device, too"}, {"post_id": 6330, "ts": "2026-06-10T17:29:02Z", "hours": 4.1664, "text": "Added pages & tabs to better separate UI Activated inputs are now saved and loaded Sound state is now displayed better, it includes missing file detection (exceptions are not yet handled) Using a MultiBinding and an IMultiValueConverter with an enum didn’t work for some reason New page: playbacks It shows all sounds, their current time Will need a redesign Pro tip: don’t call Dispatcher.Post in a method you called Dispatcher.Post in (it will keep updating the UI but prevents user input, you can’t even close the window normally) Did a bit of refactoring: AudioManager is now a service Removed the Host service, the desktop lifetime and the TopLevel will be injected Added an overlay when a file dialog is open (because unlike windows, not all OSes/desktop environments prevent interactions in this situation)"}, {"post_id": 5129, "ts": "2026-06-08T20:23:24Z", "hours": 5.0069, "text": "Implemented input handling for the Launchpad Mini, now I’ll be able to press pads to play sounds Creating the shortcuts system took a few iterations, I wasn’t happy with the code I wrote Shortcuts can be removed even when the input method isn’t active, which wasn’t possible in an earlier iteration Also implemented settings saving when the app exits"}, {"post_id": 2246, "ts": "2026-06-04T17:06:50Z", "hours": 5.5297, "text": "Added a proper UI for triggering sounds with modes similar to that of voicemod (start -> stop, start -> restart, play -> pause, duplicate) I played around with 2 rows below the big button but that seemed to take up too much space, so I moved them to the sound editor (which isn’t fully functional yet) On the right side you can see input methods, which will include global shortcuts later (DBus is confusing af, the win32 api might actually be easier to work with 💀) (Yes, I’ve half-made a global keyboard handler for windows previously) Emojis are fairly expressive imo, but there are tooltips that describe what each button does The layout definitely needs improvements, but it’s something ig Also implemented loading sounds on startup, as well as saving when a new sound is added"}, {"post_id": 1536, "ts": "2026-06-03T16:49:22Z", "hours": 1.8456, "text": "Created the very base of the project with Avalonia and SoundFlow, sound playback works Spent a bunch of time trying to figure out the DBus interface for XDG global shortcuts (Linux part of keybinds): Somehow I grabbed the impl xml, not the one i needed It still doesn’t work, gonna need to debug it later I was trying to write abysmal code based on what Avalonia has: https://github.com/AvaloniaUI/Avalonia/blob/12.0.4/src/Avalonia.FreeDesktop/DBusSystemDialog.cs The source generator used in the latest Avalonia release is a different source generator from what i saw on master, that caused a bit of a headache"}]...
|
Title: Soundboword by @Axwabo | Stardance
Devlogs Title: Soundboword by @Axwabo | Stardance
Devlogs:
Created the very base of the project with Avalonia and SoundFlow, sound playback works Spent a bunch of time trying to figure out the DBus interface for XDG global shortcuts (Linux part of keybinds): Somehow I grabbed the impl xml, not the one i needed It still doesn’t work, gonna need to debug it later I was trying to write abysmal code based on what Avalonia has: https://github.com/AvaloniaUI/Avalonia/blob/12.0.4/src/Avalonia.FreeDesktop/DBusSystemDialog.cs The source generator used in the latest Avalonia release is a different source generator from what i saw on master, that caused a bit of a headache
Added a proper UI for triggering sounds with modes similar to that of voicemod (start -> stop, start -> restart, play -> pause, duplicate) I played around with 2 rows below the big button but that seemed to take up too much space, so I moved them to the sound editor (which isn’t fully functional yet) On the right side you can see input methods, which will include global shortcuts later (DBus is confusing af, the win32 api might actually be easier to work with 💀) (Yes, I’ve half-made a global keyboard handler for windows previously) Emojis are fairly expressive imo, but there are tooltips that describe what each button does The layout definitely needs improvements, but it’s something ig Also implemented loading sounds on startup, as well as saving when a new sound is added
Implemented input handling for the Launchpad Mini, now I’ll be able to press pads to play sounds Creating the shortcuts system took a few iterations, I wasn’t happy with the code I wrote Shortcuts can be removed even when the input method isn’t active, which wasn’t possible in an earlier iteration Also implemented settings saving when the app exits
Added pages & tabs to better separate UI Activated inputs are now saved and loaded Sound state is now displayed better, it includes missing file detection (exceptions are not yet handled) Using a MultiBinding and an IMultiValueConverter with an enum didn’t work for some reason New page: playbacks It shows all sounds, their current time Will need a redesign Pro tip: don’t call Dispatcher.Post in a method you called Dispatcher.Post in (it will keep updating the UI but prevents user input, you can’t even close the window normally) Did a bit of refactoring: AudioManager is now a service Removed the Host service, the desktop lifetime and the TopLevel will be injected Added an overlay when a file dialog is open (because unlike windows, not all OSes/desktop environments prevent interactions in this situation)
More (almost zero) progress on global shortcuts: I’ve figured out the object path & destination from the Kotlin library zugaldia/stargate , but xdg-desktop-portal just crashes now upon calling CreateSession Nothing usable yet Added a devices page to select the output device I tried to implement device switching by creating a separate Mixer, but SoundFlow already has functionality for that, so it became much simpler Refactored code to use the new SoundFlowDeviceManager A “Stop All Sounds” shortcut can now be assigned to each input when clicking the gear icon next to it Fixed shortcut assignment not working after switching pages Editing context is reopened on page change The SelectionChanged event fired for every child control, not just the TabControl -> I now check for the source of the event Attempted to add consistent text alignment in tab headers, that turned out to be stupid, so I just added a space after the Playbacks emoji Removed the “Raise Maximum Volume” (a 0-150% range makes more sense imo) Adjusted buttons in the sound editing view, this is not yet final On the image you can see a pipewire graph I created, this is similar to how I want it to work A sink for soundboard output which can be forwarded to the primary output device (e.g. headphones) A mixer virtual device (discord doesn’t support sinks) that combines the microphone input and the soundboard sink, acting as a virtual mic which can be selected in apps From a bit of testing, it turns out that connecting a sink to the primary output device produces some annoying popping, so I’ll probably just link/unlink the app’s playback to/from the primary output device, too
Did a bit of refactoring to accomodate for later NativeAOT support: Each view & viewmodel has to be registered as a service Moved to source-generated JSON handling Hopefully, NativeAOT will make the app noticeably faster when I publish the project Added global usings, and split up the project for better platform-specific service organization Fixed the delete button not stopping the sound (how did I manage to fail that??) Replaced the loop toggle with an Assign Shortcut button for quick access I think the latter will be used more often, but having the loop toggle update two buttons at once was really cool Sounds can now be added from YouTube; they are cached for fast access (how else would it work xd) The window is not a dialog, so you can still interact with the soundboard while waiting for download(s) (Idk if dialogs prevent interactions on some desktop environments tbh) This is not the final layout, but it looks decent for now: clicking on a video (left side) takes you to the details page (right side) in the same window Fun fact: pasting a youtube link automatically opens the video view, letting you download it even while the details are loading (will have to fix that up a little)
FINALLY figured out how to interface with xdg-desktop-portal, global shortcuts now work on Linux!!! (with a caveat ofc) subsequent bind requests to the same action will just be ignored by the portal, even if you closed the dialog without binding any shortcuts you should still be abe to bind them in System Settings props to Pinta for the example on how to do this (the DBus flow kinda sucks ngl) making this was partially possible because Avalonia updated to the latest Tmds.DBus version adjusted the YouTube downloader layout: removed the description in favor of a stream selector that also got rid of the upload date, oops added a dummy ✏️ button to sounds (basic editor coming soon) i don’t even want to think about how i’ll render waveforms without making the system go kaboom also added a number input for volume, letting users type in the desired percentage Avalonia magically handles the percentage conversion, i didn’t have to make a converter that multiplies the input by 0.01 made pages dynamic, fixing the inconsistent layout this will make it easier to add platform-specific tabs instead of having to dump everything into settings TabStrip just didn’t work properly, so i’ll stick with the TabControl (which doesn’t have… tab… focus…) OtherSoundInteraction now lets you mute, pause or stop other sounds when a new playback is triggered adopted Injectio so i can slap a [RegisterSingleton] attribute on each class i want in dependency injection without having to go to a different place to add a statement the “Stop All Instances” button is now replaced by the “Relink” button for files that were not found you can now drag-and-drop sounds into the board from the file manager
PIPEWIRE WORKS!!1!1! spent almost all day adding PipeWire node linking support i was genuinely tweaking when i found out that the pw-cli create-link command doesn’t create a link… it does NOTHING wishful thinking to assume that i can simply tell PipeWire to connect nodes automatically now i have to query the ports, too, and connect those automatically; make sure to sort them, otherwise the channels might be mixed up ahaha (a0b498e7 khm khm) i spent plenty of the time debugging, the parser i wrote had some funky stuff how to use it there are 4 toggles you can activate, as shown in the video: sounds to primary output: this will play the soundboard’s audio in your headphones/primary speakers sounds to virtual mic: forwards soundboard audio to the virtual microphone, letting others (e.g. in a call or in a game) hear the sounds mic passthrough: connects your “real” microphone to the virtual microphone, allowing others to hear your voice when using the virtual mic hear myself: connects your real microphone to your primary output device more issues upon startup, the first two switches don’t work sometimes (race condition maybe?) certain links might not reconnect properly when switching the output device (it used to be worse when i queried links every time; it would connect only one port to the destination because the port ID was now assigned to something else) some miscellaneous fixes: fixed certain issues with xdg-desktop-portal shortcut assignments removed the upload date from YouTube video views fixed the NativeAOT build (an attribute was missing that let the ServiceProvider know not to strip view & viewmodel constructors) added a DataToggle control that inherits from ToggleSwitch : clicking on it doesn’t toggle it automatically, the binding controls the state
made settings sections with a whole lot of unnecessary abstractions for the funny [FromKeyedServices] when i could just access a static instance? absolutely yes!! i couldn’t figure out how to style the children of an ItemsControl externally, so i had to give it an ItemTemplate with a class (which would be unnecessary if i could style the thing) all that for a separator line… and padding… and margin… what if i just nuke this idea and simply have some spacing between the sections? i tried organizing classes into vertical slices architecture, but i gave up and only did it for the Linux project instead the using updates would’ve been funky + some global usings would become useless PipeWire the toggle list now no longer “flickers” on/off when refreshing devices, as i only set the link manager after PipeWire objects have been queried device lists and link toggles are now disabled when switching devices so the user doesn’t accidentally break the linking process added a button that refreshes links (in case things go wrong somehow) you can now select the physical microphone from the PipeWire list, and it will update links this preference isn’t saved to disk just yet in my last devlog i mentioned some issues, which have now been fixed: upon startup, the first two switches don’t work sometimes (race condition maybe?) turns out that i had forgotten to add a potentially valid node to the list after looping through all lines, so it just discarded the last entry certain links might not reconnect properly when switching the output device what did i do to fix that? i’m not sure anymore maybe it was a bit of delay? this one might be linked related to the former issue
dev log about logging, crazy added logging in-app and also to files you can configure log levels, None disables file logging altogether i was looking around to find a simple file logger for Microsoft.Extensions.Logging, but i didn’t like it so i made my own, even simpler version took a bunch of attempts to make the architecture bearable, but it’s still kinda jank with the existence of LogPreferences.Instance (instead of using the service provider… but whatever, i make the rules :3) turns out that MultiBinding doesn’t work for a bool that hides the bottom bar (idk why), so i did some wiring by subscribing to PropertyChanged in the preferences and the log list only at the time of recording did i realize that the initial value isn’t set properly, so i gotta fix that tried to set PublishAot to true for all projects (so i don’t have to specify it in dotnet publish ), but that breaks the preview, so i had to revert the change unhandled UI exceptions are now written to the file the unobserved task exception event just… doesn’t seem to fire… i got rid of that tried to use SemaphoreSlim to make the exiting thread block until an in-progress write operation completes, but that probably caused a deadlock because the app wouldn’t close if a log entry happens to be in the middle of being written while you’re quitting, it gets cut in half, oh well fun fact: the ItemsRepeater Avalonia control exists on GitHub, even the docs describe how to use it, but it just didn’t show up for me despite using the latest Avalonia version this made me use a ListBox, which has selection (although you can’t see it because of the background of each log entry)
i did mostly polishing work during this time, now i can torture myself with windows global shortcuts gotta crash out first though cuz this wonderful website has 3 different markdown renderers somehow, and i’ve been using --- to make sections actually separate changed the TabControl to a TabStrip so i can use my on page switching logic most views are only created once now, which gives a slight performance boost i’d noticed that quickly switching between tabs while using TabControl lead to slight crackles in audio, that’s taken care of now oh and you can use the Tab key to navigate, cuz TabStrip can magically do that getting the lazy-ish loading was pretty funky though, UserControls are lazy by default so i had to hack around it to preload the views by setting IsVisible to false after the control loads (i think that’s what i did, i kinda forgor) fixed the YouTube stream loader, and added a local error display so you can immediately see if something went wrong made it so non-bound XDG-Desktop-Portal shortcuts are no longer detected removed the sound edit button for now, i would like to ship without having to figure all that out made StackPanel spacing mostly uniform using a style selector, though it looks pretty bad in device selectors general settings & logging settings are now saved and loaded added Rescan and Relink All buttons Rescan checks not found files again to locate them Relink All lets you pick directories to look for not found sounds by their filenames in the video, i unmounted the disk that had some files, then relinked sounds to locate it elsewhere
I’M GONNA TWEAK OUT 9 hours on slopdows bullshit… IT FINALLY WORKS (except not really because removing keybinds doesn’t..?) okay so i restored some of the styling, 0 padding in the Inputs listbox looked bad not sure what else i did that isn’t losedows suffering lmao sooooooo “win”dows is special if you hold Ctrl, it doesn’t call the TextInput event, meaning that i have to translate the Key enum the TextInput event isn’t flawless either, it can be ambiguous (e.g. hungarian layout: AltGr+J = í, AltGr+I = Í, Soundboword makes them uppercase) should i remove the automatic uppercase conversion? i spent a lot of time “debugging” (as in, having the CI build it, download the zip, transfer it to a slopdows machine, since native cross-compilation is not supported) the biggest headache was the shortcut list update handler… i negated the TryAdd call, which meant that the global hotkey would only get registered if the same gesture has been added to the dictionary already (therefore it would only work on subsequent binds) i spent way too much time figuring this out another oversight was the lack of Target assignment when you clicked ⚙️ on an input method, meaning that binding shortcuts did nothing idk why the entire panel is bold, gotta fix that hotkeys are temporarily removed while you’re assigning a shortcut however, as mentioned before, this doesn’t work xd i tried it on a slopdows laptop, and removing the A hotkey made the A key unusable until i closed Soundboword setting up CI wasn’t difficult, gotta make sure to separate rm commands and use -f so files not found don’t error using || doesn’t run the latter command if the first one succeeds, i should’ve known that
most likely the last devlog before i outgrow hackclub :’3 finalized the project, improved the CI workflow to bundle the program properly and include 3rd party licenses completed the README added a simple sound “editor” that lets you specify the following: start time: where to begin playback loop start: where to jump when restarting on loop (start of file by default) loop end: the point where loop triggers (end of file by default) made the sidebar (Sounds and Inputs views) consistent added icons to almost every window (Linux crashed because the PipeWire icon wasn’t in that project lol) message to future self: you need the leading slash in the Icon property (e.g. /Assets/sus.ico works but not Assets/sus.ico ) the video shows the new configure sound on trigger click feature, resembling the behavior of Voicemod implemented the missing “Auto Mic Passthrough” (as described in the README) the physical microphone preference is now saved fixed the hidden toggles taking up space on slopdows RowDefinitions don’t support binding, not even OnPlatform :( hopefully i don’t gotta fix anything, and it’s ready to ship
Ships:
Soundboword is an actually usable desktop soundboard for (primarily) Linux and (with apparent support for) windows tired of other soundboards paywalling slots? not anymore! [insert Phil Swift Flex Tape meme, not sponsored] this is a .NET app built with Avalonia, SoundFlow, and YoutubeExplode you don’t need to install .NET, it’s compiled into a native binary the SoundFlow backend in use is based on miniaudio, so the app only supports mp3 and wav files download audio from YouTube (paste a link or search) for Linux, there is additional PipeWire support use the PipeWire wizard to create a virtual device named “Soundboword Microphone” which you can select in apps (e.g. Discord) after setting up the microphone, you can use the toggles in the bottom left to manage some node links (connect/disconnect audio nodes) Hear Sounds: plays the soundboard to your headphones Mic Sounds: plays the soundboard into the virtual microphone Mic Passthrough: connects the selected physical microphone to the virtual mic Hear Myself: connects your physical mic to your headphones, echoing what you say windows support is partial, macos support will not be provided global hotkeys should work out of the box on losedows the Linux version uses xdg-desktop-portal for global shortcuts if you have a Launchpad Mini MKII lying around, you can use it with this program :3...
|
1793339337.7360632
|
1793425737.7360632
|
|
6400
|
Minecraft Web by @TruthEntity | Stardance
|
TruthEntity
|
2
|
160.71
|
1901
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-06T10:33:36Z", "hours": 73.0, "multiplier": 15.82, "payout": 1127, "blessing": "neutral", "text": "NOTE: Please Skip Voting, if it failed to run on your system please… Hi Friends, so, I have been working on Minecraft for a long time, and Virtually touching grass LOL.. AKA, Making Minecraft, it is quite challenging to say the least, you can check my devlogs.. Basically, I want to make a very very optimized version of minecraft, that you can see through far and far, and highly optimized. I want to add lighting and all, but the banner is a bit misleading.. I will continue to work on the project, but obviously, not Three.js, because What I have learnt is that.. You can use engines like Unity and Unreal, and make goated projects, the feel of making optimized content, and making it run even on a potato, is just on another level.. Seeing the entire generation moving towards fast making and prototyping, it is always a safe bet to try something new and interesting. This is one of the prototypes that taught me a lot, from How to deal with chunks, and manage chunks, to making biomes, which was actually new.. Chunks I have worked with AI before, and it helped me a ton, and I know about those, but not here.. Hope you love my project", "repo": "https://github.com/SatyamRaj67/Minecraft-with-Three", "demo": "https://satyamraj67.github.io/Minecraft-with-Three/"}, {"ship_num": 2, "ts": "2026-06-15T05:58:35Z", "hours": 58.0, "multiplier": 14.37, "payout": 774, "blessing": "neutral", "text": "Basically, What I have made is Minecraft Web, well Minecraft but on the Website, running on your Browser. Through the Power of Optimizations and knowing how to code, and also using AI for my shader building and debugging bugs like IDK, What I have done to my life. But Basically, I made my own Engine just to prove that You don’t always need THREE.js to do your heavy lifting, and honestly, it was not that hard. You can see the source code, just a few days ago, I refactored it. Hope you love and enjoy my project.", "repo": "https://github.com/SatyamRaj67/Minecraft-with-Three", "demo": "https://satyamraj67.github.io/Minecraft-with-Three/"}]...
|
[{"post_id": 31749, "ts": "202 [{"post_id": 31749, "ts": "2026-07-20T12:00:53Z", "hours": 0.5433, "text": "Hi Everyone, My Devlogs have been lacking a bit, and this another quick devlog, because, I am really not feeling good these days. I am having fever and not feeling great about anything. Currently, I was just searching and asking AI about chunk generation. One of the things, where AI is now needed, because I know noise generation, but I don’t really know, how to make it into reality, and specially when people want realistic chunk generation and all.. I will get into good and start fixing first of all, this light problem, and then just hope, I get well soon, because India’s heat waves are really no joke. My Indian Friends.. Please stay safe and inside house.. IDK, Why even schools are open.."}, {"post_id": 30259, "ts": "2026-07-17T18:05:03Z", "hours": 1.0661, "text": "I literally been sick for 2 days, and now that I come back, I somehow see worse.. Like, I wanted to implement meshing and all.. GUESS WHAT I DONE.. YES, MESHED THE ENTIRE WORLD TO DISAPPEAR.. BALLS… I AM GUAVA AND I WILL EAT MYSELF.. That’s enough coding for today as well, signing off.."}, {"post_id": 30030, "ts": "2026-07-17T08:56:17Z", "hours": 3.1806, "text": "67 Structure Implemented and running, and to those who recommended me this.. GUYS YOU REALLY NEED TO SEE A THERAPY OR SOMETHING.. LMAO.."}, {"post_id": 28175, "ts": "2026-07-14T09:36:33Z", "hours": 2.6172, "text": "Procedural Generation unlocked, now, you can move as much as you want, and play. Current, block placing and all won’t work, but yah.. Frustum Culling is working as you can see with the culled meter."}, {"post_id": 27634, "ts": "2026-07-13T12:05:35Z", "hours": 4.9944, "text": "Added some simple tests for the ECS system and the topological sort Kahn’s Algorithm system and the Event Bus, so as to 100% confirm the workings of what is intended and what is not.. Also there was a problem with connection of gbuffers into swap chain, so had to make a custom pass called, composite pass, that will intercept and then gives us the necessary output. This might add very minute delay, but it is very unnoticable so don’t worry.."}, {"post_id": 27195, "ts": "2026-07-12T15:17:58Z", "hours": 0.6597, "text": "Sorry, ANOTHER QUICK UPDATE I KNOW.. But trust me, this took me ages to implement, and yes, had to work from backwards, because and again found out, There was nothing being connected to the swapchain for some reason.. It’s actually really not that hard to find bugs when you are used to it, like when something isn’t rendering you know, something must be wrong with renderer and all.. and a quick side step, and you understand yah, swapchain being uninitialized is the key."}, {"post_id": 27162, "ts": "2026-07-12T14:03:45Z", "hours": 0.7392, "text": "LMAO, You know, you are at the pinnacle when you are going through forums and forums of actually big stuff, that very very few people ever talk about.. Literally.."}, {"post_id": 27117, "ts": "2026-07-12T11:58:08Z", "hours": 4.5569, "text": "Been some time, and the amount of Logs that I am going through is just.. LMAO.. Crazy Crazy.. For my 67 fans, just give me like a few more moments.. Because, Now, I just want to render one block, and I will just add a sky, which will be a simple color gradient, and then I will work on whatever you that 67 thing.. This was really hectic to implement.. Literally had to go through and implement Archetype.. Yes, even I don’t know what they are… But after like learning about it, here is my understanding.. Archetype is basically a central place to keep all the components and all. Remember, we are optimizing the sheesh out of this project.. Archetypes allow us to apply the same gravity and same systems like Physics, collisions and so on, while still giving you customizabilty on if you want to enable it or not.. It’s really cool, but the amount of things I had to implement.. That’s some brutal stuff… Imagine, you forgot to plug the input system, and you are crashing out on, HOW TO FAH THE POSITION IS NOT CHANGING?? LOL, YAH 2 HOURS OF DEBUGGING WENT THERE, only to realise, I forgot to add that.. LOL.."}, {"post_id": 26687, "ts": "2026-07-11T16:55:52Z", "hours": 5.4511, "text": "I am crashing out a lot over some assets, because first of all, why is the grass block not green and a colormap, I mean, it does look cool.. BUT COME ON, THAT’S A MENTAL TRAUMA AND NOW WHICH COLOR OF GRASS SHOULD I PICK.. Furthermore, this is also a problem with water and all.. I am trying to find better ways, and actually learn about how Minecraft renders these and turns out, they just.. well.. OVERLAY A GREEN MAP or BLUE MAP over the grass.. I mean, that sounds HORRIBLE TO IMPLEMENT, MY GOD, THIS GAME SU…. IS FINE.. AND FUN.. Furthermore, thank you so so so much for all the reviewers out there.. The fact you guys appreciated my project, and said it is Fine to be using AI.. It just blew my heart.. This is the reason why I am currently working, else, I had already blew my mind with so much complex debugging, such that, I had to make my own engine, and debugger.. As with the latest you can see.. Things are tough but yah.. Also, I see you @skhsmrn on my devlog and another reviewer.. Your demands for 67 WILL BE FULFILLED SOON TM.."}, {"post_id": 25348, "ts": "2026-07-09T16:07:34Z", "hours": 1.0511, "text": "I have connected my GPU now, and details are also loading nicely.. I will working on GPU Frames and all as well now."}, {"post_id": 24257, "ts": "2026-07-07T18:18:55Z", "hours": 4.8525, "text": "I almost crashed out today. It was a hectic of a job today for me.. Basically, Today I wanted to work on Debugging tools in my original minecraft version. Though, this was hectic of a job, but now I am confident enough to say that, if anything goes wrong, my error codes will instantly trigger and stop those bugs to ever reach me, specially, If I messed up something. This is specifically made to guard rail myself (as I am a newbie in the GPU optimization and just breaks stuff way too often for comfort during my learning steps..) Now, you might be working what is so special that I did that I am being too optimistic (Specially if you know my history of crashouts LOL…) So, Basically, This time, I researched about an algorithm for dependencies.. Basically, what npm uses to keep track of all the dependencies.. You never know where knowledge might reach you LOL.. So, Basically, now each file, or system like Player, Physics, and to add, Chunks and More, will have to implement system, and each system would have a dependency tree, and then by using Kahn’s Algorithm, we can literally turn that tree upside down, and go through the data and make it work.. It literally tells you, which files are Missing in your code, that is just too good.. The only one critic is that, each time you need to be assing a new attribute, which might be tedious, but the profits are way too big to ignore at all.."}, {"post_id": 23398, "ts": "2026-07-06T10:26:26Z", "hours": 2.1028, "text": "Final few fixes before shipping, added biome support, and now I will be ready to be trying to make a project, without following tutorial, trying to optimize it, because obviously, three.js, though sounds cool and all.. Uses WebGL, which is widely supported.. but I want to use your entire GPU.. because obviously.. I PAID FOR THE ENTIRE GPU.. (BTW, I don’t even have a GPU, I have what is called Shared GPU Memory with storage but anyways.. THAT IS NOT THE POINT..)"}, {"post_id": 23315, "ts": "2026-07-06T05:58:40Z", "hours": 2.9458, "text": "Added Water, Trees, Sand and polish to my project… Like the toolbar, you can see in the bottom. Clean and Elegant.. COMMENT 67 IF YOU WANT TO SEE A 67 STRUCTURE ADDED TO MY GAME… ;)"}, {"post_id": 22734, "ts": "2026-07-05T09:50:57Z", "hours": 4.8264, "text": "I want to ask, How do you literally add shadows, and fog, and everything and that so, all in just one line of code? That is just stupid to even think about.. But anyways, now I have made it so, you can break and place blocks and also, if you render out from the world, and come back in, the blocks will still be there.. BE READY FOR ANOTHER ROUND OF 67 … OH WAIT.. NEXT DEVLOG WILL BE 67.. OR WAIT, LET ME JUST.. LOL, 100% NOT A STRUCTURE IN GAME.. (ATLEAST FOR NOW.. HEHEHEHE)"}, {"post_id": 22082, "ts": "2026-07-04T10:32:13Z", "hours": 0.3108, "text": "Guys Just imagine a world, where the whole life is actually a simulation, and God is literally using his laptop like this, to see what you are doing.. (AND YES, YOU WERE BANGING YOUR HEAD, JUST NOT ON GRASS.. DON’T LIE TO ME.. I AM SEEING YOU..)"}, {"post_id": 22052, "ts": "2026-07-04T09:31:51Z", "hours": 1.9986, "text": "Collisions are now working, with this beautiful looking icosphere as an helper. I JUST WISH WEBGPU OFFERED SUCH CUSTOMIZABILITY.. BUT TRUST ME, I AM GOING TO ADD THESE INTO THE MAIN PROJECT AS WELL.. Three.JS is just so cool.. But again, my goal is to make it the most optimized stuff and see the Entire Earth, and not be happy with just collisions.. SO Let me just complete this tutorial, but I am having a blast."}, {"post_id": 21954, "ts": "2026-07-04T04:53:29Z", "hours": 0.4147, "text": "I hate to admit it, but did I just add, literal shadows, that would have taken me, so so much hours to be working on.. And THREE.JS SOMEHOW, LITERALLY HAS A FREAKING FUNCTION.. THAT DOES THAT AUTOMATICALLY?? EXCUSE ME??? THAT’S JUST CHEATING.."}, {"post_id": 21906, "ts": "2026-07-04T02:37:42Z", "hours": 0.9956, "text": "This really feels surreal.. I am editing parameters to a game, in which people will land their beautiful foot on, ad mine ores, and do stuff, and this is like a dev mode, where I and I choose how much coal and Iron I want in my life.. Damn.."}, {"post_id": 21629, "ts": "2026-07-03T17:47:52Z", "hours": 0.6967, "text": "Umm, Why is Three.js so easy?? HELLO?? JUST MADE A SIMPLE SLIDER THINGY, AND THIS IS SO DOPE GUYS.."}, {"post_id": 21428, "ts": "2026-07-03T11:35:56Z", "hours": 1.0111, "text": "I have started following a tutorial, and I have done so much research, but it a shame that I cannot log that time. I went through some of the best documents written about WebGPU and explaining stuff.. But anyways, I have started following a tutorial on Three.js for making minecraft. It has literally made me in ease, because now I can log some actual time now.. By writing code rather than researching and for now here is my plan Continue to do this project Phase: 1 Draw a Cube with Controls, Draw 2 Cubes with Controls DRAW 64000 CUBES WITH CONTROLS.. By controls they are Orbital Controls, and then we will move on to the second part which is Working on a Naive Mesher, which will just give all the blocks its own 12 triangles on 8 edges each, and then blow up my laptop because if you realise 64000 * 12 is some sheesh work.. SO MANY TRIANGLES, AND I COULD SEE HARDLY 100.. But atleast, it will be the start, then I will work on Instancing and get me fps back up Also utilize the FrameStats which I will make for myself, like the same which well.. THREE.JS USES BUT WITH MY AKA TRUTHENTITY STYLE.. YOOOOO Then perhaps start erasing triangles that are connected through a second mesher Yes I will have multiple types of Meshers and Multiple type of Camera.. And all should follow a common Camera and everything else should be an Implementation like last time, I gave Geometry Pass the implementation of the simpler Renderer Pass, because it effectively make me plug and play with multiple different ways. This is going to be my stuff for next few days of my life."}, {"post_id": 21275, "ts": "2026-07-03T03:33:09Z", "hours": 0.5992, "text": "Guys, My very first shader, completely written by me, and it looks so sick. All it does is feed into the fragment an attribute of space, and break that space with a checker.. And this is just fascinating.. I want to hug myself.."}, {"post_id": 20908, "ts": "2026-07-02T17:05:27Z", "hours": 1.1739, "text": "Guys I can see progress.."}, {"post_id": 20214, "ts": "2026-07-01T19:23:17Z", "hours": 2.3717, "text": "It was quite easy, I mean, I am finally writing shaders, and yes, you guys have seen me make a triangle before, but that was genuinely speaking, was just a normal little trinagle.. But this triangle.. NO NO.. I have structured it so nicely that dare you break this, and my FATAL ERROR systems start to panic and trigger alarms all around.. It was a chaotic mess, and yes I did rejuvanate some parts of my old project, but yah, It’s not like I don’t know what I am doing now.. Furthermore, Sorry for my mental issues, I GOT MY FIRST SHIP’S PAYOUT, and though I was not expecting it, I am more than happy, even if it was a 13x mult and yah, I got a lot of comments regarding Z-Fighting.. I don’t really know the source of this issue, so I will be making the stuff again anyways, in my ways this time.. And hopefully, it will be better than last time.. I am so happy that I literally broke a tear when I saw I got a payout.. Thanks to everyone for so so much support… I will not be working harder than ever towards this project."}, {"post_id": 19340, "ts": "2026-06-30T16:55:33Z", "hours": 1.5981, "text": "Sorry for all my mental breakdowns.. Here is some actual progress that I did by myself.. I learnt about Assert from my last code.. And why do we need assert.. And I made my own Logger.. What are these so let me explain.. A Logger is atmost just a console.log message, but why to make it a separate class? This offers a lot of usability, as first, you can just say, this is a warning type of stuff, or this is just verbose.. Or MAYBE STOP SOMETHING IF IT IS SOMETHING VERY FATAL, AND SHOULD BE FIXED ASAP.. Not only that, often you will encounter like specially if you link something like a canvas, it might always be that well, Either you will force it using “!” in the end, or you will just do a command that eliminated undefined.. Like if (canvas !== undefined), but assert says.. OK, LET ME HAVE A CONDITION, and not only that, my asserts are special, as I have rigged it, so it will never ever return or what Typescript called a never return.. So you don’t need to write those.. Loggers also have a special use, as if the messages are verbose, instead of removing and readding all the console logs in like a stupid way.. You can declare a class and say, if the level is below fatal, like for verbose or info type of stuff, just cancel those stuff.. Just don’t show it.. It is very nice tool tbh.. Oh yah, I forgot.. Well, as these are custom, so You can literally add another parameter like context, as to what might be the reason for the breaking of the code, so if you check that code later on in life.. You will still know, what broke and where.. It’s a really handy tool in my opinion and everyone should give it a shot."}, {"post_id": 18410, "ts": "2026-06-29T15:32:03Z", "hours": 4.3344, "text": "Yesterday, I was doing research, so I don’t disappoint any of you guys. I watched some matrices manipulation videos and all, and I made this small little copy for myself to store all the findings I have. I don’t really have a lot, but these are certainly my findings, and I don’t prefer making notes on laptop, because personal preference in that. Anyways Give this a read, it is not very hard, and you will learn something new about how the GPU works and specially if you always wondered, what is the actual use of “Matrices” because I am in high school, and I always thought Matrices were silly and all. For people, who have been since the start of this project. First of all, I wanted to talk to you guys.. I don’t really know, what to do to this project. And I feel like, I am going to get banned, because even after all those iterations, remember, the whole project is widely AI made.. Though I am currently research, and have been open. But I don’t really know, how to feel about it. My stupid little Autistic Brain is really panicing that all my 100 hours of work would be gone. Honestly, I won’t be sad or anything if I get banned, because, indeed I used AI, but I just wanted to write my best shot, that atleast, I had a point to say, and then whatever the friends at StarDance decide, I will be completely fine with it. My main goal for developing this project, came from watching a tutorial, and I wanted to try to make something like Minecraft but for the web, because I was fascinated by optimizations.. This optimization, that optimization.. And I was like, Wait, these youtubers are literally rendering trillions of vertexes, why not make it in the browser, and even if I am able to render in 100s.. I still would always find it fascinating.. I never really thought before I started, and I just wanted to talk to AI, about how everything worked, and all.. I did mostly the research about optimization, and I specifically chose Gemini Pro over Claude, because Claude really does the heavy lifting for everyone, whereas I was here to learn. That’s the reason, I had so many hours invested.. (and so many reiterations on my code LOL…). I wanted to learn, but not like the code, but like how to optimize, like, I used to think.. Wait, BITWISE MAPPING.. We can map this much bytes to this, and that, and let the AI write the code for that.. I was just so invested on this project, I forgot we had a rule of “NO MORE THAN 30% AI..” Ahh, I am stupid.. That’s why, I am trying to gain myself back a lot now.. Doing stuff without hours like writing on copy, because obviously I could have written through VSC or something.. but now, I have really given hope on this project as a Retired / Banned Project…. I literally am currently working on a different repo with the name Minecraft rather than this.. I am watching youtube videos and lectures about how WebGPU works and all.. And I want to gain myself back.. As in a good person, and not like an AI slop, who breaks rules.."}, {"post_id": 17378, "ts": "2026-06-28T04:25:03Z", "hours": 0.5958, "text": "If anyone wants to understand more about what a Graphics API is, and how is it meant to work, I would highly suggest watching “Making my own 3D engine” by Inkbox https://www.youtube.com/watch?v=OJoZSRnU0is"}, {"post_id": 16728, "ts": "2026-06-27T05:24:19Z", "hours": 9.9878, "text": "IDK, How should I actually show my research in here but this is like, I have been working on, I have made 5 different notes, and as you can see by the time.. Yah, I have worked some hours on this bad boy.."}, {"post_id": 15580, "ts": "2026-06-25T10:41:26Z", "hours": 6.1003, "text": "Never in my life, I thought I would be so happy seeing a Red Triangle Render on my screen.. YAH, I WASTED LIKE 6 HOURS READING ARTICLES WRITING SHEESH, THEN ASKING AI, Obviously not to generate code, but about where to understand it better, and how to understand the concepts. And more. GUYS, STOP FOLLOWING ME.. It breaks my heart so much, that I am gonna disappoint you all, if I didn’t make this project, fully work.. Till I was trying to make stuff, and learn and sleep, and learn, I didn’t have so many followers, it was like, fine, if it broke for me, it’s completely fine with me, but now.. IT FEELS LIKE, IT IS NOT GOING TO BE FINE.. Thankfully, I am using a different repo, and that is accurately named as “Minecraft” rather than Puzzles to avoid confusion. As where did the Puzzle come from? Well, long story short, see my first ever devlog in here."}, {"post_id": 14225, "ts": "2026-06-23T07:27:20Z", "hours": 2.3678, "text": "Guys, I will be completely open, and I have said before as well, but seeing so many people keep following me. Thank you so much for following a project, that is though made by me, but it like I am owning a shop that is run by someone else. AKA, AI has helped me a ton, and so much that, I don’t know, anything afterwards, specially with Shaders, WebGPU and other creative stuff and optimizations, which let’s be honest, the optimizations like, GREEDY MESHING!!, OCCLUSION CULLING, BACK CULLING (Though it was just like a line as it was native to WebGPU), and while reading through other low level youtubers about optimizations such as, EXTREMITY BOUND CHECKING, BITWISE MANIPULATION,CACHE LOCALITY, NOISE UPSAMPLING, NOISE CASHING, RUN LENGTH ENCODING, RLE BASED RUNTIME. VOXEL DATALOOKUP TABLES, AoSoA and so on, like these just become buzz words that I ask my AI to help with, and that’s the recipe to make everything fall apart when you want to add something new. AI’s context windows are just not big enough to have a full fedged Minecraft. Seeing all you guys support, I have decided to ask AI to now teach me, and help me with the flow, and never the code, I will be coding every single word by myself. Read Papers, and try to implement it myself and so on.. This might be a big turning point for the project because, YAH, I AM WRITING THIS ENTIRE CODE ONCE AGAIN, But this time, I promise, I will be learning everything, and I will keep this as running, and make a second repo like minecraft or something, to enjoy. Sorry to everyone who thought, this is entirely made by me, because that is just not possible for such small 7 second attention span kids like us."}, {"post_id": 12912, "ts": "2026-06-21T04:32:28Z", "hours": 1.0956, "text": "Added leaves and foliage, this was arguable much easy, but I sure know, I again broke my optimizations or atleast something must be broken, because things cannot go this smooth.. AND FOR ONCE, I WROTE SOMETHING I CAN ALSO UNDERSTAND, and then AI was like Nuh Uh, SALTED TREE SIMULATOR!! USE SEED, AND FEED IT WITH SOME SALT, PUSH THAT UP A TREE, AND YOU HAVE BETTER TREES.. I am sometimes stunned that how much AI can really help you develop something, that can look this promising. I thought only top tier people, or people with tons and tons of money to burn on Claude can build this, but this is not that bad, if I am being honest. Obviously, I won’t reach the same level of achievements as that of something like Claude, but I think, I learnt so so much about Shaders, its types, like Vertex, Fragment and My fav, COMPUTE shaders.. And everything is just so cool. Still fixing some bugs here and there, because umm.. Yah, it still needs a lot, and A LOT OF OPTIMIZATIONS and polish, because my chunk generation worked better in my last attempt. Will be figuring everything out so stay tuned my dear friends.. NOTABLE MENTIONS:- YOUTUBERS Low Level Game Dev (He has some clever tricks up as well, which Vericidium didn’t) Vercidium (TRUE INSPIRATION AND GOATED, FOR MAKING MY PROJECT WORK) Frieends Rupnil (My cutiepie, NO QUESTIONS) Adamd (He helped me get funds for one of my hardware projects without asking anything in return. THANK YOU)"}, {"post_id": 12571, "ts": "2026-06-20T15:06:04Z", "hours": 3.2694, "text": "I have just added the option to save, so basically, if you make something funny like 67 on your world with water blocks, first of all, EWW… And second of all, yes it will persist and now I will hate you even more."}, {"post_id": 12374, "ts": "2026-06-20T06:15:52Z", "hours": 1.0867, "text": "Guys, I think, I broke something, but I really cannot point out, what is wrong in my minecraft? I mean.. There is something missing, but what can it be?"}, {"post_id": 12091, "ts": "2026-06-19T18:52:09Z", "hours": 2.1861, "text": "Current Lighting Rendering Engine, currently using the AO metrics that I used last time, but I never understood properly, but this time, this looks so so so cool.. This will be coming soon for you guys as well to enjoy. Stay tuned. This was a lot of trouble and back and forth. Because lighting engine, doesn’t one have to update one chunk, but four neighboring chunk as well, and idk why it took me so long to realise.."}, {"post_id": 11915, "ts": "2026-06-19T12:59:27Z", "hours": 1.8122, "text": "I am sorry, did I just get 60FPS?? I HAD TO PAUSE MY FRAME TO CAPTURE THIS MUCH OPTIMIZATION. I am not even at the peak of it. Furthermore, I was currently working on Sky Box, and I am tired to figuring out what’s wrong, so this is an early devlog of just about 2 hours. I want to rant about skyBox and what did I do to well, Make my game break.. So, what happened is that, the shaders that I am using, I was using vec3, which means sun’s direction is a vector of 3 floats, but somehow, vec3 must always start on a multiple of 16.. WHO DECIDED THAT WAS A GOOD IDEA.. WHO IS THAT MORON??? I WANT TO TAKE MY SHOTGUN OUT (TO FLEX) AND PUNCH HIM (BECAUSE WHO WASTES AMMO.. TOO EXPENSIVE LAH.) I GOT TIRED DEBUGGING THIS… Only for AI to tell me, you did everything right except everything.. I just uploaded everything. You guys might think this is a negative as no trees and grass, but TRUST THE PROCESS.. I KNOW YOU CAN, ELSE I WILL SHOW YOU MY SHOTGUN AND PUNCH YOU AS WELL!!"}, {"post_id": 11811, "ts": "2026-06-19T07:03:19Z", "hours": 1.8922, "text": "Quick Update on the progress.. I mean, FAH.. The render distance so high, and yet the FPS IS PLAYABLE, without even much optimizations. I know, the terrain has nothing for now. But don’t worry.. SOON TM.. Let me handle the optimizations first. AND DON’T YOU DARE CROSS QUESTION ME, ELSE I WILL CROSS YOUR QUESTION BACK TO YOU"}, {"post_id": 11216, "ts": "2026-06-18T11:10:03Z", "hours": 3.03, "text": "Playing Minecraft it was never meant to be LMAO.. On this, an important announcement to make here. I will not be able to add multiplayer into this build, because it adds extra complexity into the build, which I am not able to work it for now. It requires you to first have an server in the first place, and then work with streaming and all those. Latency can be a nightmare to tackle with. I am waiting for my last ship’s payout so I can push on github, all my updates. Till then, I am working on small things, like adding structures like trees, water and so on, because this is a new, and much more optimized build than the last one. You will also find it relatively pleasing to read my code, if you are nerdy enough, but isn’t that hard tbh."}, {"post_id": 11112, "ts": "2026-06-18T05:41:13Z", "hours": 4.0106, "text": "Better support for AO Voxels and lighting coming soon to this build. Stay Tunes or you might miss out. Here is a small working prototype of it. What is AO you may ask? AO means Ambient Occlusion, what it does is check in the four corners, and predict the shading based off of those corners. I mean, AO has much more, but this is like a basic and optimized version of it, that looks good, but also not performance heavy. Obviously, I am not using GAMING RTX 5090 for this.. Hell, My Laptop doesn’t even have a GPU, SO SHUT UP.. IT’S MY GAME AND I WILL DESIGN IT HOWEVER I WANT."}, {"post_id": 10666, "ts": "2026-06-17T15:05:23Z", "hours": 6.2597, "text": "Hate me as much as you want, because, I am rewriting my code once again for the idk, like 5th time, just to learn more, and finally I am able to structure my code properly. Go this was a bad plan. And I would not like to go to this hell ever again. Please god, forgive me for my sins.. But anyways, as you can see, I am currently, literally rewriting parts of the code, and organishing it, into much better folder structure, so I and you, and she who told you not to worry about his boy, can all understand this code and you don’t have to be a nerd to be changing parameters to buff yourself, to become the boy the girls needs.. IDK, I have been working too much on this project. I need therapy LMAO.."}, {"post_id": 9758, "ts": "2026-06-16T06:01:00Z", "hours": 3.4519, "text": "Currently working on WebRTC and understanding, why do I exist, but also why do computers exist, and how do computers know that my computer is not your computer and your computer is well, how is it your computer. And can they secretly interact and do goofy things with ultrasonic, and I mean, it’s technically the speed of light so.. YAH.."}, {"post_id": 9084, "ts": "2026-06-15T05:46:24Z", "hours": 5.6536, "text": "Final Finishing Touches, And I wanted to add much more, like better lighting support and all, but Now I am getting too much out of my comfort zone, and will have to work completely with AI, I have polished the UI, made an Inventory system and a bit more, but now, I am really tired, and cannot explain, how tedious it has become maintaining my own code. So I will have to halt my project now and ship it. Thanks to Stardance for giving me such a wonderful place to code at and work, and show my works and learn so so much cool stuff into the world of GPUs and Shaders."}, {"post_id": 8023, "ts": "2026-06-13T11:57:01Z", "hours": 3.1878, "text": "Umm.. Do cows have lawyers? Anyways, Today, i just worked on refactoring my code into different files, so it is easier to navigate and understand the code. Because it was getting a mess."}, {"post_id": 7405, "ts": "2026-06-12T10:32:33Z", "hours": 1.5669, "text": "Water Update with bouyancy and all.. And made everything look like Avatar.. BLUE TONED.. Because you know, Water is blue, and blue is blue, I have no clue, so make everything blue. Now, you are blue, and me is blue"}, {"post_id": 6967, "ts": "2026-06-11T18:00:49Z", "hours": 0.31, "text": "IDK, How do I show you but basically, As I have moved to a typescript focused base. So, I had to change my monorepo and all. So Now, the game is playable for anyone to enjoy."}, {"post_id": 6940, "ts": "2026-06-11T17:14:07Z", "hours": 11.7611, "text": "Guys it’s been about 12 hours and let me tell you. First of all. I am just too tired after all this. I wanted to use better optimized code like SSBOs but basically, I cannot use it due to the fact that it is not available in OpenGL ES 30 so I had to go all around and make the entire game in another GPU.. Making shaders was already hard. THIS MADE IT WORSE!! So, Currenly, my app supports two formats and if you are stupid enough that you don’t have WebGPU, so it will run normally like WebGL will get on and help. Further optimized my code and also, I will be optimizing it even further. I have added grass by then SO I CAN TOUCH IT, ATLEAST WHEN I AM SITTING AND LEARNING AND DOING THESE STUPID STUFF. Uff.. Also the I have also added moving Cows so you can see, but the texture is just stone so please don’t mind."}, {"post_id": 5711, "ts": "2026-06-09T16:39:15Z", "hours": 0.6553, "text": "Guys, I think, I found a friend.. Its not cute and all.. BUT IT’S LOVELY.. I LOVE HER SO MUCH.. YOU NAME IS WELL.. PET ROCK.. AWWWW.. YOU ARE SO LOVELY MS. PET ROCK.. Hope you don’t die the moment you fall.. 100% NOT FORESHADOWING.."}, {"post_id": 5685, "ts": "2026-06-09T15:47:02Z", "hours": 1.0764, "text": "Water is finally working and it is moving.. It is animated so you can enjoy the ambience. Furthermore, I have dialed up the variables for my night. So, the night isn’t like a horror movie. Took me a little too long then I would anticipate."}, {"post_id": 5566, "ts": "2026-06-09T12:09:32Z", "hours": 1.4347, "text": "Currently I am working on Implementing Water, and let’s just say, it’s not working out well for me."}, {"post_id": 5514, "ts": "2026-06-09T10:09:46Z", "hours": 2.4567, "text": "Guys, I think, When I meant Water, I meant to add Water not BEANS IN MINECRAFT.. LMAOO… BEANS!!!!!! BEANS MOD COMING SOON TM"}, {"post_id": 5058, "ts": "2026-06-08T18:38:13Z", "hours": 1.1131, "text": "ONLY 1% OF PEOPLE CAN FIND THE DIFFERENCE BETWEEN MY LODs LMAO XD… CAN YOU FIND THE 4 LEVELS OF LODS BECAUSE I CANNOT - DORA THE DRUG DEALER"}, {"post_id": 4955, "ts": "2026-06-08T16:20:44Z", "hours": 0.7411, "text": "Inventory Icon Update"}, {"post_id": 4933, "ts": "2026-06-08T15:19:58Z", "hours": 1.7539, "text": "Not to brag about anything, but I just rendered like over 4000 chunks with I know I know, 20 FPS, but you don’t realise, just see the CPU and GPU. It’s not even a proper GPU, Is uses VRAM from my storage no less.. For anyone wondering, Check Intel UHD Graphics, and my CPU is i3-1005G1, so it’s some antique peice, but yet, my algorithms held strong even in rendering 4000 fizzing chunks. Entities like cows coming soon."}, {"post_id": 4779, "ts": "2026-06-08T08:31:49Z", "hours": 4.2933, "text": "Rendering Pipeline Updated, to make it work with even more chunks Procedural Generation, and make it not suck. The main problem I was facing and is still facing is the fact that I am dumb, and also Lighting. Somehow, the Lighting Engine is not working out with so many parameters that I have tested with. I will probably just"}, {"post_id": 4357, "ts": "2026-06-07T17:26:03Z", "hours": 4.3622, "text": "Lighting Engine Update, And tons of optimizations added to make it work. I hope, it doesn’t crash on anyone, because, when I check the memory usage of this bad boy, it was just 56MB, I was like, FAH??? I MADE ALL OF THIS, IN 56 MB???? That’s some crazy shit. I will be working on the Menu and all next. Stay tuned."}, {"post_id": 4077, "ts": "2026-06-07T08:32:19Z", "hours": 6.5333, "text": "First of all, thanks to rufus.gordonheywood for his following, because, I forgot, I was doing star dance, I literally, went so deep into making Minecraft work. If you want, you can check, this minecraft literally has no external dependencies.. THAT IS SOME CRAZY SHIT. I recently made procedral generation, multithreading, and so much more. And I want to be brutally honest with everyone, yes I am using AI, because I just couldn’t make it work without it, the WEBGPU Shaders, the compiling languages, and so much more. I am sorry for anyone who is disappointed. BTW, Currently, I am seeing a bug, that if you fork my project and run it through live server, it is working fine, but not through github. IDK, What’s wrong, but I will get into it ASAP, and make everyone enjoy my shit."}, {"post_id": 3551, "ts": "2026-06-06T15:21:27Z", "hours": 6.1564, "text": "Don’t even ask, why I made a 32x32x32 Minecraft world, and hyperoptimized it to run on GPU and write compute shaders, and eat myself multiple times in the process.. Yah Yah, I used AI, but I wrote everything by hand and understand most of the code, apart from Shaders, just don’t ask me please.. LOL.. But, I made this run with only 40 vertices, like WHAT THE FLUFFFF???? YOOOOO"}, {"post_id": 2775, "ts": "2026-06-05T16:03:25Z", "hours": 5.2967, "text": "Worked on Procedral Glass Breaking… Please don’t ask how long it took, because IT TOOK ME THROUGH THE CORNERS OF INTERNET TO FIND SOMETHING, and then refined it with AI.. Yah AI, I want to be open, But I am not smart enough dealing with such intricate part and design"}]...
|
Title: Minecraft Web by @TruthEntity | Stardance
Title: Minecraft Web by @TruthEntity | Stardance
Devlogs:
Worked on Procedral Glass Breaking… Please don’t ask how long it took, because IT TOOK ME THROUGH THE CORNERS OF INTERNET TO FIND SOMETHING, and then refined it with AI.. Yah AI, I want to be open, But I am not smart enough dealing with such intricate part and design
Don’t even ask, why I made a 32x32x32 Minecraft world, and hyperoptimized it to run on GPU and write compute shaders, and eat myself multiple times in the process.. Yah Yah, I used AI, but I wrote everything by hand and understand most of the code, apart from Shaders, just don’t ask me please.. LOL.. But, I made this run with only 40 vertices, like WHAT THE FLUFFFF???? YOOOOO
First of all, thanks to rufus.gordonheywood for his following, because, I forgot, I was doing star dance, I literally, went so deep into making Minecraft work. If you want, you can check, this minecraft literally has no external dependencies.. THAT IS SOME CRAZY SHIT. I recently made procedral generation, multithreading, and so much more. And I want to be brutally honest with everyone, yes I am using AI, because I just couldn’t make it work without it, the WEBGPU Shaders, the compiling languages, and so much more. I am sorry for anyone who is disappointed. BTW, Currently, I am seeing a bug, that if you fork my project and run it through live server, it is working fine, but not through github. IDK, What’s wrong, but I will get into it ASAP, and make everyone enjoy my shit.
Lighting Engine Update, And tons of optimizations added to make it work. I hope, it doesn’t crash on anyone, because, when I check the memory usage of this bad boy, it was just 56MB, I was like, FAH??? I MADE ALL OF THIS, IN 56 MB???? That’s some crazy shit. I will be working on the Menu and all next. Stay tuned.
Rendering Pipeline Updated, to make it work with even more chunks Procedural Generation, and make it not suck. The main problem I was facing and is still facing is the fact that I am dumb, and also Lighting. Somehow, the Lighting Engine is not working out with so many parameters that I have tested with. I will probably just
Not to brag about anything, but I just rendered like over 4000 chunks with I know I know, 20 FPS, but you don’t realise, just see the CPU and GPU. It’s not even a proper GPU, Is uses VRAM from my storage no less.. For anyone wondering, Check Intel UHD Graphics, and my CPU is i3-1005G1, so it’s some antique peice, but yet, my algorithms held strong even in rendering 4000 fizzing chunks. Entities like cows coming soon.
Inventory Icon Update
ONLY 1% OF PEOPLE CAN FIND THE DIFFERENCE BETWEEN MY LODs LMAO XD… CAN YOU FIND THE 4 LEVELS OF LODS BECAUSE I CANNOT - DORA THE DRUG DEALER
Guys, I think, When I meant Water, I meant to add Water not BEANS IN MINECRAFT.. LMAOO… BEANS!!!!!! BEANS MOD COMING SOON TM
Currently I am working on Implementing Water, and let’s just say, it’s not working out well for me.
Water is finally working and it is moving.. It is animated so you can enjoy the ambience. Furthermore, I have dialed up the variables for my night. So, the night isn’t like a horror movie. Took me a little too long then I would anticipate.
Guys, I think, I found a friend.. Its not cute and all.. BUT IT’S LOVELY.. I LOVE HER SO MUCH.. YOU NAME IS WELL.. PET ROCK.. AWWWW.. YOU ARE SO LOVELY MS. PET ROCK.. Hope you don’t die the moment you fall.. 100% NOT FORESHADOWING..
Guys it’s been about 12 hours and let me tell you. First of all. I am just too tired after all this. I wanted to use better optimized code like SSBOs but basically, I cannot use it due to the fact that it is not available in OpenGL ES 30 so I had to go all around and make the entire game in another GPU.. Making shaders was already hard. THIS MADE IT WORSE!! So, Currenly, my app supports two formats and if you are stupid enough that you don’t have WebGPU, so it will run normally like WebGL will get on and help. Further optimized my code and also, I will be optimizing it even further. I have added grass by then SO I CAN TOUCH IT, ATLEAST WHEN I AM SITTING AND LEARNING AND DOING THESE STUPID STUFF. Uff.. Also the I have also added moving Cows so you can see, but the texture is just stone so please don’t mind.
IDK, How do I show you but basically, As I have moved to a typescript focused base. So, I had to change my monorepo and all. So Now, the game is playable for anyone to enjoy.
Water Update with bouyancy and all.. And made everything look like Avatar.. BLUE TONED.. Because you know, Water is blue, and blue is blue, I have no clue, so make everything blue. Now, you are blue, and me is blue
Umm.. Do cows have lawyers? Anyways, Today, i just worked on refactoring my code into different files, so it is easier to navigate and understand the code. Because it was getting a mess.
Final Finishing Touches, And I wanted to add much more, like better lighting support and all, but Now I am getting too much out of my comfort zone, and will have to work completely with AI, I have polished the UI, made an Inventory system and a bit more, but now, I am really tired, and cannot explain, how tedious it has become maintaining my own code. So I will have to halt my project now and ship it. Thanks to Stardance for giving me such a wonderful place to code at and work, and show my works and learn so so much cool stuff into the world of GPUs and Shaders.
Currently working on WebRTC and understanding, why do I exist, but also why do computers exist, and how do computers know that my computer is not your computer and your computer is well, how is it your computer. And can they secretly interact and do goofy things with ultrasonic, and I mean, it’s technically the speed of light so.. YAH..
Hate me as much as you want, because, I am rewriting my code once again for the idk, like 5th time, just to learn more, and finally I am able to structure my code properly. Go this was a bad plan. And I would not like to go to this hell ever again. Please god, forgive me for my sins.. But anyways, as you can see, I am currently, literally rewriting parts of the code, and organishing it, into much better folder structure, so I and you, and she who told you not to worry about his boy, can all understand this code and you don’t have to be a nerd to be changing parameters to buff yourself, to become the boy the girls needs.. IDK, I have been working too much on this project. I need therapy LMAO..
Better support for AO Voxels and lighting coming soon to this build. Stay Tunes or you might miss out. Here is a small working prototype of it. What is AO you may ask? AO means Ambient Occlusion, what it does is check in the four corners, and predict the shading based off of those corners. I mean, AO has much more, but this is like a basic and optimized version of it, that looks good, but also not performance heavy. Obviously, I am not using GAMING RTX 5090 for this.. Hell, My Laptop doesn’t even have a GPU, SO SHUT UP.. IT’S MY GAME AND I WILL DESIGN IT HOWEVER I WANT.
Playing Minecraft it was never meant to be LMAO.. On this, an important announcement to make here. I will not be able to add multiplayer into this build, because it adds extra complexity into the build, which I am not able to work it for now. It requires you to first have an server in the first place, and then work with streaming and all those. Latency can be a nightmare to tackle with. I am waiting for my last ship’s payout so I can push on github, all my updates. Till then, I am working on small things, like adding structures like trees, water and so on, because this is a new, and much more optimized build than the last one. You will also find it relatively pleasing to read my code, if you are nerdy enough, but isn’t that hard tbh.
Quick Update on the progress.. I mean, FAH.. The render distance so high, and yet the FPS IS PLAYABLE, without even much optimizations. I know, the terrain has nothing for now. But don’t worry.. SOON TM.. Let me handle the optimizations first. AND DON’T YOU DARE CROSS QUESTION ME, ELSE I WILL CROSS YOUR QUESTION BACK TO YOU
I am sorry, did I just get 60FPS?? I HAD TO PAUSE MY FRAME TO CAPTURE THIS MUCH OPTIMIZATION. I am not even at the peak of it. Furthermore, I was currently working on Sky Box, and I am tired to figuring out what’s wrong, so this is an early devlog of just about 2 hours. I want to rant about skyBox and what did I do to well, Make my game break.. So, what happened is that, the shaders that I am using, I was using vec3, which means sun’s direction is a vector of 3 floats, but somehow, vec3 must always start on a multiple of 16.. WHO DECIDED THAT WAS A GOOD IDEA.. WHO IS THAT MORON??? I WANT TO TAKE MY SHOTGUN OUT (TO FLEX) AND PUNCH HIM (BECAUSE WHO WASTES AMMO.. TOO EXPENSIVE LAH.) I GOT TIRED DEBUGGING THIS… Only for AI to tell me, you did everything right except everything.. I just uploaded everything. You guys might think this is a negative as no trees and grass, but TRUST THE PROCESS.. I KNOW YOU CAN, ELSE I WILL SHOW YOU MY SHOTGUN AND PUNCH YOU AS WELL!!
Current Lighting Rendering Engine, currently using the AO metrics that I used last time, but I never understood properly, but this time, this looks so so so cool.. This will be coming soon for you guys as well to enjoy. Stay tuned. This was a lot of trouble and back and forth. Because lighting engine, doesn’t one have to update one chunk, but four neighboring chunk as well, and idk why it took me so long to realise..
Guys, I think, I broke something, but I really cannot point out, what is wrong in my minecraft? I mean.. There is something missing, but what can it be?
I have just added the option to save, so basically, if you make something funny like 67 on your world with water blocks, first of all, EWW… And second of all, yes it will persist and now I will hate you even more.
Added leaves and foliage, this was arguable much easy, but I sure know, I again broke my optimizations or atleast something must be broken, because things cannot go this smooth.. AND FOR ONCE, I WROTE SOMETHING I CAN ALSO UNDERSTAND, and then AI was like Nuh Uh, SALTED TREE SIMULATOR!! USE SEED, AND FEED IT WITH SOME SALT, PUSH THAT UP A TREE, AND YOU HAVE BETTER TREES.. I am sometimes stunned that how much AI can really help you develop something, that can look this promising. I thought only top tier people, or people with tons and tons of money to burn on Claude can build this, but this is not that bad, if I am being honest. Obviously, I won’t reach the same level of achievements as that of something like Claude, but I think, I learnt so so much about Shaders, its types, like Vertex, Fragment and My fav, COMPUTE shaders.. And everything is just so cool. Still fixing some bugs here and there, because umm.. Yah, it still needs a lot, and A LOT OF OPTIMIZATIONS and polish, because my chunk generation worked better in my last attempt. Will be figuring everything out so stay tuned my dear friends.. NOTABLE MENTIONS:- YOUTUBERS Low Level Game Dev (He has some clever tricks up as well, which Vericidium didn’t) Vercidium (TRUE INSPIRATION AND GOATED, FOR MAKING MY PROJECT WORK) Frieends Rupnil (My cutiepie, NO QUESTIONS) Adamd (He helped me get funds for one of my hardware projects without asking anything in return. THANK YOU)
Guys, I will be completely open, and I have said before as well, but seeing so many people keep following me. Thank you so much for following a project, that is though made by me, but it like I am owning a shop that is run by someone else. AKA, AI has helped me a ton, and so much that, I don’t know, anything afterwards, specially with Shaders, WebGPU and other creative stuff and optimizations, which let’s be honest, the optimizations like, GREEDY MESHING!!, OCCLUSION CULLING, BACK CULLING (Though it was just like a line as it was native to WebGPU), and while reading through other low level youtubers about optimizations such as, EXTREMITY BOUND CHECKING, BITWISE MANIPULATION,CACHE LOCALITY, NOISE UPSAMPLING, NOISE CASHING, RUN LENGTH ENCODING, RLE BASED RUNTIME. VOXEL DATALOOKUP TABLES, AoSoA and so on, like these just become buzz words that I ask my AI to help with, and that’s the recipe to make everything fall apart when you want to add something new. AI’s context windows are just not big enough to have a full fedged Minecraft. Seeing all you guys support, I have decided to ask AI to now teach me, and help me with the flow, and never the code, I will be coding every single word by myself. Read Papers, and try to implement it myself and so on.. This might be a big turning point for the project because, YAH, I AM WRITING THIS ENTIRE CODE ONCE AGAIN, But this time, I promise, I will be learning everything, and I will keep this as running, and make a second repo like minecraft or something, to enjoy. Sorry to everyone who thought, this is entirely made by me, because that is just not possible for such small 7 second attention span kids like us.
Never in my life, I thought I would be so happy seeing a Red Triangle Render on my screen.. YAH, I WASTED LIKE 6 HOURS READING ARTICLES WRITING SHEESH, THEN ASKING AI, Obviously not to generate code, but about where to understand it better, and how to understand the concepts. And more. GUYS, STOP FOLLOWING ME.. It breaks my heart so much, that I am gonna disappoint you all, if I didn’t make this project, fully work.. Till I was trying to make stuff, and learn and sleep, and learn, I didn’t have so many followers, it was like, fine, if it broke for me, it’s completely fine with me, but now.. IT FEELS LIKE, IT IS NOT GOING TO BE FINE.. Thankfully, I am using a different repo, and that is accurately named as “Minecraft” rather than Puzzles to avoid confusion. As where did the Puzzle come from? Well, long story short, see my first ever devlog in here.
IDK, How should I actually show my research in here but this is like, I have been working on, I have made 5 different notes, and as you can see by the time.. Yah, I have worked some hours on this bad boy..
If anyone wants to understand more about what a Graphics API is, and how is it meant to work, I would highly suggest watching “Making my own 3D engine” by Inkbox https://www.youtube.com/watch?v=OJoZSRnU0is
Yesterday, I was doing research, so I don’t disappoint any of you guys. I watched some matrices manipulation videos and all, and I made this small little copy for myself to store all the findings I have. I don’t really have a lot, but these are certainly my findings, and I don’t prefer making notes on laptop, because personal preference in that. Anyways Give this a read, it is not very hard, and you will learn something new about how the GPU works and specially if you always wondered, what is the actual use of “Matrices” because I am in high school, and I always thought Matrices were silly and all. For people, who have been since the start of this project. First of all, I wanted to talk to you guys.. I don’t really know, what to do to this project. And I feel like, I am going to get banned, because even after all those iterations, remember, the whole project is widely AI made.. Though I am currently research, and have been open. But I don’t really know, how to feel about it. My stupid little Autistic Brain is really panicing that all my 100 hours of work would be gone. Honestly, I won’t be sad or anything if I get banned, because, indeed I used AI, but I just wanted to write my best shot, that atleast, I had a point to say, and then whatever the friends at StarDance decide, I will be completely fine with it. My main goal for developing this project, came from watching a tutorial, and I wanted to try to make something like Minecraft but for the web, because I was fascinated by optimizations.. This optimization, that optimization.. And I was like, Wait, these youtubers are literally rendering trillions of vertexes, why not make it in the browser, and even if I am able to render in 100s.. I still would always find it fascinating.. I never really thought before I started, and I just wanted to talk to AI, about how everything worked, and all.. I did mostly the research about optimization, and I specifically chose Gemini Pro over Claude, because Claude really does the heavy lifting for everyone, whereas I was here to learn. That’s the reason, I had so many hours invested.. (and so many reiterations on my code LOL…). I wanted to learn, but not like the code, but like how to optimize, like, I used to think.. Wait, BITWISE MAPPING.. We can map this much bytes to this, and that, and let the AI write the code for that.. I was just so invested on this project, I forgot we had a rule of “NO MORE THAN 30% AI..” Ahh, I am stupid.. That’s why, I am trying to gain myself back a lot now.. Doing stuff without hours like writing on copy, because obviously I could have written through VSC or something.. but now, I have really given hope on this project as a Retired / Banned Project…. I literally am currently working on a different repo with the name Minecraft rather than this.. I am watching youtube videos and lectures about how WebGPU works and all.. And I want to gain myself back.. As in a good person, and not like an AI slop, who breaks rules..
Sorry for all my mental breakdowns.. Here is some actual progress that I did by myself.. I learnt about Assert from my last code.. And why do we need assert.. And I made my own Logger.. What are these so let me explain.. A Logger is atmost just a console.log message, but why to make it a separate class? This offers a lot of usability, as first, you can just say, this is a warning type of stuff, or this is just verbose.. Or MAYBE STOP SOMETHING IF IT IS SOMETHING VERY FATAL, AND SHOULD BE FIXED ASAP.. Not only that, often you will encounter like specially if you link something like a canvas, it might always be that well, Either you will force it using “!” in the end, or you will just do a command that eliminated undefined.. Like if (canvas !== undefined), but assert says.. OK, LET ME HAVE A CONDITION, and not only that, my asserts are special, as I have rigged it, so it will never ever return or what Typescript called a never return.. So you don’t need to write those.. Loggers also have a special use, as if the messages are verbose, instead of removing and readding all the console logs in like a stupid way.. You can declare a class and say, if the level is below fatal, like for verbose or info type of stuff, just cancel those stuff.. Just don’t show it.. It is very nice tool tbh.. Oh yah, I forgot.. Well, as these are custom, so You can literally add another parameter like context, as to what might be the reason for the breaking of the code, so if you check that code later on in life.. You will still know, what broke and where.. It’s a really handy tool in my opinion and everyone should give it a shot.
It was quite easy, I mean, I am finally writing shaders, and yes, you guys have seen me make a triangle before, but that was genuinely speaking, was just a normal little trinagle.. But this triangle.. NO NO.. I have structured it so nicely that dare you break this, and my FATAL ERROR systems start to panic and trigger alarms all around.. It was a chaotic mess, and yes I did rejuvanate some parts of my old project, but yah, It’s not like I don’t know what I am doing now.. Furthermore, Sorry for my mental issues, I GOT MY FIRST SHIP’S PAYOUT, and though I was not expecting it, I am more than happy, even if it was a 13x mult and yah, I got a lot of comments regarding Z-Fighting.. I don’t really know the source of this issue, so I will be making the stuff again anyways, in my ways this time.. And hopefully, it will be better than last time.. I am so happy that I literally broke a tear when I saw I got a payout.. Thanks to everyone for so so much support… I will not be working harder than ever towards this project.
Guys I can see progress..
Guys, My very first shader, completely written by me, and it looks so sick. All it does is feed into the fragment an attribute of space, and break that space with a checker.. And this is just fascinating.. I want to hug myself..
I have started following a tutorial, and I have done so much research, but it a shame that I cannot log that time. I went through some of the best documents written about WebGPU and explaining stuff.. But anyways, I have started following a tutorial on Three.js for making minecraft. It has literally made me in ease, because now I can log some actual time now.. By writing code rather than researching and for now here is my plan Continue to do this project Phase: 1 Draw a Cube with Controls, Draw 2 Cubes with Controls DRAW 64000 CUBES WITH CONTROLS.. By controls they are Orbital Controls, and then we will move on to the second part which is Working on a Naive Mesher, which will just give all the blocks its own 12 triangles on 8 edges each, and then blow up my laptop because if you realise 64000 * 12 is some sheesh work.. SO MANY TRIANGLES, AND I COULD SEE HARDLY 100.. But atleast, it will be the start, then I will work on Instancing and get me fps back up Also utilize the FrameStats which I will make for myself, like the same which well.. THREE.JS USES BUT WITH MY AKA TRUTHENTITY STYLE.. YOOOOO Then perhaps start erasing triangles that are connected through a second mesher Yes I will have multiple types of Meshers and Multiple type of Camera.. And all should follow a common Camera and everything else should be an Implementation like last time, I gave Geometry Pass the implementation of the simpler Renderer Pass, because it effectively make me plug and play with multiple different ways. This is going to be my stuff for next few days of my life.
Umm, Why is Three.js so easy?? HELLO?? JUST MADE A SIMPLE SLIDER THINGY, AND THIS IS SO DOPE GUYS..
This really feels surreal.. I am editing parameters to a game, in which people will land their beautiful foot on, ad mine ores, and do stuff, and this is like a dev mode, where I and I choose how much coal and Iron I want in my life.. Damn..
I hate to admit it, but did I just add, literal shadows, that would have taken me, so so much hours to be working on.. And THREE.JS SOMEHOW, LITERALLY HAS A FREAKING FUNCTION.. THAT DOES THAT AUTOMATICALLY?? EXCUSE ME??? THAT’S JUST CHEATING..
Collisions are now working, with this beautiful looking icosphere as an helper. I JUST WISH WEBGPU OFFERED SUCH CUSTOMIZABILITY.. BUT TRUST ME, I AM GOING TO ADD THESE INTO THE MAIN PROJECT AS WELL.. Three.JS is just so cool.. But again, my goal is to make it the most optimized stuff and see the Entire Earth, and not be happy with just collisions.. SO Let me just complete this tutorial, but I am having a blast.
Guys Just imagine a world, where the whole life is actually a simulation, and God is literally using his laptop like this, to see what you are doing.. (AND YES, YOU WERE BANGING YOUR HEAD, JUST NOT ON GRASS.. DON’T LIE TO ME.. I AM SEEING YOU..)
I want to ask, How do you literally add shadows, and fog, and everything and that so, all in just one line of code? That is just stupid to even think about.. But anyways, now I have made it so, you can break and place blocks and also, if you render out from the world, and come back in, the blocks will still be there.. BE READY FOR ANOTHER ROUND OF 67 … OH WAIT.. NEXT DEVLOG WILL BE 67.. OR WAIT, LET ME JUST.. LOL, 100% NOT A STRUCTURE IN GAME.. (ATLEAST FOR NOW.. HEHEHEHE)
Added Water, Trees, Sand and polish to my project… Like the toolbar, you can see in the bottom. Clean and Elegant.. COMMENT 67 IF YOU WANT TO SEE A 67 STRUCTURE ADDED TO MY GAME… ;)
Final few fixes before shipping, added biome support, and now I will be ready to be trying to make a project, without following tutorial, trying to optimize it, because obviously, three.js, though sounds cool and all.. Uses WebGL, which is widely supported.. but I want to use your entire GPU.. because obviously.. I PAID FOR THE ENTIRE GPU.. (BTW, I don’t even have a GPU, I have what is called Shared GPU Memory with storage but anyways.. THAT IS NOT THE POINT..)
I almost crashed out today. It was a hectic of a job today for me.. Basically, Today I wanted to work on Debugging tools in my original minecraft version. Though, this was hectic of a job, but now I am confident enough to say that, if anything goes wrong, my error codes will instantly trigger and stop those bugs to ever reach me, specially, If I messed up something. This is specifically made to guard rail myself (as I am a newbie in the GPU optimization and just breaks stuff way too often for comfort during my learning steps..) Now, you might be working what is so special that I did that I am being too optimistic (Specially if you know my history of crashouts LOL…) So, Basically, This time, I researched about an algorithm for dependencies.. Basically, what npm uses to keep track of all the dependencies.. You never know where knowledge might reach you LOL.. So, Basically, now each file, or system like Player, Physics, and to add, Chunks and More, will have to implement system, and each system would have a dependency tree, and then by using Kahn’s Algorithm, we can literally turn that tree upside down, and go through the data and make it work.. It literally tells you, which files are Missing in your code, that is just too good.. The only one critic is that, each time you need to be assing a new attribute, which might be tedious, but the profits are way too big to ignore at all..
I have connected my GPU now, and details are also loading nicely.. I will working on GPU Frames and all as well now.
I am crashing out a lot over some assets, because first of all, why is the grass block not green and a colormap, I mean, it does look cool.. BUT COME ON, THAT’S A MENTAL TRAUMA AND NOW WHICH COLOR OF GRASS SHOULD I PICK.. Furthermore, this is also a problem with water and all.. I am trying to find better ways, and actually learn about how Minecraft renders these and turns out, they just.. well.. OVERLAY A GREEN MAP or BLUE MAP over the grass.. I mean, that sounds HORRIBLE TO IMPLEMENT, MY GOD, THIS GAME SU…. IS FINE.. AND FUN.. Furthermore, thank you so so so much for all the reviewers out there.. The fact you guys appreciated my project, and said it is Fine to be using AI.. It just blew my heart.. This is the reason why I am currently working, else, I had already blew my mind with so much complex debugging, such that, I had to make my own engine, and debugger.. As with the latest you can see.. Things are tough but yah.. Also, I see you @skhsmrn on my devlog and another reviewer.. Your demands for 67 WILL BE FULFILLED SOON TM..
Been some time, and the amount of Logs that I am going through is just.. LMAO.. Crazy Crazy.. For my 67 fans, just give me like a few more moments.. Because, Now, I just want to render one block, and I will just add a sky, which will be a simple color gradient, and then I will work on whatever you that 67 thing.. This was really hectic to implement.. Literally had to go through and implement Archetype.. Yes, even I don’t know what they are… But after like learning about it, here is my understanding.. Archetype is basically a central place to keep all the components and all. Remember, we are optimizing the sheesh out of this project.. Archetypes allow us to apply the same gravity and same systems like Physics, collisions and so on, while still giving you customizabilty on if you want to enable it or not.. It’s really cool, but the amount of things I had to implement.. That’s some brutal stuff… Imagine, you forgot to plug the input system, and you are crashing out on, HOW TO FAH THE POSITION IS NOT CHANGING?? LOL, YAH 2 HOURS OF DEBUGGING WENT THERE, only to realise, I forgot to add that.. LOL..
LMAO, You know, you are at the pinnacle when you are going through forums and forums of actually big stuff, that very very few people ever talk about.. Literally..
Sorry, ANOTHER QUICK UPDATE I KNOW.. But trust me, this took me ages to implement, and yes, had to work from backwards, because and again found out, There was nothing being connected to the swapchain for some reason.. It’s actually really not that hard to find bugs when you are used to it, like when something isn’t rendering you know, something must be wrong with renderer and all.. and a quick side step, and you understand yah, swapchain being uninitialized is the key.
Added some simple tests for the ECS system and the topological sort Kahn’s Algorithm system and the Event Bus, so as to 100% confirm the workings of what is intended and what is not.. Also there was a problem with connection of gbuffers into swap chain, so had to make a custom pass called, composite pass, that will intercept and then gives us the necessary output. This might add very minute delay, but it is very unnoticable so don’t worry..
Procedural Generation unlocked, now, you can move as much as you want, and play. Current, block placing and all won’t work, but yah.. Frustum Culling is working as you can see with the culled meter.
67 Structure Implemented and running, and to those who recommended me this.. GUYS YOU REALLY NEED TO SEE A THERAPY OR SOMETHING.. LMAO..
I literally been sick for 2 days, and now that I come back, I somehow see worse.. Like, I wanted to implement meshing and all.. GUESS WHAT I DONE.. YES, MESHED THE ENTIRE WORLD TO DISAPPEAR.. BALLS… I AM GUAVA AND I WILL EAT MYSELF.. That’s enough coding for today as well, signing off..
Hi Everyone, My Devlogs have been lacking a bit, and this another quick devlog, because, I am really not feeling good these days. I am having fever and not feeling great about anything. Currently, I was just searching and asking AI about chunk generation. One of the things, where AI is now needed, because I know noise generation, but I don’t really know, how to make it into reality, and specially when people want realistic chunk generation and all.. I will get into good and start fixing first of all, this light problem, and then just hope, I get well soon, because India’s heat waves are really no joke. My Indian Friends.. Please stay safe and inside house.. IDK, Why even schools are open..
Ships:
Basically, What I have made is Minecraft Web, well Minecraft but on the Website, running on your Browser. Through the Power of Optimizations and knowing how to code, and also using AI for my shader building and debugging bugs like IDK, What I have done to my life. But Basically, I made my own Engine just to prove that You don’t always need THREE.js to do your heavy lifting, and honestly, it was not that hard. You can see the source code, just a few days ago, I refactored it. Hope you love and enjoy my project.
NOTE: Please Skip Voting, if it failed to run on your system please… Hi Friends, so, I have been working on Minecraft for a long time, and Virtually touching grass LOL.. AKA, Making Minecraft, it is quite challenging to say the least, you can check my devlogs.. Basically, I want to make a very very optimized version of minecraft, that you can see through far and far, and highly optimized. I want to add lighting and all, but the banner is a bit misleading.. I will continue to work on the project, but obviously, not Three.js, because What I have learnt is that.. You can use engines like Unity and Unreal, and make goated projects, the feel of making optimized content, and making it run even on a potato, is just on another level.. Seeing the entire generation moving towards fast making and prototyping, it is always a safe bet to try something new and interesting. This is one of the prototypes that taught me a lot, from How to deal with chunks, and manage chunks, to making biomes, which was actually new.. Chunks I have worked with AI before, and it helped me a ton, and I know about those, but not here.. Hope you love my project...
|
1793285253.4024882
|
1793371653.4024882
|