• Diablo Immortal came out a few weeks ago. If you’ve been living under a rock for the past few years, this is the free to play mobile Diablo MMO that was announced to great fanfare years ago. I wasn’t planning on playing it at all, despite my love of ARPGs, because MMOs turned me off for a long, long time. But in the past year or two, I’ve played a few MMOs: Guild Wars 2, Elder Scrolls Online, Final Fantasy 14, and most recently Lost Ark.

    Diablo Immortal owes a lot to Lost Ark. DI is essentially “Lost Ark, but Diablo” in many ways. But I guess that’s sort of over-specific, because the best way to describe Diablo Immortal is to say that “it’s a Korean free to play MMO, but Diablo”. It has all the classic MMO mechanics, like limited daily quests and routines to get into.

    I was very hyped for Lost Ark, but eventually realized that it isn’t really a typical loot-based ARPG. Instead of killing monsters to grind out loot drops, you’re really just accomplishing tasks to hoard materials that you then use to improve your gear. Diablo Immortal is a bit of a middle ground: yes, there are tons of different currencies that you need to upgrade legendary gems, but there’s still a strong foundation of killing and looting to get incrementally better legendary and set gear.

    The core main quest is very Diablo 3, very typical ARPG. It’s a fun experience and you can have probably 40+ hours of fun for no money at all. That’s a great value, right there, and for the casual player there is a solid sequence of milestones to keep you progressing: first you want to complete the main quest, then you want to hit level 60, then you want to get your paragon level up to 30 to be able to unlock Hell 2 difficulty, and then… well, to me it seemed like the next obvious milestone was to be in a Dark Clan that achieved Immortal status.

    That seems to be the real endgame of Diablo Immortal. There’s a very neutered version of the typical MMO “World vs World” concept where the various clans in DI compete every week or two in a ladder competition to see who can rise to the top, called Shadow War. The winning clan gets to pick two other clans to become “Immortals”, who then get access to some special shop items and are used in a special PVP mode called “Raid the Vault”. So it seems like that’s kind of the true goal of Diablo Immortal, to win this ladder and become Immortals.

    And that’s where the game falls apart for users who don’t want to spend money, and where the massive internet hate machine around the game truly kicks into overdrive, because most of the game prior to this point is PVE and it doesn’t really matter what kind of gear you have unless you’re absolutely desperate to progress through the PVE difficulty levels.

    If you wanna play 60 hours of a game for free and then bounce off it (like most people do, I assume) then none of this should actually matter to you. But if you’re the kind of fool who feels like you want to ‘complete’ a game before you move on, then this Shadow War mechanic is designed specifically to try to extract money from you, and to make “whales” (people who are willing to spend thousands or tens of thousands of dollars on the game) feel like they’re getting their money worth.

    I say this because it’s probably impossible for any clan to win the Shadow War without a bunch of whales on the team, because they have such clearly superior gearing that there is no way for a free player to beat them. And hey, if they spent that much money on the game, I guess they should always win. You can understand that financially it would be a bad move for Diablo Immortal to ever let those whale players feel bad about anything, because then they’d take their massive bags of Saudi Arabian money (assumably) to some other game.

    Once the whales become Immortals, the Raid the Vault game mode becomes very unsatisfying for most players. In that mode, you’re in a party of four people fighting PVE mobs to collect some other form of currency. After a floor or two, NPC Wardens start calling out for Immortals, and four people from an Immortal clan will join the game and, being whales, they will instantly obliterate you and kick you out of the vault. It’s not great, it feels bad, and it’s no fun.

    So, I followed the path that I could follow: I beat the main quest, I got to level 60, then I got to paragon level 30, discovered that in order to progress in Hell 2 difficulty in any way, I was going to just have to grind out gear and likely never achieve any real level of power or success in comparison to the people who were willing to shell out more money, and realized that there was little to no chance I was going to make any sort of meaningful contribution to a clan that was going to win the Shadow War. So… I bounced off.

    There’s also one other reason for my departure: I paid $10 for the battle pass. In most games when you buy a battle pass, there’s an optional upgrade (usually $10-15) that jumps you ahead in the battle pass. It’s totally optional in mostly all games and you can grind out the battle pass content yourself, so I skipped it in Diablo Immortal (it’s called the “Empowered Collector’s Battle Pass”). Imagine my surprise when I hit level 40 (max level) in the battle pass and I still didn’t have the full cosmetic set promised in the battle pass. Then I looked closer: if you want the teleport cosmetic and the blue avatar frame, you also have to buy that battle pass upgrade for another $10.

    Well, there’s no fucking way I am doing that. I am not paying $10 just for a teleport cosmetic and an avatar frame. At the same time, I feel extremely insulted and misled that there are battle pass related items that you can’t get unless you paid $20 for the battle pass instead of just $10. It just seems so incredibly greedy in the end. I paid $10 for the battle pass, $10 for the ‘boon of plenty’ to show my support, and then $20 for the “Prodigy’s Path” that gives you legendary gems as you grow in paragon rank. So all told, I spent $40 only to be told at the end of the BP “lol jk you gotta give us more money if you want the full BP cosmetic set”. No, nope, not going to do that. That’s a bridge too far for me.

    All told, with the amount of time I got out of the game, my cost per hour of enjoyment was less than $1, which is still a pretty great value when it comes to a game. It’s just too bad the very end of my experience was kind of shitty and negative. I think that really sucks.

    So to punish Blizzard for their transgressions I went online and bought Diablo 2 Resurrected and I’m having a ton of fun with it. C’est la vie.


  • The Staircase, the new HBO series that just wrapped up, was very entertaining. I didn’t watch the original documentary, but I had read an article all about “the owl theory”, which I had found very convincing, so I was vaguely familiar with the murder of Kathleen Peterson.

    To someone unfamiliar with some of the details of the case, it was very easy to feel like the series was giving a lot of credence to the owl theory, by repeatedly showing Kathleen being spooked by owl sounds outside. Is the subplot with the bats a further allusion to Kathleen’s alleged issues with wildlife? Probably?

    The series leaves out certain facts about the crime scene that can strongly influence your opinion about Michael Peterson’s innocence, and I think it’s extremely suspicious. I can understand that the show, for the sake of suspense, may want to paint an somewhat ambiguous picture of Michael early on, so they can hit you with more damming evidence later, but by the end I don’t think the show went far enough in this regard.

    Before the last episode of the show aired, I did some googling and found a lot of people who were like me: people who felt like Michael Peterson wasn’t guilty beyond a reasonable doubt, and the show didn’t help remedy this perception much. But after finding a very eye-opening post on Reddit about the case, all doubt was gone for me, and by the end of the show I ultimately felt like it was extremely misleading.

    I felt the same way after the 2018 Waco series which portrayed David Koresh as a likable rockstar character and not the sociopathic child molestor he actually was. To the credit of The Staircase, it’s not as egregious as the Waco series in regards to making the psychopath at the center of the series seem super cool and hip, but I still call into question the compulsion to create media that feels a bit like the narcissist himself was involved in crafting their portrayal.

    Sure, you could say it’s so that the audience can sort of feel what it was like to actually be there, and to be so thoroughly suckered by the charisma of these men, but I really don’t think that is much of a defense. At the end of the day, these were men who did bad things, and leaving out details and events so that the main character of the show still remains somewhat likable is just dishonest and manipulative.


  • I recently purchased a cheap electric guitar setup so that I could take my third… fourth?… try at learning to play guitar, in the hopes that I can start writing songs. I knew from experience that I would want some sort of audio interface for the guitar (for recording) and that I wanted to use virtual pedals on the iPad (for playing around & recording) so I ordered an IK Multimedia iRig HD 2 at the same time.

    A few weeks later I got an email from Fender advertising the Fender Mustang Micro which seemed, to me, like a good idea, because I’d already noticed that it wasn’t 100% convenient to just “pick up and play” my guitar.

    At a minimum I needed to plug the guitar into the amp, turn the amp on, and then depending on my surroundings either adjust the volume to not annoy anyone, or also plug in some headphones. On top of that, I was “stuck” wherever I placed the amplifier, which made life more complicated when I moved the amp from one side of the living room to the other. The guitar set I got came with a basic amp with some basic gain options, not much in the way of effects to monkey with for fun, either, so the iRig was necessary if I wanted to experiment with different tones and gain levels.

    If I didn’t want to use the amp for practice, then I’d have to use my iPad and the iRig somehow. This meant I’d have to get the iPad out, plug the iRig into the iPad, plug my guitar into the iRig, plug my headphones into the iRig, and then load up GarageBand or ToneBridge and get going. This was a lot of cables, and there was no way for me to do this without headphones: when you plug the iRig into the iPad, your iPad is forced into piping audio out through the iRig’s headphone jack. So if I wanted to listen to my playing without headphones, I’d have to plug the iRig’s headphone jack into speakers somehow. I’d done this with a mini-plug to RCA cable to my amp, but I could also do it with a portable speaker so long as it had wired input. But… so many cables everywhere!

    The Mustang Micro seeks to solve this problem. It’s a tiny little device that plugs directly into your guitar, and has a mini-plug output for plugging in your headphones. It has 12 different virtual amps built in, with 13 effects that can be used with each, and has EQ and Modifier buttons to adjust the sound of your guitar with each amp and effect. It’s also fully self-powered with a rechargeable battery. This is a big benefit over the iRig HD 2, which sucks power from a device over USB and cannot be used on its own. In the end, the Mustang Micro takes all the “headache” out of being able to just pick up a guitar and practice with it whenever you want.

    The Mustang Micro has Bluetooth support for getting audio into the device. The main use for this is that you can connect your iPad via Bluetooth to the Micro and listen to your lesson videos, or favorite songs, while playing along. You hear both your guitar (with any amp and effects) and the iPad audio in your headset, and the ‘mix’ of the audio for each is dependent on the Bluetooth volume of the iPad. This is pretty slick and very useful.

    When I eventually discovered that you can also plug the Mustang Micro into the iPad to use it as an audio interface, I got very excited, but also annoyed: Did I waste $120 on the iRig 2 HD? The Mustang Micro seems to do all the same stuff!

    The answer, ultimately is “no”, for one very big reason: when you have the Mustang Micro connected to an iPad via USB, it does not receive any audio from the iPad, it only sends audio to the iPad. If you want to hear what is happening on the iPad, you have to connect the iPad to the Micro via Bluetooth.

    Problem solved, right? Nope! Whatever you hear over your headphones connected to the Micro is exactly what is sent back over to the iPad. In other words, with Bluetooth connected to your recording device, you’ll create a massive feedback loop, where your guitar will be playing over itself, along with whatever else you’re playing while recording.

    If you want to use the Mustang Micro for recording, you’ll want to plug your guitar into it, and then get audio out of your device some other way. Unfortunately with the iPad Pro, there is only one USB-C port, and no audio output, so there is no other way to get audio out other than the speakers on the iPad itself. You could wear some wireless headphones, but there will always be a delay associated with that.

    If you have an external audio interface for your iPad already, and a suitable USB hub so you can attach multiple devices to it at the same time, this may be a non-issue for you. I’m assuming that most people reading this are relatively new to guitar, and recording, and don’t want to buy several devices to record themselves playing at a decent quality.

    In Summary

    If you’re looking for a device that can act as an all-in-one recording solution for your iPad, the iRig HD 2 is the best option.

    If you’re looking for a device to make practicing as hassle free as possible, and want to easily add more tones and effects to your noodling sessions, the Fender Mustang Micro is the best option.

    That said, if you already have a recording environment set up that doesn’t involve an iPad, or you already have a USB hub with a separate audio interface for your iPad that you use for monitoring, the Mustang Micro might be perfectly suitable as a solution for recording your guitar.

    If you feel like you have to choose just one, I’d go with the Mustang Micro. While you can’t use it for all-in-one iPad recording, it’s still an impressively versatile device that will not go unused in your toolbox. In the event that you want to do some guitar recording, it’s still a great tool. It’s just not suitable for people who want to do all their recording on an iPad with only one gadget attached.

    I’ve seen people online who use the Micro connected via a mini-plug cable to a portable speaker so they can play out in public. Nifty! You could do that with an iRig 2, but you’re still looking at a lot of cables and devices to accomplish the same goal.

    Fender Mustang Micro

    • Great device for easy “pick up and play” practice
    • Lots of built in virtual amps and effects which makes it superior to products like the amPlug series
    • Self-powered with a 5-6 hour rechargeable battery
    • 1 cable minimum for playing: just the headphone cable
    • Not an all-in-one solution for recording music with an iPad
      • You can not monitor with headphones and record at the same time
    • Allows you to play sound out of a connected iPad’s internal speakers
      • You can noodle with virtual pedals without headphones on
      • You can record this way if you wanted, but it’s not ideal in my opinion

    IK Multimedia iRig HD 2

    • Great device for recording to iPad
    • No built in effects
    • Not powered, requires a USB device to power it
    • 3 cable minimum for playing: guitar cable, headphone cable, and USB cable
    • All-in-one solution for recording music with an iPad
      • You can monitor with headphones and record at the same time
    • Cannot play sound out of a connected iPad’s internal speakers
      • You cannot noodle with virtual pedals without headphones or an external speaker attached


  • Last week I got my Panic Playdate in the mail. I preordered it last July, and have been following it since the May 2019 EDGE announcement, so you could say it was a long time coming. It’s such a nice feeling device, and good looking, too. Sure, the non-backlit screen can be annoying, but I firmly hold the opinion that portable gaming is pretty stupid, so I’m not jumping on the bandwagon of acting like no backlight is some sort of extreme deal breaker. I was looking forward to building things for it, and the general feel and look of the thing just makes me extra excited.

    My last stint of game development aspirations were cut a little short due to PICO-8’s code volume limitations. I hadn’t actually run up against those limits yet, but getting close to them filled me with so much anxiety and dread that I just couldn’t keep going–it was clear there was never going to be enough room for me to build the game I truly wanted to make. So, it stopped being fun, and I quit.

    Playdate development promises to be less anxiety inducing. There is no limit on how much code you can write, beyond the physical limitations of the device itself, which is very generous in regards to RAM and storage space. There are new restrictions, though: unlike the 16 colors available in PICO-8, the Playdate has only two colors: black-ish and gray-ish (technically black and white, but on the device both colors are more silvery). This presents an extremely interesting challenge for someone like me, who has no confidence whatsoever in his artistic abilities.

    I decided to start with what I know, and built a spaceship flying around, similar to my PICO-8 game, but also significantly different.

    I’m using some icons from The Noun Project (disclaimer: I work there) that I quickly redrew in Aseprite (to varying degrees of success).

    Another new challenge is that because the screen is so small, high resolution, and not backlit on the physical Playdate, you have to make your sprites pretty large to make them legible. The Playdate simulator inadvertently downplays this issue by virtue of being so large on your screen (Panic should create an option to remedy this). This is a big change from PICO-8’s gigantic chunky pixels, where a single pixel can be perfectly visible to the player.

    Because of that, the way my space game worked on PICO-8, where every ship was a single pixel flying around a large star map you could freely explore, simply won’t work on the Playdate. It’s forced me to think of a different way to adapt the general gameplay loop, and I think I’ve come up with an idea I like and will pursue. I won’t talk about it yet, we’ll see if I build it.

    I wanted to spend some time contemplating the aforementioned game idea, but wanted to keep building. So I decided I’d try porting my MultiClock screensaver over to Playdate. Figured it would be a fun programming challenge, and I was right!

    The biggest difference is that SpriteKit comes with performant methods for rotating sprites in real time, part of its animation system. You can rotate sprites in code with Playdate, but it is processor intensive so they do not recommend doing so. So instead I had to draw the clock hands in Aseprite, something I’d never used before, and create each frame for the hands rotation. In the above video, we’re up to 32 frames, almost enough to make the rotation look pretty smooth. Maybe not yet as smooth as I’d like, but the next jump is from 32 to 64 frames and that’s going to be a bit tedious.

    Right now I really just have the time display working, none of the animation system or alternate patterns from the screensaver have made it in. I am pretty sure I’ll be able to build the animation system out similar to how it works in the screensaver, with a queue and callbacks and so on.

    I figure this’ll look nice when and if the Playdate Stereo Dock comes out some day.

    Oh, also, I bought Panic’s new code editor, Nova, to use for Playdate development. Figured it would be “more fun” to build Playdate stuff using all Panic software, and besides, any excuse to give Panic my money is a good one. It’s a nice feeling app. Nice enough for me to give up GitHub Copilot during my day job? Probably not. But I dunno! The urge to be a total and complete Panic fanboy is pretty strong.


  • Howdy! This is my weekly post where I talk about whatever programming stuff I’ve been up to.

    MultiClock

    This week I made two small changes to the MultiClock 1.2 Beta PR to add an option to remove the dial design. I realized a day or two ago that it was kind of weird there was no “None” option for dials, though I don’t think the screensaver looks very good without a dial. But I already think some of the options don’t look good, that’s not really for me to decide anyway… to each their own!

    I also finally remembered to enable ignoreSiblingDrawOrder, which is allegedly a good optimization strategy, because, well, this person explains it as well as I could it:

    When ignoresSiblingOrder is false, SpriteKit renders nodes in the order they exist in their parent’s children array — that is, the array order determines which one draws “on top of” the other. It also means SpriteKit has to render each node one at a time, so you’re losing efficiency to OpenGL draw call overhead. 

    When ignoresSiblingOrder is true, SpriteKit relies exclusively on the zPosition property for figuring out what order to draw in. This means it can sometimes combine everything at the same z into a single draw, which makes rendering faster. But it also means that if you want to control which nodes draw in front of which others, you need to set their zPosition appropriately.

    rickster on StackOverflow

    Version 1.2 contains the very important animation system changes that fixes multi monitor support, but I still feel like it needs something more to justify its full release. I’m not sure what though. I do kinda want to redo the animation system more so that hands can move at variable speeds, and possibly even in multiple directions, but… Not feeling that pull strongly enough yet.

    There’s also the Apple TV version, kinda forgot about that idea…

    Not Much Else

    Haven’t been up to much else. I spent a bunch of time playing Lost Ark, and now Elden Ring, so I haven’t been coding again. I am starting to feel the itch though, as evidenced by me changing this website up. Building out the products page made me look for screenshots of Textile, and it really made me miss how much fun it was to play a game that I was building out, so maybe I should pick up work on rpg-laravel again.

    We’ll see! Elden Ring is pretty soul-sucking. I think I can hear it calling to me now, gotta run!