A few months ago I changed jobs and joined Scopely as a lead developer working on an exciting new project. It’s very hush-hush for the time being, but I look forward to being able to share it with the world when the time is right.
-
…building and deploying from the command line!
I’m learning my way around Godot at the moment for personal projects and have already been using Itch to deploy builds to my Steam Deck and to share builds with collaborators.
Since my pockets of hobbyist dev time are few and of unpredictable (normally short) length, I’ve been gradually evolving a script recently that I’m using to generate builds from the command line and push them to Itch, so wrapping up after a quick dev session is just a one-line command I can call and walk away from, safe in the knowledge that my work will:
- Get built for MacOS and Windows
- Pushed to Itch
- All changes will be wrapped up and pushed to the git repo with a tag matching the version number
This is the current version of the script:
#!/bin/bash # Use command substitution to get the input string input_string=$(cat project.godot | grep "version=\"") # Use grep with a basic regular expression to extract the version version=$(echo "$input_string" | grep -o 'version="[0-9.]*"') # Remove the leading 'version="' and trailing '"' version=${version#version=\"} version=${version%\"} echo "Building $version" git add -A git commit -m "Cleanup commit before build and publish of $version" git tag -a v$version -m "Publishing $version to Itch.io." # The folders need to exist already mkdir -p Build/Windows mkdir -p Build/MacOS godot-mono --export-debug "Windows Desktop" Build/Windows/The\ Bacon\ Game.exe godot-mono --export-debug "macOS" Build/MacOS/The\ Bacon\ Game.zip echo "Publishing $version" butler push Build/MacOS bursaar/the-bacon-game:osx-universal --userversion $version butler push Build/Windows bursaar/the-bacon-game:win-universal --userversion $version echo "Finished publishing $version" git push origin --tags
Feel free to borrow and extend for your own purposes.
If you read it through you’ll see that it has two things to be aware of:
- It has hardcoded values for this project. That’s fine for now, but wouldn’t it be nice if it could pull all the data it needed from
project.godot
? - You need to increment the version manually in
project.godot
.
While the above script works and I’m still using it, I’m also working on a successor which pulls all of its info from
project.godot
and will even increment the version number for you. This means that I can drop this script into any project I’m working on and have it set up the project’s metadata for me to fill in, and bingo-bango, I can push as I please.If you’re looking for a handy script, then you can stop here, copy and paste what I have above (don’t forget to run
chmod +x
on it before you try to run it!) and change the hardcoded values. If you’re interested in what may come next, read on!Build & Publish 2.0
This is functionally the same – a one-line CLI call that will build all available platforms and publish them to the correct project on Itch.io. I have a slightly janky version of this working at the moment. It’s nifty BUT it does require a bit of setup; namely:
- Adding properties to the project settings
- Setting up Export options (if you haven’t already)
- Adding those Export options to the build script
Something I hadn’t realised about Itch.io is that you can easily add fields and values to its
project.godot
file so you can layer in your own project metadata. To do this, enable Advanced Settings, write a path for the field, select a type and click Add.The above new fields look like this in the
project.godot
file:[Distribution] Itch/User="bursaar" Itch/ProjectSlug="the-bacon-game" Itch/sku={ "Windows Desktop": "win-universal", "macOS": "osx-universal" }
As part of the mapping, I currently need to link the export path to the “sku” on Itch.io. At some point I’d like to make this less direct and just map the Export option to the sku.
Incidentally, the above info looks like this in
project.godot
:export/itch/sku={ "Build/MacOS": "osx-universal", "Build/Windows": "win-universal" }
I will keep ferreting away on this; I’d like the script to auto-add the missing fields when run for the first time on a fresh project, and to have cleaner mapping between Export options and skus on Itch.io.
-
…recapping October 2023
Well now. What a month. Lots of things happening in my professional life that I’ll be announcing next month. Also our second kiddo is teaching themselves to crawl, often while they are still asleep at 4am, which has meant quite a few restless nights. I’ve been playing fewer games, but listening and reading to plenty! We’ve also been fitting in some fun autumnal, halloweeney adventures.
🎧 Listening To
The poster’s guide to the new internet from The Vergecast
I was blown away by this pithy take on one way to think about the future of the internet. At first it sounds a bit absurd, then kind of lazy, and then finally not just brilliant but essential.
Arnold Schwarzenegger on WTF
I knew him from movies, and as the Governator, but I realised I knew very little about Arnie, and had never heard him being interviewed before. He’s a fascinating guy, much funnier and smarter than I gave him credit for. I was glad to hear Marc challenge him on some of his political positions, and I came away really respecting him, even though I largely don’t agree with him.
KOTOR on A More Civilized Age
I discovered this long-running podcast last year. When Andor was blowing my mind every episode, they were there to help me pick up the pieces with great critical analysis. With the AMPTP continuing to fail to resolve the SAG-AFTRA strike, they’ve paused coverage of struck work and instead are doing a serialised playthrough of 2003’s Knights of The Old Republic. Two of the four hosts have never played it, so it’s been fun listening to them visit the story and mechanics for the first time. I’m enjoying the trip down memory lane, but also realising that this game is much deeper mechanically than I ever understood when I played it nearly twenty years ago.
Hard Fork
A tech podcast by the New York Times, it’s funny and usually insightful. I think I am less excited about generative A.I. than this show, but all the same, an easy recommendation.
🎵 Grooving To
- Olivia Rodrigo – just discovered her recently, so fun and sharp
- Tune-Yards – I’ve been sticking this on on shuffle for a bit of energy, really interesting production and so deeply, fluently musical
- NIN – New (to me) album With Teeth, one of their first. Some incredible bangers* (* bleak, compelling music)
- Muse – I was really into their dark emotive music in my moody teenage years but I think that as they’ve aged, they’ve leaned into the silly fun of their vibe and I realised to my delight recently that I still enjoy ’em.
📱 Apps and That
I’ve been trying a few great bits and pieces recently.
First of all, the new MacOS Sonoma has some nice features, letting me “install” web apps onto the dock. I know Electron has existed for years, but this is much easier, more stable and the native OS support really helps. Different profiles in Safari is nice too – again, nicking a beloved feature (of Chrome, but without the data harvesting).
I’ve spent a lot of time this year trying to get my internet habits in good working order. While I’ve been subscribing to some interesting newsletters and RSS feeds (more on that below) I’ve been struggling with my Wallabag instance; a self-hosted Read It Later app. It’s incredibly slow and clunky, and so I’ve switched to Omnivore, a more modern open-source alternative, which has lovely iOS, MacOS and web apps, tracks reading progress, can read articles aloud, gives you nice tools for labelling and highlighting text.
Speaking of internet habits, it’s not lost on me that I’m doing this while the internet is going through an incredibly creative and destructive upheaval. One of the horses I’m betting on is Mastodon, or at least ActivityPub. I haven’t found it as fizzy and sticky as Twitter, but I love its crunchy distributed open-source vibe, and I’m continually tweaking my Following list to improve my experience. This just got easier and nicer with the release of the open-source Ice Cubes app for MacOS and iOS. Free and pretty; it’s in its early stages so there are some slightly rough edges, but so far so great.
I’ve been juggling a lot of deadlines recently, and so installed xbar, a little taskbar utility for MacOS that does a deceptively simple thing; it will run a script (python, bash, etc) in a given location at a frequency you specify (seconds, minutes, hours, days etc) and if that script returns a string, it’ll output that value on the title bar. Sounds dull, but they’ve a gallery full of cool scripts you can plug in and tweak.
Another great MacOS utility I picked up recently was Raycast, a recommendation on Installer, the great newish newsletter from The Verge. It’s like Spotlight with an App Store. It’s got oodles of prewritten plugins that work great. I’ve been using it to rapidly lash notes into Logseq, update JIRA tickets, jot down wee notes. Hopefully when (if!?) life calms a little I’ll probe its other offerings.
👎 Not For Me
I tried and bounced off of Thunderbird this month. It’s a powerful open-source Outlook-replacement; a mail client, usenet client, contacts manager and calendar app. I found it unintuitive to use and overloaded with features compared to the very chilled-out experience of Apple Mail. Maybe I’m doing it wrong? Lemme know!
📚 Reading books
- Dark Horizon by James Swallow – ably-written pulp thriller with a couple of generic twists and a good sense of pace. A not-very-guilty-tbh pleasure.
- The Internet Con: How to Seize the Means of Computation by Cory Doctorow – I’ve been aware of Cory for years, mostly as a tech journalist, but this book and another recent one (his output is bananas) Chokepoint Capitalism were mind-blowing, both in their clear, stark explanation of just how bad it is, but also their hopeful notes on paving a way forward and building a new, good internet that works for everyone.
📱 Reading online
- ✉️ Garbage Day – funny and insightful analysis about the internet and internet culture in a newsletter. Free version is great.
- 📰 Fuck you, we’re not paying – I’ve been waiting for this! An inside scoop on what went down in Unity in the aftermath of runtimegate.
- 📰 Unsung Secret of Great Games – nice article by musician and games journalist Kirk Hamilton about the inherent musicality of gameplay.
- 📚 Pluralistic – Technopolitical firebrand Cory Doctorow’s blog, posts at least once a week.
- ✉️ Installer by The Verge – Weekly newsletter. Like this blog but better.
🕹️ Playing
As I mentioned at the top, I haven’t had much time or headspace for playing games this month (more on that next month), but I was lucky enough to nab an invite to Puzzmo, the new project from Zach Gage and some other very talented folks. Reading their manifesto, I was reminded of this great design teardown I read a few months ago by veteran game designer and author Raph Koster: Why NYT’s Connections makes you feel bad. Crosswords and puzzles have been huge for years, but Wordle really kicked things into the mainstream, and yet I’ve been disappointed by projects rushing in to fill the demand. Zach is a really thoughtful designer and artist and unsurprisingly myself and Nathalie have been really enjoying making our way through Puzzmo’s puzzles every day.
Oh! Not a game, but after over a decade of struggling to use Steam on a Mac, it’s amazing this year to finally have a GPU-accelerated version running like butter. Thanks Valve!
✅ My current backlog
- Baldur’s Gate 3 – I’m about 2/3 of the way through the first act I reckon, but need to give it more time.
- Shadows of Doubt – On paper this is a game created for me, but I found the input and text size a little difficult to handle on the Steam Deck in handheld mode, so I’m going to try this again soon with keyboard and mouse on a full-size screen.
- Psychonauts 2 – I loved Doublefine PsychOdyssey earlier in the year and picked this up a few months ago but haven’t gotten into it. Yet.
📆 Next month:
🎮 Might pick up Super Mario Bros. Wonder? If not, I definitely owe Baldur’s Gate 3 another shot.
🕺 Still doing my annual “will I? won’t I?” vacillation on NaNoWriMo. Currently considering a simple piece of interactive fiction using Ink with the same word count.
✂️ Likely getting ahead of Christmas with some christmassy crafts.
OH, AND BUT ALSO
I shared the Arnie interview with a friend of mine who pointed out that he has a well-known and respected daily newsletter with evidence-based health advice.
-
…deploying builds to Steam Deck
I’m working on a couple of tiny personal projects at the moment. The handiest way to play them is of course on the Steam Deck, but getting builds onto it without setting up a Steam store product has been a little impenetrable, until now.
After following a helpful guide on installing Itch.io on the Steam Deck, I’ve been able to use a handy little Unity Package to deploy directly to Itch.io from the editor – which now lets me play those builds on the deck, complete with auto-updating.
-
…playing Baldur’s Gate III
Yep. Like absolutely everybody else in the world, I am playing, and loving, Baldur’s Gate III.
With a 5-month-old in the house and summer holidays in full swing for our resident 5-year-old, playtime is snatched here and there, so once again the Steam Deck is my friend. I’ve managed to clock about 14 hours in the week and a half I’ve had the game and have been having a ball.
I bounced off the first two games multiple times, but I think the beautiful cutscenes (not to mention having XCOM softening me up on tactics games) have pulled me in. And the writing is not just exquisite but consistently, voluminously exquisite.
The Deck has been a great way to play too, thanks to amazing perf, input and UX work by Larian. The detail’s a little low (as you can see in the screenshots) but honestly you can’t tell on the Deck’s screen. I have hooked it up to my 4K work screen and played with keyboard and mouse. The softness is easier to spot of course but it’s still nice to be able to view the battlefield or a nice cutscene on a big screen.
It’s also been so fun to be playing something so Of The Moment. To fire it up and see a bunch of people all playing at the same time, something I also loved when I first started playing Tears of the Kingdom.
P.S. Grabbing screenshots off the Deck can be a pain so I worked out a way to do it wirelessly.
-
…slurping up screenshots from my Steam Deck
Have a Steam Deck? Find it ludicrous that you need to individually upload your screenshots to Valve’s servers and then do an awkward right-clicking dance to get them onto another computer or your phone? I’ve got good news! I’ve worked out a way to copy them with a one-liner on the command line, over wifi. I’ve only done this on MacOS though it should work on *nix systems as well, and I know that Windows has some kind of Linux integration so it should be possible there too.
SSH Time
This works over a local network using the
scp
command. Before you can connect to your Deck over ssh you’ll need to enable thesudo
command. This is amply covered here.Once you can use
sudo
to log in, choose a folder on your machine to receive the screenshots into and open a terminal with that as the current path.Get your Steam ID – it’s the field marked
steamID3
.In the command line on your computer, navigate to the folder you want to store the shots in. While on the same network, get your Steam Deck’s IP address, and with your Deck still awake, replace
<steam deck IP>
and<steamID>
with the info you gathered above and run:scp -r deck@<steam deck IP>:"/home/deck/.local/share/Steam/userdata/<steamID>/760/remote/*" .
This will copy all screenshots on your Deck into the folder you ran the command from. If you run it again in the future from the same place, it won’t create duplicates, it’ll just pull in shots that are missing.
Enjoy!
-
…reading The Apple II Age
📚
How The Computer Became Personal, by Laine Nooney.
I heard an interview with the author on an episode of The Vergecast, saying something I hadn’t really heard or considered before – the personal computing revolution wasn’t an accident, it wasn’t inevitable, and it wasn’t entirely in our best interests. Charting how “microcomputing” was driven from being a small but valuable hobbyist industry into a world-changing global phenomenon by capital and competing ideologies around openness and control. The digitisation of our lives was sold to us as something that would empower us, but it ended up doing the opposite. She closed that thought with this banger:
We are structurally incapacitated from negotiating around these systems, and it is to the advantage of these corporations who want to make all of these interactions seamless, smooth and easy.
Laine Nooney, 31st May 2023 on The VergecastI love computers, but I’m a tinkerer, a hobbyist. I host a bunch of open-source projects at home, I write (fun!) software professionally. I am empowered by computers, but that’s because I invested a huge amount of time and energy into learning, which required a dizzying stack of privileges, not the least of which was access in the first place. Everybody living in what could be considered modern society anywhere in the world needs to interact with computers and digital systems, and without being able to deploy them entirely for your own purposes, owning your data, controlling your own hardware, then that technology exists only to tilt the balance of power away from you.
I’m absolutely loving this book – it’s evocatively-written with a strong backbone of cited and sourced material. Nooney researched thousands of magazine issues and news items and interviewed developers to build a clear picture of how computers changed our world, and who drove the change.
Get the book here (physical or digital).
P.S. I was just polishing up this post before hitting publish and an interview with Laine Nooney by Adam Conover dropped into my RSS reader, enjoy!
-
…playing games!
🎮
Currently playing:
- The Legend of Zelda: Tears of The Kingdom
- Star Trek: Resurgence
- Valheim
- Vampire Survivors
Recently walked away from:
- Citizen Sleeper [Rolled credits]
- L.A. Noire [Stopped a handful of cases into the Vice section]
The Legend of Zelda: Tears of the Kingdom
Still adoring this game, but haven’t gotten to play it much for myself lately, I’ve been mostly playing for my eldest, who at 4 hasn’t yet learned to use a controller or read, so I’ve been doing both for him while following his direction, with his player profile on the Switch. It’s a lovely way to hang out but it’s making it increasingly grim for me when I go back to my own player profile and I have a fraction of the progress, hearts, stamina and collected resources. Hoping to get a run at it soon!
Star Trek: Resurgence
I have a long history of loving Star Trek games, even the lame ones. This one’s not perfect but it’s very polished, earnest and interesting so far. I’m also loving playing a story set in the DS9 era (at least production-design-wise).
Valheim
This was a fun one to take for a spin with some old friends. We messed around, made three houses – one nice, one incomplete, and one awful – and just generally shot the breeze while we chopped down wood and tested the game’s systems.
Note: Not only did the Steam Deck run Valheim flawlessly (with a couple settings down to medium) switching between handheld and using keyboard and mouse on a 4K monitor, but I was also hosting the game over wifi, which is kinda cool!
Vampire Survivors
After feeling like I’d hit a bit of a wall a few months ago, I picked it up again and quickly had the best run of my life, going a full 30 minutes, the Steam Deck huffing and puffing through the uncountable entities on screen. The Unity version will be dropping soon, I can’t wait to try it again, and see how the co-op handles.
Citizen Sleeper
It’s no secret that I like narrative games, but I’m often a lil skeptical of visual novels. Citizen Sleeper was a triumph though. Fascinating, beautiful, simple and compelling. Every time I fired it up I felt like I was returning to a good book. Absolutely recommend for a small, rich story that asks some big questions.
And there’s going to be a sequel!
The author/designer has been posting in-world serialised fiction to their substack – I’ve been too busy to dig in, but I’ve pointed my FreshRSS at it and have been hoarding the posts to read or send to my kindle when I have a little time.
L.A. Noire
I quickly fell in love with this weird, ambitious game from the 2010s but eventually felt my enthusiasm waning as I got into the Vice section of the game. Without spoiling too much, the game is structured as the career of Detective Phelps, who begins as a beat cop and then gets promoted through different layers of late 1940s LAPD. It hits an incredible peak at the end of what could be considered its second act, and then it gets seedy and mean, and the reportedly troubled production starts to show signs of affecting quality.
-
…playing Star Trek: Resurgence
I’m a sucker for Star Trek video games. Even the lame ones, I don’t care.
This one seems pretty decent so far – hokey in the way Star Trek can be overly-earnest and dorky, but it’s amazing to play such a high-fidelity experience with that DS9-era production design, and 2 hours or so in, the story is shaping up to be an interesting set of dilemmas.
-
…trying out WordPress (again)
Hello Darkness, My Old Friend…
Tinkering with WordPress was one of my first experiences of opening code editors, bashing my head against the desk in frustration and then later, sometimes, leaping in the air in victory. I haven’t used it in about ten years, which is how long it’s been since I last had a blog of any kind.
⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣤⣶⣶⣶⣶⣤⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⢀⣤⡾⠛⠋⣁⣠⣤⣤⣤⣤⣄⣈⠙⠛⢷⣤⡀⠀⠀⠀⠀ ⠀⠀⠀⣴⡿⠋⣠⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⠄⠙⢿⣦⠀⠀⠀ ⠀⢀⣾⠋⠀⠾⠿⠿⢿⣿⠿⠿⠿⠿⠿⠿⣿⣿⠁⠀⠀⠀⠙⣷⡀⠀ ⠀⣾⠏⢠⡀⠀⠀⢲⣿⣿⣿⣆⠀⠀⠀⢿⣿⣿⣆⠀⠀⠐⡀⠹⣷⠀ ⢠⣿⠀⣾⣇⠀⠀⠈⣿⣿⣿⣿⡆⠀⠀⠘⣿⣿⣿⡆⠀⢰⣷⠀⣿⡄ ⢸⣿⠀⣿⣿⡆⠀⠀⠸⣿⣿⣿⠃⠀⠀⠀⠹⣿⣿⡇⠀⣸⣿⠀⣿⡇ ⠘⣿⠀⢿⣿⣿⡀⠀⠀⢻⣿⠇⢠⣇⠀⠀⠀⢿⣿⠇⢰⣿⡿⠀⣿⠃ ⠀⢿⣆⠘⣿⣿⣧⠀⠀⠈⡟⠀⣾⣿⡄⠀⠀⠈⡟⢀⣾⣿⠃⣰⡿⠀ ⠀⠈⢿⣄⠈⢿⣿⣇⠀⠀⠀⣸⣿⣿⣷⡀⠀⠀⠀⣸⡿⠃⣠⡿⠁⠀ ⠀⠀⠀⠻⣷⣄⠙⠻⠄⠀⢠⣿⣿⣿⣿⣷⠀⠀⠰⠋⣠⣾⠟⠀⠀⠀ ⠀⠀⠀⠀⠈⠛⢷⣤⣄⡀⠙⠛⠛⠛⠛⠋⢀⣠⣤⡾⠛⠁⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠈⠙⠛⠛⠿⠿⠿⠿⠛⠛⠋⠁⠀⠀⠀⠀⠀⠀⠀
Taking inspiration (as always) from Nathalie, I’m going to try something that’s not quite a blog, not quite a Twitter/Mastodon account. Just a place for me to post interesting links, tools or worthwhile updates. They’ll be somewhat personal, occasionally professional. I’m doing this mostly for myself, and maybe one day for my kids, but also for anybody who’s interested.
A bientôt!
B