The inevitable occurs in a game of rugby league and I come to the pointy end of a year’s long drifting away from the game.

I made a tweet about a game idea. I followed up with a Facebook post with some more words, since it can have more words. To wit 1

Game idea: Adventure Capital. You’re a nobleman in Greyhawk who invests in parties who go dungeon bashing. Mold your party, earn GP %s. I tried to make it more like VC funding, but it turns out I’d rather gouge out my brain that play that. Maybe more like the Football Manager type games, and maybe that seems more obvious if it were to be multiplayer.

The seed of that idea has several roots. The first is a little mobile phone game called Game Dev Story, a management simulation game themed as a video game development company. I played it for a bit after a friend recommended it. It was fun, I obsessed for a few weeks (as I am sure he knew I would and likely that was part of the reason he told me about it because he thought that would be funny), and I doubt I’ve played it since 2011. At the same time, I was noticing the Grognard movement in D&D and tangentially the proliferation of micro rule sets based on OD&D. I started thinking about what kind of rule set I would create, started creating a rule set, and finally started coding it as an engine because that would be the only way I could play test mechanics. At some stage the concepts cross pollinated. Possibly with a healthy mix of memories of the football manager games I recall seeing magazine ads for in the mid to late 1980s.

The idea has been in the back of my head for a few years now, and every now and then I’ll drag it out and dust it off and have a think about what it might look like. There would be Adventurers, obviously, and then a few bags to put them in: free agents, adventurers employed by the player, and not employed by the player. Sufficiently advanced game play would mean the player has hired more adventurers than can be placed in a single party, so a player could have many simultaneous parties with adventurers, in divisions like a sports manager game. The adventurers not hired by the player would be variously hanging around the proverbial tavern and also in rival adveturing parties competing for the same loot. Perhaps that would entail that there are rival capitalists that may be interacted with by the player.

There would be dungeons into which the adventurers to be sent to pillage, since the conceit of the game is that the player is investing in adventurers to reap a profit. There would be no direct control of what they do in the dungeon. The player shouldn’t even get updates on progress, they either come back with a full report on what happened, or just don’t come back at all. Perhaps rumours if the expedition takes long enough, of death or hints of activity. There should be a sense of the tyranny of distance. When the party does come back, they come laden with loot but also reports that provide flavour to how the party performed.

Obviously the adventurers should have statistics have some variety. Not D&D stats. I already think there are too many stats in D&D just looking at the Big Six2 and then you have HPs and AC and oh my god! Reduce it to maybe Tanking, Protection, Exploration, and Leadership. There should be something to represent magic use as well. Possibly stealth as well, although that could arguably be lumped in with Exploration. I think there should be more things to rate then character slots in a party, and four feels like the right number for that. Six stats? Seven? Eight feels too many. Game Dev Story had four roles and four stats, but to mix it up and encourage multi-skilled employees it has a Fatigue mechanic, so you can’t just use the same employee over and over to defeat challenges they have been supercharged for. This game would have health and after expeditions to dungeons perhaps some adventurers will need to rest up and heal. Particularly if they have been killed and brought back to life, which is defintely a mechanic which must exist. Football management games would have the player roster turning over due to some players being sacked and some players being poached by rival teams. A dungeon bash management sim should have the adventurer roster turn over due to some players being gnawed by a illithid.

Dungeons should then be a series of challenges that are defeated by the ratings the party brings with it and are rewarded with gold and enchanted items. The usual loot. And some sort of experience point system allowing the characters to be improved. Maybe you just abstract that out as spending the gold you earn from the party. Going back to Game Dev Story as an example, Research is earned during the game dev phase that can later be spent on training and leveling up your employees. The money earned from game sales are used to finance the next game, and unlocking new game dev options. I do think the gold earned from dungeons should be used to finance something unrelated to the adventurer-party-expedition mechanic. I’m just unsure what that would be.

Most importantly, there has to be an end game. I have an aversion to games that do not have a goal to reach. Traditionally those goals were finishing all the levels, or winning the race, defeating your opponent, or getting to Alpha Centauri. I never did complete Game Dev Story, but with the sports manager games there is at minimum the sense of constant renewal of the game through the turning of the seasons. You may have won the FA Cup in one season, but next season you have to start again, and probably not with the same roster of players as some leave for other teams. What I am looking for though is a victory condition, even if only have vague ideas of exactly what that might look like. A Big Bad that your party ultimately discovers as the guiding force behind all the dungeons they have cleared out, the capitalist behind it all in negative to the player?

I think it would be a fun game to play once or twice, if it could be executed well. I don’t make the mistake of believing I could create this myself. Not from a software development perspective, but in terms of game design. Game design is a skill just like any other kind of design and not one I have had any occasion to acquire. So even as I have written this, I know it will never leave the confines of my own system even were it ever actually created. But there you are, an idea for a game I have had bouncing around my skull for a few years.

  1. I gave up on trying to embed a Facebook post. Facebook claims it can be done, but it seems to be another stop on Facebooks long running streak in badly executing poorly designed ideas.

  2. WIS should be dropped, and Clerics should use CHA as their Prim Requisite. Although, the prime requisite rule should also be dropped.

Books

What a failure 2013 was in imagination and groundedness. After a final six weeks of 2012 rushing to read enough books to reach the level I set for my Goodreads challenge, as I mentioned this time last year. I even cheated, really, in reading Matchless because it was short and would get my numbers up. Instead I resolved to set the challenge number much lower and to read “challenging” books, without ever really defining what that would mean, other than that Godel Escher Bach would be one.

It’s important to set goals. If you are going to set them, though, you also need to create a routine. I read a few books right at the beginning of January, A Memory of Light being one, but for the most part I didn’t really put much thought into what these “challenging books” were that I would read. When I did finally pick one up, it was immediately before D and I went to NZ for a week and a half, and I certainly didn’t do any reading while we were touring. In the end, I didn’t read a single book I would have included in the “challenging” books list, and felt guilty for it. Enough so that I read barely any books at all in 2013. Six, according to Goodreads, plus the first three Laundry Files books which I don’t seem to have added.

I haven’t set a reading goal at all this year. Whatever I read this year is what I read. I would like to read House of Leaves, the book I picked up in February 2013, and the some non-fiction. But to do so, I need to re-establish my reading routine, which I had been eroding steadily for the last three years with…

Television

2013 was the year I finally strated cutting loose shows that had outlived their verve. True Blood and Sons of Anarchy should have been dismissed two seasons ago. Arguably True Blood should have had one season and been done with it, and Sons of Anarchy had an excellant second season, but everything afterwards has felt gratuitous tits and violence. The arcs for the characters were distorted for the sake of avoiding cast changes, and the story suffered. I understand Tara was killed in the last episode of the season just ended. She should have left at the end of season 3.

I should have dumped Californication as well, again arguably after the first season. The first season was a fun anti-redemption story. Every other season was just a pripatic tit-fest that I kept watching because Hank Moody seems so cool. It’s the last season in 2014 but I see no reason to watch it.

On the other hand, I picked up some new shows, most of which will probably pick up again in 2014. Orphan Black and Vikings earlier in the year, and then House of Cards and Orange is the New Black in the later half. Vikings is the only one I’m not sure about. It was fun - the mass battle scenes particularly the shield wall on the beach are fantastic - and Travis Fimmel was a manic charisma. If they can maintain the alien feel of the Viking culture without slipping too far into soap opera, it’ll be ok. Orphan Black is a no-brainer for a second season, it was easily the best new show of 2013 and Tatiana Maslaney should be showered in awards if there is any justice.

2013 continued my streak of not being able to bring myself to watch Game of Thrones. It started right after I read the whole extant series as the most recent book was released. I was exhausted at the time and I remain unable to commit to binge the three seasons to date. I did binge Breaking Bad in 2013 and I’m glad I did because Ozymandias was the highlight of the year.

Games

A long time friend from high school suggested I start playing a multiplayer game he was involved in, a game called Arcane Empires. I remain friends with him, despite this game being some really evil shit. It’s one of those games that exists to have players become impatient and spend real world cash for in game currency to improve their position. There’s something horrible about these games. They’re barely even games, really. It’s the grinding experience from World of Warcraft with no other mechanic to redeem it. Repetition of the same actions day in and day out. I eventually quit the game at the same time as my friend. I’ve since noticed he went on to play Clash of Clans, which I grant is at least not so egregiously monotonous.

I instead went back to Civilisation 5 and Minecraft, completely avoiding the trap of playing long-running games with the same basic mechanics repeated over and over. I am finding I gravitate back and forth between those two, with more time on Minecraft in 2012 and more time on Civilisation in 2013. I almost flipped back to Minecraft in November, but then I finally caved and purchased Gods & Kings and it breathed enough new life into the game that I have stuck with it to work out the new mechanics. Not that I’ve ever been much good, hovering around the middle difficulties. In the first game I could play The MOngol Tactic1 on the highest difficulty, but that’s not a winning strategy since they a) nerfed the Chariot, and b) ramped up the Unhappiness penalties for too many cities.

I noticed on New Years Day while I was bored that I was playing Tiny Wings and trying to get to Island 8. I was trying to get to Island 8 while bored during a practice run of my team’s end-of-sprint demo in January 2011. So yeah.

Music

I’m old.

I really enjoyed Lorde’s album. Other than that, I’m old, and don’t really encounter new music that readily. I spend more time on podcasts these days.

So Accidental Tech Podcast, Mike Duncan’s new podcast Revolutions, The Talk Show, and The Incomparable.

  1. Basically a Chariot Rush. Research up to Wheel and then just spew out chariots from every city and relentlessly attack each enemy city as you find it. By the time you need ships to get across to the next continent, you should have stolen Sailing from conquering an enemy city.

Several months ago I talked about how I use a request to write some simple code in interviews to try and gain some insight into how the interviewee thinks. Specifically I discussed the Swap(int,int) method and what I could discern from it, depending on how far the interviewee could go with it. In the months since then I’ve done a few interviews that have allowed me to develop the concept further, and so I am going to talk about some of my learnings.

The interviews I was conducting earlier in the year were all phone interviews, and I think this makes it difficult to really do coding questions. They were phone interviews by necessity as the subjects were in Manila and I was in Sydney, trying to find a suitable subject to be the core of an offshore development team. I found that two thirds of the dozen or so candidates I interviewed were able to put together the temp variable answer but only one was able to get the arithmetic version, and even then it took prompting with the first line. Most difficult was the inability to watch them working and thinking. The setup just didn’t support it and is to my discredit that I didn’t work to improve the situation by demanding a webcam be setup.

The last four weeks I have been interviewing candidates in person. Despite being a better standard of candidate they have also struggled with the arithmetic solution, and certainly no-one has got it without being given the first line. Watching people struggle with it gave me a light bulb moment though. I actually don’t want the kind of candidate that would come up with that piece of code, so why am I trying to make people write it? But how do I get to the ultimate insight unless I have them critique that piece of code?

The whole point of the question is to determine if they are cowboys or engineers by having them look at a piece of cowboy code and give their opinion of it. So…why not just give them the code? The value I was finding in having people applying for a senior developer position write the temp variable approach was vanishingly slight, and conversely they were all struggling to get to the next, and in my eyes vital, step. So now I have it on the whiteboard when they walk in, see if they look at it and if they do what their reaction is. I do the introductions and ask them to discuss their current role for a few minutes. And then I ask them what the computation is in the function written on the board. Or maybe I ask them what they would call the function.

void X(ref int a, ref int b){
    a = a + b;
    b = a - b;
    a = a - b;
}

After I switched, within a couple of interviews I knew I had made the right move. I discovered I was able to observe other basic qualities of the candidate as they attempted to answer the question.

The first is their approach to learning a new body of code. For example, my approach to learning what this piece of code would do is to run it with a couple of sets of values. You could probably make an educated guess after the first set of values were swapped and I’d probably hazard a guess at that point and then run it again quickly to make sure.

The second is their ability to deal with uncertainty. My ability to cope with uncertainty has historically been pretty poor, and I have to make an effort to let stress and annoyance take over when I’m in that position. I’m looking for at least that, an effort made to push past the stress and at least try to come up with an answer.

Incidentally, one of the candidates who did get the arithmetic solution when asked to write it, gave me an answer I had never considered before when I followed up with what was wrong with it. In my previous post I had pointed out that it was pointless to try and beat the compiler at memory management by skipping the temporary variable. However this candidate pointed out that the temp variable was the better optimisation anyway, because it was all assignment, and thus only memory. As soon as you have to do arithmetic computation you are using the CPU, and that will be slower.

UPDATE I took him at face value because, well cause it sounded like it made sense and because I didn’t really care about the particulars. It’s not like I was hiring him to come in and write code an OS to be embedded in a 1980s wristwatch. But I should point out at least one person believes it is wrong.

I should have thought that the bare fact that a function labeled “Save as Markdown” generates an HTML file was self-explanatory as a bug report and yet…

Fair enough. Whatever else Twitter is good for, bug reports are not it1. So here goes.

Dave. HTML is most definitely not Markdown.

Now I understand that the functionality is supposed to be doing exactly as I have described, applying a Markdown parser to Markdown in the document to produce an HTML document. I can indeed read the Fargo docs. Still, that’s not the common understanding of the sentence fragment “Save as Markdown”. It might even be the opposite of said common understanding.

Furthermore, my Fargo doc is, so far, a three deep tree. So even if I did want HTML, I assure you, I did not want HTML that lost the tree structure. It’s particularly galling since the HTML that I might want - if indeed it was HTML I wanted which I didn’t - is already in the page, right there in the DOM. But rather than put that in the HTML file, Fargo applies a lossey conversion and dumps it out as a list. Not a list in the sense of a series of li elements, but a list in the sense of a series of space seperated words.

But yes, I do understand that the tree depths should be thought of as headers, and thus marked up as headers.

What I want is a Markdown version of what I have produced in Fargo. Which is to say, the OPML fragment

<outline text="Getting Started">
        <outline text="Creating Your Character" created="Mon, 08 Jul 2013 11:53:03 GMT">
            <outline text="Generating Attributes" created="Mon, 08 Jul 2013 11:53:08 GMT"/>

would be output as

* Getting Started
    * Creating Your Character
        * Generating Attributes

OPML is not useful to me, it is not readily editable in a text editor when I don’t have access to Fargo. Hence, my desire for a text version. Fargo is a tool for quickly restructuring the document by moving sections around, and a pretty good one. OPML, on the other hand, brings insufficient benefits to the table to offset the lock in.

UPDATE

If any of you were waiting with bated breath for a response from Winer, there has been none. Not on his blog, not via email, or via Twitter.


1. : Not there appears to be a formal way to report bugs.

If you are going to look at the problem of 4th edition D&D from the perspective of Purity, what could be more pure an expression of D&D than 4th edition? The greater majority of its critics use purity as their weapon of choice. It’s attacked for having strayed to far from tabletop and morphing into something more like World of Warcraft. Or Diablo. It’s attacked for its long, long…loooooong bouts of combat, reducing whole sessions to a single encounter in extreme cases. It’s attacked for the mini-game like Skill Challenges, which reduces non-combat encounters to a series of dice rolls rather than an acting and/or puzzle-solving exercise. It’s attacked for not being D&D at all, but something else designed to appeal to video gamers.

From a certain point of view though, it is the purest form of the game since Chainmail. Remember, the roots of the game are in the war gaming community, gamers who devoted whole tabletops to platoons of miniatures representing Napoleonic period troops, WW2 divisions, and - eventually - mythic, fantastical creatures. The birth of the game is in the heros and superheroes of those fantasy games stepping off the battlefield and into the dungeon. The earliest rules were hardly more than a shim on a game that was a fantasy skin over simulations of Famous Battles of the Second Millennium of the Common Era. Masterpiece Theatre it was not. Look carefully at descriptions of early play and you’ll find illuminaries such as Gygax reducing non-combat encounters - when he was rushed/bored/out of ideas - to 50/50 dice rolls. It’s even a guideline formalised as early as 2nd ed and informally since the first published rule sets.

That’s all sophistry though. I don’t think 4th ed is the purist form of D&D. I think it is terribly far from being a pure form of D&D, although I think it might actually be closer than 3.5 with its proliferation of classes. Maybe. I can’t actually be sure since I barely played 3rd ed, and never played 3.5 or 4th ed. Closest I have come is ready the rule sets and watching showcase games of 4th ed played the Penny Arcade crew, Wil Wheaton, and Scott Kurtz. I suspect those four could make Snakes & Ladders a riotous explosion of creativity, so not really a yardstick.

From a certain point of view? That’s a phrase that, to my mind, comes freighted with context. Obi-wan Kenobi said that, when he’s just finished owning up to lying his arse off. But in this case, I really do mean it. Because from a certain point of view, D&D 4th edition is a pure expression of its sources.

I do happen to think that it hews closer to video games like World of Warcraft and Diablo. It does so unashamedly. Whereas in previous editions a player and the DM might use their nous to have a fighter character anchor a combat, 4th ed makes a game mechanic by importing concepts like Aggro from games like World of Warcraft. Combat is both amped up with tactical options - even if I get the sense that many combats follow much the same series of tactical moves - while defanging it with so many sources of healing and character builds that have the potential to make a character nigh invulnerable. And for all the variety and options that can go into builds, the classes fill rigidly defined roles: The Tank, The DPS dealer, The Buffer, &c. The roles were there in old style D&D, but not so rigidly and not so all-consumingly.

Combat in 1st ed was nasty, brutish, and short. Dungeons crawls were like climbing Everest, something done in many stages, with advances followed by retreats to recover and consolidate. That’s an experience entirely foreign to a gamer who has come to RPGs via MMOs. The breakout game of the genre - World of Warcraft - actively penalised retreating from a dungeon (that is to say, an Instance) by resetting the whole thing exactly as it was before.1 And while combat can be lethal in an MMORPG, with party wipes aplenty, ultimately it has little impact, the players just respawn with the only repercussion being time lost and gold to be spent to repair and restock.

I don’t like D&D 4th Edition, and from my reading of the early play test materials I don’t like D&D Next either. But in a way I respect them. I respect them because I recognise that they embraced their inspirations, their source material, their Appendix N if you like. My Appendix N is different to Gygax’s, but it has one thing in common, that they are books and stories. The Appendix N of modern D&D is World of Warcraft, Everquest, Final Fantasy, et. al. The old inspirations lent themselves to a different style of play, a style that I preferred.

As I said, I’ve never actually played the 4th edition. Merely read the rule books. That and three dollars will get me a cup of coffee. And showcase games involving witty and imaginative players prove the game can be fun, even if it is fun in a different mode to the games I played when younger. I drifted away from the game when I finished inversion and moved to Sydney, away from my gamer friends and towards time consuming jobs. But I also drifted away because the game drifted away from me. The signs were there from third edition that the game was skewing towards the market more accustomed to quicker gratification and mechanical manufacture of avatars over organic formation of characters. Feats in particular contributed to this uneasy feeling for me. So I stopped playing, because there was no joy left to it.

There’s this thing called the internet now and I can’t help but wonder, just how hard would it be to find a game of 1st edition to play through the medium of online communications?


1. : Which is not to say a canny DM wouldn’t repopulate a dungeon when the PCs had retreated. The best do, the ones who are thinking people, not automatons reading straight off the page. They’d repopulate, but organically, not a complete mechanical resetting.

My favourite code question in interviews is deceptively easy. I was asked it for my job at C4, and at the time I didn’t really understand it. Nor did the guy who asked the question, for that matter, nut in the years since, I’ve gone over it a few times and have evolved it to be the first question I ask interviewees to code for me. It’s just so useful.

Given two integer variables, x and y, swap their values.

There are six answers to this question. Or at least I am familiar with six answers, there may well be others but I’ve never encountered them in the wild.

These answers are, in ascending order of my happiness when given them:

  1. Call a method called Swap(). Don’t laugh, I have been given that answer in total seriousness twice.
  2. I don’t know.
  3. Start with x = x - y
  4. Start with x = x + y
  5. Start with x =x XOR y
  6. Use a temp variable

Anything after I don’t know is an acceptable answer.

Use a temp variable

var tmp = x;
x = y;
y = tmp;

When I see this, it allows me to ask for it to be done without a temp variable. I am quite happy to feed them the first line, “x = x + y”, and see if they can finish it. If they do, I then ask them why this is not a very good solution. I am quite happy for them to answer that they wouldn’t do it because of the risks, and obviously if they say what the risks are. I’ll then ask if they could do it with bit operators.

Arithmetic gymnastics

x = x + y;
y = x - y;
x = x - y;

OR

x = x - y;
y = x + y;
x = y - x;

I don’t really care if you get the solution arithmetically correct, you’ve at least demonstrated you understand the principle.

Starting within “x = x - y” makes me suspicious that they know the risks in “x = x + y” - integer overflow - but have forgotten the very same risk holds for this answer, but I give them the benefit of the doubt and just ask them about the risks. For either variant, I then ask them if they can think of a different way to do it that doesn’t hold the same risks. They don’t get a first line, but I am happy to give a hint, use bit operators.

Bit operators

x = x XOR y
y = x XOR y
x = x XOR y

I then ask what are the risks in using this method, which are pretty narrow, I admit; that if x and y point to the same memory address, you in fact end up with the value set to 0, which unless you started with 0 is a bad result. Narrow, but if you’re going to play with bit operators you better have an understanding of what the hell they do.

And finally, if anyone makes it to the bit operator solution, the final question is, why is this not a good solution. If they come up blank on this, I know I am dealing with a cowboy. They are a cowboy, because the bit operators - and the arithmetic juggling for that matter - are less readable than using a temp variable, for absolutely no return at all. The coder is not getting any efficiency bonus, not optimising their code. The compiler is going to optimise the temp value out anyway, the compiler is going to optimise the whole thing better than the coder will. For no benefit, the fancy solutions end up making the code more obtuse.

Ultimately, I am looking for a developer who answers with the temp variable, and can defend that answer. I am happy to go through the paths and get back there if they can continuously identify the issues with the other solutions, and I count that as only a little much less acceptable than sticking with it in the first place. The second best end point is any of the rest if the interviewee has managed to discuss the risks in any of the three non-temp variable solutions. The third best is any of the three without knowing the risks.

If you don’t know an answer, in all likelihood you are going to be rejected, but you could still recover. But really, even an under-grad should be able to answer with the temp variable solution after CS101, even if they don’t necessarily understand that it is the only totally good answer for developers not working on micro controllers.

The worst, and the answer that will always get you rejected immediately, is a Swap method. Even if you’re joking. Interviews are a dangerous place for jokes; if that kind of rapport has been established, I suppose it is fine. But I do interviews with the filter questions at the start, and I’m not joking around because I’m looking to see if I should invest my time in the much more difficult and time consuming task of establishing if you will fit into the team. If you can get past the filter of code and theory questions, I’ll try and establish a rapport that would probably involve some laughs. But before hand, I’m looking for an opportunity to get out of the room.

To get out of the room. That sounds brutal and cold, and as if I don’t think interviews are a good use of my time. But they are, they are an excellent use of my time if I am talking to a great candidate. If you’re not a great candidate though, you aren’t getting hired by me, so any time spent talking to you after I have made up my mind is just wasting your time. And if you are joking early on in the piece, I start thinking you’re not taking the interview as seriously as I am.

So, tell me you’d use a temp variable, and then defend the hell out of that answer.

Copyright © 2014 - gilmae - Powered by Octopress