Happy new year!
(while things remain to be unambiguously on fire)
What a year, huh?
… not the best year for this mailing list, that’s for sure.
Perhaps the #1 reason why my mailing list updates have gone on a hiatus, and not just that.
You may also skip over to “Work & such” section with page search, but there’s nothing graphic here and also photos of local scenery and cats. The choice is yours.
For a little while, I have been assembling a collection of links concerning the war, ranging from pretexts and breakdowns of hollow claims to peace negotiation attempts and corruption in the current Ukrainian government that made Russia think that they could take Kyiv in 3 days in the first place.
The months went by, the list grew longer, first from a section in a mailing list post, to its own post, to a page with nested sections, to honestly being too hard to manage, let alone read (at >200 links total).
But there’s also a simpler truth: if, after more than 300 days of war, someone supports Russia or claims to be a “peace advocate” or other similar occupations, they’re either really committed to it or a bot. People aren’t going to read anything you offer them - heck, people don’t even read links that they send to you and get very angry when you point it out.
Perhaps the grimmest months of war by far - constant air raid alerts, risk of naval landings. If Russians could take Mykolaiv, Odesa would likely suffer the same fate as Mariupol.
A handful of people left for western Ukraine, some sent their children and elderly to Europe. Some businesses closed; some would only take payment in cash out of fear that bank system could collapse due to infrastructure strikes.
Personally I’ve found myself all but unable to work due to stress and overall uncertainty of the situation.
Things started looking a little better after the warship Moscow was sunk.
Did you ever catch yourself thinking “is everyone out of their mind?” when looking at mass gatherings of people during COVID? Imagine that, but instead of a slow and miserable death you risk a quick and violent one - as remains of shot down missiles and sea mines wash up on the shore, civilians inadvertently step on these once in a while. Think that’s going to stop others from ignoring the signs and taking a dip in the sea? Of course not. Death before inconvenience.
I spent many of the warm summer mornings and evenings walking along the shoreline with periodic detours towards one or other shelter due to air raid alerts.
The rest of the time was spent on slowly updating my various GameMaker tools and extensions - with GameMaker updates having picked up the pace by a lot through the year and deprecation of x86 Windows runtime (which meant that none of DLLs made before ~2021 would work), there was more to do than ever.
A calm time for a civilian - the reckless sea-lovers have mostly gone back to their homes and with start of Ukrainian counter-offensive, air raid alerts have become a rarer occurrence.
I managed to mostly catch up on GameMaker-related work and even made some long-overdue contributions to work projects.
I would like to include some meaningfully related photo here, but my phone’s gallery is mostly photos of Odesa’s numerous cats.
Some of my friends appreciate these dearly, and myself I can look at a photo and tell you where I took it, along with whether I’ve seen that cat often at that location.
Most of these cats aren’t “owned” by anyone, but people care for them and feed them well… for some cats, perhaps too well:
During late autumn, a change of strategy occurred: instead of aiming for military targets, Russia’s long-range and high-precision missiles would now be used almost exclusively on critical civilian infrastructure.
While Russian propaganda portrayed this as impeding collapse of society in Ukraine, some “Russians with critical thinking” would argue that, actually, even though the government is openly saying that it wants Ukrainian children and elderly freeze to death, this is to finish off Ukrainian economy or cause an uprising, or a number of other theories, each more insane than the last.
Odesa would often be among the most hit in mass missile strikes - at a few points, most of the city had no electricity for a day in a row or more, followed by several days where you had 1..3 hours a day to do whatever it is that requires power.
Effects of global warming are among the most visible in Odesa. While during my first visits (years ago) the city often resembled a (rather slippery) winter wonderland with constantly falling soft snow, during the last 3 years I lived here there were only a few snowy days a year, with temperatures rarely falling below zero.
Consequence of above, most of the newer buildings don’t use gas for heating/cooking, and apartments tend to be insulated rather lightly - after all, why spend money on a proper heating system when an air conditioner and a $30 ceramic heating panel will do? Especially if you’ve bought the apartment to rent it out during summers.
Anyway, I had to move apartments because the one I was renting would cool down to 10℃ overnight without electricity, and although there’s some fun in making a sort of a tent out of blankets and random furniture to sit in with a little laptop, it’s not so fun when you have to work like this all the time.
The new apartment is insulated remarkably well (with temperatures yet to fall below 16℃), though there’s a little catch: it gets next to no mobile signal during blackouts - I have to occasionally walk up a few flights of stairs just to check whether there are any news and whether anyone has tried to call/message me.
Plenty of local businesses let people charge their phones/laptops from their fuel generators, which was my solution for getting any work done during longer blackouts. I later got a power bank that’s about the same capacity as the laptop’s battery, and most recently a “power station” that looks like a fancy car battery and can not only recharge the laptop a dozen times, but also power a regular-sized display, allowing me to work fairly normally.
The laptop + monitor combination is also how I mostly work these days in general, with PC being only occasionally turned on to play videogames (if I have time, my friends have time, and all of us have electricity) or to do time-consuming build tasks.
Prior to outbreak of full-scale war, I was of a general impression that most Russians are relatively sensible, save for some older people and conspiracy theory enthusiasts.
Having spoken to plenty of people over the past months, I would generally arrange Russians into several main categories:
People that wholeheartedly support Ukraine.
Some of those who have resources to do so and are not excessively courageous have already “voted with their wallet” and timely relocated to other countries.
People that oppose the war but also are familiar enough with the matters to say that none of this is simple.
Some of them also flee the country, others decide to wait it out in the middle of nowhere where neither the war nor their government can reach them.
People that don’t have much of an opinion and are desperately trying to go on with their lives as normal.
Similar sentiments prevailed during the last years of Soviet Union.
People who support the war and want Ukraine to be destroyed at best, and every Ukrainian to be killed at worst.
Of course, most of these aren’t ready to lay their own head for it but tend to think that they’re living in a lawful country so there is no need to flee. Some of them later find themselves in a trench.
People who pretend to be from category 2 (or even 1), but really are the worse of category 4.
Seen again and again - you see someone ask others not to be “russophobic”, but if you start asking them questions, you hear nothing but whataboutism in return, and if you do get any actual answers from them, it’ll turn out that every Ukrainian is guilty and should suffer, no Russian is guilty of anything, and if there’s indisputable evidence telling otherwise, then it’s either Ukraine’s fault, more whataboutism, or a much plainer “because we can”.
Some of them lie to leave the country. Some later get deported back to Russia once they show their true colors.
Most of Russia’s “opposition” also falls in this category, all while being comically bad at hiding their views.
I don’t think there’s any real way to tell out the true proportions of these, though what I can tell you that if I mostly knew people from the last category, I would have probably already quit game development and went on to write malware instead - after all, my tools already feature a wide range of tricks with executable patching, monkey-patching, proxies, and function hooks. I write compilers and decompilers. My tiny DLLs share most of their traits with shellcode. But I have ethical standards so all of this is being used to bring new functionality to games and software rather than doing anything malicious.
Ultimately there are two outcomes of war: either Ukraine is destroyed and any leftover civilians are used as cannon fodder in the next war (just like citizens of Russia’s “republics” are in this war), or a change of power structure happens in Russia. Any peace treaty will simply re-schedule the war, giving Russia a better leverage, as seen in its recent wars.
Russia’s current strategy’s implications are interesting as it brings disproportional equipment and personnel losses to Russian forces - after all, if you’ve spent 20 high-precision missiles to hit a substation near Odesa, that’s up to 20 military targets that weren’t hit, some of which might tear through another batch of your soldiers later the same day.
And although I don’t doubt the Russian government’s willingness to sacrifice any number of people for the victory, you can only take so many skilled people out of production and enterprises (not to mention people that ran away before they could be mobilized) before everything starts slowly falling apart, which is already visible as more and more planes and helicopters crash and burn without even crossing into Ukraine.
Time will tell.
Work & such
Honestly this year was off to such a good start before the war.
I was commissioned to work on GameMaker again! This time for multiplayer.
I made the initial GGPO integration prototype as a native extension (that one’s on GitHub), then as an HTML5 extension via Emscripten (that was… fun), then as the initial runtime integration for Opera GX.
I also made the basis for serialization/deserialization system that’s still used today… and then the war started, so I mostly fell out of the loop with development.
Fortunately, the multiplayer wasn’t just me (and have just expanded prior to war) so the development continued and the beta was made publicly available in June.
Other than that,
I worked on Nuclear Throne a whole bunch, mostly focusing on updating the scripting runtime and API to GMS2022.
It’s a lot of work to both support the newest GameMaker features and not break GMS1-era mods.
Samurai Gunn 2 updated a bunch!
Apart of occasionally helping with desync hunting, admittedly I don’t have a lot to do here at the moment, but I’m very proud to be part of this team.
I released my online multiplayer mod for Caveblazers on itch.io
Primarily aimed at GOG players of the game, it has a whopping one hundred downloads as of writing this.
I have updated a whole lot of my extensions to support the Windows x64 runtime, which I’m not going to list as this post is already kind of long.
I updated GMEdit a bunch, most notably adding support for arrow function shorthand syntax and adding more bells and whistles to some of the UI (global search, lookup).
I updated GMLive to current GameMaker versions, most notably making the macros work the same way as GMS2 macros do (but also introduced live path reloading, a universal live_call macro, and more).
I released Gameframe!
The extension gives GameMaker games a custom, which acts like a native one but retains every benefit of doing it yourself (borderless fullscreen, not freezing the app while dragging the window, customization).
I’ve been poking at it for basically the whole year (the first version was made in December 2021) and am very happy with the results.
I made a tiny extension that lets the user drag and drop files/directories onto the game window
I wrote a mildly big post about GameMaker’s numerous file formats and opening them in various GameMaker versions.
Mods & tools
I made a mod for Spelunky 2 that lets you drop items.
I was really hoping that it would work online but alas - game’s netcode interactions with mods are… peculiar.
I made a mod for Out of Space that allows to play the game with more modifiers and also an extra-large level size.
I updated my bunch of Terraria tools (Terrasavr, Terranion, Terraria Research Tracker) to support the new game versions, along with other improvements.
Terrasavr has turned 9 years old last week! If you told me in 2013 that my little experiment would be among the most popular tools for the game and that the game would still be getting updates in 2022, I wouldn’t believe you.
I made a tiny tool+userscript combo that gives the web version of Discord a tray icon like the native version has it.
Availability during these times is a tricky question, but my to-do list is quite long: there are two videogames that I need to do netcode for. I have a few extensions to finish, one of which is utilizing novel tricks to do something that clearly shouldn’t be possible in GameMaker. I’d also love to make a videogame (or even two), but we’ll see, really.
Thanks for reading and see you next time!
Substack is telling me that it’s good to remind people that they can subscribe to a newsletter