Hi! Here you’ll find info and developer diaries on my upcoming game Grab n' Throw, Unreal Engine 4 -specific tips, fixes and implementations, posts on programming, IT and music, and various other writings.

Grab n Throw



BGP on Windows Desktop

BGP on Windows Desktop
I love seeing BGP pushed to the edges of its intended use-case, and I’d been wanting to learn Go for a while. I’d also been frustrated that I couldn’t ingest BGP routes on my Windows desktop - it’s only included in the server OS versions. So I decided that my holiday project would be extending GoBGP to get my network’s BGP routes into my Windows 10 desktop’s routing table. I’m also a huge fan of “Why not? [Read More]

Devlog - Jazz Hands

Grab n' Throw has reached an important milestone - we now have hands! With the core gameplay features in place it was time to add some GameJuice™. Over the last few months I’ve added visible hands, hand animations, camera animations and more. To make everything more immersive I’ve opted to re-use the same external player model that other players see - you can look down and see your feet, and your hands grab the actual character you’re holding. [Read More]

Python-automated lightweight BGP lab in GNS3

Python-automated lightweight BGP lab in GNS3
I was looking to play around with some BGP changes so I set up a topology in GNS3 using FRR docker containers. Once I laid out the topology I didn’t want to manually address it, so I automated the entire lifecycle. Address generation, config application etc. This ended up taking way longer than manually doing it but was also way more fun and is now much easier to reset! BTW: FRR docker containers are incredible if you’re just looking to lab routing protocols. [Read More]

How to Rename a UE4 or UE5 C++ Class Used by Blueprints

Commit all existing changes so you can cleanly roll back if required Stop the editor Add something like the following to <your game folder>\Config\DefaultEngine.ini, where: <ProjectName> is the official project name UE4 uses in C++ for your project. E.g. the GT in GT_API that shows at the top of class declarations <OldClassName> is the name of the class you’re renaming from, with no A, U etc prefix. E.g. GTPlayerState instead of AGTPlayerState <NewClassName> is the name of the class you’re renaming to, again with no A, U etc prefix. [Read More]

Compilers for programming while tired

Strongly typed languages and compilers are wonderful. Especially when my eyes are struggling to stay open and the bed is calling. Usually by this time of night I can’t complete a full task, but I can plan and start one. If I’m refactoring I might change the parameter type in one function. If I come back a few days later and didn’t note exactly where I got to, I press CTRL+B and the compiler will dutifully show all the calls I have left to change. [Read More]

Simple two-way serial between Raspberry Pi Pico and Pi (or PC)

Nobody will ever need more than 115200 baud

Simple two-way serial between Raspberry Pi Pico and Pi (or PC)
I love Rube Goldberg machines. Love them. So when I wanted to add some physical IO to one, I figured it would be much more thematic and fun to connect my Pico-based Waveshare LCD + buttons to a Pi via serial, instead of simply using a Pi hat directly. I found a few guides around for getting the serial communication going, but none were exactly in the form I needed. I ended up breaking them down and combining them to create a simpler foundation for my own use. [Read More]

Devlog - Big Huge Throws

Bigger and Huge-er and Throwier

Over the holiday break I prototyped a whole new gamemode and map, which are Hole in One and The Distant Links respectively. They’re based on the thought “what if I just multiplied all the throw force, sizes, etc by 11?" and it quickly became apparent this is the most fun game mode so far. Even just the basic actions feel good. Check this out: The map is “what if a golf course was 256km^2? [Read More]

Visual Studio Code - Change inline braces in snippets to newline braces

Situation You’re a monster like me and have standardised on newline braces in PowerShell, but the vscode PowerShell extension has used inline braces. Solution Copy the snippets you use from %userprofile%\.vscode\extensions\ms-vscode.powershell-1.5.1\snippets\PowerShell.json Add them to your user snippets for PowerShell (CTRL+SHIFT+P > Open User Snippets > PowerShell) CTRL+F, regex mode Find \{", Replace with ",\n\t\t\t"{", CTRL+, to open user settings, then add "editor.snippetSuggestions": "top" Note: there are PowerShell user settings for code formatting, but I found these didn’t apply to snippets. [Read More]

Read Valid Input in PowerShell

Previously, any time I wanted to validate input in PowerShell, I’d write custom validation functionality per-script. It turns out that I reuse the same basic methods though, so I’ve created and shared a generalised function! This prompts users to enter input that matches a displayed list, then returns their input if successful. This works from VM or object selection, to simple y/n acceptance restrictions. The full details and code are here: https://github. [Read More]

Setting up Reaper Backups and Paths

Reaper is the DAW of champions, but even champions are reduced to tears, and a lifetime of pained staring-into-the-distance, by the loss of their entire creative output. Protect yourself from emotional damage by applying the following steps to your recording set-up. As always, adjust it to suit your own workflow, and tweak where you can. Let me know if you’ve got your own helpful steps to add. Note: This works with Reaper, but should be applicable to any DAW that has a reasonable level of The Files mentality. [Read More]