Celebrating 20 Years of Using Linux & Switching to Devuan

Bloody hell, Murdoch!” has it really been that long? Well, the date on the the purple CD below confirms it…

Testing Devuan ASCII as a replacement for Mint 17.3. With a visit from the first Linux Distro CD I ever used!

Where does the time go, eh?!

For the past few days I have been running my desktop off of one the cute little 80GB Toshiba 5400RPM laptop drives that came inside one of the Dell Inspiron 1501 laptops we bought back in 2007. It was what I had on hand in SATA format and quite surprisingly, it’s actually not that bad – Devuan 2.0 boots faster on it than Slackware 14.2 did off my older SSD. Silly Slackware lol… Anyhow, after accidentally deleting the wrong partition or drive more than a couple of times over the years, I am playing it safe with my change of distros this time. Dotting the i’s, testing the drivers, software, and so on, before diving into the format/reinstall of my Linux SSD.

Having used and liked PCLinuxOS for a year or so a few years back, I gave an XFCE spin of it a whirl and was happy to see that the AMD drivers finally worked for my GCN 1.0 / Pitcarin based R9 270. However, the garbage that is PulseAudio was still there crapping up the system, screwing up recordings using Audacity, so I decided to move onto Devuan in my 20 year anniversary “distro hopping”.

Devuan = (Debian – SystemD) * DarkPurpy Goodness

Turns out, Devuan XFCE installs PulseAudio too and indeed it had the exact same issues as PCLinuxOS (binary signal drops and noise every 0.64 seconds while recording from my TV tuner RCA inputs and other PA related crap…), so out it and it’s stupid problems went! Ah, the sweet relief of GNU/Linux un-stupefied… As with any “plain Debian” installation, many things require manual configuration as compared to Mint, but that’s fine. With Devuan I don’t mind, because I’ll only need to do it once and forget about it until security updates cease in 2023, much as I have done with Mint 17.3, whose security updates will cease early next year.

I have very much enjoyed using Mint 17.3 XFCE! In fact, were it not for the need to keep up to date with security patches, I would be content to keep using it on my desktop until the hardware plumb stops working. With GNU/Linux, this system feels like a super computer and really, for the few games I play in Windows, it’s perfectly fine. So switching from the old software packages in the Ubuntu 14 repo that I enjoy using to slightly newer versions of those software packages in Debian 9 repos, is great. “Change for the sake of change” isn’t my thing.

Stability + Simplicity + Familiarity = Efficiency = Happiness

That’s what GNU/Linux means to me.

It wasn’t always that way, especially in the years between when I discovered Linux and when I started using Libranet Linux (a Debian based distro from North Vancouver, Canada). Prior to those days, the primary function Linux (and the BSDs) served in my life was to gobble up my Interwebs, blank CD/DVDs, and “free time”, while I installed and configured like, twelve bazillion distros. I liked to use the desktop for many things over doing those same thing in Windows, but given my habit of playing Windows based games, I was often too lazy to reboot just to browse the web with Opera in Linux. I could, after all, just browse the internet using Opera for Windows. Anyway, it wasn’t until about Ubuntu 8.04 that GNU/Linux really displaced Windows as my primary operating system. By then drivers and software had finally gotten to the point where everything I wanted to do (other than play Windows based games) actually worked properly. Before then… ggrrr there always something that pissed me off when I ran Linux. Still is when I use Slackware! lol…

All picking on Slackware aside, I really do owe a hell of a lot of “good times” in my life to Patrick and the Slackware gang. Being the second distro I used after trying RedHat on that purple CD (which I bought in a real brick and mortar store back in 1998 folks!), Slackware taught me how to install, configure, and use GNU/Linux in a way that was both fun and useful. I remember using Basic Linux, a floppy disk disto based on Slackware 7, to turn my 486 Compaq LTE/25 into a cool “electric paper machine” that I used to write on. I remember loving the KDE 3.5 desktop that I used with some version of Slackware for a year or so… I loved Slackware up until I got married, had kids, and decided that I wanted to spend more time using the system rather than dicking around with the system. Hence my use of Ubuntu and later Mint, with some Debian 7 and PCLinuxOS sprinkled in there for stability and delicious flavors. Anyway, as much as I do enjoy going “full nerd” with Slackware, at this point in my life Slackware requires more effort to build than I want to put into it. C’est live, n’es pas!

Moving on… Thus far the only issues I have found using Devuan 2.0.0 ASCII are…

  • MTP from my Galaxy S8 is slow as hell and required adding Caja (the MATE file manager) to XFCE to magically kick FUSE into action (works in Thunar now too, even though it didn’t add any MTP related deps…).
  • Mozilla are still jerks. Thanks, I’d rather use Chrome + ALSA than Firefox + PulseAudio.
  • RocketTux gets some funky screen tearing in the top row of tiles, even with compositing enabled. At least it’s not all web pages – screen tearing is a HUGE part of why I won’t use the open source AMD/Ati video drivers.

That’s all I have noticed so far in my pre-switch testing. I hesitate to call this switch away from Mint 17.3 an “upgrade”, because there just isn’t anything I feel I need to “upgrade” to. As far as desktop computing goes, Mint 17.3 XFCE (and the amazing world of GNU software!!) really nailed it. Devuan 2 with XFCE simply carries on hammering it home.

So, thank you – Thank you to everyone who has and who continues to give their time, their effort, their mind, to GNU/Linux.

Daily Log-in Rewards and Other Psychological Manipulations in Modern Games

I don’t want to play Guild Wars 2 every day. I like the game, I just don’t want to play it every day. But if I don’t play it every day, I miss out of collecting a whack of useful free stuff as well as earning 2 Gold Coins for doing fairly easy stuff that I generally enjoy doing. But…

I don’t want to play the game every day!

You see, publishers and game developers know that people don’t want to play their games all the time. Similarly, they know that people would be content to never spend any money on their games too if that was possible. And it used to be that this was OK with developers and publishers, with the lot of them generally being content to make and sell games as one would make and sell any other product. But that’s just not the case anymore, as Ryan Cooper explains quite adeptly in this article from about a year ago. It’s a great article that I can’t really add much more to, so I suggest you take a moment to read it, then come back here for further context.

In short, game developers and publishers are employing trained psychologists with the express intent to create systems in their games that manipulate people into spending their time and money on their games. I think that’s a really shitty thing to do. But then, I am a reasonable person who doesn’t feel it’s appropriate to take advantage of others in general.

Anyway, as much as I like Guild Wars 2, both as a game to play and as an example of the kind of amazing games that can be created with today’s technology, there are some things about how ArenaNet conducts business that I disagree with. As such, I am going to go ahead and make a list of those things here. Am I “naming and shaming”? Yeah, yeah I am.

  1. Tax Evasion: Like so many companies, ArenaNet avoids paying state and federal taxes in the USA on their sales through their gem store by having those sales take place using a company based in Ireland. People who choose to avoid paying the taxes they’re supposed to are choosing to hurt every single person who would benefit from those tax dollars. Roads, bridges, hospitals, sewers, armies, scientific studies, disaster relief… pay your fucking fair share of taxes! Do I have proof that ArenaNet is doing this just to avoid paying taxes? No, but why else would their payments be taken by Digital River of Ireland? Same reason all those other companies are doing business there too – to avoid paying taxes…
  2. Creating false scarcity of items by not having them available for purchase at all times. Want to buy a specific cosmetic item? Well too bad, it’s not available right now – better log in every day to check for it! 😐
  3. Including an ugly version of an item with the product to encourage the purchase of a replacement. I first saw this tactic with in Everquest II with the armor one could obtain through questing after Sony Online Entertainment made EQ2 free to play. Gliders are the worst (and most woefully obvious…) instance of this behavior in Guild Wars 2.
  4. Offering progressively better rewards for logging in daily, some of which can only be reliably obtained by doing so, without providing a way to make up for days missed through alternative game play. They do this to make playing the game habitual, diminishing one’s choice to use their product or not.
  5. Allowing a small number of players to dramatically alter the prices of rare crafting components on the Trading Post, because the higher prices ultimately encourage many players to buy Gems with real money and convert the Gems to gold, as it becomes more difficult to earn the required gold through normal game play. “Tin foil hat”, you say? ArenaNet data-mines the crap out of their games; They know exactly what’s going on and they don’t stop or mitigate the toxic behaviour, because it benefits them.
  6. Purposely creating reams of useless items to encourage players to buy more bag and bank space. One can apply this sentiment (of creating an arbitrary limitation and then intentionally stressing that limitation) to various other areas of the game as well. Many “free to play” games do this, but in Guild Wars 2 it is applicable to people who have purchased the full version of the game (as well as its two expansion packs).
  7. “Loot Boxes”: Lucky number seven is ArenaNet’s long history of making desirable items available exclusively through means that are subject to random chance and that can be purchased using real money. It doesn’t matter if the player “always gets something” when what they get isn’t the thing they wanted and all they can do about it is, keep spending money until they either get what they want or they “go broke trying”. The concept is so abusive that it has become illegal in some countries, when it ‘s used in mediums frequented by children (such as online games).

OK you caught me, that first point doesn’t have anything to do with how game publishers/developers are manipulating players, but it sure pisses me off. It’s an underhanded tactic that is worth mentioning, because it undermines the “public good” by reducing the resources available to provide public services. Every year the average person pays more in taxes and gets less for it, while some (including many of the largest corporations) shirk their responsibilities, taking the benefits of taxes without paying their fair share. Fuck those people.

I don’t have a problem with in game goals or activities that reset daily, because it’s convenient to have a “ToDo” list in these games that have a large variety of game play systems to take part in. Really, much of what I do in Guild Wars 2 is complete some “dailies”, because often that’s about all the time and effort I wish to put into the game. I also don’t have a problem with companies selling customers items for use in their games. What I do have a problem with is the manipulation: I don’t like how they knowingly get under one’s skin and plant the, “you’re missing out on something if you don’t play” thoughts; I disapprove of how they rig their systems to pressure players to spend money to make their game less cumbersome/annoying/ugly; I find it distasteful that they perpetrate these misdeeds just to make more money from their players. It’s extra especially despicable when the player must purchase the game and/or pay a monthly subscription while still being subject to these manipulations.

Anyway, when I fire up BurgerTime on my Commodore 64 and play it for a bit, I know that I can just turn it off and come back to it whenever I’d like. It doesn’t demand any investment of my time or even my thoughts beyond when I choose to sit down and play it. Indeed, BurgerTime, like so many other games made in years past, was a game that was created for one simple reason: to be a fun game!

For good and for bad, many modern computer games are complex masterpieces of computer science and digital artwork that are intertwined with an unhealthy smattering of psychological manipulation and unsavoury business ethics. May I suggest that it does not need to be this way; Games can… just be games.

Disclosure: I have absolutely no affiliation with Ryan Cooper or theweek.com; His article was mentioned and linked here (without permission/discussion), because I read it and I felt it was relevant and helpful.

The D. Murphy Chronicles: Discovering the Lionguard

80 Scion 1331 AE

I encounter a spider cave after fleeing centaurs in the Heartwoods. That cave wasn’t best place to hide, but at least I inadvertently solved a spider infestation in the Township of Claypool! Lots to do in that little village. The militia stationed there requested I bring them a kask of ale from the Monks at the Krytan Freeholds. Having never been there before, I made an uneventful journey to the Freeholds by following the roads. On my way back I attempted to save time by riding cross country, but after being chased by Ettin and a very angry Treant, I’m not sure how much time I really saved. So many grumpy folks in this world! Anyway, the militia in Claypool were happy to get their ale and I earned a weeks wages for my trouble!

While resting in Claypool, I heard about a hunting lodge that had a problem with a wild bore, so I sought it out in the hope that I could hone my hunting skills. Unfortunately when I arrived I found that the job was already done by a group of adventures. I did get to help set some traps, until I crested a hill and my heart sank. Seeing the Shire of Beetletun on the far side of the valley below put a knot in the pit of my stomach… I camped out the night with some hunters in the Queen’s forest and made my way back to the Reach in the morning.

I brought Mrs. Hemmingsworth some fresh picked flowers and she traded me a hot meal for a smile and bit of raw bore meat. Later I headed into the city to see Gulvar. He wasn’t surprised to see me, but I could I tell he knew something I didn’t. He told me there was an armorsmith who could refurbish his armor, but it would take quite some time. I wasn’t sure if I could afford to get a replacement suit of armor, but I went to see the armorsmith at Gulvar’s insistence. There I made a contract to use their gear, both armor and weapons, at a discount provided that I tell folks about their shop while I am on my adventures. Not a bad deal considering they supply gear to the Black Lion Trading company too! Fixing Gulivar’s old suit will be expensive though, but I only had to pay half up front to leave it in their care.

Late that afternoon, as I sat on a side street wondering where to go from there, a dusty flyer for the carnival whisked up onto my leg. Wouldn’t you know it, the flyer indicated that Carnie Jeb and the gang were in Beetletun this week – not far away at all! After what the White Mantle did to my friend in there though… I’m honestly afraid to step foot in the village. But, I figured that if Jeb is there, then there must be money to be made and it was probably safe. I rented a room for the night in the Reach and set out for Beetletun in the early morning.

The carnival wasn’t hard to find, with its loud music and hollering drunkards. Speaking of hollering, Jeb wasn’t hard to find either – always sparing with someone! How he manages to remain both boastful and upbeat after countless defeats is anyone’s guess, but I think it makes him feel good to let average folks “beat the strong-man”. It was great to see Jeb. We tried sparring like the old days, but we kept being interrupted by a seemingly unlimited supply of adventurers! Ah well, at least Beetletun did prove to be a safe little town now. In fact, I helped solve some of its biggest problems by aiding some children with an infestation of bees and getting my hands dirty by removing some White Mantle graffiti from an elderly lady’s house. It was a good experience!

It was over ale with Jeb that I remembered the brewery monks had told me they would be in need of an escort through the swamp to make a delivery to a Lionguard outpost. Ever boisterous, Jeb pushed me out the door of the tavern and told me I had best “get to work, ya heathen!”, so off I went in the dark to the Krytan Freeholds. I arrived too late to make the escort (days apparently), but I was able to strap a keg to Misty and make a special delivery myself the next day. What a strange ride that was…

I left at the monastery near mid day, but after entering the swamp it was dark as night. I kept to the board walk and ignored the lights I saw in the mists until I heard a shrill scream. I’ve seen a lot in my time, but that sent chills through me something fierce… Still, Misty and I carried on down the boardwalk. Sharply the screams turned to moaning wails and persisted… Followed… At one point I looked to my right and saw a ghost, sad and alone not far off in the water. I had never seen a ghost before, only heard the stories of the Foefire… The ghost was weeping, the shadow of a man on his knees in the mud. Misty let out a huff as if to tell me to get off and speak with him, so I did. Listening to his tale lead me to freeing him and many other ghosts from the shadows that haunted them, using a spirituality I wasn’t aware was within until that encounter. Amazing… I fought shadows and horrors with light magic and I wasn’t afraid!

The swamp was quiet. I completed my delivery and met the nicest Lionguard captain. The Lionguard seem like a noble group of people from many races and walks of life – happy to put themselves in harms way to keep the trade routes open, safe. They seemed equally impressed by my steed, Misty, enough so that the captain asked if I could take some messages to their outposts far off in Caledon forest. I was apprehensive about leaving Queensdale for the first time, but life really was playing out for me just like Gulvar said it might: There I was out in the world meeting people and opportunity at every turn. So, I took the job! After supper I am heading off to visit all the Black Lion forts in the Caledon forest, delivering private mail and picking up any to bring back to Queensdale. What an adventure this will be!

– Dwayne Murphy

Levels 10 – 15

I think of the problems that I have noticed while levelling thus far, the only one of any importance really is that is hard to create your own narrative in the game. There are many interesting characters to meet throughout the game and you’re free to imagine anything you’d like about most of them, because there story isn’t told beyond that moment in which they are locked in time on the map where you can interact with them. However, they can’t join you on adventures, so you’re basically left playing the game with “imaginary friends”, making up an imaginary story along the way if you happen to wish to include any of these characters in your journey through the levels. Short of making a handful of roleplaying friends who you can call upon to play roles for you, it’s just you travelling the world all alone. And I am finding it difficult to both play the game and make a story told in first person journal entries that is more than simply a synopsis of the quests and events I encountered.

Maybe that is a good thing, telling the story that is actually in the game, because then other people would know that they too could have a similar experience as my own. I don’t know…

Anyway, game play wise it is obvious that the system which scales down the character isn’t perfect. Even in white gear with basic vitality/toughness runes, I was essentially invincible to non-critical direct damage from one or two NPCs. Of course that wasn’t true for condition damage, but it did mean that most of the content was no longer challenging. Apart from that, it really is funny how much of a focus there is on killing other sentient beings in the game. Like seriously, there is so much you can’t do if you choose not to kill sentient beings!

“Joining the Lionguard” as a role-play (which you will read more about later) was actually really cool, but it was difficult to translate my imagination into the practical playing of the game. However, I think if a person really took the time to research all of the content in the game related to the Lionguard, it would be possible to level throughout the game world as a Lionguard by “taking new assignments” at progressively higher level outposts. And then once you’ve reached level 80, you could decide where you’d like the character to be stationed out of all of the available locations. Some would say that is a waste of a character, but I think it would actually be a way to add more “character” to one’s character! It’s really too bad that there isn’t even a simple system to facilitate this sort affiliation, beyond our limited choices in the linear “personal story” that was included with the game. That’s not to say that I don’t like the personal story, it’s that once you’ve done it on a character, it will be pretty well the same story on all the rest of your characters too. It would have been nice if they had a system that was modular, where maybe you have UI that allows you to drag and drop events and associations that your character will encounter as they move through their story. They could have standard and random layouts, as well as layouts created manually by the player. Perhaps they could even have events, characters, companions, and faction associations that could be unlocked for use on new characters. I dunno, I think that would have a lot more replay value than what is in the game now and it would have allowed people like me to make characters like Dwayne be a real part of the Lionguard in the game itself, rather than just in my imagination.

Beast Master Continues to be Too Much of a Good Thing in Star Wars Galaxies

Back on the Intrepid server in Star Wars Galaxies, before we moved to Starsider, I got into the Beast Master crafting and pet-wrangling system full force. Even for a person who had stock piles of resources dating back to the summer of 2003, this was a daunting task that ultimately required me to use 3 game accounts simultaneously for a month. Beast Master crafting is truly the most impressive, over the top, “We’re sorry for screwing up the game with the NGE, here have this amazing system as an apology” game play system that I have ever experienced in an MMO. You can read about the whole (extremely involved) process on SWGPets.com.

I did ask the few remaining crafters I knew for help back then, but bless their hearts, they didn’t really understand the system and what I needed them to craft for me. See, in order to create a good pet, one needed to refine a bunch of basic ingredients using various tools and consumable chemicals. Making those tools and chemicals required sub-components that were crafted by all of the four crafting professions. This meant that I had to either spend the in game credits to change my crafting profession any time I needed to make a component or I had to have to one character for each crafting profession. We were limited to 2 characters per server back then and I wanted to keep one of mine as a combat character (though I did use him as a crafter as well), so to me it made more sense to fire up 2 additional accounts and level 3 more crafters. I certainly had enough resources to do this and it was “only” $30 for the convenience.

“If you want it done right, do it you’re self”, they say!

Anyway, on top of requiring every crafting profession, the consumables used in the pet making process required huge amount of resources. And not just any resources, but high quality ones at that! Every time you killed and animal and stuck it with a Hydrolase Enzyme Extractor, you were spending around 10,000 credits. 10k for the chance to get something useful – something that you will then need to spend literal hours and even more resources refining. All this, plus the whole needing to forage and to kill stuff for other important components, meant that the Beast Master crafting system was really too much for one person to do in any great quantity on their own.

I was able to make myself a life time supply of modest quality BM consumable items for collecting and refining enzymes, but these items weren’t amazing and they weren’t really any good for trying to get stat enhancing mutations, let alone the super rare creature mutations. I would have needed two enormous supplies of a wide variety of top-quality resources to make both sets of consumables and that was completely beyond my means, even back when I associated with a couple hundred people in the game.

Beast Master crafting was clearly designed as a community project, something that people were intended to work in groups to achieve.

Fast forward to today, where one can play the 2011 version of Star Wars Galaxies on the Legends server (a server created using source code that was stolen from SOE when Sony was hacked – something I absolutely do not condone!), and the players are left with an untenable situation: They have an awesome game play system, but there aren’t really enough players to spread the load enough to bring the cost down to the point where the average player can make use of it. As such, from what I saw using the vendor search feature, there are only a handful of people on the Legends server who are making pets. And given what I know about the system, I was not not surprised to discover this.

  • Setting up the tools required to process enzymes or even incubate a pet is expensive.
  • Buying or crafting enzyme extractors is expensive.
  • Buying or crafting refinement consumables is expensive (and daunting!).
  • Suiting up a character who can kill the high level creatures required to get good enzyme samples is expensive.
  • Gathering the right Lyase and Isomerase enzymes is either tedious or expensive (because it’s tedious).

The whole process is so involved and so expensive that the few people who are going through the process of creating and selling pets are basically selling them for cost at 1 to 60 million credits each. Even the crappiest pet that really would not be sufficient for fighting other cirtters of its own level, goes for 1 million credits. And of course they do, because they’re super expensive to make!

Back on Starsider, I was selling low-end pets with modest stats for around 50,000 credits. On the whole, this cost me money, but it was money I had already spent building up my ability to craft an almost endless supply of such pets, so it didn’t matter. I was doing it essentially as a community service, so that people who couldn’t or didn’t want to grind millions of credits could actually play with a pet. A 30 to 40 point pet (out of 60 points max) with a healthy amount of secondary stats and abilities was sufficient for all but the highest end content in the game. So that’s what I made quite a few of, with the occasional 60 point pet that I could sell for several million credits to top up the bank.

My 0 Point pet! Made on Starsider with some resources I brought with me from Intrepid. It did pretty well in combat considering it had only the bare minimum of stats.

Some folks back in the day were super hardcore into chasing mutations and making the most rare and powerful pets, but me, I was just happy to be able to play with the system. I enjoyed all the aspects of Beast Master, from setting up my character to automatically follow its droid and forage while I was at work, to taking my pet out and soloing some nearly top-end krayt dragons, I had a lot of good o’l fun with the system. But, I was lucky back then – by the time I started making all this stuff in 2008-2009, I had already been playing the game on an off for 5 years and as a crafter, I already had most of what I needed. I’m sure this was true for many, if not all, of the other pet crafters in the NGE as well.

Unfortunately, everyone had to start all over again on the Legends server. Yes, there are some excellent bonuses given out that somewhat make up for having to start over from scratch, but it still doesn’t really fix the main problem with the Beast Master crafting system:

There aren’t enough people playing the game.

If you want a decent pet on the Legends server, you’re going to have to grind a few million credits to buy one. And that’s just to see if you actually like using the system, because there is no alternative. You might get lucky and meet someone who will give you a pet for free or for a lower price, but with a population so small as to only max out at less than 1,600 concurrent players, the picking is slim for community interaction in general.

I actually complained about this issue on the original forums back when the game was live, because it’s a two fold problem that unnecessarily prevented people from discovering game play that they might enjoy.

1. There isn’t even a free crappy pet for a person to try the Beast Master system with.

2. Crafting even the simplest, non-refined pet, requires more tools and resources than what most people can afford.

Back then I suggested… you know what, I can’t remember exactly what I suggested like eight years ago, but it was essentially that they should make second set of consumables that only used a handful of any quality resources, with the downside being that the pets created with them would top out at 20 or so points. See, that’s plenty of points to make a pet that is capable of not being obliterated in level 90 combat, but it’s certainly not enough to be powerful in high-end combat. Still, it would have been enough for both pet users and pet crafters to enjoy all the wonderful Beast Master game play systems (without having to grind and save credits for months).

I’m not sure how the Legends server is operated or what their plans are for it, but if they’re into making “quality of life” improvements to the game, this is one area where I think it would be worth their time. Most of the people I knew in SWG played it because they enjoyed the crafting game and virtually everyone I have met in online games likes pets, so… it would probably be nice to, at the very least, give away a 10 point pet to everyone. That’s my two cents on the matter. 🙂

Here are some screenshots I took over the years of playing with the BM system. Sadly, I accidentally deleted my screenshots from 2008-2010 when I did a format/reinstall of Windows one day… Even those who know better… don’t know better! 🙂

The D. Murphy Chronicles: The Dawn of a New Dwayne

63 Scion 1331 AE

Out of the pan, into the fire, they say. It wasn’t but a moment after I stepped through the gates of Divinity’s Reach when I heard the screams of villagers down the hill. My eyes hadn’t even fully adjusted to the blaring sun beyond the city walls… “Well, no time like the present to put Gulivar’s gear to the test!”, I thought to myself before charging headlong down the hill to investigate the commotion. Along the way I had a chuckle, remembering the silly old man’s stories and his insistence that he owes his life to my act of kindness. The truth is… he saved me and I can’t help but feel that now it’s time for me to live up to my own potential. In a way, to carry on Gulivar’s story by living the life he passed on to me…

It was about that moment when my train of thought was derailed by the thunder of hooves to my left. I turned, expecting to see the Seraph charging on horseback, but instead I was abruptly tackled to the ground by Mrs. Hemmingsworth, the Baker’s wife. Lovely lady, built like a four ox cart , with a demeanor as sweet as pie, unless she’s crossed. Turns out a band of Centaur had decided to raid the village and she wasn’t going to have any of that nonesense. Bravely and without a second thought, she had taken to the street with her trusty cast iron frying pan, wearing a look so stern as to cower even the most brash of adventurers. After rescuing my fool self from what most surely would have been a life threatening trampling, she dusted her self off, smiled, and charged on around the corner with a guttural roar. What an inspiration!

Now I have no misgivings with the Centaur, or any other free peoples, but I definitely don’t take kindly to violence. “Surely a peaceful arrangement could be made?”, I thought as I adjusted my ill-fitting armor and made my way further into the fray. I’m no pacifistic, but… but after taking Jordan’s life to save Gulivar from the evil that overcome my old friend, I… I can’t! Every life is a gift, a gift that is not mine to revoke, and by Dwayna’s light, I will fight to bring peace without becoming the very evil I wish was not part of this beautiful world. So when I reached the inn and spoke with Sergeant Walters, I offered to help defend the garrison in the hopes that I could help administrate a diplomatic solution to the crisis. I did have pretty good luck handling disputes between the other waifs in The Reach.

Long story short? I should have brought Mrs. Hemmingsworth with me, for either her hefty shoulder or her terror inducing display of frying pan swashbucklery. That Centaur Captain didn’t so much as flinch as he trampled over me when I attempted to parlay with him on the bridge to the keep. Shortly after I came to, I decided it would be a good time to put on the wacky helmet that Gulivar so kindly gave me. Unfortunately, the dutiful Seraph who revived me pointed down into muck below the bridge and smiled, eyebrows raised. No helmet it was! Throwing caution to the wind, and boy was it windy, I rushed toward a conjured monstrosity which looked like it was making to hurl a farm’s worth of machinery at the keep. Yup, two giant magical hands had sprung from the earth in the time I laid face down on the bridge. Finally, something I could smack with my new (old… very, very old…) mace!

“Something… something.. explode!”, and a bright flash of light is all I remember after that. Waking up in respite a few days later was a humbling experience to say the least, but I learned some valuable lessons. Firstly, helmets are good – wear the helmet! Secondly, there’s a world of opportunity beyond the walls of the great city – I should have left years ago! Why did I spend my youth and indeed, much of my early life, unaware that there was more than living day to day off scraps? People need help, they want help, and not only are they willing to pay for my hard work, they’ll thank me for my time! When Gulivar told me of his adventures that brought him from Elona to my dusty alley, I really didn’t believe him, because it all seemed so detached from my own experiences. But, now I see that all I needed was an opportunity and just a few resources to find a direction, a start…

– Dwayne Murphy

About Levels 1 – 10

Wow, is the “murder hobo” thing ever true about MMOs! When you’re actively trying not to damage, let alone kill, humaniod NPCs it’s a little shocking to watch other players bounce around gleefully murdering everyone in sight. What else becomes quickly obvious is that games such as Guild Wars 2, are designed with indiscriminate killing in mind. And I guess that’s fine, disturbing as it may be as a general concept, because they are games after all. In any case, by the time I reached level 9 I realized that no amount of stealthy or smart play will allow me to achieve “map completion” without having to murder a few dozen people along the way. Given that goes against spirit of the challenge (and Dwayne’s morals), I modified some of the post-level-80 goals so that I can reach them without having to make any exceptions.

Mr. Murphy is all setup with some extra bags I had kicking around and access to the following list of items that were “given to him by his old-man friend” Gulivar: A magic carpet, a suit of old armor, a worn out mace, a spectral glider, and a magical token which summons a freakin’ mystical jackal that is trained to be a mount! And if that wasn’t enough, Gulivar even gave him 20 gold worth of coins, along with a mandate to go out and live a life that would rival his own astounding story. For me, the player, that essentially means wandering the world trying explore as much as possible without getting into too much trouble along the way.

So far it has been pretty easy to complete hearts (quests) in Queensdale, though I did have the be sneaky when destroying Centuar supplies, because the Centaurs seemed to very much insist upon standing within the swing of my weapon. I’m pretty sure that is going to be the biggest difficulty with this challenge, because, as I said, the game seems to be designed with the assumption that folks will just kill anything that moves. Indeed, there are account wide achievements for doing that very thing!

And that brings me to my other important observation: One of the most awesome aspects of GW2, how so many things are conveniently account bound rather than character bound, also makes it difficult to track the achievements of a single character. It’s even difficult to set boundaries or limitations for particular characters, such as “only has X gold” or “can do X after completing Y achievement”. I could still set those types of limitations and track them externally from the game (in a book or a text file), but really that’s more work than I want to put into it. I mean, it’s a challenge I’m doing for my own entertainment, so… I think it’s OK for it to be a little lazy.

As of now, I am not sure where Dwayne will lead me. Maybe he’ll make his way to Hoelbrak to see if he can find out what happened to that nice Norn girl he met at a fair when he as a boy. What was her name again? Leona? I guess we’ll find out, won’t we!

The D. Murphy Chronicles (TDMC) is a fan fiction series based upon my adventures in Guild Wars 2, an online role-playing computer game.
Copyright © Semi-Nerdly 2018

The D. Murphy Chronicles: My Guild Wars 2 Challenge

Many years ago now I participated in the Ironman Challenge while playing World of Warcraft, an ongoing player driven event that aims to give the player a new way to experience the game. The idea is to level a character all the way to max level without dying, using only the worst possible (level appropriate) gear. There are some other rules as well, but that’s the jist of it. Personally, I was never able to get a character to level 80 without dying. I was doing really well on a Paladin until our internet cut out and he was killed by the tiger I was fighting at the time.

That was my fouth or fifth attempt and right about the time I decided the perma-death aspect of the challenge probably wasn’t going to work for me. However, I did enjoy the concept of leveling through exploring the dangers of the world (of Warcraft! lol…) thoughtfully and carefully and that’s what brings me to where I am now: challenging myself to not only level a character by sticking to some strict rules to make the process more difficult, but to have those rules be an integral part the character’s personal story. Only, I play Guild Wars 2 now, which is an entirely different game than WoW in many respects, so I had to think hard about how to make an interesting challenge.

Enter Dwayne Murphy, Human Guardian

My main character, a female Sylvari who I created in early 2015 when I decided I needed to give Guild Wars 2 a fair shake after having not played much at all in the 3 years I had owned the game, is a Guardian. I set her up for maximum burning damage, using sword and torch (with a back up septer and shield), and she completely out classes all my other characters in her ability to allow me to faceroll the open world content. I love this character; There is nothing about her that I want to change and I suppose that’s OK, because the game doesn’t make it easy to switch between gear/stat/skill combinations anyway. You’re best bet is to make a new character if you really want to play around with different builds for the classes you already play, so that’s what I did.

I made Dwayne a Human, because I wanted a character that would look good in a suit of heavy armor, but I loathed the voice acting on my original male Sylvari Guardian so much that I deleted him and rolled a female Sylvari instead. Sadly, the male Norm voice acting also bugged me to the point where I used a kit to change my ranger into a female too. Such is the problem with voice acting – when the acting doesn’t jibe with your feeling toward your character (or it just plain annoys you), well you’re shit out of luck, because that’s their voice. Anyway, I didn’t want another female Sylvari or Norn and I can live with the male human voice, despite the super cringy way he frequently yells, “STRAAWWHNNNG!”, so a human male I created! While in the proces of playing with the character creator I stumbled on a look that reminded me of a cross between The Rock (Dwayne Johnson) and Eddie Murphy which made me smile and with that, Dwayne Murphy was born!

But What About Those Chronicles?

When I was coming up with the rules I’ll need to adhere to, my ever curious brain insisted on knowing Dwayne’s back story and his motivations so of course I endulged in some late musings on the subject! After expanding upon the general principles offered in the game’s personal story background choices, I thought to myself, “hey… I should totally make a journal of my experiences playing this character, both from my perspective as the player and his perspective as a person in the world of Tyria!”. And so The Chronicles of D. Murphy began!

As I play through the game, on no set schedule, I will create posts here that are broken down into two parts, a story section written in the form of a personal journal entry by Dwayne, followed by some commentary about my own experiences playing the character to that point.

My Rules

Guild Wars 2 is an easy game. It’s full awesome game play systems that truly respect the player’s time, while also going out of its way to ensure that players in the open world benefit rather than hinder each other. Almost every activity grants XP, from picking flowers to completing jumping puzzles, the game throws XP at the player like so much rain. Not only that, but once you’ve played a while on max level characters, you’ll end up with a pile of Tomes of Knowledge that can be used to grant free levels to your characters. And the XP buffs and the exotic gear and the food buffs and… yup, the real challenge here is finding a way to actually challenge one’s self while leveling!

Here is what I came up with…

  • Dwayne’s morality prevents him from killing sentient, living humaniods (excluding undead, risen, and ghosts). This is defined as: Asura, Char, Dwarf, Ettin, Exaulted, Forgotten, Giant, Grawl, Harpy, Hylek, Jotun, Kodan, Krait, Largos, Mursaat, Ogre, Quaggan, Skritt, Tengu Troll, and Treant.
  • Must level to 80 by exploring Core Tyria.
  • No Tomes of Knowledge or Scrolls of Experience.
  • No XP or combat related buffs/food/boosters (gathering/currency related ones are ok).
  • No leveling through crafting, but harvesting is OK.
  • Must use white armor and weapons purchased from Armor and Weaponsmith NPCs every 10 levels. For story purposes (and to actually USE it for something!) I started him in my set of Primal armor, which has level 8ish stats.
  • Trinkets must be blue quality and purchased only from Karma vendors.
  • May only use green Runes and Sigils.
  • May only use blue quality upgrades (jewels, runes, marks, and talisman).
  • Dwayne is afraid of portals and will not use waypoints (with the exception of maps that can’t otherwise be accessed). This includes travelling though The Mists.
  • When defeated, must respawn at the closest village (as though he was brought there to recover by good Samaritans).
  • Outside of the Crystal Desert zones, may only use the jackal mount, spectral glider, and magic carpet.

After reaching level 80, the following must be unlocked in order:

  1. May use all blue (fine) gear and any buffs/food/boosters.
  2. May use all green (master-work) gear and upgrades after discovering all the waypoints and vistas in Central Tyria.
  3. Mmay use all yellow (rare) gear and upgrades after discovering all the points of interest in Central Tyria and becoming a Master Jeweler and a Master Chef.
  4. May wear orange (exotic) gear and upgrades after discovering all the waypoints in the Heart of Thorns and Path of Fire maps.
  5. May where pink (ascended) gear after discovering all the waypoints, vistas, and points of interest in the Living World Season 3 maps.

I think that is a pretty decent set of parameters, given the very open, easy nature of the game and how I normally only participate in the open world content anyway (occasionally I will mash buttons in sPvP for the daily or other rewards). It’s definitely not as challenging as the Ironman Challenge from WoW, but it’s enough to create a game play experience that is unique to this character. I found it difficult to create sensible deterrents/punishments for things like being defeated or accidentally killing a sentient being, because ultimately it either hurts my whole account (by making me poorer if “x event costs x gold”, etc) or it needlessly wastes my time (repent for your sins by doing x activity), so I ended up not making any beyond having to re-spawn at a town. Ultimately, this challenge is something I’m doing for fun and I think what I have put together meets that criteria. Also, after playing up to level 9 I realized that world completion will not be possible for this character, as so much of the game is designed around killing sentient beings! Ah well, I there are other goals I can set.

In the next post I will provide Dwayne’s back story and some notes about setting up the character and playing through the first 10 levels or so. You’ll find them on my Guild Wars 2 page or sorted in the Guild Wars 2 category of the Post Archive page.

JavaScript: Flipping 9 Pages of 25 Icons in Groups of 5

I tried to make the title relevant to the general JavaScript programmer, but this is something that I recently had to do for RocketTux, so that will be the context of the post. But, what the heck does that title even mean? Well, have a look at this picture…

As you can see, I have highlighted 5 rows of 5 icons. Those are the 25 icons I needed to manage, conveniently stored in a PhaserJS sprite group so I can easily show/hide them with a single groupName.visible = true/false; and so on. Putting the icons into a single group is WAY easier to manage than declaring each icon as its own sprite, provided one can wrangle the logic involved. Let me tell ya, in this case, wranglin’ these bits was like wrestlin’ an angry bull in a well greased pan! In fact, I found it immensely helpful to break out the o’l pencil and lined paper to sort it all out!

The window is always on the screen, just hidden until the user clicks the button to “open” the window. This allows the initial sprites to be reused by positioning them one time and later simply flipping the “tile” they point to on the sprite sheet. So, when the user clicks the Next or Back buttons, the logic only needs to pull data from tables (arrays) and update some variables. In this case, here is the table of data for what icons are used per group of five icons,

You may notice that there are 45 groups of 4 numbers. That’s because the cost for these 45 different “Cubimals” always involves a certain amount of coins and then various values of 4 other items. That being the case, I don’t need to worry about changing the first icon in each row, so why bother wasting data by having an entry for it in the icon table.

Finally, to fit all 45 of the Cubimals on the screen, I needed to divide them into 9 “pages” that the user can flip through. What the user sees as “pages” are in reality a bunch of mental gymnastics that happen in the background, as you can see in the function below that fills in the data when the window is opened and the back/next buttons are pressed.

By a country mile, the hardest part of writing this function was the management of the //Cost Icons, which are the subject of this blog post. Having a look at how this part of the function works, it basically goes through each of the 25 icons and updates them, with the exception of the ones for the coins in positions 0, 5, 10, 15, and 20. It pulls the correct group icons per Cubimal based on the cubPos in RocketTux.cubCostIcons[cubPos][mod – 1] and individual icons based on mod – 1.

That’s all fine and dandy, but there are some “gotcha ya!”s in there, such as dealing with the fact that we need the 0 position in the RocketTux.cubCostIcons table as well as the rest of the positions. This meant that I couldn’t just do currentPage * cubPos, because the currentPage also starts at 0 – doing this would fill every Cubimal’s item icons on the first page with the ones from the first entry in the RocketTux.cubCostIcons table. That’s no good! Starting currentPage at 1 would complicate the matter of pulling data from the description and quantity tables, while also overshooting the RocketTux.cubCostIcons table length by 1, so I had to work with it as starting from 0.

To fix that problem, outside of the loop I had to put a condition “if the current page is 0, then cubPos should also be 0, otherwise cubPos should be currentPage * 5”, as you can see in the highlighted area below,

With that wrinkle ironed out, the for loop will pull and place the data correctly!

This is the kind of thing that probably seems very simple many programmers, but can trip up we hobbyists. It’s also the type of problem that is hard to find examples for, because it’s woefully difficult to describe and thus equally difficult to search for on the web. Hopefully this post will serve as at least one way a person can do this kind of thing!

Importantly, when you look at the code you can see that the functionality to which I am referring is written in plain JavaScript (as apposed to PhaserJS or another API/Framework), as it’s really just a matter of manipulating tabular data. This means the concepts are applicable to a general audience, which is nice.

Anyway, hope this was helpful!

Ps. Cubimals were part of a game called Glitch, created by Tiny Speck. When they shut down the game, Tiny Speck was kind enough to release all the artwork for the game into the public domain!