Sunday, January 26, 2025

The Jon Schneider Game of the Year awards: 2024

There were my favorite games that I played for the first time during 2024 (along with the platforms that I played them on)!

1. Minishoot' Adventures (Steam Deck / Windows) 

I picked up Minishoot' Adventures on Steam when looking for a twin-stick shooter game to play without knowing anything about it beforehand, and am so glad I did! This game is an exploration / combat game a little bit reminiscent of the original Legend of Zelda; except that it's a twin-stick shooter, and more of a sci-fi theme. The exploration, combat, and upgrade systems are all really nicely designed. I immediately started a second playthrough on the "Hard" difficulty after completing my "Normal" playthrough, which for me is a rarity, and indicative of a really good game. Highly recommended!

2. Slice & Dice (iPhone)

This is the best new strategy game I've played on my phone in years. (Also available on other mobile and desktop platforms.) Slice & Dice is a really tight turn-based combat-only game where your party of 5 heroes takes on a series of 20 increasingly difficult battles. There's a free demo with the first 12 fights so you can try before you buy. The base game is plenty replayable, but Slice & Dice also comes with a plethora of different game modes if you want to change things up. Stands out even further from the crowd by being seamlessly playable in both Portrait and Landscape modes!

3. dotAGE (Mac / Windows)

dotAGE is a turn-based village builder where disasters periodically befall your town -- but you are able to see them coming some time in advance! If you successfully forestall a disaster -- for example, having enough heat sources to counteract a freezing weather event -- then the event becomes a blessing instead. Features quirky humor and pixel art, both of which are right up my alley. 

4. Unicorn Overlord (Switch)

Unicorn Overlord is a very polished small-squad battlefield combat game. A bit like the Fire Emblem games, except that instead of controlling individual heroes, you're controlling several squads of 3-5 characters, with movement across the battlefield happening in pausable real-time. Individual battles play out automatically according to if-then rules that you assign to each unit in advance. A simple set of tactics for a healer hero might be "If any ally is at less than 75% HP, heal them; otherwise, attack the lowest % HP enemy with holy magic." As a programmer, I had a lot of fun setting up those rulesets and then watching them play out!

5. Star Trek Resurgence (Windows) 

Although I'm a big fan of the TNG-era Star Trek shows, I haven't played many Star Trek computer games. Resurgence, though, did come pretty close to making me feel like I was playing through a short series of TNG-era Star Trek episodes! Although some of the action/combat sequences in the game were a little rough, the interesting nature of the "command decisions" in the game more than made up for that.

6. Sea of Stars (Steam Deck / Windows)

Sea of Stars in a fun turn-based, small-party RPG that is a bit reminiscent of classics from that era like Chrono Trigger. The combat system features the heroes having small mana pools -- but mana can be restored via "normal attacks," a little like in Diablo 3. Although the story was a bit uneven in places, I enjoyed the combat, graphics, and music enough to play Sea of Stars through to completion!

7. Lil' Guardsman (Steam Deck / Windows)

It's Papers, Please, except that rather than dystopian, it's fantasy-cartoony; and the protagonist is a 12-year-old girl! Despite the silly premise, there are some serious-ish enough plot elements that I (as an adult guy gamer) found Lil' Guardsman engaging enough to play through to completion. It was also fun to pair-play a bit with my own real-life 12-year-old daughter!

8. Dragon Quest 3 HD-2D Remake (Steam Deck / Windows) 

Ask a kid, I had somehow missed out on all of the NES Dragon Quest (née Dragon Warrior) games beyond the first. Nevertheless, I had a good time checking out this game for the first time, with its early implementation of a job system, and anachronisms such as individual non-combatant NPC characters hanging out by themselves deep in monster-filled dungeons. I progressed fairly deep into the game, but the combat system was a little too old-school for me with regard to the lack of interesting decision-making to be had in most combats, and I didn't quite make it through to completion.

9. Spider-Man Remastered (Windows)

I've never owned nor played a Playstation 4, but I'd heard a lot of positive buzz around the Spider-Man games, so when I finally hooked up a decent gaming PC to my family's main big screen TV, this was one of the first games I fired up. My favorite part was the amazing feeling of just web-swinging around New York City -- what a rush! As a (mostly) old-school gamer, I never quite felt like I had mastery of Spider-Man's abilities in combat, resulting in Spider-Man getting beat up by non-super-powered goons a little more than it felt reasonable than he should; perhaps at some point I'll put in the effort to come back to this game and "get good" at it.

10. Balatro (iPhone, Steam Deck)

I actually originally bounced off this game on its original release. My two main criticisms at that time were that (1) it seemed too easy (just a matter of getting some "good" jokers, after which it hardly mattered which cards you even played; and  (2) it seemed unbalanced (certain jokers just seemed terrible, e.g. increasing the score multiplier in tiny increments of 0.1). I gave Balatro another try when it came out later in the year on iOS at which time I figured out that my two criticisms were met by (1) the built-in higher difficulty levels, and (2) the jokers that had seemed terrible generally actually were quite good because they multiplied the score multiplier, rather than just adding to it. Balatro hasn't dominated my gaming time as it has for some, but it's been an occasional fun diversion!

Other games I played for the first time, and enjoyed, in 2024 (in descending order of where they would have been appended onto the top 10) included: Shogun Showdown; Ara Fell; Dungeons of Aether; Paperback Adventures; No Man’s Sky; Tangledeep.

Sunday, January 12, 2025

Bypassing Google "URL Swapping" in Firefox on Mac

Problem: Users on my wifi network can't click on ad links in Google Search results because those links redirect to the ad.doubleclick.net domain, which is blocked by my Pi-hole. The user ends up on a page with this error message:

Unable to connect. An error occurred during a connection to ad.doubleclick.net. 

Unable to connect. An error occurred during a connection to ad.doubleclick.net.

This happens on Firefox (as of the time of this post, January 2025) because Google is doing something a little bit sneaky: If you mouse over a hyperlink in a sponsored ad in a set of Google search results, it appears to be a normal hyperlink. However, as soon as you click on that link, Google swaps out the target of that link to be a different one than the one that was displayed -- and that's where the link ends up taking you.

(In more technical terms: Google appears to be using JavaScript's onClick event to cancel the navigation to the original href; then replaces the original href with the new href; and then proceeds to navigate to that new destination.)

For example, one of the results when I searched Google just now for "new wireless service" was https://www.verizon.com/plans/unlimited. However, clicking on that link actually navigated me to an URL starting with https://ad.doubleclick.net/searchads/link/click?lid=... . 

You can actually see the swapped-in hyperlink by using the browser's back button to return to the Google search results page, and mousing over the clicked hyperlink again. You'll see that preview of the destination URL for that same link has now changed! (The same happens if you right-click on the target link, then cancel the right-click context menu, and hover over the link again.)

My family members from time to time actually want to click on a sponsored Google search result, and have the navigation work properly. However, I don't want to whitelist the entire "ad.doubleclick.net" domain at my Pi-hole, since that would likely result in a lot more distracting ads being rendered as we use the web. 

I searched for a Firefox add-on which would prevent hyperlink URL destinations being changed from the preview URL that was shown prior to clicking on them, but couldn't find one that seemed trustworthy. 

(I do already run EFF's Privacy Badger add-on, which purports to include this particular functionality; but for whatever reason, it isn't working for me in Firefox as of the time of this post. Possibly Google has recently updated the mechanism that they use to perform their URL-swapping in Firefox; and Privacy Badger hasn't yet been correspondingly updated.)

Workaround / Solution

To my surprise, Google doesn't seem to perform their URL replacement when the search link is activated by the Return key, instead of by a click! Therefore, a crude-but-effective workaround is as follows, when looking at a page of Google search results:

  1. Hit the Tab key until the desired link has the focus. 
    • (Alternatively, double-click a word of text near the target link to select it; then press Tab and/or Shift-Tab from there until the desired link has the focus.)
  2. Press Return to activate the link.

This workaround does have the advantage of not needing any browser add-on to work!

When doing this, Google (apparently) doesn't have any JavaScript in place to hijack the link destination; the client browser navigates directly to the actual URL shown in the browser's preview, without being redirected through ad.doubleclick.net (or any other domain).