oidoid

oidoid

@oid.bsky.social

skeets on indie game and web programming. (he/him)

17 followers12 following15 posts

hello! i wanted a share an update on void, my 2d game and app engine for web. the attached video is more of slideshow to fit the server requirements but you can watch the source video (drive.google.com/file/d/1RfnN...) instead if you like (set quality to 1080p). the transcript follows.

View full thread

there's something called AssemblyScript that adds more primitive types like int and there's a proposal for adding struct-like functionality but neither of these is close to stable and i'll still be using Go at work. i am coding nervously. i still feel like i'm going to hit some hidden roadblock.

however, it's been wonderful to be able to use all the web APIs instead of native dependencies for audio, graphics, and input, and of course being able to distribute a no install app to players. it really complements my skills. thanks for watching!

hello! i wanted a share an update on void, my 2d game and app engine for web. the attached video is more of slideshow to fit the server requirements but you can watch the source video (drive.google.com/file/d/1RfnN...) instead if you like (set quality to 1080p). the transcript follows.

View full thread

i think there's a little more i could do here like minifying my shaders and maybe runlength encoding my data. the gzipped size about 20 KB but i'm base64 encoding all the Wasm as a JavaScript string so keeping that smaller may be worth it.

i wrote some Go CLIs both for bundling and checking bundle size. the latter is called "fat" and allows me to monitor size changes stay within a KB threshold each commit. it's been nice to have explicit control over memory layout. i think that's one of the most frustrating shortcoming of JavaScript.

hello! i wanted a share an update on void, my 2d game and app engine for web. the attached video is more of slideshow to fit the server requirements but you can watch the source video (drive.google.com/file/d/1RfnN...) instead if you like (set quality to 1080p). the transcript follows.

View full thread

until very recently, i thought that any Wasm usage, particularly Go would be a massive download. however, that's not the case! tinygo is a compiler for embedded devices and Wasm that optimizes for size.

my current build which admittedly doesn't do much is 41 KB uncompressed including all the JavaScript, CSS, HTML, and Wasm encoded as a single file deliverable. the Wasm binary by itself is about 18 KB.

hello! i wanted a share an update on void, my 2d game and app engine for web. the attached video is more of slideshow to fit the server requirements but you can watch the source video (drive.google.com/file/d/1RfnN...) instead if you like (set quality to 1080p). the transcript follows.

View full thread

the bottleneck seems to be the GPU as i'm not doing any CPU-side sprite culling and when i shift the camera to limit balls drawn, the framerate climbs back up.

this is promising compared to the JS implementation which was about 200k sprites but was way more featureful so i'm not ready to claim a 3x boost and honestly i was expecting a more substantial improvement. everything is singlethreaded. you can compile Go to Wasm so it'll run in the browser.

hello! i wanted a share an update on void, my 2d game and app engine for web. the attached video is more of slideshow to fit the server requirements but you can watch the source video (drive.google.com/file/d/1RfnN...) instead if you like (set quality to 1080p). the transcript follows.

my professional work has started drifting more into Golang so to better align my life, i'm rewriting void again this time in Go. it's going to take some months.

so here's the demo. i've got basic tile and sprite rendering and input polling. when i'm not recording, i can get to up about 700k sprites on my super laptop.

๐Ÿ—’๏ธ Kind of Trello but plaintext: the latest Linear Text prototype has a more electronic notes vibe. Download the prototype here (github.com/oidoid/linea... ). Double click to run. Please do not edit important text in the prototype. It's _very_ buggy!

You are up to date.