I've just released a major update for my tiny cozy virtual pet sim game and I'm really pleased with what I've been able to learn and practice as a newbie gamedev while developing this! (Made with Godot using GDscript)
Observer pattern using signals and a signal bus
Saving and loading game data (including building in compatibility with save files from some previous game versions)
Mod support! So excited to try implementing this for the first time. My favorite games support mods and I'm happy to learn how to support them in my own games too.
Technical design-- specifically, implementing lighting effects that look nice without causing the game to lag on mobile
Overall, I still write garbage spaghetti code but it's just a tiny bit less garbage and a tiny bit less spaghetti now 😂
I’ve fallen into a rabbit hole and have been making a hacked together isboxer equivalent for X11/gnome.
It started when I realized someone had posted a patch to make wine to work with Vanguard: Saga of Heroes which has been broken in wine since 2013 or so. I had been meaning to look into patching myself but never got around to it it as the issue was pretty straightforward, it was resolving paths to the dlls with extraneous '.'s in the path and they wouldn't load. Anyways, Vanguard now runs in a patched wine but then I quickly realized that since only about ~10 people are playing the emulator, mostly in eurotime, I'd need to multibox to relive most of the content and didn't feel like a) wrestling with isboxer in wine and b) paying for it.
Thus I've written a key broadcaster in C using libxdotool, which I need to flesh out a D-Bus service for. That will be for communicating with a gnome shell extension I've partially written to do picture-in-picture style scaled views of the relevant windows with mouse click passthrough via my application for interacting with the windows. Gnome shell still has an embedded copy of clutter in it, which provides a low cost way to clone and scale window given an X window id.
The picture-in-picture stuff makes multi-boxing easier to do with less screen real estate, particularly because Vanguard doesn't render at all in virtual desktop mode beyond a few predefined resolutions. Virtual desktop is required to keep windows in focus while minimized both in order to actually get key down events to windows not in focus via x test extension and because, without patching d3d9 (which I know can be done but I'd have no idea where to start) Vanguard is limited to ~10 fps when not in focus.
Anyways, I haven't been working on it a lot, just a little here and there. Maybe I'll wrap it up before the fall hits but that's unlikely. I don’t think it’s something I could package, having an X11+Gnome dependency, but I might put the source out there when I’m done. Doing it correctly likely requires abstracting away compositor dependencies similar how hawck does by looking at /dev/uinput but I'm not sure how you'd do the window stuff in an agnostic way.
I'm building a new publicly-accessible matrix server, with community features on top of chat. The idea is to essentially have a FOSS alternative to Discord that can be indexed by search engines, self-hosted, federated etc. Here are a couple of links:
Discord channels are of a distinct type, but Shpong channels can be toggled between forum and chat views. We have nested comment threads, topics and a bunch of other things.
Obviously, heavy work in progress with loads to do.
Bringing up a blog with the Pelican static site generator. I have a lot of projects like YOShInOn and three-sided cards that people are asking me about and I have to start writing it all up.
I made a stab at Hugo a few months back but switched to Pelican because it is important to me that I be able to do everything a technical blog might need to do and that means writing my own plugins and I’d rather do that in Python (and reuse stuff I have) as opposed to learning Go.
After a few random conversations online (here and Discord), and being inspired by BattleBit I decided to start learning Unity.
I am doing the exact "wrong" thing and focusing on The Most Awesome Game Ever (TM) right off the bat. So far it has pretty fun, slow, but fun. It is surprising how easy Unity scripting is in C#,​ although guides, ​tutorials, Google, and ChatGPT have been misleading on some very simple topics.
So far I have somewhat completed a first person controller with jetpack, and dash movement, which at this point will mostly simply require tweaking physics values and camera effects to make the feel....​Feel right.
Playing with variable values got kinda boring, so I also started on a mech controller, which has been really fun. Not even close to finished though as I need to work on the joints and rotation limits for the arms. I am hoping for the finished product to have upper and lower arm actuators that allow for faster vertical and horizontal aiming, while allowing the arms to rotate to target the object the cursor is aimed at, but also start to rotate the mech torso after the arms have moved outside a certain angle limit (basically a copy of MWO). I also need to add auto zeroing so the weapons fire from the appropriate locations, but will adjust their firing angle to converge on the object the cursor is aimed at (since you can't have good mech combat with your bullets firing from the center of the screen).
It's a huge project... But I am kinda ok spending years chipping away at it as a hobby.
This week I’ve decided to start working on my own TUI text editor. I’ve spent the week evaluating languages and TUI libraries and today I started working on a version using rust and ratatui. I don’t know if this will be the final form, but it should be a fun project nonetheless
I've just released a major update for my tiny cozy virtual pet sim game and I'm really pleased with what I've been able to learn and practice as a newbie gamedev while developing this! (Made with Godot using GDscript)
Overall, I still write garbage spaghetti code but it's just a tiny bit less garbage and a tiny bit less spaghetti now 😂
I’ve fallen into a rabbit hole and have been making a hacked together isboxer equivalent for X11/gnome.
It started when I realized someone had posted a patch to make wine to work with Vanguard: Saga of Heroes which has been broken in wine since 2013 or so. I had been meaning to look into patching myself but never got around to it it as the issue was pretty straightforward, it was resolving paths to the dlls with extraneous '.'s in the path and they wouldn't load. Anyways, Vanguard now runs in a patched wine but then I quickly realized that since only about ~10 people are playing the emulator, mostly in eurotime, I'd need to multibox to relive most of the content and didn't feel like a) wrestling with isboxer in wine and b) paying for it.
Thus I've written a key broadcaster in C using libxdotool, which I need to flesh out a D-Bus service for. That will be for communicating with a gnome shell extension I've partially written to do picture-in-picture style scaled views of the relevant windows with mouse click passthrough via my application for interacting with the windows. Gnome shell still has an embedded copy of clutter in it, which provides a low cost way to clone and scale window given an X window id.
The picture-in-picture stuff makes multi-boxing easier to do with less screen real estate, particularly because Vanguard doesn't render at all in virtual desktop mode beyond a few predefined resolutions. Virtual desktop is required to keep windows in focus while minimized both in order to actually get key down events to windows not in focus via x test extension and because, without patching d3d9 (which I know can be done but I'd have no idea where to start) Vanguard is limited to ~10 fps when not in focus.
Anyways, I haven't been working on it a lot, just a little here and there. Maybe I'll wrap it up before the fall hits but that's unlikely. I don’t think it’s something I could package, having an X11+Gnome dependency, but I might put the source out there when I’m done. Doing it correctly likely requires abstracting away compositor dependencies similar how hawck does by looking at /dev/uinput but I'm not sure how you'd do the window stuff in an agnostic way.
I'm building a new publicly-accessible matrix server, with community features on top of chat. The idea is to essentially have a FOSS alternative to Discord that can be indexed by search engines, self-hosted, federated etc. Here are a couple of links:
Discord channels are of a distinct type, but Shpong channels can be toggled between forum and chat views. We have nested comment threads, topics and a bunch of other things.
Obviously, heavy work in progress with loads to do.
Bringing up a blog with the Pelican static site generator. I have a lot of projects like YOShInOn and three-sided cards that people are asking me about and I have to start writing it all up.
I made a stab at Hugo a few months back but switched to Pelican because it is important to me that I be able to do everything a technical blog might need to do and that means writing my own plugins and I’d rather do that in Python (and reuse stuff I have) as opposed to learning Go.
After a few random conversations online (here and Discord), and being inspired by BattleBit I decided to start learning Unity.
I am doing the exact "wrong" thing and focusing on The Most Awesome Game Ever (TM) right off the bat. So far it has pretty fun, slow, but fun. It is surprising how easy Unity scripting is in C#,​ although guides, ​tutorials, Google, and ChatGPT have been misleading on some very simple topics.
So far I have somewhat completed a first person controller with jetpack, and dash movement, which at this point will mostly simply require tweaking physics values and camera effects to make the feel....​Feel right.
Playing with variable values got kinda boring, so I also started on a mech controller, which has been really fun. Not even close to finished though as I need to work on the joints and rotation limits for the arms. I am hoping for the finished product to have upper and lower arm actuators that allow for faster vertical and horizontal aiming, while allowing the arms to rotate to target the object the cursor is aimed at, but also start to rotate the mech torso after the arms have moved outside a certain angle limit (basically a copy of MWO). I also need to add auto zeroing so the weapons fire from the appropriate locations, but will adjust their firing angle to converge on the object the cursor is aimed at (since you can't have good mech combat with your bullets firing from the center of the screen).
It's a huge project... But I am kinda ok spending years chipping away at it as a hobby.
This week I’ve decided to start working on my own TUI text editor. I’ve spent the week evaluating languages and TUI libraries and today I started working on a version using rust and ratatui. I don’t know if this will be the final form, but it should be a fun project nonetheless