Skip to the main content
Skip to the entry’s beginning
First published on .

rangifer’s diary: pt. xciii

Bill Gates banned me

Y’all. It’s true. This URL now responds with an HTTP status code of 404: https://github.com/capreolina

I can’t get into my GitHub™ account because it says that I’m banned, but it will not tell me why. I certainly didn’t get any emails nor other notifications that I had been banned!! I can only assume that Billiam Gates sensed (as he does) that I was becoming too powerful, so he had no choice but to personally ban me. As we all know, Bill[1] owns GitHub™, so I guess that’s just what he does now.

Oh non ! En tout cas… I just moved the mirrors over to NotABug:

These are just mirrors. As usual, the main place to find my git stuff is on Codeberg.

Footnotes for “Bill Gates banned me”

  1. [↑] Yes, I am aware that Gates doesn’t actually work for Microsoft™ anymore. It is a joke.

Running MapleStory requires highly advanced technology

The future is now, old man.

― Dewey (as portrayed by Erik Per Sullivan); Malcolm in the Middle, season 3, episode 10, “Lois’s Makeover”; 2002-01-27.

I know that it’s probably difficult to believe at this point, but this diary is — or, at the very least, it started as — a diary for my MapleStory characters. If you’re reading this right now, there’s a real good chance that you already know what MapleStory is. But, uhm, in case you don’t already know…

MapleStory is a videogame (disgusting, I know) with role-playing elements that can be played by — at least, in principle — an unlimitedly large number of people simultaneously, over a computer network. Its networking structure is a strictly client–server model. It presents itself both auditorily and graphically; it is not a MUD. Its graphics are two-dimensional and consist almost entirely of pixel art. Because it is designed for personal computers, it is conventionally controlled by the player using a keyboarding device paired with a pointing device (typically a computer mouse).

Around here, we’re unconcerned with the details of the networking involved here — if you’re interested in that, kindly consult the OSI model or something, and get back to me in a decade when you’ve mastered the principles of computer networking. We’re similarly unconcerned with the implementation of the server; we just want to play the damn game, and someone else can figure out that server shit. So, then, what is the client application like?

Well, let’s consider the facts. MapleStory was originally developed by Wizet, a Seoulite videogame development company, sometime during 1999(?)〜2002 or so. Wizet’s story ends here, because it was fully absorbed into Nex❍n[1], the Seoulite[2] company that published their game — although, I can’t find any sources that date the acquisition (and the Wizet™ logo continued to be used until, like, 2009 at the earliest). MapleStory was officially released (i.e. not a beta version, but an actual full release) in 2003. It would be brought to markets outside of South Korea in 2005 (with some beta releases in 2004), although some more regionally-specific versions came later; for example, EMS (European MapleStory) was not released until 2007.

MapleStory was developed specifically for Windows™ NT, which means that it would have probably started development during the Windows™ 98 (generally available by 1998-06-25) era. Windows™ 98 was not really supplanted — ignoring Windows™ Me, which was roundly criticised and considered by many to be a failure — until Windows™ XP, which became generally available by 2001-10-25. Windows™ XP would end up being by far the most defining OS for MapleStory: XP proved to be extremely popular, and Microsoft™ didn’t even attempt to supplant it until Windows™ Vista, which was not generally available until over five years later (2007-01-30). Furthermore, Vista was very unsuccessful throughout its entire existence, so many users during the Vista era would have continued using XP anyways. In any case, it doesn’t matter, because Vista came too late; MapleStory was already emphatically a Windows™ XP — and to a lesser extent, a Windows™ 98 — game.

MapleStory has been actively developed from its inception through the present day (at the time of this writing). Many (although not all — R.I.P. EMS[3]…) of its incarnations continue to be operated by Nex❍n. But for our purposes, we don’t care. Nex❍n has been screwing up their own game[4] for a long time now, and private servers that re-implement the server side of the game are nothing new — not even close. So a lot of MapleStory players have been playing “private” implementations for years (decades…) now, which allows actually good versions of the game to be preserved, whilst also yanking out the garbage[5] that Nex❍n stuffed into it (usually, such things are in there just to make a quick buck). We are now firmly entering the realm of videogame preservation, as applied to an MMORPG. Basically, I want to narrow our scope to only pre-BB (pre-Big Bang) versions of the game. Furthermore, I play MapleLegends, so this is all going to centre around version 62 (“v62”) of GMS (Global MapleStory) (archived). We’ll get back to the significance of v62 in particular later, but it should be noted that GMS v62 was released on 2008-11-12.

So, now that we’ve frozen ourselves in time, we can focus again on the technologies that MapleStory was originally developed with. At the time that MapleStory was first developed, x86-64[6] processors didn’t exist yet; they would appear on the consumer market starting in late 2003, and wouldn’t start seeing serious adoption until around 2005〜2006. The operating systems that we’re concerned with — 98 & XP — targeted IA-32[7] first & foremost. Thus, MapleStory would have originally been run on 32-bit versions of Windows™ NT, on IA-32 hardware. On the graphics side of things, the GMS v62 game client uses Direct3D 8 as its graphics API. Direct3D 8 was first released on 2000-11-10 and actually originally supported Windows™ 95, although that support was soon dropped.

It seems that we’re looking at some pretty antiquated technology here, right? No one[8] is using IA-32 anymore. Windows™ XP made its final release in 2008, ended mainstream support in 2009, and ended extended support in 2014 — to say nothing of Windows™ 98. Any DirectX from before DirectX 9 is basically not a real thing. I mean, really, have you ever even heard of DirectX 8? What about 7? 4…? Yeah, nice try — DirectX 4 was never released. So, surely I was being sarcastic when I titled this section “Running MapleStory requires highly advanced technology”; if anything, running MapleStory requires technologically regressing to the year 2004. Right? Well…

Here’s the catch: we can’t actually go back to 2004. I know, tragic. Mostly tragic because Facebook™ was launched in 2004, so if we went back, we might actually be able to stop it. Oh, well; you win some, you lose some. The silver lining is that we now live in 2022, where we hav— you know what, never mind.

What I’m getting at is this: because the antiquated MapleStory clients that we continue to use are closed-source time capsules from 2004 (or earlier…) that were hacked together by a random videogame development company of a few dozen people just to actually release something & start making some damn money, the technical debt[9] that we continue to bear every time that we just wanna play some damn Maple is immense, and only magnifies as time goes on and technology moves with it. Reimplementing the client — in much the same way that the server is already reimplemented by “private servers” — sounds like a great idea. Unfortunately, I don’t know how to do it. Sorry. I only know how to write absolutely way too much text, and then post it on the WWW and hope that someone likes it & can vindicate the time that I spent writing it. It is my one skill.

But I still want to play MapleStory, so this is where advanced technology can — hopefully — save me. Think of it this way: if you want to run some videogame (not necessarily MapleStory) that was made for some old-ass shit, or some outmoded videogame console that you can’t find at your local charity shop or whatever, you can probably just emulate the hardware. That way, the CPU in your general-purpose computer takes on all of the responsibilities in software; this is kinda slow, but if your CPU is more technologically advanced than the thing that you’re trying to emulate, then you might be able to get the same level of performance as the original (albeit probably less efficiently, I reckon…).

Thankfully for us, we don’t actually need full-blown emulation. x86-64 defines something called “compatibility mode” that allows the processor to run IA-32 code unmodified, whilst still being in long mode. Great. Unfortunately for us, the MapleStory client is not just there to twiddle bits all day — it’s supposed to actually do something.

So we’re back in the abominable world of making things actually occur. Disgusting. Now we have to worry about the operating system, multimedia APIs, interacting with the network… Pretending that we’re still in 2004 and just running Windows™ XP is out of the question; the security implications are beyond abysmal, and you’d better bet that you’re gonna have hardware compatibility issues too. We can emulate Windows™ XP by running it in a virtual machine (VM), but let’s be real: for a whole host (pun intended) of reasons, we are better off just running a modern version of Windows™. Windows™ offers certain backward-compatibility guarantees[10], so it should work, right? That means using Windows™ 10 or 11[11]. I think(??) that this is what most Maplers do, and it seems to work. Sort of.

You see, we still have a lot of issues. Windows™ users who are doing all of the right things will still have troubles with crashing, weird bugs & quirks, inconsistent behaviours that seem to rely on spooky action at a distance, and even just troubles getting the game to launch in the first place! People even develop weird rituals to try to appease the MapleStory client gods, for crying out loud. Of course, it goes without saying that many of these things are resulting from Nex❍n’s famously pristine & high-quality code. But also, many of them are genuine incompatibilities & breakages that occur not within the game client’s code per se, but at the operating system API level, and sometimes even the hardware level.

But it gets even worse: to do this, we would have to actually run Windows™. Think about it: the font rasterisation is pitiful, everything is proprietary garbage, now the code in your MapleStory client and the code in your entire damn operating system are both equally damned in the eyes of god and full of spaghetti, when something breaks you have no chance of fixing it because nothing in your OS is actually documented, your OS is literally just spyware so now Bill Gates knows exactly how pathetic your life is[12], everything performs terribly and is full of bloat and nagging popups, and MapleStory still crashes. What the fuck?

I prefer my wine boxed

This brings us to something that I’ve already been doing for a long time now: just running the game on Linux[13]! If you’re a macOS™ user, you’re probably already familiar with Wine as the software that allows you to run Windows™ software — possibly including MapleStory — without using a full-blown VM. (CrossOver™ is essentially a patched version of Wine that MapleLegends officially encourages users of macOS™ versions 10.15 (Catalina) or later to use, but for our purposes, we don’t care about CrossOver™.) Basically, Wine is not an emulator[14], but rather, a compatibility layer that re-implements WinAPI in terms of POSIX syscalls and such. The application itself is run directly — no emulation, no virtualisation, no nothing — and when it starts actually asking the OS for stuff, Wine simply provides it.

Oddly enough, although this sounds even jankier than running an ancient GMS v62 client in Windows™ 11, I have found that it actually… isn’t. Somewhat ironically. For a very long time, I always experienced much better stability — and more generally, correctness — in running MapleStory clients than my Windows™-using peers did. Plus, I don’t even have to use Windows™‽ Absolutely huge win. Massive. And it’s actually less surprising than you might think: it’s a well-known phenomenon by now where Wine actually cares more about compatibility & correctness than actual Windows™ does, and can often contain workarounds (for application, OS, and/or driver bugs) & performance improvements that running an application natively on Windows™ would not provide. Plus, some of the technologies developed to make Windows™ applications work well on Linux or macOS™ — like DXVK (e.g. see here; archived) — see use in improving Windows™’s ability to run those applications! So, what’s the catch? There’s always a catch…

Yes, there is a catch. Well, more like… erhm… three catches:

  1. There’s some black magic shit that you have to know in order to make this stuff work. It’s not difficult to do, but you do have to know what the secret ritual is. There are, however, already resources out there publicly on the WWW (e.g. on the MapleLegends forums) that spill the beans and will hand-hold you through the secret dark ritual. With that being said, I don’t know which — if any! — black magic rituals are required for getting MapleStory clients to run unless they happen to be based on GMS v62. Remember how I said that GMS v62 was going to be significant? Yeah, well, for some reason, it’s a little blessed. Do not ask me why; I literally have no idea. Maybe other clients can be made to work with the same ritual, but that has not been my (limited) experience.
  2. I’ve had performance issues doing this. I kinda just coped with that for like… years? LOL. For some reason, running MapleStory in Wine causes MapleStory to become very intent on melting a particular one of my CPU cores, and certain conditions (like certain in-game maps) can cause that to actually become a problem. It’s a weird position to be in, where the software runs flawlessly correctness-wise, but just… performs like garbage, and yet, it’s just good enough performance that you can kinda just grin & bear it. That being said, I am the kind of person who uses a computer for 10 or 11 years before upgrading, so maybe if I just threw better hardware at it… But that’s silly, right? Even decade-old hardware shouldn’t have any trouble running a single MapleStory client from 2008, yeah?
  3. After several years of doing this (on MapleLegends and elsewhere), some random MapleLegends update managed to really goof my shit up. I’ve already talked about this at some length in previous diary entries, so I won’t do that again here. Basically, the whole “wow it runs flawlessly on Linux and I get to feel pity for the Windows™ users who crash all the time” vibe kinda left the building, as I lost that stability. I admit that I am more or less in the dark with this one, as it just kinda… happened… But, at this point, I’m somewhat confident that I can fix it, even if that ends up requiring a bunch of tweaking and trial & error (and I actually think that it may not require any trial & error at all…).

So… Hmmm. What do we do about all that? Well, (1.) is really not so bad. The only actual problem there is if you don’t know the occult ritual — but the occult ritual for GMS-v62-based clients is already well-known. I would love to also have other occult rituals for other pre-BB versions of GMS at the ready, for you! Right now! But I do not! So, for our purposes, (1.) is already solved; and for other purposes, I do still have something to say, at least. But that “something” comes later — much later…

That brings us to (2.) and (3.). How frustrating these are… If only I had some kind of, I don’t know, highly advanced technology…?

And now, for the highly advanced technology…! Maybe…?

dgVoodoo2

You see, there’s really no reason for (2.) to be the case. Yes, sometimes Wine can add small-but-nonzero amounts of overhead to things that would be faster if we were running on Windows™ natively. However, overall performance degradations in excess of ≈10% or so are not expected. Furthermore, with the highly advanced Wine technology that we have in the year of our lord two thousand & twenty-two (almost twenty-three now…) — combined with Linux just being technologically superior to Windows™ in nearly every conceivable way — it’s just as common to see better performance than you’d get natively! So, what gives?

My perspective here is not highly technical; I’m not some genius programmer whomst can just drop into a debugger and actually understand what in all of hell is actually going on. That being said, I may be dumb, but I’m not stupid. Not, uhm, particularly stupid, at least… I’ve been tryna Maple it up with Wine for a fairly long time now, so I have experience with getting things to work, not getting things to work, poking around to try to figure out what’s going wrong, and all that fun stuff.

I noticed early on that turning off compositing could take me from “actually unplayable” to “miserable, but at least I can have fun punching Orange Mushrooms”. I also fiddled around with various settings and environment variables that may or may not have made a difference. At some point, I pretended that I was a genius programmer who could actually understand what in all of hell is actually going on in a debugger, and I tried profiling the performance of the game client running under Wine. I don’t really remember how I did it; I probably used perf, or something like that. The output of the profiler didn’t seem immediately useful, because a lot of the code that I effectively asked it to profile had little — or, more often nodebug info, so I would get, like, “13.7% of CPU time was spent in (unknown) @ 0xB00A1CE5”. Thanx a lot, that rlly helped… But actually, it did help in one way: I was able to see that the overwhelming majority of the time was spent somewhere inside of radeonsi[15] — key word “somewhere”… This at least confirmed my suspicion that the MapleStory client using outdated computer graphics technology was causing something to translate it really poorly, and this caused the performance cliff that I was experiencing. But what do I mean by “translate”? Well, my (again, not highly technical…) understanding is something like this:

Old graphics translation pipeline

Command to generate the above diagram

See here.

mmdc -t dark -b transparent -i old_gfx_translation.mmd -o old_gfx_translation.svg

The above chart is, again, made under the assumption that I’m using an (even vaguely modern) AMD GPU, but you can replace “radeonsi”/“amdgpu” with, like, “i965”, or whatever the case may be. Also, “D3D8” is just short for “Direct3D 8”.

It’s clear that my GPU is in no way the bottleneck here. Not only is the game clearly just shredding my CPU, but I even tried throwing an overpowered GPU at it (more on that later…) and got the same results; the GPU isn’t even breaking a sweat. It’s technically plausible that radeonsi is to blame here, for all I know; maybe the OpenGL that Wine’s d3d8.dll[16] is emitting is actually perfectly good, but it just so happens to trigger some corner case inside of radeonsi that causes a performance cliff. However, I’ve used many different versions of radeonsi at this point, as well as two different GPUs; so even if that is the case, I don’t expect the folx over at Mesa to fix it any time soon. In any case, I suspect that the culprit is actually much more obvious: it’s somewhere between Wine’s d3d8.dll implementation, and whatever (probably garbage, let’s be real) D3D8 calls/shaders are being emitted by the MapleStory client.

As I’m sure you’ve already guessed, I have run MapleStory clients with many, many different versions of Wine at this point. I suspect that the problem runs somewhere along these two axes:

Soooo… what do we do? I mean, I could spend years of my life learning how this stuff works and how to program it, and then try to fix whatever is going on, which frankly could be any combination of a lot of different things. Then again, I could maybe spend a similar amount of time re-implementing the client with code that is free and also not hot garbage…

I’m much too lazy — there must be a better way! Just kidding, not really. As far as I know, this is just how MapleStory will be forever……

But then, on one fateful day, after deciding to re-install Ubuntu to go from version 20.04 to version 22.04 (instead of just using the upgrader thingy lmfao; look, I was just getting rid of any cruft…), I went to configure Lutris to run MapleLegends. If you’re not familiar with Lutris, it’s basically a videogame launcher for Linux. I started using Lutris a while back, just to launch Maple, because it lets you easily configure a bajillion things and switch Wine versions whenever. Before that, it was all just command-line shit. Anyways, as I was configuring it, I noticed something that I had never seen before:

What is a “dgvoodoo2”?

I had never heard of “dgvoodoo2” before, and I was just a little curious, so I decided to look it up. Much to my very(!!) pleasant surprise, it was actually relevant — indeed, very relevant — to the problem at hand here. But, ok, what does “dgVoodoo2”[17] mean?

dgVoodoo2 — much like Wine — is a compatibility layer. The etymology of its name is simple:

Glide is a 3D graphics API developed by 3dfx Interactive for their Voodoo Graphics 3D accelerator cards.

(Emphasis mine.)

That’s the ⟨Voodoo⟩ in dgVoodoo2, and the ⟨dg⟩ I can only assume is just the author’s name — their name being Dege. Glide™ hasn’t been a thing for a long time; as far as I’m aware, the only games that used it were released during the latter half of the 1990s. After that point, people started actually using OpenGL — which Glide was based on, hence its name — plus Direct3D, of course, both of which had matured considerably by the turn of the millennium. My understanding (not having actually experienced this myself) is that Glide™ was only popular during that period because OpenGL 1.1 lacked good hardware support at this time, whereas Glide™ was designed specifically to run entirely (key word “entirely”) on Voodoo Graphics™ 3D cards, which must have been widely used/available at the time.

The initial motivation for providing a compatibility layer for Glide™ beginning in the late 1990s was — I assume — partly because it was proprietary software that 3dfx Interactive™ kept under tight wraps (although they later open-sourced it when it became irrelevant), but mostly because of the obvious hardware issues. Voodoo Graphics™ 3D cards were not the only GPUs on the market at the time, and this competition would get much worse by the turn of the millennium. So, you want to run games from the late 1990s (which, at this point, was not that long ago at all), but your OS (read: Windows™ 98, Windows™ XP, etc.…) obviously doesn’t have Glide™ support for legal & practical reasons, and even if you used 3dfx™’s proprietary *.dlls or whatever, the problem is hardware: there’s no way that 3dfx™’s proprietary Glide™ implementation supports whatever random hardware that you have. That seems to have been the motivation for creating dgVoodoo1 (note the ⟨1⟩); it could translate any Glide™ API calls into… probably Direct3D of some kind. Which kind? I’m not sure — I haven’t looked into dgVoodoo1 at all, to be honest.

dgVoodoo2 is, as the number at the end of its name implies, more modern. It translates to either Direct3D 11 or 12. Furthermore, it supports not just Glide™, but also older Microsoft™ graphics APIs: virtually all DirectDraw/Direct3D versions from 1 through 9 — oh yeah, DirectDraw, baby!!! Luckily(?) for us, DirectDraw is no longer a thing from DirectX 8 onwards; it was folded into Direct3D…

And so, dgVoodoo2 fits firmly within the realm of graphics compatibility layers, of which there are many, including the aforementioned DXVK. However, unlike DXVK, dgVoodoo1 & dgVoodoo2 have a catch: dgVoodoo is proprietary software. I know; tragic. With that being said, dgVoodoo being proprietary is more out of a decidedly old-fashioned hobbyist development model, and not so much because of any commercial venture: dgVoodoo2 is freeware, meaning that it costs no money, despite being nonfree. Its job, for our purposes, is obvious: to translate D3D8 calls into D3D11 calls!! And that’s… literally it.

Of course, that leaves the problem of “I’m Linux years old and what is D3D11?”, so it is DXVK’s job to translate the D3D11 calls/shaders into Vulkan, which is very good. We like that. Vulkan is basically the only 3D graphics API that actually makes sense to use in 2022[18], so my graphics drivers will have no problem with it. DXVK is very actively developed & utilised, thanks in no smol part to the efforts of Valve Corporation™ in:

Remember that flowchart of the graphics translation pipeline? Well, with dgVoodoo2, it looks more like this now:

New graphics translation pipeline

Command to generate the above diagram

See here.

mmdc -t dark -b transparent -i new_gfx_translation.mmd -o new_gfx_translation.svg

(RADV is the Vulkan driver, which is why it replaces radeonsi here.)

W h e w . That is a lot of layers. Let’s try it out, by switching on the little thingy in Lutris’s settings:

“dgVoodoo2” first “try”

Oh. Oh my…

Just kidding. In the end, it turned out that the screenshot that you see above had nothing to do with dgVoodoo2 whatsoever. I don’t recommend using Lutris’s built-in dgVoodoo2 option — at least, for now. It, uh… it doesn’t do anything, as far as I can tell. We’ll get into exactly why I got that nasty display that you see above later, but suffice it to say that it didn’t really have to do with dgVoodoo2, or Wine, or MapleStory, or anything like that.

I ended up installing dgVoodoo2 manually[19], which is what I recommend. And guess what? It… actually works?? And my CPU isn’t melting??? 😍😍😍😍😍!!!

So far (fingers crossed…), the only caveat seems to be input latency. I’ve yet to actually try to fix this — or to test whether or not this is actually dgVoodoo2’s fault — but when I went to log in, I already noticed the serious input lag whilst I was logging in. Seriously, typing in a username was noticeably slow, not to mention actually going in game and like, walking around & stuff. Is that playable? I mean, yeah. But if even I can notice the input latency, then it’s pretty bad…

I plan to actually compile what knowledge I do have of running old-ass MapleStory in Wine, plus any tips & tricks & tools &c. that exist to help, into some kind of guide. If this essay wasn’t enough motivation, remember that this problem only worsens with time, as hardware & operating systems & drivers move onwards; and remember that Linux is the only viable option for playing Maple on a lot of hardware — including not just the Steam Deck™, but also just generally old and/or obscure machines. And if you don’t like MapleStory, you know, that’s fine too. But, then, why are you still reading?? Get outta here! Shoo!! Just kidding. Come back. Please.

If I do get around to making such a guide, it will be here (mirror). You know, no promises. If you do wanna see it, feel free to nag me a little! Only a little bit, though. I don’t bite, but I do have hooves…

Hardware!

I’ve already hinted at this a few times throughout this essay, but… I got new hardware! And it fixed a lot of my problems!! I kinda have been using the same computer for a little over a decade, and it was honestly pretty mid when I got it in the first place. So it has aged. A little bit.

I actually had to replace the GPU at some point, because it literally just crapped out and stopped working almost entirely — “almost”, because I could still get it to display glitchy colours & stuff LOL. This was back when the Radeon™ RX 590 was kinda new-ish (at least, it was part of the most recent generation, I think), and so I replaced it with exactly that: an RX 590. An RX 590 is for sure for sure overpowered, but I wanted something that I wouldn’t have to replace, because… I didn’t like replacing the one that just broke. Plus, it would give me the ability to do more GPU-bound stuff — which includes, for example, video encoding/decoding — faster, & even stuff that I might not have been able to pull off previously. Somewhat humorously, the RX 590 has 8 GiB of VRAM, the same amount of main RAM that I had for the CPU to use…

Anyways, I started having worse & worse issues, including sudden performance degradation of certain applications, and most of all: my computer would literally just randomly shut off. I mean, like, one moment it has power, and the next, it does not. Hopefully didn’t lose or corrupt any data! Hah hah!! (😭)

I thought that it might be overheating or something, but clearing things away and making sure that the case was getting good ventilation & all that… didn’t seem to help. Neither did a colder environment. Eventually, I realised that it must be the PSU’s fault! And now I need a new PSU!! Frick!!!

So, I decided that it was just time to move on. After, you know, 10 or 11 years. The only part that I didn’t want to replace was, naturally, the GPU. Long story short, I scavenged for parts put a computer parts list together — with some help from Harlez (VigiI) — and waited patiently until I could get them all round up and ready to be put together. I didn’t really know how to do the assembly part, but the internet nerds told me that it’s actually easy, so I figured that I could probably hack it.

I spent like 9 or 10 hours looking at an internet guide, reading all of the manuals that the parts came with, and painstakingly putting everything together as carefully as I could. And it didn’t work. We’re going to skip the part where I didn’t have a working computer to use, so I just kinda… cried a lot for a day or two… and didn’t do much else, because I did eventually figure it out.[20] Eventually.

Pretty epic, right?? New hardware??? Advanced technology???? If you’re the kind of nerd who cares about that sort of thing, here are the important bits:

Parts for nerds

I’M FAST AS FUC

Footnotes for “Running MapleStory requires highly advanced technology”

  1. [↑] Apologies for the lack of an actual “o” here. I’ve been consistently obfuscating the name of this company throughout my diary, & I do not intend to stop doing it…
  2. [↑] Nex❍n moved their headquarters to Tōkyō a bit later, in 2005.
  3. [↑] EMS was, however, not the first to go. Vietnamese MapleStory (VMS) was launched on 2008-03-10 and shut down on 2010-09-14. Brazilian MapleStory (BMS) was launched in 2008 as well, and shut down on 2011-10-22. EMS merged into GMS in 2016.
  4. [↑] Yeah, fight me about it. Just kidding, please don’t. No hate emails. Pretty please.
  5. [↑] Well, at least some of it… Let’s, uhm, not talk about it……
  6. [↑] You may know x86-64 as “AMD64” or simply “x64”; it’s the 64-bit version of x86.
  7. [↑] You may know IA-32 as “i386”; it’s the 32-bit version of x86.
  8. [↑] You know what I mean. I’m sure there’s some weirdos out there… You know who you are…
  9. [↑] Using the phrase “technical debt” here is honestly putting it extremely mildly…
  10. [↑] What those guarantees are exactly, and whether or not they are actually “guarantees”, I’ve no idea. I think Microsoft™ can kinda just break backward compatibility whenever it doesn’t make them lose a bunch of money. 🤷🏽‍♀️
  11. [↑] Just 84 more releases, and we’ll be back at Windows™ 95. History really does repeat itself…
  12. [↑] Luckily for me, (1.) Bill Gates is a nerd so I don’t care what he thinks of me, and (2.) I don’t use Windows™ anyways. Nice try, Bill. I can be as pathetic as I want.
  13. [↑] Do not come at me with that “GNU+Linux” meme shit, I swear to god.
  14. [↑] Indeed, that is where the name “Wine” comes from: Wine Is Not an Emulator.
  15. [↑] Archived. I love this comment, because there’s pretty much no way that I would know any of this stuff otherwise. Basically, radeonsi is the name of the userspace driver for modern AMD GPUs that makes up one part of the Mesa collection. It’s all open-source stuff.
  16. [↑]dll” stands for dynamic-link library, which is Microsoft™’s implementation of the usual shared library concept. On Linux, a file with such a purpose would have a filename ending in .so, which stands for shared object.
  17. [↑] [WARNING: raw HTTP] The homepage for dgVoodoo2 is here.
  18. [↑] I hear the macOS™ users: “but what about Metal™???”; and the Windows™ users: “but what about Direct3D™ 12????”. Vulkan applications already run on Windows™ NT, and yes, even on macOS™/iOS™/iPadOS™/tvOS™. So, please, convince me as to why someone would willingly use a random proprietary graphics API, when they can just use Vulkan!! I also hear the web standards weirdos: “but what about WebGPU…?”. Okay, fine, you win (ignoring the fact that the WebGPU implementation is likely Vulkan-based anyways…), except for the part where WebGPU isn’t a real thing yet — I did specify “2022”, not “2026”…!
  19. [↑] If you are going to do this yourself, let me give you the only hint that I needed to get it working: use winecfg’s DLL overrides feature to have the “native” d3d8.dll load before the “built-in” one. Otherwise, you’ll just always be using Wine’s built-in d3d8.dll, which defeats the purpose.
  20. [↑] It was the RAM sticks. You… you have to insert them in a very specific order. It didn’t really help that the motherboard didn’t come with the full manual, so I had to find a PDF of it on my phone. It also didn’t help that I was getting literally no feedback (at least beep at me, or something??).

Vicloc endgame balance

I like vicloc. A lot. When I tell people about vicloc, one of the many things that I like to tout is its game balance. But I’ve never actually done a thorough investigation of the topic; instead, I have just relied on my own intuitions and knowledge of the game mechanics at play. So, this is yet another entry in an apparently long-running series of “deer attempts to prove herself wrong again”. So strap in.

The tidy balance of vicloc mostly — although not entirely — comes from the simple fact that second job is the highest job in the game. This is, in a sense, “historically accurate” to the original development of MapleStory back in the early 2000s; the game originally had just three levels (“grades”) of job advancement:

*Of course, I have asterisked (*) all pirate jobs, because they were added significantly later. They are nevertheless included because they are present in vicloc on MapleLegends, and would likely be included in most modern vicloc implementations. The comments below apply equally well, regardless of the presence (or absence) of pirates.

Third and higher jobs (third, fourth, fifth, etc.) were then added into the game later on, and largely disrupted the original design of the game by adding skills that…:

Please do note that this is not intended to be some kind of polemic against the legitimacy of 3rd job & 4th job. I personally love both 3rd job and 4th job very much. However, in so loving them, I am keenly aware of their many flaws (many of which can be easily fixed, some of which can be fixed with some effort, and almost none of which are actually fixed in practice), and I am also keenly aware of how they reshape the game. Shaving off higher grades (higher jobs) from the game reverses this reshaping to a great degree, allowing us to re-discover the things that we inevitably lost in that reshaping. In this context, no change — no reshaping, nor un-reshaping — is lossless. Every addition & every advancement necessarily obfuscates parts of the structure that it “adds to” or “advances”, which poses a very serious test for our feeble collective memory.

With all of that said, the very simplified basic point is this: whereas 0th job, 1st job, and 2nd job have always been with us and were designed together in the first place, higher grades were added on in a distinctly post hoc manner. Thus, it’s no surprise that getting rid of the post hoc jobs recovers the original fair balance of the game.

“Balanced”?

[A]ll models are wrong, but some are useful.

― George E. P. Box & Norman R. Draper; Empirical Model-Building and Response Surfaces; 1987.

But how “balanced” is this balance, really? To answer this question, we need to clarify some things about “game balance” in this sense. My intent is not to insult the reader’s intelligence by implying that you have absolutely no concept of what “game balance” could possibly mean; rather, my intent is to make clear how broadly this concept can reach, because I have noticed a nasty habit of MapleStory players to neglect (intentionally or otherwise) many important parts of it.

The main truth that I wish to impress is this: most aspects of game balance (specifically in MapleStory) are not directly quantifiable, and many are not quantifiable at all. Mayhaps this is obvious, but it’s more than worth stating here, simply because this is going to go much the same way as my previous diary entry:

So, by now, you probably know where this is going: damage calculations! It just wouldn’t be another entry in rangifer’s diary without some inane damage calculations, would it…?

We are first going to simplify our considerations to only a specific kind of “horizontal” balance: that between 2nd-job non-odd vicloc PCs, and nothing else. Although other kinds of balance within vicloc are certainly worth consideration, even this narrow view will already take a whole lot of effort to hash out. Then, we will cleave (pun intended) the notion of “MapleStory game balance” into basically three parts:

In the end, we will be looking at a model that is inherently multi-dimensional, and these dimensions are often orthogonal to one another — or quite close to orthogonal. As a result, we will not even attempt to one-dimensionalise “balance” and then show that the values for each of the classes are approximately equal to one another. Although this is “balance” in some sense — and it’s certainly satisfyingly tidy — this simply cannot be done, and so we will not futilely attempt it.

The model PCs

I’ve already mentioned some properties of the theoretical PCs that will serve as part of our model; they will be:

Furthermore, we will make all of them exactly level 80. Why level 80, you ask? Well, let’s look at the endgame milestone levels for viclockers:

At the time of this writing, only the first two of these milestones have actually been reached by viclockers in MapleLegends.

At this point, we can choose the equipment items for the various model PCs, and once we have those, their AP builds can be tailored to their equipment. In order to keep the equipment items comparable between the various model PCs, we will assume the clean stats of each type of equipment item in a uniform way, and also scroll them in a similarly uniform way:

Note that I am deliberately not making use of any scrolls that were added to MapleLegends’s vicloc on or after the 2022 anniversary/summer event. This is partly because they are newer and so fewer of them exist, but also because they have some sour balance implications; some jobs get 30% scrolls for their weapons, & some do not…

Model PC 1: Fighter

Because viclockers have pretty good access to the Red Katana — notable for being speed 4(!) clean and thus speed 2 (the fastest speed in the game) with booster — going the one-handed route as a fighter is a perfectly good idea. However, because shields are difficult to make, and would add one more equipment item into the mix, we’re going to keep it simple and assume that our fighter only uses two-handed weapons. Furthermore, we will look at swords instead of axes, because the Chrono is unfortunately speed 7, compared to the Doombringer’s more favourable speed 6.

It might seem a little weird that the warriors are scrolling their helmets for MAXHP (in addition to DEX), but it’s just for consistency and because it doesn’t put much of a dent in their damage output anyways — 10% DEX is their only option for increasing DPM. In reality, the warrior likely favours DEF over MAXHP.

All of our warrior models are male. Female warriors are naturally weaker due to not having access to their level 80 overall.

Fighter equipment

Base stats:

Model PC 2: Page

Because viclockers have pretty good access to the Red Katana — notable for being speed 4(!) clean and thus speed 2 (the fastest speed in the game) with booster — going the one-handed route as a page is a perfectly good idea. Furthermore, the Colorful Tube is a solid choice as well. However, because shields are difficult to make, and would add one more equipment item into the mix, we’re going to keep it simple and assume that our fighter only uses two-handed weapons. Furthermore, we will look at swords instead of blunt weapons, both for consistency with the fighter model, and because the Gigantic Sledge is unfortunately speed 7, compared to the Doombringer’s more favourable speed 6.

I’m eliding the page model’s equipment and base stats because they are identical to those of the fighter model above.

Model PC 3: Spear(wo)man

The spear(wo)man model will be using a polearm, for obvious reasons. Because high-level warrior polearms are a deeply unfortunate speed 8 clean, the obvious choice here is the BSB.

I’m eliding the rest of the spear(wo)man model’s equipment and base stats because they are otherwise identical to those of the fighter model above.

Model PC 4: F/P wizard

All of our mage models will be female. Male mages are at a minor disadvantage due to somewhat worse availability of overalls.

F/P wizard equipment

Base stats (you can verify for yourself that this allows the model to wear all of the above gear simultaneously):

Model PC 5: I/L wizard

I’m eliding the I/L wizard model’s equipment and base stats because they are identical to those of the F/P wizard model above.

Model PC 6: Cleric

I’m eliding the cleric model’s equipment and base stats because they are identical to those of the F/P wizard model above.

Model PC 7: Hunter

Hunter equipment

Base stats (you can verify for yourself that this allows the model to wear all of the above gear simultaneously):

Model PC 8: Crossbow(o)man

I’m eliding the rest of the crossbow(o)man model’s equipment because it’s otherwise identical to that of the hunter model above.

Base stats:

Model PC 9: Assassin

All of our thief models are female. Female thieves are at an advantage due to having access to jobbed overalls. Note, however, that both such jobbed overalls are level 35, making the advantage somewhat modest at higher levels.

Assassin equipment

Base stats (you can verify for yourself that this allows the model to wear all of the above gear simultaneously):

Model PC 10: Bandit

Our bandit will be using the endgame warrior–thief dagger, the Golden River, instead of the endgame thief dagger, the Kandine. Either choice is opinionated; the Golden River has a STR requirement but offers more WATK, whereas the Kandine is easier to get and has no STR requirement. The two are just about equally good for our purposes.

I’m eliding the rest of the bandit model’s equipment and base stats because they are otherwise identical to those of the assassin model above.

Base stats:

Model PC 11: Brawler

Brawler equipment

Base stats (you can verify for yourself that this allows the model to wear all of the above gear simultaneously):

Model PC 12: Gunslinger

The gunslinger model is wearing a Black Royal Barone instead of a Red Viska due to difficulties in getting STR (in comparison to DEX) from equipment.

I’m eliding the rest of the gunslinger model’s equipment because it’s otherwise identical to that of the brawler model above.

Base stats:

Footnotes for “The model PCs”

  1. [↑] Bear in mind that vicloc scroll availability is much different from that for outlanders.
  2. [↑] A superior alternative to this equipment item exists, but its availability is too low for it to be scrolled well with a reasonable amount of luck.

Assets

As discussed above, “assets” in the sense that we’re using here are not quantifiable for the most part, so instead we just have to give a high-level overview. I’ve set up a comparison table below that I think more or less does this topic justice.

I have intentionally omitted all of the following:

Legend for the table below

Particularly standout assets — ones that could be described as “invaluable” — are bolded.

  • Party buff: Self-explanatory, although do note that this is an umbrella term that encompasses all party buffs, regardless of what they do. For example, Bless and Rage are certainly both party buffs, but that is where their similarities end.
  • Mobility: Assets that aid the model’s ability to move themselves (but not necessarily others) around.
  • Bully: I am using the term “bullying” to refer to any act that affects enemies’ movement, whether that is through forced movement (Power Knock-Back, Corkscrew Blow), preventing/slowing movement (Cold Beam, Arrow Bomb, Double Uppercut, Blank Shot), or both (Backspin Blow).
  • Can’t touch this: Dark Sight and Dark-Sight-a-likes. So basically, Dark Sight and Oak Barrel.
  • Sui generis: Any asset that would otherwise get its own column all for itself, due to being unique, is instead put here.
modelparty buffmobilitybullycan’t touch thissui generis
fighterRage
pageThreaten
spear(wo)manHyper Body, Iron Will
F/P wizardMeditationTeleport
I/L wizardMeditationTeleportCold Beam
clericBlessTeleportHeal
hunterPower Knock-Back, Arrow Bomb
crossbow(o)manPower Knock-Back
assassinHasteHasteDark Sight
banditHasteHasteDark SightSteal
brawlerCorkscrew Blow, DashCorkscrew Blow, Backspin Blow, Double UppercutOak Barrel
gunslingerRecoil Shot, Wings, DashBlank Shot

I originally had Threaten in a “debuff” column, before I realised that it was the only thing in that column… Threaten is, for better or for worse, pervasively misunderstood. So, here’s my Threaten spiel:

Threaten spiel (required reading!!!)

Most Maplers know Threaten as essentially a DPM boost for the whole party (except the mages). It does this by lowering the WDEF of enemies by 100. Let’s consider how much 100 actually is. Each point of WDEF shaves an average of 0.55 off of your raw physical damage range; thus, Threaten effectively adds 0.55 ⋅ 100 = 55 to your raw physical damage range. However, the word “raw” is doing a lot of heavy lifting here; this raw damage range is before damage multipliers from attacking skills, critical hits, etc. In the extreme case, consider a bandit, whose attack (Savage Blow) does 80% ⋅ 6 = 480% damage. that puts our raw physical damage range increase of 55 from threaten up to 55 ⋅ 480% = 264 damage. And that’s per attack! That is huge!! And in a less extreme example, consider the archer, whose Double Shot deals 130% damage per arrow — but wait, that’s for a non-crit. A crit adds another 100 percentage points on top of that, meaning 230% damage for a single arrow. Because archers have a ½ probability of critting, an average of exactly 1 arrow per Double Shot is a crit; that is 130% + 230% = 360% on average. That is an extra 55 ⋅ 360% = 198 extra damage from Threaten, per Double Shot.

You may have noticed that this does not scale: that “55 extra raw damage range” is just… 55. It doesn’t matter how large or small your raw damage range is, it’s just always an extra 55 on top. This has given Threaten somewhat of a bad reputation, as its relative usefulness diminishes as PCs get larger raw damage ranges (read: higher level). Necksawn, to their credit — and I am rarely out here mentioning Nekksyn by name to give them credit, let’s be real — recognised this, and fixed Threaten before Big Bang was even released, but unfortunately after GMS v62 was released. By “fixed”, I mean that they made it 20% WDEF, instead of a flat 100 WDEF. They also fixed it in several other ways (way to go Neqqsahn, proud of you…!), but the point is that I recognise that Threaten is broken in very early versions of MapleStory. However, in the context of vicloc, it is a lot more powerful than most people realise, and so I want to give it the large amount of credit that it actually deserves.

First, we have to acknowledge the other elephant in the room: Threaten is a debuff, thus making it not so useful in anything that isn’t a boss fight. Outside of a boss fight, you would do more good simply going ham on your enemies, instead of taking the time to cow them with your fearsome presence. With that being said, I don’t find this to be a huge letdown, as boss fights are the only time where special party buffs like Threaten — and yes, I am simplifying Threaten as being effectively a “party buff” in this context, even if it isn’t one stricto sensu — are actually of great importance. The same can easily be said of HB, for example, even in spite of the fact that HB is a true party buff, and can thus be sustained without being spammed.

Besides the fact — as discussed above — that −100 WDEF is actually a huge deal in vicloc, Threaten actually has three more tricks up its sleeves:

  • Threaten doesn’t just lower WDEF; it also lowers WATK. Although it does not lower MATK, −20 WATK is nothing to sneeze at. Consider our big bad guy Ergoth, who has 700 WATK. 700 might make −20 sound small, but look at the kind of physical damage reduction you can expect to see: what would be 4 165 damage at worst, becomes 3 930 at worst[1]. That undoubtedly can be the difference between a dead party member and a live one.
  • Threaten — being a debuff — cannot be dispelled, much unlike buffs. This is a big deal in vicloc, where all of the big bad end guys are tryna dispel the shit outta ya.
  • Last, but certainly not least, Threaten “stacks” with absolutely everything (other than itself, and Disorder, which doesn’t work on bosses anyways), meaning that Threaten is always effective, and is often the only way to turn the tide of battle further into your party’s favour. Rage, for example, is fantastic! Anyone in vicloc who has ever had Rage cast upon them can tell you that for sure. But if you already have Rage, or some other WATK buff like Onyx Apples or some random event shit, it’s not so fantastic anymore. Threaten doesn’t have this problem — except, of course, in the trivial case where you have two or more pages in your party.

So, yeah, I think I want a page in my party, too.

Meditation is notable for being a party buff, but only because magicians & clerics benefit greatly from it. This is, however, a marginal benefit because “magicians & clerics” don’t make up a very large chunk of the population. Nevertheless, this increases the appeal of F/P & I/L party members in the context of training/grinding with a cleric, or even as a little extra damage in a boss run.

Although Cold Beam does freeze, and thus is a bullying skill, its bullying effects are limited to a single target (as it is not a multi-target attack), and also limited to non-boss monsters that are either neutral or weak to cold. Bosses, and monsters that are strong or immune to cold, are immune to the bullying effects of Cold Beam.

If you’re surprised by the fact that I’ve bolded Bless in the table above, consider that:

I’ve bolded the “can’t touch this” skills because they are a hard requirement for completing SPQ.

Steal is included under the “sui generis” column, although I believe that the MapleLegends implementation unfortunately makes it “technically functional, but perhaps not so useful”.

Corkscrew Blow is bolded under the “bully” column because it affects bosses (indeed, it’s the only skill that can bully bosses![2]) and is highly versatile — it’s basically Rush, but for 2nd-jobbers!

Footnotes for “Assets”

  1. [↑] In general, the absolute damage reduction actually scales up linearly with the un-Threatened WATK value of the enemy. The max-physical-damage reduction of Threaten is about 0.34⋅𝖶𝖠𝖳𝖪 − 3.4.
  2. [↑] Well, except for possibly Backspin Blow? I can’t remember. In any case, both are brawler-only skills…

Survivability

For this category, we’ll take a look at all defensive stats — even AVOID. Strictly speaking, AVOID is not usually strongly related to “survivability”, but we’ll at least calculate the values here because… well, I’ll tell you right now that the “damage output” section is not going to have nearly enough nuance to take AVOID into account. So we’ll at least put the raw AVOID values here for some kind of comparison.

Each value is split into two columns. The first (leftmost) column is the value when the model is fully-clothed, fully self-buffed, and is using any appropriate NPC-purchasable potions; it does not take into account possible benefits from the party buffs of their fellow party members, and also does not take into account possible benefits from potions that cannot be directly purchased from ordinary NPCs. The second column (labelled “(DP’d)”) is what it sounds like: it’s the former value, but without self-buffs (although still including the NPC potions). This value is given with an eye towards Grog 3rd body and, particularly, Ergoth’s statues, both of which are capable of dispelling PCs.

MAXHP values are expected values. All values are rounded to the nearest integer (rounding half to even). As already implied by the base stats of the models, we will be assuming that none of the models spend AP on anything that isn’t STR, DEX, INT, or LUK. Do note, however, that this is a simplification that I’m using for simplicity & consistency, rather than a realistic expectation. Spending AP on MAXHP is really the only practical way for vicloc PCs to increase their base (read: totally naked & unbuffed) survivability, as “washing” is entirely nonexistent in vicloc.

modelMAXHP(DP’d)WDEF(DP’d)MDEF(DP’d)AVOID(DP’d)
fighter5 4145 4143452851391392525
page5 0895 0893452851391392525
spear(wo)man8 1425 0893452851791392525
F/P wizard1 1161 1162221826346344646
I/L wizard1 1161 1162221826346344646
cleric1 1161 1162221826546346146
hunter2 3442 344206206115115122102
crossbow(o)man2 3442 344206206115115124104
assassin2 3442 344181181115115235235
bandit2 3442 344186186115115215215
brawler3 9103 910210210115115[1]138[1]138
gunslinger2 4642 4642002001151157878

We can actually easily give just a little extra context for the WDEF values listed here. Here is a table of the WDEF values above, but “normalised” by subtracting PDD[2]:

modelnWDEF(DP’d)
fighter−37−97
page−37−97
spear(wo)man−37−97
F/P wizard+10−30
I/L wizard+10−30
cleric+10−30
hunter−32−32
crossbow(o)man−32−32
assassin−110−110
bandit−105−105
brawler−29−29
gunslinger−39−39

The WDEF damage reduction formula is super ultra complicated for no apparent reason, but you should know that both the normalised and the un-normalised WDEF values are involved in the calculation. Having a negative normalised WDEF value is Not Good™ (it has unsavoury implications for the WDEF damage reduction formula), but for some reason, Necksawn thought that it would be funny to make it nigh impossible to actually achieve such values[3]

Of course, this isn’t the whole picture. We are leaving out a variety of defensive skills, and we aren’t giving concrete damage values — nor concrete dodge-chance values.

In the table below, “🫵” signifies a touch attack, and “🏹” signifies a ranged attack (which may or may not be magical). I’m going to be taking the ceiling of the maximum possible damage value in each case, in order to focus on the worst-case scenario. I will assume that all three ranged attacks here are magical, because I think…? that they are……? If you know better, please do let me know.

The values in the table below are expressed in terms of HP loss, not true “damage” per se, which is why mages take such small amounts of damage when not DP’d. Underlined values indicate that the model will get one-shot killed by the attack even if they are at full HP, unless they have HB. Bolded values indicate that the model will get one-shot even if they have HB.

modelJrog 🫵Jrog 🏹Grog3 🫵(DP’d)Grog3 🏹(DP’d)Ergoth 🫵(DP’d)Ergoth 🏹(DP’d)
fighter9532876384712142714272424411238683868
page9532876384712142714272424411238683868
spear(wo)man15892866639712141714274039411238583868
F/P wizard328547137719257128481741197453725
I/L wizard328547137719257128481741197453725
cleric23054696719256128457241197443725
hunter16462880696696143114314096409638723872
crossbow(o)man16462880696696143114314096409638723872
assassin17072877770770142814284170417038693869
bandit17012877763763142814284163416338693869
brawler16342882683683143314334083408338743874
gunslinger16532880704704143114314104410438723872

As you can see, MDEF makes an unfortunately smol impact on how much damage the PC takes from magical attacks; nevertheless, it is still often a deciding factor in particularly close situations, like squishy classes fighting Jrog without HB, or fighting Ergoth with HB. Note that Ergoth’s statues do not hit as hard as Ergoth does, and there are also 1⧸1s involved in that fight. Also bear in mind, of course, that these are exactly level 80 PCs with exactly 0 AP spent in MAXHP/MAXMP. And furthermore, the table above only looks at bossing, ignoring non-boss monsters entirely.

And finally, just to get a little idea of how the AVOID works out, here are some pretty plots:

Plot comparing physical dodge-chances against ACC values of 70, 100, 175, & 230

Plot comparing magical dodge-chances against ACC values of 70, 100, 175, & 230

Note that both of the plots above make the simplifying assumption that the PC & the monster are always the same level as each other, which is obviously violated for our particular models when fighting certain bosses. The ACC values were picked from:

In the first plot, you can just barely see where the dodge-chance gets capped to 80%. Note that this cap doesn’t apply to thieves; instead, thieves are capped at a maximum dodge-chance of 95%.

Footnotes for “Survivability”

  1. [↑] Note that this value is calculated using MapleLegends’s warped version of the brawler/marauder/buccaneer AVOID formula, not the MapleStory one.
  2. [↑] See here.
  3. [↑] At least, without a zhelm 😅…

Damage output

For damage output, we are going to gloss over all of the following:

And, instead, we will focus on raw theoretical sustained DPM values, as usual, because that’s the only way to make things manageable here. We’re also going to look at accuracy, but that comes later.

We will make the following simplifying assumptions:

You know the drill.

We will consider both single-target and multi-target DPM, by calculating DPM values for 1 target, 3 targets, & 6 targets. When elemental damage is involved, we will consider two cases: when the target is neutral to the element, and when the target is weak to the element. We assume that elemental damage against a monster that is strong (or immune) to that element is basically “pp pupu damage”, and thus we don’t care to calculate it.

Calculating DPM values for multiple sets of buffs is going to be excessively tedious, so we’re going to use the following set of buffs as a single compromise:

The Drake’s Blood is chosen because it’s always farmable, and sits somewhere in between the bare minimum Warrior Potion (+5 WATK) & the fighter’s Rage (+20 WATK). Somewhat ironically, this means that the fighter model will not be casting Rage on themselves, but that’s just for consistency.

All archer models are assumed to be using Soul Arrow. The assassin model is using Hwabis. The gunslinger model is using Mighty Bullets.

We’ll consider just two monster models, as this is the bare minimum to see a difference due to DEF effects. Our “weak” model is based on the Officer Skeleton, and the “strong” model is based on Knight Statue A, a particularly important target in the Ergoth fight.

As always, these numbers have been crunched by my damage calculator. The highest value in each column is bolded, the second-highest is underlined, and the third-highest is italicised.

model1 weak3 weak6 weak1 strong3 strong6 strong
fighter362 620543 8671 087 734272 053408 017816 034
page362 620543 8671 087 734272 053408 017816 034
spear(wo)man337 842506 6951 013 390239 042358 495716 990
F/P wizard218 786218 786218 786190 674190 674190 674
I/L wizard180 753314 067628 134152 642229 734459 468
cleric142 721474 058660 764114 610360 208471 014
hunter347 217347 217683 765221 817221 817476 026
crossbow(o)man381 683660 8611 142 595256 283443 745767 201
assassin465 880465 880465 880298 680298 680298 680
bandit438 587438 587438 587271 387271 387271 387
brawler478 856633 8631 267 726306 983435 313870 627
gunslinger436 541544 955???281 284? 351 155???

You’ll notice that hunters do the same amount of damage against three targets as they do against one. This is because the impact damage (as opposed to splash damage) of Arrow Bomb is abysmal enough to make it pretty poor aggregate DPM at lower target counts. You need more monsters getting splashed for AB to be worth using from a theoretical raw DPM standpoint, stun effects notwithstanding…

The brawler is spamming the “DUCFF → FF → FF” sequence for single-target DPM. If you only consider the attack delay incurred by DUC — that is, the duration immediately after using DUC during which the brawler cannot use active skills — then it actually has somewhat higher DPS than FF. However, DUC effectively has a cooldown of about 2 160(!) ms[1], during which you cannot use DUC again, so we have to pad it out with three FFs each, in order to maximise overall DPM. For ≥3 targets, the brawler is just spamming SSK.

The gunslinger is using Invisible Shot for its three-target DPM values. You can see that I’ve no idea how to calculate its six-target DPM values, thanks to not knowing how SSK damage is calculated with a gun equipped, and also thanks to not knowing what the effective attack period of Grenade is in the context of spamming the “SSK → Grenade” sequence. With this sequence, Grenade is not charged up, so the projectile lands more or less on top of the PC, damaging enemies in their immediate vicinity. I suspect that this is very powerful, especially if you can actually hit 6 monsters at once with it. Unfortunately, however, I don’t have a way to put a solid number on it here. It’s entirely possible that SSK+Grenade actually beats Invisible Shot even with just three targets!

F/P wizards get the short end of the stick here, partly because we have to ignore Poison Breath due to its poison-tick damage scaling with its victim’s MAXHP. Thus, all F/P wizard damage is with Fire Arrow only.

The cleric is a weird case here. The way I’ve done it is using Holy Arrow for single-target, and Heal for multi-target, under the assumption that the multiple targets are all undead (read: susceptible to Heal). However, Heal actually outdamages Holy Arrow against a single target if that target is susceptible to it, even if that target is also weak to holy. So, in the table below, Heal is used for all of the cleric model’s DPM values. Here’s the table of mage DPM values for monsters that are weak against their respective elements:

model1 weak3 weak6 weak1 strong3 strong6 strong
F/P wizard332 882332 882332 882304 771304 771304 771
I/L wizard275 834485 212970 424247 723400 879801 757
cleric235 619474 058660 764197 669360 208471 014

So, we have some pretty glaring issues here. Out of the three mage models, only one — viz. the cleric — feels like it has a truly respectable showing here. That’s because we have lower expectations for clerics, as their main strength is not usually considered to be DPM (although we can see above that their DPM is respectable against undeads, as you’d expect), but rather, their assets (and, to a lesser extent, survivability, however dependent on Invincible & Magic Guard they may be…). On the other hand, F/P wizards feel like they have no true strength; they have Meditation & Teleport & Magic Guard, but so do I/L wizards. Sure, “highest magical single-target DPM” sounds fun & novel, but that’s about it; it’s difficult to find an actual use-case unless they are fighting a high-MAXHP non-boss monster that makes their Poison Breath really shine (and there aren’t so many of those in vicloc…). However, I kinda already knew that; I’ve been pretty consistent about treating F/P wizard as the “odd one out”[2], as Necksawn just didn’t give them anything to work with, and this situation arguably persists into 3rd job, where they are reliant on Poison Mist[3].

What I didn’t realise, however, is that I/L wizards are not the kind of aggregate DPM powerhouses that I thought they were. On the one hand, maybe I wasn’t that far off, after all:

On the other hand, the enormous benefit that they get from lightning-weak monsters puts them at a level that I would expect them to be at a baseline (i.e. against elementally neutral monsters). The versatility obviously helps a lot, but I am not convinced that I/Ls do enough real-world aggregate DPM to justify their position in the pantheon of 2nd-job classes; it is my opinion (key word: “opinion”) that I/Ls should be more-or-less the masters of farming in just about any map that satisfies both of the following criteria:

And yet, even with just these theoretical numbers (which do, admittedly, give a disadvantage to I/L wizards, who rely significantly on being highly mobile, having a generous area-of-effect, etc.), I think it’s very reasonable to conclude that I/Ls do not live up to this “masters of farming” hype.

Also, what in the everloving fuck are brawlers smoking, and where can I get some?? Seriously, I get that brawlers are unfairly advantaged by the fact that this is theoretical DPM under assumptions that are very favourable to them, but like… Hello?? Brawlers need to chill the fuck out. And I say that as a brawler fiend who absolutely loves ’em. But we’ll get back to that later…

And finally, although I think that they fare better overall than the mages do, archers need a little love here. Particularly hunters. We expect hunters to do less theoretical DPM than crossbow(o)men; that is actually a good thing, because their multi-target attack is significantly more versatile in its usage, and it stuns. However, whereas crossbow(o)men perform pretty much exactly how I expect them to in theoretical multi-target DPM — viz. extremely well — hunters are out here literally using their single-target attack on any fewer than four targets, just to get better theoretical aggregate DPM. In my opinion, that is some horseshit. Furthermore, I think that both archer classes (and especially hunters) need just a little boost for their Double Shot. Although they should probably have somewhat worse theoretical single-target DPM than thieves, they should be in the same league as gunslingers — I think that the comparison is warranted.

Accuracy

Ah, but that’s not all. We can’t forget accuracy, can we?

What’s that? We can forget accuracy? No, no, this is vicloc — not everyone is level five gajillion and has a (+10) zhelm or whatever. We drink our Sniper Potions, and we like it.

Finally, we get to knock those warriors & brawlers down a peg! We’re gonna start simple, by just looking at unbuffed (but fully-clothed) WACC values for our models:

modelWACC
fighter86.2
page86.2
spear(wo)man86.2
hunter284.6
crossbow(o)man287.6
assassin225.0
bandit207.7
brawler127.6
gunslinger288.0

I’ve omitted the WACC values for mages because we’re assuming that the mages never use physical attacks. In fact, within this section, we’re going to forget about mages entirely, because guess what? I have no godly idea how MACC works! Hah!!

So, as you can see, warriors don’t have accuracy. They can’t actually hit… anything. Tragic. Brawlers are, naturally, the other weak one, but not nearly as weak. Because we’re so concerned about the ability of our warriors — who are apparently blind, drunk, or both — to actually hit anything with their big dumb swords, it’s worth hashing out the practical consequences.

We’ll look at the same trifecta of vicloc bosses as we did above: Jrog, Grog3, & Ergoth. We won’t consider Ergoth’s statues, because they are much lower in level & AVOID than Ergoth itself is; we also won’t consider Grog’s other bodies, because they just aren’t that annoying, and they have such poor MAXHP. We will always use an unbuffed WACC value of 86.2 — the same as all of our warrior models — regardless of level. Note that, of course, you can improve this figure by simply having higher base DEX, and/or by wearing equipment that gives more WACC/DEX/LUK. But I decided to give the warrior models fairly greedy damage equipment, plus a pretty arbitrary base DEX of 40 that I just… spitballed. Hey — better than 4 base DEX, right…?

Plot of the hit-chance for an 86.2 unbuffed-WACC warrior against Jrog with various WACC buffs

Plot of the hit-chance for an 86.2 unbuffed-WACC warrior against Grog3 with various WACC buffs

Plot of the hit-chance for an 86.2 unbuffed-WACC warrior against Ergoth with various WACC buffs

Grog3 has the highest AVOID value, so as expected, its hit-chance plot looks the most brutal. Our warriors are just going to need to wear accuracy gear for the APQ boss fight, it seems — unless they are high-level and pop a basket or something. On the other hand, if a +40 WACC buff is enough to do it for the high-level version of our warrior models, then high-level (emphasis on “high-level”) brawlers… more or less don’t have accuracy issues, considering that they always have Sniper Potions available.

Footnotes for “Damage output”

  1. [↑] See [WARNING: raw HTTP] LazyBui’s Attack Speed Reference.

  2. [↑] In my guide to vicloc, I refer to them as the “red-headed stepchild” of the mages.

  3. [↑] Even more arguably, this persists into even 4th job as well. Many MapleLegends players, in my experience, tend to treat F/P archmages as “a cheap strong ultimate that’s good against fire-weak monsters”. The “cheap” here is from the fact that you can Poison Mist train your way through almost all of 3rd job without too much effort & expenditure (other than needing a last-hitter friend to help you at lower levels).

    Unfortunately, all 4th-job mage classes get ultimates, which makes F/P archmages more difficult to pick out of the crowd — and furthermore, they lack the obvious massive utility of their bishop cousins. The saving grace is, presumably, Paralyze, which puts up very impressive (in my opinion!) theoretical single-target DPM numbers. But there is another “unfortunately…” to be had here: Paralyze is single-target only, and its reach is… not good. Especially not by 4th-job standards. Add that to the fact that poison-weak monsters are difficult to come by (and poison-resistant or poison-immune not so difficult…), and I’ve come to accept that Necksawn had no idea what they were doing when they made F/P wizards, no idea what they were doing when they made F/P mages, and no idea what they were doing when they made F/P archmages. And so it is…

Conclusions

What were we talking about, again? Something about vicloc… game balance… charts, graphs, & tables, maybe? I can’t be sure.

Oh, right. I remember now. So, what I want to say is essentially this (⚠️ WARNING: opinions!! ⚠️):


Vicloc is notionally highly balanced, for many of the same reasons outlined at the beginning of this “Vicloc endgame balance” essay — in particular, that because vicloc has so few resources/skills available, everyone can have something to bring to the table. However, as I want to conclude here, actual implementations of vicloc fail to meet this notional ideal, but nevertheless manage to reflect it in many ways. Thus, I want to say that I was wrong to tout vicloc (as it is) as “highly balanced”. But, at the same time, this failure of balance is more like the gentle warping of metal, glass, or plastic upon exposure to just a little too much heat; the overall structure is still evidently intact, but the integrity of the object may nevertheless be compromised. This is in contrast to balancing “all of GMS v62” (or something like that), where the object in question is just fundamentally different; the kind of “game balance” lens of analysis that I have attempted to apply here simply does not fit. That’s not to say that these fundamentally different games can’t also be “notionally balanced”; rather, it’s to point out that the very concept of “balanced” (or “unbalanced”) are themselves lenses that we have to come up with ourselves, and then impose onto the game (the complex part being that, of course, the game itself influences how we form the lenses…). Thus, the real message that I want to convey with this essay is threefold:


Alright, with all of that actually important junk out of the way, it’s time for more tables & charts. Woo hoo!

So, we have a lot of baggage at this point. I tried to sOmEWhAt neatly carve things up into “assets”, “survivability”, and “damage output”. However, not only is that already an absolute boatload of stuff to juggle, but we also have some real weird stuff that was too important for me to actually skip over, like avoidability, and accuracy, as well as some unsavoury assumptions that went into the DPM calculations… It’s a big ol’ mess. Can we still condense all of it into a cute chart so that we have something to look at? No. But I’m going to try anyways, and quite frankly, at this point[1], no one can stop me.

Legend:

modelparty utilitysurvivabilitymobilityfarming1-target DPM
fighter🌟🌟👎🏽💚🤷🏽
page🌟🌟👎🏽💚🤷🏽
spear(wo)man🌟🌟👎🏽💚🤷🏽
F/P wizard👎🏽💚🌟👎🏽🤷🏽
I/L wizard👎🏽💚🌟💚👎🏽
cleric🌟💚🌟🤷🏽👎🏽
hunter👎🏽👎🏽👎🏽💚🤷🏽
crossbow(o)man👎🏽👎🏽👎🏽🌟💚
assassin💚👎🏽💚👎🏽🌟
bandit💚👎🏽💚🤷🏽🌟
brawler🤷🏽💚🤷🏽🌟🌟
gunslinger👎🏽🤷🏽🌟?💚?🌟

The first important thing to note here is that this is an attempt to capture vicloc game balance as it is, not as it “should” be.

The warriors’ single-target DPM ratings attempt to take into account their accuracy issues.

Mages are given a 💚 (as opposed to a 🌟) for survivability because of how squishy they are immediately after being DP’d. The defensive advantage of clerics over other mages is too subtle to be reflected in this chart. The wizards are given a 👎🏽 for party utility because… I don’t know. It’s pretty much just Meditation. The rating for the F/P wizard’s single-target DPM takes into account the possibility of their opponent being weak to one or both of their elements, and also the possibility of actually making use of Poison Breath in some cases. The cleric gets a 🤷🏽 for farming because they are great at farming undeads, and pretty much useless at farming anything else — typically good for EXP, but bad for hunting items.

Thieves are given a 💚 for party utility due to having both Haste and Dark Sight. The brawler has Oak Barrel and Corkscrew Blow, which gets them a 🤷🏽.

The bandit has a higher rating for farming than the assassin does, as a result of their surprisingly effective strategy of “cast Haste on yourself and just fly around & one-shot anything that you happen to slam into”. The assassin is more focussed on sustained DPM than per-attack damage, and they — unlike the bandit — have to worry about claw-punching in whatever random map that they happen to be trying to farm in. This makes the bandit look strictly better than the assassin in this chart; after all, they get the same rating as the assassin on all categories except one, and in the remaining category, they are strictly better. But that’s just an artefact of how coarse-grained this chart is; neither is strictly “better” than the other. The assassin gets range, and somewhat better sustained single-target DPM in most cases.

Gunslingers get a 🤷🏽 for survivability because of their subtly strong natural MAXHP gain.

Being critical of the current balance of vicloc

So, if the chart above “is an attempt to capture vicloc game balance as it is, not as it ‘should’ be”, then what “should” it be??? Well, as explained above, I have some idea of what a more “coherent” vicloc might look like, but I’ll have to politely ask you to close your eyes[2] and just trust that my opinions aren’t rubbish.

First, we’ll take a look at the biggest problem on our hands: what is a fire/poison wizard, anyways? No, really, I’m being completely serious. I already talked about F/Ps at some length in the “Damage output” section above, where I basically came to the conclusion that F/Ps have never made sense, and that their very existence has just been Necksawn goofin’ on us the whole time. But I currently[3] feel brave enough to explore, publicly, the hypothetical possibility of turning F/P wizards into something that’s not so goofy anymore. The way I see it (at the moment), there are basically two avenues that I would seriously consider:

I think that the first option here is mostly self-explanatory, but not entirely. Basically, we would want to:

This would ideally make F/Ps — who have no multi-target attacks whatsoever — more competitive in, you know, single-target damage, whilst also allowing them to meaningfully contribute to most boss fights and hopefully also giving Poison Breath a use-case or two. And, their single-target damage would be pretty bonkers if they can find something that’s weak to fire. Plus, they get a neat trick (Slow) up their sleeve — but this time, it’s actually a neat trick. Unfortunately, I don’t know if this actually works or not. Particularly, this is predicated on kinda straightforwardly buffing Fire Arrow, which will tend to outshine anything that we do to try to fix Poison Breath — why go around poisoning each monster when you can just one-shot it with Fire Arrow? And we are not going to hash out any of the details here. For one, it’s just not the point of this essay at all; and two, I think that we’ve already done enough “hashing out” for now, anyways…

The problem with the second option above is that I have kinda already implicity ruled out invasive changes; the whole idea is that the game (vicloc) presents itself in a certain way, and the player (read: me lol) interprets the intent of the game, interprets what it means for the game to be fun to play, to be coherent, to be balanced, etc. Invasive (for some value of “invasive”) changes are thus, in a sense, self-defeating: we are invasively destroying at least some significant part of what we were trying to interpret in the first place! Thus, we can easily get ourselves into Ship of Theseus territory, and what we are virtually doing is saying (to Wizet/Nekksyn/etc.):

Hey, nice game! I like it. But I think that what you actually meant to make was this…

[destroys the original & puts something else in its place]

Oups! Looks like we threw the baby out with the bathwater

But, okay, if we’re a little more charitable, we are really just pinpointing a particularly smol problematic region (F/Ps) and doing a targeted “fix”, whilst trying to keep as much intact as possible; something more like amputation immediately followed by prosthesis. But how? Well, my current idea looks something like:

The goal is essentially simple: to turn Poison Breath from a gimmick that relies on monsters having an artificially inflated value of a particular stat (viz. MAXHP), into a unique way of dealing sustained (emphasis on “sustained” because of the focus on damage-over-time) DPM. For sustained DPM, the F/P is expected to Poison Breath, and then spam Fire Arrow for the duration of the poison effect, and then rinse & repeat, refreshing the poison effect’s duration so that they are constantly dealing both poison and fire damage to the target.

This would, hypothetically, allow F/Ps to be unique single-target attackers in boss fights:

Kinda neato…? Perhaps……? We’d expect them to get a 💚 — or maybe even a 🌟 — for sustained theoretical single-target DPM, and of course they will be extremely strong against anything that is both (1.) weak to fire and/or poison, and (2.) strong/immune to neither fire nor poison. None of their ratings in the other columns of the above chart would change. Anyways, let me know what you think. Just kidding, don’t talk to me. I have lawyers.

Anywho, the rest of the hypothetical changes to make this vicloc stew more harmonious are much more innocent; none of them are very invasive at all. So let’s just throw out the loose ends that need tying up, and go over some obvious (but certainly not the only possible) changes that might do the tying:

That’s all, folx! Just remember: do not @ me! Please!![5] Also, play vicloc!!! Pretty please!!!!

Footnotes for “Conclusions”

  1. [↑] Please help. This is a cry for help. I cannot stop writing this accursed essay. I just wanted to do a few DPM calculations to see whether or not gunslingers actually do a lot of single-target DPM…

  2. [↑] Don’t actually close your eyes — unless you’re already using a screen reader of some kind anyways, in which case, go nuts. If you’re a robot, I guess you probably don’t have eyes, so you don’t have to worry about it. Also, hi. Are you getting tired of reading this garbage yet? I would be too. Maybe you actually should close your eyes, and get some rest. All of this stuff will, for better or for worse (you choose…), still be here when you awaken.

  3. [↑] Check back later and, statistically, you will almost certainly find this to no longer be the case…

  4. [↑] The original formula for the damage per tick is:

    𝖬𝖠𝖷𝖧𝖯∕(70 − 𝗌𝗄𝗂𝗅𝗅𝖫𝗏)

    …Where “𝖬𝖠𝖷𝖧𝖯” is the MAXHP of the victim, and “𝗌𝗄𝗂𝗅𝗅𝖫𝗏” is the skill level of Poison Breath. The idea is to maybe change the magic “70” constant to something modestly smoller, like 60 maybe. Just spitballing. And also, this change is intended to be specifically targeted at Poison Breath, because it is a single-target-only attack.

  5. [↑] I repeat: I have lawyers. And they will find you. They have an excellent sense of smell.

Unicolor

I did just a little bit of Big Girl Content™ on my darksterity knight rusa, including this… interesting CBPQ with bowmasters Flurri (SecretIy) & MitoAdmita, and shadower extraordinaire Harlez (VigiI):

Flurri, MitoAdmita, Harlez, & rusa @ Core Blaze PQ, stage 1

As you already know, I love a CBPQ. The first stage is a lot of fun, and the other two stages are pretty fun too. It is a little scary, though. Death is very much on the menu when it comes to stages 1 & 3. Here we are at stage 3, the part where we actually destroy the Core Blaze (you can spot the Core Blaze by its massive purple plasma eyeball thingy…):

Flurri, MitoAdmita, Harlez, & rusa @ Core Blaze PQ, stage 3

It was a nice and clean run.

…At least, until The Incident™:

i am permayeet

So, yeah. I got permayeeted (permayote? permayoten?? permayute???[1]). Basically, there are these Maverick V (I prefer to just call them “robocop bastards”, but to each their own) guys that naturally spawn in the Core Blaze map and carry around yeet guns that “YEET” you across the map when they hit you. Now, I have Power Stance, so even if they do manage to hit me with their yeet guns, there’s only a 10% chance that I actually get yeeted. However, there’s a little more to it than that. Although Power Stance can protect me from the “YEET” insofar as it prevents me from becoming a projectile, the yeet effect also acts as a kind of temporary stun that is intended to last long enough for you to finish getting hurled across the map. I say “a kind” of stun, because it has elements of a true stun (the kind where your PC has little orange mushies encircling their head), but also lacks some of them. When stunned by a yeet gun, there is no visual indication, and no “you have been stunned” notification in the player’s chatlog. Nevertheless, it prevents the use of active skills, and temporarily disables movement (running & jumping). This means that if a yeet gun actually hits me, then there’s a 90% chance that my Power Stance succeeds, resulting in me being “yeet-stunned” — if you will — in-place, briefly unable to move or use skills. What seems to have happend — as far as I can tell — is that this occurred, but the yeet-stun hit some weird corner case when its duration elapsed (or when one of its durations elapsed; I wouldn’t be surprised if it had multiple independent ones), resulting in my game client failing to fully repeal the effects of the yeet-stun.

As a result, I could not use any active skills, including buffs, attacks, etc. I could, however, still move (run & jump), consume USE items (ACPs, HP potions, MP potions, etc.), basic-attack(!), chat (party chat, all-chat, etc.), and even chat with NPCs. I tried all of the following remedies:

I was pretty confident that this was just a random client bug, so I knew that relogging (or, at absolute worst, reclienting) would almost certainly fix it. The problem, of course, is that relogging isn’t an appealing option when you’re in the middle of a PQ or boss fight; MapleLegends has no relog re-entry mechanics for that. Of course, I submitted an @gm ticket very early on, and I figured that even if the GMs/GAs couldn’t field my ticket in time to continue CBPQing normally, I could at least stay logged in long enough for someone to come by and help debug the issue. After all, reproducibility is key to debugging, and I had reproduced the bug! Not that I could do it again, but you know, we take what we can get…

I waited ≈80 minutes or so before giving up and relogging so that I could continue playing. In the end, I think that it was about ≈14 hours, or something like that, before I got any response to the @gm ticket. The response claimed that the bug was “known” in the sense of “we’ve heard of it at least once before”, but at the time, there was no progress on fixing — nor even reproducing — it.

In other news, however, I did my first-ever successful BGA run!! Wowie!!! I was invited to such a Bodyguard A run by the same bowmasters Flurri & MitoAdmita, as well as nightlord LuckyHunch (ZeroGravity, GravityWave). Here’s Flurri, setting up the pin for this particularly slippery bastard:

Flurri starts pinning BGA

I knew that BGA was capable of kicking anyone who gets too close for like 27k damage or something ridiculous like that, so I did not try to zerk during this first body. In the end, the ranged folx were so good at pinning and staying out of melee range that I only got hit by the kick one (1) time throughout the entire BGA fight. Nevertheless, not zerking meant that I didn’t do so much damage, unfortunately — although I suppose that “not so much damage” is a lot better than “zero damage because you are dead, my good bitch”:

rusa @ BGA, @dpm with Cider & no zerk

The above @dpm test is with Cider and, of course, no zerking. Throughout all of these @dpm tests — which, I should very much note, were more trial runs than anything else, as I was not very comfortable fighting any of these things (yet…) — I also had SE, Echo, & MW20.

Here’s another BGA @dpm test just like above, but this time with an Onyx Apple instead of a Cider:

rusa @ BGA, @dpm with Onyx Apple & no zerk

Although I referred to this as a “BGA run” (which I believe to be conventional), BGA is actually just the first body. Once BGA is subdued, BGB (Bodyguard B) takes his place. Luckily for me, BGB is offensively weaker overall: it can only touch me for like ≈14.5k (≈12.3k after Achilles) tops, and does even less damage with its ranged attacks. So, although I was a little iffy on exactly how much damage I could expect to take in the worst case, I was at least able to zerk basically 100% of the time. Here’s an @dpm test with Cider:

rusa @ BGB, @dpm with Cider

…And one with an Onyx Apple:

rusa @ BGB, @dpm with Onyx Apple

If the numbers seem suspiciously low, another thing to keep in mind is the absolute WDEF these lads have on them: 3.6k & 3.1k on BGA & BGB, respectively. Whew!! There goes all of my bloody damage!!!

Ah, but that is mere child’s play. Once you subdue BGB, The Boss (TB) takes his place, and this torsoless bastard has five thousand (5 000) blasted WDEF!!!!! We ain’t even fuckin’ around with Ciders here, let’s see the Onyx Apple damage:

rusa @ TB, @dpm with Onyx Apple

As far as TB’s offenses go, it’s a little weird. Basically, it only has one attack (if you ignore its extremely powerful touch attack): 1⧸1s. Literally, this thing just spams 1⧸1s, and I do mean spams. We’re talking, like, a 1⧸1 every second. Although this is certainly annoying, it’s really not that bad if you have pet autopot — particularly, if you have an HP potion on your autoHP, and an HP–MP potion on your autoMP, which should pretty much eliminate potentially fatal autopot failures here. I didn’t realise that it literally just spams 1⧸1s (I was notified in advance, but in ambiguous terms that didn’t occlude the possibility of other attacks), so I was slightly spooked. In the end, I got the hang of it, although my autopot was not set quite right. Considering that a single touch attack one-shots me if I’m anywhere even close to zerked, the strategy seems to be an “Apples for your HP potions” kinda vibe, because assuming that you avoid touch attacks (which you really should), you can only die if you actually have exactly 1 HP when it hits you. 2 HP? Basically invincible.

Anyways, in the end, we got the filthy lucre:

TB loot!

And I didn’t even die once! Wow! A big thanks to these three for inviting me to their BGA run! ^^

Footnotes for “Unicolor”

  1. [↑] Obviously, yeet is a very recent English innovation, only entering the lexicon by 2014. So it could be considered a little bit silly to apply the logic of Germanic strong verbs to it, when the strong verbiage that English has inherited lost much — although, certainly not all — of the structure & regularity that it may have had in Proto-Germanic (contrast this with, for example, Dutch, which consistently marks the past participles of strong verbs with ⟨-en⟩). Thus, the strong verbs of English can be seen as somewhere between relics of a bygone linguistic age (viz. Proto-Germanic and then Old English (OldE)), and a set of fractured patterns of regularity (some more etymological than others…) that influences how Late Modern English (LModE) speakers treat vowels when inflecting words. Strong verbs in LModE, then, are not productive in the conventional sense; the formation of preterites and past participles in LModE nearly always uses regular (i.e. weak) dentalalveolar plosive endings, typically written as ⟨-ed⟩, ⟨-t⟩, ⟨-’d⟩, or ⟨-d⟩ (cf. Dutch ⟨-d⟩, ⟨-te⟩, ⟨-de⟩). Note that this collapses the morphological distinction between preterites and past participles, whereas many (but not all) strong verbs retain this distinction.

    Nevertheless, the shadow of the many strong verbs that LModE has maintained looms large over the language, and one or two classes of strong verbs remain nearly intact to this day! Although I claimed above that strong verb forms are no longer “productive in the conventional sense”, there are isolated cases that date from after OldE wherein English verbs have been irregularised by analogy with strong verbs. North American English (NAmE) managed to develop snuck as both the preterite and past participle of sneak; the usage of this irregularised form is now somewhat widespread, but still typically considered informal and/or an Americanism, with the regular (weak) sneaked being more formal. This form apparently developed by analogy with strikestruck, although this is unetymological, as sneak and strike have clearly different vowels. Indeed, sneak is from Proto-Germanic *snīkaną, which was a strong verb, but would probably have given rise to something more like sneak → *snake */sneɪk/ had it not been weakened (this is not a coincidence; snake “legless reptile” is also from PIE *sneg- “to crawl, creep”, just like *snīkaną). Likewise, we have the somewhat recent innovation of dove /dəʊv/ as the preterite (and the past participle, depending on whom you ask…) of dive by analogy with drivedrove (this one is mostly just NAmE and EngE; dived very much survives). Less recent, but still post-OldE strengthenings include (written in the following format: present/preterite/past participle) fling/flung/flung, ring/rung/rung, string/strung/strung, strive/strove/striven, thrive/throve/thriven, hide/hid/hidden, all of which were either originally weak in OldE, or didn’t even come from OldE at all.

    Wiktionary actually lists yote /jəʊt/ as a preterite form of yeet, but naturally also includes the weak yeeted. It only lists yeeted as the past participle, but for consistency with yote, *yoten would probably make more sense. By “consistency”, I really mean analogy with freeze/froze/frozen, which is bAsiCaLLy a class 2 (the “choose” class) strong verb. Sort of. In any case, the “““standard””” form here would indeed be permayeeted /ˈpɜ(ɹ)məˌjiːtɛd/, because this is a past participle (not a preterite).

hat

hat

✨hat✨

Between Cassiopeia & Camelopardalis

Das rite folx, it’s time for another instalment of Questing With tara™! Featuring my pugilist tarandus!! Yey!!!

I started off with some 999-kill quests down in the dungeons of Sleepywood: DANGER! ⟨3-Z. Mushroom⟩ and DANGER! ⟨2-H. Mushroom⟩. The idea here is basically to do a bunch of grinding in ATIII…:

tara @ ATIII

…And in ATIV; the former is more favourable for Zombie Mushrooms, and the latter is more favourable for Horny Mushrooms.

With those quests all wrapped up, I figured it was really time to get the final Kerning City subway JQ out of the way: the B3 JQ. The KC JQs get more difficult as you go from one to the next, in my opinion, so this one is a real doozy. However, this is not my first rodeo; I’ve completed this JQ on other characters — notably including my vicloc clericlet d33r, who has completed it multiple times just to get to the subway depot for EXP grinding purposes — so I was reasonably confident that I could do it again:

tara @ B3 ⟨Area 1⟩

tara does not like the squirty electricity.

I do not like the squirty electricity. And yes, that is precisely what it’s called: it’s electricity, and it squirts out of those thingies hanging from the ceiling. Squirty electricity. The electrical engineers can back me up on this one.

tara does not like red laser.

I also do not like red laser. Red laser bad. This part is very bad because it has red laser and squirty electricity. Not good.

It was alright in the end, though. I made it to the subway depot, where I farmed up 130 Medicines With Weird Vibes for Jane the Alchemist:

tara @ B3 ⟨Subway Depot⟩

Over in Perion, I killed a whole gaggle of Wooden Masks and Rocky Masks for Eliminate Monsters from the Site:

tara vs. Rocky Masks & Wooden Masks

Whilst I was there in the Excavation Site region, I went ahead and also did Notice from the Excavation Team, for which I killed a bunch of spoopy skeleton doods…:

tara doing Notice from the Excavation Team

…As well as some really annoying skeleton doods riding skeleton horsies:

tara vs. Commander Skeletons

With that quest and its honestly underwhelming reward out of the way, I went elsewhere in the eastern reaches of Perion to hunt monocular tree stumps for Fixing Blackbull’s House and Stump Research:

tara doing Fixing Blackbull’s House and Stump Research

Stump Research is the penultimate quest in The Old Tree questline; the ultimate quest, of course, requires slaying The Old Tree itself:

tara vs. Stumpy

I went over to Ellinia and hopped inside of a giant hollow tree to lay waste to hundreds of green fungi for DANGER! ⟨1—G. Mushroom⟩:

tara doing “DANGER! ⟨1—G. Mushroom⟩”

And, during my quest to destroy all of the green-capped mushrooms, an unexpected lightbulb appeared over my head:

Quest Arrived!

Oh, cool! I haven’t actually done any card-hunting whatsoever yet, but I guess just doing some quests was enough to propel me to a T1 ring :]

tara gets the T1 ring~!

For Jane the Alchemist, I would also need 50 Malady’s Experimental Frogs from Maladies in the northwestern region of Ellinia. Plus, I was also doing the Faust questline, so I got my Cursing Nails here, as well:

tara farming Maladies

And of course, for the Faust questline, the grand finale is punching the big bad monke itself:

tara vs. Faust

But I was still not satisfied with only having completed the Kerning City set of JQs. I needed to do the Sleepywood ones too, right? I’ve done them before, in vicloc. Surely, I can do ’em again…

tara @ The Deep Forest of Patience ⟨Step 3⟩

tara @ The Deep Forest of Patience ⟨Step 4⟩

(ow)

a pile of blue flowers

Easily done! Now, on to step 5, which inexplicably starts with a big pit of Slimes Super Slimes & Jr. Neckis Super Jr. Neckis:

tara @ The Deep Forest of Patience ⟨Step 5⟩

No lie, each one of these Super Slimes has a full 2.1G HP and 999 AVOID. Eat your heart out, Pink Bean!! However, none of them managed to hit me, thanks to my handy-dandy barrel.

Ropes & stars

The axes…

tara @ The Deep Forest of Patience ⟨Step 7⟩

Oh my fucking god, the axes……

Step 7!!!!! AAAAAAAAAAA

I was getting pretty fed up with these moon-shaped axe blades after I spent almost an hour struggling to get past this one map of the JQ. I consulted resident JQ master Slime (OmokTeacher, Thinks, Ginner), who told me “Oh, the axes stage? Hah! Good luck, nerd…”. Just kidding, he didn’t say that. But for real, if not even the master of JQs knows how axes work, then I am shit out of luck…

After even more struggling, and cursing the Necksawn employee who thought that “axes that just yeet you in, like, whatever direction” would be a fun challenge, I did eventually make it:

a pile of white flowers

Phewf.

I already had a bunch of Cursed Dolls lying around that I had farmed on d33r, so I went and turned those in for a chunk of EXP from Rowen the Fairy and the Cursed Dolls. And that was enough for level 65~!:

tara hits level 65~!

I entered the Golem’s Temple region via the Henesys Dungeon Entrance to hunt some Stone Golems for Building a New House For Blackbull and Eliminate the Stone Golems:

tara Building a New House For Blackbull and Eliminating the Stone Golems

I came back for Eliminate the Dark Stone Golems:

tara Eliminating the Dark Stone Golems

And, for Eliminate the Mixed Golems, I of course went to þͤ olde FoG:

tara Eliminating the Mixed Golems

Eliminating the Skeletons

tara Eliminating the Skeletons

Hitting level 66…!

tara hits level 66~!

Eliminating the Drakes

tara Eliminating the Drakes

Darn. I guess that’s all the eliminating for now — I’m not high enough level to start the next one yet.

So I’ll Defeat King Clang! instead!:

tara vs. King Clang

I headed into the Kerning City sewers to punch some reptiles for JM’s Request and The Alligators at the Swamp:

tara doing JM’s Request and Taking Out the Alligators

I finished The Alligators at the Swamp, but unfortunately the Dyle quest requires you to visit an NPC at a bizarrely narrow three-hour-window during which I was… not awake, so I’ll have to revisit that some other time 🙄

Instead, I headed into Deep Sleepywood to do A Spell That Seals Up a Critical Danger. I collected some Cold Steam from Cold Eyes for the first part of the questline:

tara collecting Cold Steams

And then, you know, there’s the actually difficult part: painstakingly extracting Spirit Rocks, one by one, from these bovine bastards who have the audacity to wait like a full minute before spawning another one:

tara vs. Tauros

Oh, and I hit level 67 in the process~!:

tara hits level 67~!

I spent a pretty solid chunk of time here in the sanctuary, but eventually I got there. Eighteen of each.

Oh, wait. I also need the 33 Wild Kargo’s Spirit Rocks…

Farming Wild Kargo’s Spirit Rocks

After a while of channel-surfing & grinding WKA, I finally finished the questline and got my… uhm… 30 Power Elixirs…

Anywho, I used my V.I.P. privileges to warp over to the Omega Sector and start the Zeno questline. The first order of business, naturally, is beating up the local aliens to gather up materials for a Wave Translator, and hoping that it’s not a fake one…

tara making a Wave Translator

By a stroke of luck, the very first one that I made happened to be the real one! So it was time to find & fight Zeno himself — you know, the stoicism guy paradoxes guy robot guy with huge metal hands & tiny lil feet:

tara vs. Zeno

With that questline finished, I headed to El Nath to help Scadur. Scadur is… not doing so well. His wife, Ria, was murdered by monsters that attacked the town, and after that happened, his son — Nick — went into the El Nath Mountains to try to avenge his mother. Even more unfortunately, as a result of this, Scadur is pretty sure that his son is dead as well. The only thing that he can think to salvage at this point is the special ring that Nick wore. So, I went into the Dead Mines, deep into the lava caves, to find a Piece of Statue, beneath which Nick’s ring rests:

tara finds a Piece of Statue…

It’s really a good thing that the ring happened to be in the first place that I looked… Oh, and Scadur said to hunt for one hundred Cerebes Teeth while I was at it, because that’s what Nick wanted. I can only assume that it was the Cerebes that were responsible for Ria’s death.

tara hunting for Nick’s Ring

I was really only in El Nath for that one quest, so I then hopped over to the Mu Lung Garden (MLG) region to do some of the quests there. I picked up a bunch that were asking for ETCs to be collected from around the region, so I started near Mu Lung by farming some Snake Leather for Making the Body and Physics Medicine and Making Mastery Medicine:

tara vs. sneks

I slew some Peach Monke for Protecting the Peach Farm:

tara vs. peach monke

And some Book Ghosts for Do Gong’s Teaching:

tara vs. Book Ghosts

Also for Do Gong’s Teaching, I had to hunt some King Sage Cats for their Kitty Spirits:

tara vs. King Sage Cats

For Making Mastery Medicine and Making Mind and Heart Medicine, I needed 14 Bear Feet from the cute robe-clad grizzlies. Unfortunately, they are not eager to give up their feet, so I had to defeat quite a few of them…:

tara vs. yellow-belt-clad ursines

With all of that, tara hit level 68~!:

tara hits level 68~!

I still needed Ginseng-Boiled Water and 100-Year-Old Bellflowers for Making Mastery Medicine — plus some more Herb Town ingredients for making Mr. Do’s Book on Herbal Medicine — so I headed down towards the Herb Town…:

tara vs. Bellflower Roots and Ginseng Jars

I also killed 400 Jars for Eliminating the Escaped Pot:

tara Eliminating Pots

Wait… why is the quest called “Eliminating the Escaped Pot”…? Shouldn’t it be “Jar” — or better, “Jars”? I mean, the monster is called a Jar. What even is the difference between a pot & a jar, anyways? What’s the difference between a pot, pot, a part, apart, a jar, & ajar? So many questions.

I also needed a handful of Wooden Dolls for Mr. Do’s book, so I took out some WTDs:

tara vs. Wooden Target Dummies

To do the second part of Intruder — The Herb Farm, I headed out near where PPQ[1] is to fight the Captain & Kru:

tara vs. Captains & Krus

Then, it was time for a quest that I often neglect to think of, thanks to BBB not having actual information on it, for some reason: namely, Do Gong Seeking Swallow. To gather the rest of the ETCs necessary for this one — to make the Herb Pouch for Birds — I had to gather some Acorns from the Chipmunks around Mu Lung:

tara doing Swallow’s Medicine

Ta ta for now, tara. :]

Footnotes for “Between Cassiopeia & Camelopardalis”

  1. [↑] Yes, PPQ, the rightful bearer of the appellation “HTPQ” (Herb Town Party Quest), before it was so shamefully purloined by the Cave of Life PQ (CLPQ) — sorry, I mean Horntail PQ…

VVhereſoe’er’d ye abſcōdeſt thyſelf, beaſtie?

Folx! I am not known for my emotional stability!! Thank you for your concern ❤️

(…cnvpstdf…)

cnvpstdf

Junx2 assails Zakum

pictured above: helm buyer robs us of our precious EXP