GioCities

blogs by Gio

Atom feed Recent essays

👨‍💻 Positioning Things in Ren'py

  • Posted in dev

As is common in Python, the mechanical process of displaying something on screen in Ren’py is at once easy to execute and deceptively complicated to execute correctly.

The Ren’py documentation does a fine job of defining the specifications of position properties, but intuitively understanding how to use those properties can still be hard because it doesn’t include much in the way of examples or elaboration, so here are some of those.

Your basic properties

These names come directly from atl transform on the documentation. Note that these are generally parallel with the style properties of the same names.

📣 W.D. Gaster and fake depth

  • Posted in fandom

or, “W.D. Gaster undercuts Undertale’s cohesiveness as a work”

When I wrote The Raphael Parable, I updated it with a little ARG. “The ARG Update”, I called it. There were scattered clues, and a puzzle, and secret notes so the diligent scavenger could piece together what really happened. Except nothing did really happen. There wasn’t a story I wanted to tell, there wasn’t an interesting mystery to solve, there were just clues tied to more clues tied to an arbitrary ending. It was the trappings of mystery without any of the meaning.

Petscop, on the other hand, has a substantial depth to it because it keeps tying itself to reality. The viewer is given a real person recording themselves playing a game. It’s set in our world. The game itself seems to be intricately tied to real-world events; too. Disappearances, the player’s family, even the YouTube account managing the videos. Petscop tells a deep mystery story because the mystery is backed by a story: a death, an abuse, a revenge. There’s meat to the mystery.

Sans (Undertale) is a fun character. He’s spooky. He breaks an unbreakable log, he teleports, he’s figured out something about the timelines. Then there’s a fight with Sans, where he’s very tough and has a gun. Then he needed a backstory for his gun and science, and we got Gaster, who is almost those things. Gaster was a fun idea, though, so he got some extra Easter eggs. We get room_gaster, the gaster followers, Mysteryman, the wrong number song, and the sound test. He’s fun, and mysterious, and ended up carrying most of the mysterious lore bits of Undertale that were never quite explained.

👨‍💻 How we made Befriendus Ludicrously Accessible

  • Posted in dev

Befriendus; everybody’s favorite visual novel about making alien friends. It’s got trolls, yes, but it also has a slew of accessibility options. You can adjust everything: color, font, motion, even spelling. It’s clean, it’s easy, and it works. Here’s how we did it.

Befriendus in-game menu, with accessibility options

When I was designing the basic accessibility framework I had these principles in mind:

  • Accessible scripts must be easy to write; work should never be duplicated
    • Demanding people write multiple versions of work is bad design and encourages accessibility to eventually be dropped in favour of efficient production
  • Humans should never do postprocessing tasks
    • We’re writing software; a computer should do any and all mechanical work, not writers
  • Accessibility options should have as granular control as possible
    • Whenever possible, players should be able to select exactly what they need, not be forced to use something that doesn’t match their needs.
    • Options should be compatible with each other whenever possible
    • Just pushing out transcripts is not accessible design.

The best way to explain these is probably to explain what we ended up doing, and how each design choice was made carefully in accordance with those principles.

🎮 VR First Thoughts

  • Posted in gaming

I got myself an Oculus Quest 2 a couple weeks ago on a recommendation, and I have some thoughts! If you haven’t done VR before (like me, before I had my first thoughts) you might be wondering what you might notice besides the obvious. So, here are my observations, in no particular order.

Haptic feedback is really important

Haptic feedback is really important. Even though it’s just vibration, the difference between feeling something and feeling nothing when you touch things is worlds. The vibration does a decent job of simulating the feeling of resistance and letting you “feel out” the world, which is very important in games where the alternative is getting your prop stuck in a shelf.

You can actually stream games and it works

When I first saw that the recommended way to play PC games was over local wifi, I thought “no way. There’s no way you can get a high-quality video stream at that resolution with those latency requirements over wifi. I’m going to get a good USB cable and stream directly at 300 mbps and it’ll be excellent.” Turns out, no! With my (fairly normal) router, Virtual Desktop can stream a steady game at 1832x1920@60fps x2 over ~70 mbps with an imperceptible loss in quality. (Those numbers mean it’s good.) The connection is actually way more reliable than using the USB connection, and the Virtual Desktop app has a unified game launcher for both Rift and Steam which works great. If you look closely at dark areas you can see some artifacts, but in general I think this is a case where the video compression is extremely effective.

🎮 Stanley and the Death of Sourcemods

  • Posted in gaming

My first published, “successful” piece of game content was The Raphael Parable, a little exploration game about wandering through an impossible office. I use the word “content”, here because The Raphael Parable isn’t a game per se, but it’s a mod for the Steam release of The Stanley Parable that bootstraps the assets and mechanics to create a totally different game.

A new version of The Stanley Parable is releasing soon: The Stanley Parable: Ultra Deluxe is slated to be a remake with improved graphics, new endings, and console support. When I first saw this, I thought it would be a fun opportunity to go back to The Raphael Parable and tighten up some of the work that didn’t age well (I slapped it together pretty quickly, in hindsight, and it shows in places) as a new mod for the new version of the game.

"I love my car, I just hate my engine" Unity logo mug “I love my car, I just hate my engine”

Unfortunately, I quickly realized this was a non-starter for one simple reason: Unity. Ultra Deluxe is made by crowscrowscrows in Unity, which unfortunately stops this iterative development in its tracks. Let me explain:

The Weird Genealogy of The Raphael Parable

The Stanley Parable itself started as a mod. The original published version is a Half-Life 2 mod from 2011, of which the 2013 Steam release is an HD remix. The Source Engine, which Half-Life 2 is built on, makes it easy to author a set of new maps and release it as a “sourcemod”. Sourcemods are a fascinating artifact of Valve history, and function as a kind of mod support for source games built directly into the Steam client. Davey Wreden did exactly this to make The Stanley Parable; he took the basic 3D engine and a few generic office-themed assets and made a completely new experience.

📣 More on the Hiveswap Odd Gentlemen Debacle

  • Posted in fandom

When I wrote the Hiveswap article, I left a note asking for people to contact me if there were any facts I got wrong or major events I missed. A number of people took me up on that, which I am thankful for.

However, there was one big report I got that was too significant to just edit into the article. Because these allegations were new, and from a credible source, I thought they warranted their own article and research.

By the request of the source (because Andrew is known to be aggressively litigious), I have edited our conversation into a synthetic document summarizing their position. This is a summary of the claims from the source to preserve their anonymity and ensure clarity. I am not yet asserting anything, just stating what the source said; I’ll hold my personal comments until after the whole thing. Here is that report:


Supposedly: What actually happened with The Odd Gentlemen

The biggest reason there’s an NDA in place about The Odd Gentlemen’s involvement is that Andrew wanted to cover up the fact that much of the blame is on Andrew’s failure to deliver a workable plan to the studio in the agreed-upon schedule.

While parts of the ipgd post are true, the post distorts what happened into a story designed to make Andrew look like he did no wrong. What actually happened is this:

⚖ Tweets about the attack on the Capitol

Twitter is an ephemeral medium. You scroll through tweets just fast enough for them to register in your head, and then they’re gone forever. If you want to find something again, you can go to somebody’s profile and scroll through, one tweet at a time, until you find what you wanted.

This is a lousy way of capturing history. That’s not great, because Twitter does such a good job of capturing important moments, as they happen. If you want to save that moment, though, what can you do? What do you do if you think a day’s tweets are important? Print them out?

Well, I did. Here is what I tweeted and retweeted, on a page. Tactile. To be read.

📣 Why Act 6 Hits Different

  • Posted in fandom

One of the reasons Homestuck was so popular is how contemporary it was to internet culture. You tell anyone that Homestuck is heavily influenced by internet culture and they’ll nod and agree and you’ll both be very intelligent media critics. But somehow, even from that same group, you’ll see people who notice how the writing style of Homestuck changes over its nine year run and forget about contemporary culture entirely, which is a mistake.

👨‍💻 ACNH Printer - a writeup!

  • Posted in dev

This is a writeup of a project I did in April but never released. Well, I’ve definitely released it now, if you want to give it a try!

Instead of a real introduction, here’s a video demo, with camcorder LP technology from 2005:

I am not going to buy a capture card

Ever since Wild World, Animal Crossing has had a pattern system, where players can design their own textures and use them as clothes or decoration. New Horizons has one, but since it doesn’t have a stylus you have to either use the directional pad to mark individual pixels or draw with your fingertip.

I thought it would be fun to find a way to automate that. Now, granted, it takes a while, but it’s still much faster than trying to copy pixels over by hand.

📣 Accountability on Kickstarter

  • Posted in fandom

This section was originally included in the main body of The Hiveswap Fiasco but I decided it was distinct enough to move it to its own aside page.


A quick note here about how Kickstarter works. This may seem excessive to litigate now, but as you’ll read shortly, it’s unfortunately surprisingly relevant. When a Kickstarter project succeeds, backers pay the creator directly, not Kickstarter — Kickstarter takes a cut, but the transaction is between the backer and the creator. For this reason, Kickstarter doesn’t guarantee refunds.

However, Kickstarter is not a blind donation based on trust alone: creators are legally obligated to fulfill backers. From Kickstarter’s own accountability FAQ:

Is a creator legally obligated to fulfill the promises of their project?

Yes. Kickstarter’s Terms of Use require creators to fulfill all rewards of their project or refund any backer whose reward they do not or cannot fulfill. (This is what creators see before they launch.) We crafted these terms to create a legal requirement for creators to follow through on their projects, and to give backers a recourse if they don’t. We hope that backers will consider using this provision only in cases where they feel that a creator has not made a good faith effort to complete the project and fulfill.

This is a summary of section 4 of the Kickstarter Terms of Use1, which reads:

When a project is successfully funded, the creator must complete the project and fulfill each reward. Once a creator has done so, they’ve satisfied their obligation to their backers.

Throughout the process, creators owe their backers a high standard of effort, honest communication, and a dedication to bringing the project to life. At the same time, backers must understand that they’re not buying something when they back a project—they’re helping to create something new, not ordering something that already exists. There may be changes or delays, and there’s a chance something could happen that prevents the creator from being able to finish the project as promised.

If a creator is unable to complete their project and fulfill rewards, they’ve failed to live up to the basic obligations of this agreement. To right this, they must make every reasonable effort to find another way of bringing the project to the best possible conclusion for backers.

The creator is solely responsible for fulfilling the promises made in their project. If they’re unable to satisfy the terms of this agreement, they may be subject to legal action by backers.

Now, if a project fails and goes bankrupt, they obviously can’t fulfill their obligations. Kickstarter projects fail all the time. However, there are concrete, legal obligations on creators of successfully funded projects, as long as they’re capable of doing so. Or, if there’s a reason that the final product can’t be completed, (non-bankrupt) project creators are obligated to refund their backers. Note that there are two obligations here: between the creator and Kickstarter, the company, and between the creator and the project backers.

So, in the case of the Homestuck Kickstarter, “MS Paint Adventures” is legally obligated by both Kickstarter and the project backers to deliver the promised game and merchandise to the project’s backers. But hopefully it won’t come to that, right?


  1. I’m reading from the latest version of the Kickstarter terms of use here even though the Homestuck Kickstarter was launched under an earlier revision. That shouldn’t affect anything, though, because continued use of the service constitutes agreement to the updated rules. Users both are currently subject to the latest version of the terms and were subject to what was the current version of the terms at time of publication. 

📣 The Hiveswap Fiasco

  • Posted in fandom

The real “story” of Hiveswap isn’t set in the universe of the game. Instead, when people talk about Hiveswap, the conversation is dominated by stories about the development and history of the game as a project, which started as a Kickstarter success story but then bounced from scandal to scandal for years. The story of how Andrew Hussie burned through a $2.5 million dollar investment over eight years to produce almost nothing is fascinating, convoluted, and poorly understood especially among newer Homestuck fans.

Right now, this meta-story mostly exists in the form of oral history. This is probably due to the fact that a lot of the key sources have now been deleted, but I think it’s also because it feels premature to write up a “postmortem” on a game’s development before it’s even an eighth of the way finished. Not cancelled, just… in limbo. There is also significant pressure on people in the know — even fans who just lived through backing the project — to keep quiet about all this, for reasons I’ll get into.

I’m documenting the story so far so that the Hiveswap Story isn’t lost to time, and so there’s a decent summary of events so far, and maybe even so new Hiveswap fans can catch up. I dug through every page, announcement, interview, blog post, FAQ, and tweet I could find, and the culmination is this the most comprehensive — as far as I can tell — explanation of Hiveswap to date.

🖱 How Apple Destroyed Mobile Freeware

  • Posted in cyber

I have a memory from when I was very young of my dad doing the finances. He would sit in his office with a computer on one side and an old-fashioned adding machine on the desk. While he worked on the spreadsheet on the computer, he would use the adding machine for quick calculations.

Adding machine

A year or two ago I had a very similar experience. I walked upstairs to the office and there he was, at the same desk, spreadsheet on one side and calculator on the other. Except it was 2020, and he had long ago replaced the adding machine with an iPad. There was really one noticeable difference between the iPad and the old adding machine: the iPad was awful at the job. My dad was using some random calculator app that was an awkwardly scaled iPhone app with an ugly flashing banner add at the bottom.

👨‍💻 Tabs or Spaces?

  • Posted in dev

“Tabs or spaces” is one of these age-old computer science preference issues (like whether you use Vim or Emacs1) that gives people a binary preference they get to pick and then get very attached to, due more to sunk costs and personal identity than anything else. (Good thing that only happens with unimportant stuff.)

I was thinking about this the other day, and I realized that I have an opinion about this, but it’s actually the opposite of what I do. And it’s not because of filesize, or encoding, or anything like that.