Brian Lovin
/
Hacker News
Daily Digest email

Get the top HN stories in your inbox every day.

kemayo

In a similar vein, WoW has become a lot more dynamic and stateful over the years, and the somewhat-hacky solution used to track what the current character has actually done is invisible quests. It's the exact same system behind the scenes as the more-visible "kill ten rats" quests that NPCs give you, just hidden away so you're not told about them and tracking things like "you've looted this treasure chest in the open-world, so it won't appear for you again" or "you've listened to this ambient NPC conversation".

You can even install an addon that'll show you the quests getting completed in the background, which can occasionally be handy as it basically notifies you "what you just did will be remembered". https://www.curseforge.com/wow/addons/questschanged

Amusingly, these quests still count as completed-quests for the in-game achievement system, so new characters will confusingly get achievements like "10 daily quests completed" despite never having actually completed a visible daily quest.

yett

Wow thanks for this! I have sometimed wondered how I get 50 quests completed! achievement on a new alt even though I barely did 10 quests

joe-collins

The burst of quests is, last I checked, mostly stuff about unlocking battle pets and allied races.

recursivecaveat

Reminds me of how, for a very long time, almost every effect in league of legends was invisible minion(s) under the hood: https://technology.riotgames.com/news/taxonomy-tech-debt

undefined

[deleted]

eqvinox

The only thing that bugs me about this is that they used bunnies rather than making a specific "spell effect/scripting" NPC. (I mean just one type to be used everywhere rather than bunnies, not a new one for each use.)

It's common enough of a pattern in other games, and the #1 bug is that someone forgets to click the "invincible" checkbox somewhere, your scripting 'bunny' dies, and then the game just breaks. If you create a NPC type just for scripting, you can have it default to invincible & invisible (or no model to begin with.)

jimmaswell

I recall a story where the camera kept "dying" from explosions but I can't find it.

jcalx

TeMPOraL

This bug actually kind of added to realism :).

alasdair_

Perhaps the most famous time this happened in an MMO was the assassination of Lord British.

https://en.m.wikipedia.org/wiki/Lord_British

h4kor

Building custom maps in WarCraft3 also involved a lot of invisible units to create unique spells. Creators generally used toads or sheep for these effects.

I've created a custom map turning the system a round, where you played the invisible critters instead of the hero :D

myfavoritetings

I wonder if this was the inspiration for the name of the creator of DotA mod, icefrog

Already__Taken

oh that map was you? I was completely baffled as a kid whatever that map was about

smcl

> Sometimes you don’t know designers need a kitchen until they’ve made ramen in a flower vase with an iron

Wonderful

sparrowInHand

The problem in my opinion is that many game-engines are to focused on the "PerFrame view of the world" statically imagined by the designer and do not architecture for persitent but changing effects or long causal chains that constantly change and are capable of reusing behaviour. Good news though is that most by now, outsource that to scripting languages capable of providing better ways to implement this, but then you end up with parallel implementation of basic behaviour & services like pathfinding or targetting.

Imagine a late-game added lightspell, that is expected to behave like a ball lightning walking ahead of the player. The temptation to reuse the pathfinding, collission and other systems that controll figures will be enormous. But this behaviour needs a sort of CBipedal class to inherit all the behaviours. Voila - enter the hack.

Of course the clean solution would be something like a thrown stone on a lake, it exists as running code only when it changes (certain frames or events). It holds a composition of behaviours without the other ballast (datastructuress for aiming, inventory) etc. and also does not need a pool allocation to the monster/npc pool. (Basically you either have many peasants or many lightballs in the hypothetical as tradeoff).

Cause it aint a object, its a entity with a collection of behaviours, with a minimal data container bound to each behaviour seperatly, that may evaporate at a moments notice, should the player look away or its time run out.

VoodooJuJu

In developing mods for Warcraft 3 using its World Editor, we'd often have to create invisible dummy units for the same reasons, like to cast a spell as part of a more complex custom hero ability. Always felt like a hack, but it's funny, surprising, and validating to learn that Blizzard essentially does the same thing in WoW.

stuaxo

I really need to sort out adblocking on my phone, there are so many half the time it doesn't even show all the content, it's probably ran out of resources.

burke

Seriously. This was the most abusive reading experience I’ve come across in a while. I also only got to read a couple of paragraphs before endless ads.

nerdile

For Android, Edge and Opera both have ad blocking built-in. It's comments like these that remind me what I'm (not) missing.

toastedwedge

uBlock Origin on Firefox mobile is enough to not be bothersome. Even if it's not your preferred browser, it could help with ad-riddled sites at least.

xjay

The battleground, Strand of the Ancients, was originally started using two invisible NPCs that were hostile to each other; one on each faction's boat and dock. The first boat/NPC to reach the dock would trigger a spell/script when in proximity, starting the first round. [1]

[1] BlizzCon 2016 - WoW Engineering Panel https://www.youtube.com/watch?v=W1y2fdDeSbU&t=227s

hutzlibu

"Why is WoW a front for a morally questionable bunny labor operation? The short version is, programmers’ time is limited, and NPCs’ time is not. Programmer time is extremely valuable, and most of the ‘stuff’ that can be done in a game can be done by NPCs,” said Chapman. “NPCs already have to support things like pathing, casting spells, using weapons, doing various actions to other NPCs, etc. So, while you could in theory have a programmer separately implement every ‘effect’ you wanted in the game with some minor benefit, if you already have a class of thing in a game that can solve your problem, it’s a better use of time to use the existing system.”"

I am sorry, but it still is just bad design, if you have to missuse a different class. So strictly economically speaking yes, after the system was already running, it might have been cheaper to go with it than redesign - but the initial design flaw is still a flaw. But they still made lots of money this flawed system, though, which is a good reminder, that the most important thing for any product is usually, does it work?

TeMPOraL

Honestly, I see it as accidentally good design. Take the "laser turret pointer" mentioned earlier. If you're not doing an optics simulation, but engage in the magical thinking (usual in storytelling) and treat the impact point as the entity of interest, then... making the impact point another actor on the scene suddenly makes perfect sense. Between the article and the comments, a lot of things bunnies/spectral cats/minions are known to be used for make perfect sense, and I'd consider explicitly planning for it when designing a new game.

Still:

> But they still made lots of money this flawed system, though, which is a good reminder, that the most important thing for any product is usually, does it work?

That is a very good point, especially in videogames/entertainment. Reminds me of the "first law of 3D game graphics" I read somewhere - "if it looks good, it's good - no matter the amount of cheating going on".

ben_w

Back in the day (late 90s), I was heavily into the Marathon series and game engine. The trilogy box set came with a whole bunch of 3rd party levels, including one inspired by Myst. As Marathon was only one step up from Doom and (before getting open sourced and turning into Aleph One) had no actual scripting language, the level creator had to fake lots of things the hard way, one of which was by spawning NPCs to shoot at other NPCs, with weapons whose shots were marked as "can toggle switches" and some switches between shooters and their targets.

DeathArrow

OOP at it's finest! I wonder if they have BunnyFactoryFactory.

red_admiral

Bunnies reproduce just fine without factories :)

Daily Digest email

Get the top HN stories in your inbox every day.

Invisible Bunnies That Power World of Warcraft (2017) - Hacker News