Unity and the No Good Very Bad URF

I’m doing something I’ve never done before on this blog: I am setting up a reminder to check back on this post on a specific date. In this case, that date is January 1, 2024, and I’m doing so because I’m really interested in what happen next in this little saga that burst into being during Apple’s iPhone event on September 12th.

Some brief background: A company called Unity makes a game engine called Unity. It is free to use and very popular–over 38,000 games on Steam use it. The company has long advertised that it is royalty-free. Larger dev teams do pay, as Unity’s enterprise subscription plan costs thousands of dollars per dev–but any revenue you make from your games is yours to keep.

This is set to change on January 1, 2024 when Unity introduces URF (they don’t call it that, but I totally do, because it’s the sound most devs make when looking at the new pricing schemes that were announced while everyone was watching the unveiling of the iPhone 15), or Unity Runtime Fee. Whatever you do, don’t call it a royalty!

Basically, if your game hits a threshold for revenue and installs, Unity will charge you a fee (to be assessed monthly) per install. For smaller games, it will be 20¢ per install. If a person installs your game on two devices? That counts as two installs and you get dinged 40¢. The install number will be based on “aggregated data” Unity gathers using proprietary means. Or, as the entire internet has correctly surmised it: Trust us!

To say this new scheme has not gone over well would be a grand understatement. Unity has already sent out corrections, clarifications and some minor walk backs, but they have, to many devs, already irreparably broken the trust between them. And even with the clarifications, you still end up with stuff like this:

  • If your game is on Game Pass (Microsoft’s subscription gaming service), you, as a dev, will not have to pay the URF.
  • Does this mean Game Pass games have no URF?
  • URF NO!
  • Unity intends to bill Microsoft.

As one YouTube channel put it: “THEY SAID DISTRIBUTORS LIKE GAMEPASS – FEES WOULD BE ON THE DISTRIBUTOR – IE: MICROSOFT – LOLOLOLOLOLOLOL OH GOD. HAHAHAHAHA”

Some devs have said they will never use Unity again. Some have even vowed to switch engines on games in progress–a huge and costly undertaking. No one is happy about this, and no one should be, because the whole plan is harebrained and ill-advised. The string of clarifications show that it was obviously pushed out without any careful thought or consideration. Unity has also deleted their TOS changes from GitHub and removed parts of its TOS, rewritten it, then, as the cherry on top of the poop cake, stated that this will apply retroactively to every game in release NOW as far as determining those minimum thresholds. It’s Vader’s “I am altering the deal” except with fewer Stormtroopers in the background.

Why is this relevant to me? Well, it intersects several of my interests: gaming and tech. Also, I have been using Unity for my own indie game, and while I would need about 50,000 new friends to hit the thresholds where I’d have to pay the URF, this is such a cosmically scummy move that I am considering moving everything to another game engine.

The two I am most strongly considering are:

  • Godot
  • Unreal

Technically, I have prior experience with the Unreal Engine, if you count the UT levels I made, uhm, almost 20 years ago. How much could it have changed since then, really?

The main pros for Godot are it’s open source and free, so there is no possibility of URF-like shenanigans happening. The main cons are the resources for it are far fewer than Unity, and it’s not as full-featured or simple to learn.

For Unreal, it’s also free until you generate revenue over $1 million U.S. (a boy can dream) and even then, they only take 5% of total revenue. It has a lot of resources available, but the engine is honking big, designed more for giant 3D games, and not so much 2D indie platformers. So it may be serious overkill1Serious Overkill is also the name of my Cure cover band.

For the moment, I am going through Godot’s documentation to see what I think. At this point, even a complete reversal from Unity would probably still make me hesitant to go back to it.

We’ll see what happens on January 1st, though!

Partying like it’s 1998 (with Unreal)

Don’t shoot the Nali! Also, there are more colours in the game than brown, I swear.

After some chat about the olden days of gaming in Discord that include recollections of the original Unreal, released in 1998, I felt the silly urge to re-install the game–and did!

For other people who are thinking, perhaps unwisely, of giving in to their nostalgia, here is what I did:

  • Went to my gog.com library to install the game from there. It turns out I never got the game on gog.com. I then checked Steam. On both platforms I have:
    • Unreal Tournament
    • Unreal Tournament 2004
    • Unreal Tournament 3 (re: UT2007)
    • Unreal 2
    • No original Unreal. Sad face.
  • I pondered whether I wanted to buy a 25-year-old game, but the decision was made for me because Epic delisted the game on all digital stores last year (along with all the others I listed above).
  • I dug out my binders of game CDs (BOGs) to see if I had my original Unreal disc. I did!
  • I dug out my USB DVD drive and plugged it in
  • I inserted the CD and waited to see what would happen
  • I got a pop-up about compatibility mode, clicked OK and waited
  • The installer launched!
  • The game installed!

Amazingly, the unpatched original CD version actually worked. It defaulted to 800×600 resolution. I then applied the UnrealClassicPatch227i, a community-made patch that builds on the efforts of Epic to allow the game to work with modern renderers and fixes a few bugs and glitches. The patch is on the community site OldUnreal, found here.

I made the following change to the console in the unreal.ini file, found in the Unreal/System folder, under the [Engine.Engine] section. This enables the UT-style Umenu system, which gives access to some of the newer options (and makes changing keybinds easier, too):

Console=UMenu.UnrealConsole

The original line is Console=UBrowser.UBrowserConsole.

I set the resolution to the same as my monitor, 2560×1440, which looks fine, though the HUD shrinks to micro-sized. Apparently HUD scaling is coming to the 227j patch.

I originally chose OpenGL for the renderer, but it was too dark and changing brightness had no effect. I switched to the Direct3D 9 renderer and was able to change the brightness from Impenetrably Dark But Undoubtedly Moody to Moody But I Can Actually See Some Things Now.

Finally, I installed some high resolution textures, which look fine, though there’s a jarring difference when you see a fuzzy original texture next to a high-res one. You can fix most of these by also installing the HD Skins pack, available from the same link. HD Skins is actually a mutator, but the readme.txt file doesn’t note that you must start a new game to first enable the mutator. You can save the configuration so the mutator always runs after that.

The game itself plays great, of course. I could probably run it at 100,000 x 100,000 resolution and still get 140 FPS. Now we’ll see how long a 25-year-old first-person shooter can hold my interest.

Bonus shot:

Looking back at the crashed Vortex Rikers ship you escape from.