It’s election season in Canada! If we hadn’t already been inundated with everything happening these last two years this would be bringing in a smorgasbord of bad faith arguments over every imaginable topic. Instead it’s the year 2021 and we’re living in a dystopia where bad faith arguments are consuming enormous amounts of energy and public discourse, so really it’s just an extra seasoning this year, but maybe a good excuse for an online journal entry.

Politicians tend to be the merchant royalty of bad faith arguments, there are examples worldwide of political decision makers that do their job pursuing honesty and while striving for accuracy, and they’re amazing – but they seem to be the exception and none of them personally represent me so I’m just bitter. Observing their peers (and the comments section of… anything) did showcase one pattern: the tendency to invalidate an argument on the presumption of an agenda.

Super common in game development, as my project responsibilities increased I found myself spending more and more time in meeting rooms. Over the years I found this inefficient and problematic enough that at first opportunity at a department leadership role I explicitly re-designed expectations for all layers of that department to promote personal autonomy, accountability, and creative agency. It was win-win! All the folks reporting to me ended up being more productive, generally enjoying their work more (unless they didn’t, which is a good time for me to step in for support), and I spent less time in meetings (I wasn’t the sole representation of “Design” – the designer working on content/feature would be in the meetings and we could catch up after) allowing myself to be productive developing and not just “managing”.

Anyway, that small success story aside I have spent more time in meeting rooms than I would wish on anyone. Not all meetings are soul-draining, collaborative meetings can be energizing! Though for a successful collaborative meeting you either need everyone acting in good faith or at the very least to step aside and just listen – otherwise the meeting can be derailed very, very quickly by a loosely related (or in extreme cases a completely un-related) agenda.

One strategy I’ve used to generally combat the hijacking of meetings is to pre-empt a focus on goals – what are we trying to achieve? This strategy has had mixed success, enforcing the goals (ex: “hey that sounds cool, but it’s off-topic and we need to be working towards [goal reference] right now”) can end up in its own spin-off argument of how [agenda] fits in the goal (bad actors gonna bad act), depending on who is moderating the meeting this may or may not be an acceptable use of 5-10 peoples next 20-60 minutes. When not moderating meetings myself I made a habit of doing the math of when meetings were completely hijacked (0% productivity, no new action items other than to schedule more meetings), # of people multiplied by the number of minutes. I would then present this data to the moderator, in hindsight this may have made me unpopular at that company (like, actually – when doing ‘coaching training’ one of the company directors made a joke about how some of the other directors ostracized me, I didn’t find the joke funny).

There’s another strategy I’ve seen deployed where there may be assumptions someone has an agenda but won’t speak openly about it, those people then get excluded from the decision making process. That’s one method of disempowering an unhelpful agenda, but you may also be doing the group a disservice – just because someone may have an agenda doesn’t mean they can’t provide useful input to a conversation. In fact, sometimes a focus on an agenda (gaming example: someone may be so hyper-focused that the Player vs. Player experience fits their vision that they may neglect other facets of the game) can provide insights to help make better decisions, as they can be most deeply connected to a cohort of the community than others available.

Gate-keeping conversations is a very poor solution, people who have good intentions may act in bad faith purely out of a passion for the topic – you don’t want to cut out your passionate voices (just need to keep bad faith arguments from taking up everyone’s time!). Taking the reigns of moderation can be effective in helping keep progress towards a goal, and that’s as far as my hands-on experience goes. BUT! I have seen something really cool come out of Taiwan, the idea of leveraging tech to filter out all the noise and find consensus in a conversation. While in a real-world environment that strategy can help find consensus in a wide-array of conversations, I can imagine the same principles apply on a smaller scale (like say, game development!). Asynchronous conversations can happen over time (which works well with work-from-home mentality) and an automated service could be pulling out consensus for evaluation by decision makers – decision makers can be freed up from having to moderate conversations allowing them to get back to directly contributing. Win win?!

Maybe, it’s all a theory but the fact that the software used is open source is very promising, the mechanism for pulling out and analyzing conversation text for consensus could even be added as a plug-in for task tracking software (like Jira) or communication software (like Slack or Discord), reducing friction to the conversation contributions. Timeframes and milestones tend to be set months if not years in the future, all sources for conversation (internal to the company or even crowd-sourcing from fans) could be collated for consensus giving decision makers reliable conversation data to base their decisions on when the time comes (rather than having bad faith arguments consume disproportionate amounts of their time).

That’s the thing about bad faith arguments, they don’t need to be on topic and they tend to create more division than consensus. Someone with a goal of “winning” their argument at all costs (logic and goals out the window) can be a massively disproportionate time-sink in decision making – that time can be offloaded to this machine learning AI! Would be curious if explicitly bad faith arguments could be dumped into analytics as well to tease out agendas causing the bad behavior – maybe one day if I’m absorbed back into corporate development I’ll have a chance to find out, ha!

After nearly two decades of workin’ in the games industry no two job-hunt stories I have would be alike. The most recent evolution is with recruiters, companies seem to be leaning more and more on third-party recruitment services… and it’s very telling those services aren’t terribly familiar with the wonderful world of game development. Recruiters tend to focus on very “traditional” employment (please sign this contract to devote a minimum of 40hrs a week to this corporation but in reality it’s closer to 60-80 averaged out over the year), and I tell ya, I’ve been on some journeys with recruiters this last year. Those journeys were unfortunately as dreadfully boring as they were confusing for everyone involved, probably make for poor content to pad out this online journal entry.

Okay okay, just one. Short story. Sometimes a group of people needs a really specialized person to fill a role, it’s good to be up front about this. I like to suss out any important expectations right away, so in this particular case the very first time I talked to this particular recruiter I discovered the company they represent really wanted someone super passionate about American Basketball. That very first time I told’em: I’m familiar with the rules, I could write them down without reference, but I don’t actively watch it so I don’t think I’d meet those expectations.

…so several conversations later the recruiter is telling me that my salary expectations are totally fine, and I’m thinking “huh, I guess that basketball thing wasn’t as big a deal as I originally thought”, so we kept talking, even updated my digital paperwork based on what they recommended from feedback from the client, cool cool. Things seem to be progressing (I’ve noticed this is a common theme with recruiters, regardless of reality everything is making progress), and after over a month of entertaining this particular recruiter…

I was informed it was really important they have someone very passionate about American Basketball fulfilling the role so they’ll be looking elsewhere.

That was the most interesting recruiter story, time and energy investment certainly don’t make a better story. Now contrast that with a fascinating scenario I find myself in: a studio has a problem, someone who does work with them understands the problem and what they need, they suggest to both studio and myself that I help them with their problem.

Rather than acting like a recruiter the person who made the observations and connected the dots just got us all in a video chat to discuss the problem and how I could help, how long I think that would take, and what I would need in support + financial compensation. It’s a format that may shift my attention away from my personal projects for a short time but wouldn’t have me abandoning them completely, slowing the drain on my savings so I can put more effort into hopefully creating my own financially stable game library. Win-win!

I’m super intrigued by this new (for me) idea now that I’ve been engaging in the process and having it go so smoothly. My next step will be to not divert all my limited energy, make sure at least one personal project continues to make progress (sorry Roblox game! back soon I promise). Hey look, I’m doing better! I’m on round-two of this fascinating new experience and I’ve updated my online journal 😉

Sure! Usually, unless they’re saying something dishonest hoping for a specific outcome, then they’re intentionally misleading – but when that’s not the case, the customers feelings are definitely valid. That doesn’t make them the best problem solvers, though.

Maybe I’ll take a step back, maybe some people who are reading this haven’t heard the phrase “The Customer is always right!” (because I’m probably old and “cheugy”), but growing up when and where I did this was statement pretty popular. You did not question the statement, you followed the statement. The statement can be retroactively used to justify past actions taken, the statement shuts down all arguments because “the customer is always right” and you’ll find that justification in places you would never expect as our lives became more blended with earning an income (sometimes called “entering adulthood”).

This statement was basically treated as a rule, and of course once you know a rule you know how to take advantage of it. When a rule is poorly written the potential for it to be taken advantage of is much higher, and the idea of a rule that gives someone ultimate authority in a situation is clearly ripe for taking advantage of. Personally, I don’t blame people playing my games for taking advantage of rules I made – I believe the onus is on the rule-maker to ensure their rules are designed in such a way that the rules in-and-of-themselves prevent players from creating horrible play experiences for other players. After all, Bad Actors exist and should not be ignored.

Coping with a flawed rule

You may disagree with the flaws I’ve hinted at in what I’ll call the customer rule, just like players may disagree with various rules in a game (from limitations in social interactions to perceptions on difficulty), but I’m going to go forward with it as my example. In this particular case, I’ll still interact with various people in life who subscribe to the customer rule, if I pointed out how I felt this rule was flawed every time it is used to “prove a point” it would just escalate a needless conflict.

There’s nothing I can do about the rule itself or other peoples choice to subscribe to the rule, so instead I choose to find a way of interpreting the customer rule that applies to all cases. When a customer is upset, excited, bewildered, or just plain angry – there is no value in dismissing their emotions. In this respect, the answer is yes, the customer is always right.

This is especially true as the one making the rules within a game. As the rule-maker you had intent behind the rule in the first place, if the rule is making people upset it’s important to at the very least audit the rule to ensure it’s doing what you expected it to do in the first place – or if it is accomplishing what it’s set to do, if the negative consequences outweigh those accomplishments. It’s very possible accomplishing what the rule set out to do while also mitigating negative consequences can be achieved by updating or replacing the rule.

Having valid emotions does not make someone a better problem solver, and if a topic ends up with a lot of attention chances are there will be a barrage of proposed solutions (potentially contradicting each other). As a developer if feedback is feeling overwhelming, chances are it’s because some of the proposed solutions sound like a lot of hard work. Don’t let the idea of hard work get in the way of validating the customer, you may not feasibly be able to do exactly what is wanted, but doing exactly what is requested is a pretty extreme method of validation. It’s not required!

Validation can come in small doses, and is much easier if your customer trusts you. Hearing “yeah that sucks, sorry, we’re looking into it” from a developer who has proven to act in good faith can be incredibly validating – but don’t lie, that breaks down trust. “yeah that sucks, sorry” may be all you’ve got if you know that either work can’t be accomplished, or will never be signed off on by the people who sign off on work. Dishonesty erodes trust, and saying “we’re looking into it” without ever showing your work addressing the issue comes across as quite dishonest.

Who is the customer?

I couldn’t let it go, so I’m going back to the customer rule to dig deeper. If you’re hired by a company to develop a game for them, groups of customers may look like (in no particular order)

  • Players
    • Tend to be sub-divided into categories (ex: “PvE”, “PvP”, “Crafters”, unique per game) due to groupings of potentially contrary opinions
  • Anyone above you in company hierarchy
    • If they can put a task on your list (directly or by proxy) their opinion on what that task means is important
  • Other developers
    • Either in their hearts or in their career, feedback coming from the perspective of someone who sees themselves as a peer
    • These can masquerade as players, may only sometimes identify themselves
    • This customer can come loaded with the entitlement of “I’m a developer, so what I’m saying matters more than all these other people”
      • Feedback from a place of entitlement is tricky to validate, always much easier to validate feedback that shows the work as opposed to “You do this thing, you should do this other thing”
      • Hint hint: If you feel you’re in the know, if you feel you’re a peer, show your work – it’s a lesson I still struggle to apply consistently myself
  • Investors
    • Their stake in this game is for it to make money
    • You and everyone around you have their jobs only because of these customers
  • Marketing
    • Their job is to get your game experienced by as many people as possible
    • This customer has a very unique and important perspective, their feedback may seem very strange when compared to other customers, this is because they are trying to do a very different job
  • C-level executives
    • Contractually obligated to ensure the investor-class customer is the only customer that matters to them
    • Reward mechanisms are based on opinion of their job being done, not reality, this can make feedback from this customer opaque in their intent, very tricky to validate
  • Media (including reviews)
    • Unlike marketing, it’s not their job to get your game experienced by as many people as possible
    • Very broad group here, going to be a lot of cross-over with other customer types
    • Due to the nature of this feedback being directly tied to a job being done, validation…
      • …is probably a conflict of interest
      • …is difficult! Is it the opinion of a person or the outcome of a brainstorming meeting of multiple people?
      • …is probably best shown in the form of an update to the game and a polite request to please give it another try to see if the opinion has changed

When you’re a developer in a company you have lots of sources for a large array of expectations and feedback. While game development is a complex process, even brick-and-mortar stores are going to have more “customers” than who walks through the door to buy a thing – parent companies or owners, distributors, layers of management or investors will have strong opinions that help shape the workplace thus impacting the day-to-day of everyone on the ground.

Crux of what I believe is the largest flaw in the customer rule – anyone is a potential customer. It’s a rule that gives absolute authority to a poorly defined group.

Nothing is lost in listening

It’s (too) easy to dismiss customer concerns because it feels like they don’t fall in what is considered a valid group, unfortunately when it comes to feedback reality will assert itself whether you choose to dismiss the information or not.

If you’re told people aren’t having fun in your game they certainly aren’t going to have more fun if you choose to segment out a chunk of the user-base and ignore them. Same if it’s not profitable, not marketable, or not feasible to complete the project at all! Willfully ignoring any feedback may not have negative consequences, but it also may, it’s a gamble. Consequences for ignoring feedback will tend to be several steps removed, and once even one step removed it can be difficult to draw a connection from past feedback given to current problems that are a result of ignoring information (that was dismissed).

On the other hand, once you’re presented with feedback it’s already been presented! There is no additional effort to acknowledge that what’s being said may be someone’s truth and mentally keep it on file to see if it checks up against other observations. That very act can help validate the source of the feedback which helps build trust, it’s a win-win scenario.

I’ll admit – I’ve been stuck in a bit of recursive doom-scrolling behavior. There’s a lot going on, and I’ve been capturing a small small fraction of it in a goofy digital scrapbook as I continue to shelter at home (in my best effort to prevent myself from being part of any chains of transmission during a global pandemic). A reoccurring theme is that a small number of “bad actors” take action that cause grief for a disproportionately large number of other people. Anyone playing games online will be very familiar with the behavior, but under different names: “Hackers” and “Cheaters” may be more familiar.

Prior to in-game monetization being a norm there’s another label associated with bad actors in the gaming industry: “Pirates”. Business needs and game development weren’t nearly as integrated as they are now, so many a game were released that had trivial security around piracy, contrasted by games that included incredibly obtrusive “anti-piracy” software to “solve the problem”. Anyway, this isn’t a history lesson, the point is – the behavior of bad actors can have a fairly significant disproportionate effect in areas you would never expect.

Understanding the potential harm a bad actor could pose is critical in deciding how to approach it. In many RTS games for example, core underlaying peer-to-peer network strategies cause the game to fail if one computer does something the other computers don’t expect. This simultaneously solves network problems (how computers agree things are happening in the same virtual space) and also the “Cheater” category of bad actors in a multiplayer environment – but also it doesn’t disallow cheating in the single-player experience, a space where if you do manipulate the environment for your favor it doesn’t create a bad time for anyone else.

Getting to know Bad Actors

I don’t think it’s fair at all to assume all those whose behavior may fall into the group labels I’ve identified so far (“Cheaters”, “Hackers”, and “Pirates”) as bad actors. Fairly consistently – whether it’s in games or real life – the primary trait of a bad actor is to take the action knowing or suspecting the scope of damage they may cause, but either just don’t care or the damage is the intent in the first place. There are various benefits to behaviors, and when people observe other people taking action that’s advantageous to them it validates making the same decisions for themselves, jumping ahead and not even suspecting their actions could be causing damage (it’s so common so it must be fine!).

Identifying bad actor behavior in generalized cases helps build preventative measures – reactive measures are really expensive in an effort:outcome ratio (and depending on the game, those efforts may never happen as once a game is released effort may be redirected to new projects where it’s much more efficiently spent)

  • Hacking
    • Dramatically lowers the barrier of entry for cheating or piracy
      • Very disproportionate effect by enabling other bad actors
    • High risk of forcing reactive response for business desires
    • May provide benefits!
      • “Modding” unless fully supported requires quite a bit of hacking, and sometimes a modded experience is the best experience a player can have in a game
  • Cheating
    • Player vs. Player environment
      • Creates a very poor experience for players not also using cheats
      • Disproportionate effect slowly builds the more they play
      • Player vs. Player is already high anxiety for many players, even the idea others are cheating can cause players to disengage (sad times, bad experience)
      • Viral effect, to enjoy the game players may feel they must also cheat as well
    • Multiplayer cooperative
      • Reduces impact of players not cheating on the game, reduces other players challenge
      • Depending on game, may impact monetization
    • Single Player
      • Reduces personal challenge, zero disproportionate effect
      • Depending on game, may impact monetization
  • Piracy
    • May impact monetization
      • It’s really hard to say by how much, there’s no data on an argument of “Each pirated copy is a lost sale”
      • Anyone whose lived paycheck-to-paycheck knows this can’t be 100% of the cases, when you don’t have a lot of money you take what you can but don’t take what you can’t (afford)
      • Also (and completely anecdotally) people who do have the means to purchase things with what would effectively be pocket-change for them will take something for free if it’s easy enough instead of paying for it – so yes, there would be at least some lost sales
    • Potential viral advertisement
      • Epic Games explicitly uses the offer of free games (that otherwise wouldn’t be free) to draw people to their platform
    • Enables Bad Actors outside of the game
      • Pirated copies are very susceptible to hacking and may be packaged with malware/viruses etc.
      • Disproportionate effect not just within your game but now creating personal security vulnerabilities for people

It’s not an exhausted set of examples but I do hope it sets the stage that not all behavior in these realms necessarily indicate a bad actor. In fact, there’s been cases where behavior usually associated with a bad actor can have beneficial effects for a game or its community of players. I think the most succinct method of identifying a bad actor is that they have a tendency to act in bad faith, and unfortunately, attempting to meet an entity acting in bad faith with well-intentioned or good-faith actions only feeds the bad actor.

Motivations of a Bad Actor

I created this heading to explicitly say: the motivations of a bad actor are irrelevant.

This may sound strange, a lot of discussion around these topics devolve into motivations, whether someone is “innocent” of poor motivations for their disruptive actions – and from a development perspective, it really doesn’t matter. Whether someone obliviously ruins a significant number of peoples good time or maliciously takes joy in it, it’s still ruining other peoples good time. Attempting to assess motivations implies a reactive approach, so indulging in debates of motivation (for example, to apply targeted punitive measures) is a fairly exponential spend of time and energy that doesn’t prevent the damage in the first place.

Appeasing a community with punitive measures (ex: targeted banning) may yield some loyalty from that community, and in some cases that loyalty may be very important – but if the underlaying systems/rules/structure are enabling bad actor behavior, well, it will never stop and you’ve now committed to punitive maintenance.

Preventative measures

The games industry has an advantage that many other industries (or say, governing bodies) do not have – if something isn’t working, you just create a whole new virtual world from the ground up with the lessons learned. Analytics can be a powerful tool if the goals in analyzing that data are to learn (as opposed to ‘prove a point’), but they can only inform in hindsight. Lessons learned need to be applied in new work, and in a live environment that can be… tricky. But! Whole new virtual world? Much less tricky (but still tricky if creating a follow-up in a series, gotta be careful of expectations set).

There’s no magic bullet, the environment is changing all the time at a very rapid pace (one of the reasons I absolutely love creating games) – but there are a couple things I’ve learned that I’ll share

  • Don’t trust the client
    • Basic idea – if you find you’re spending a lot of energy trying to secure something on the client… just don’t, if your game gets popular enough to attract bad actors you’ve started an uphill battle in keeping the client secure
    • Reminder! If it’s not a multi-player game then the “Cheating” category are extremely limited in affecting others game experience (some online communities, like speed running, may have opinions though – be aware of your audience)
  • Don’t assume what you’ve been doing is infallible
    • Games with zero thought into security may not run into adverse effects of Bad Actors
    • I honestly believe a very small portion of humanity would fall under the Bad Actor category – chances are you could simply never have attracted them
      • All about risk management – imagine a Bad Actor will end up in your game, how can you mitigate potential damage? Not taking action and not suffering direct consequences could just mean a lucky dice-roll
      • Reminder about disproportionate effects, small numbers of Bad Actors can impact the experience of a very large number of players – a horrible situation when caught completely by surprise
  • Leverage a server for secure game logic with third-party hosting services
    • One of the massive shifts in gaming is the acceptance that networking is something that can be an expectation
    • Hosting services (ex: AWS, Microsoft Azure, there are many) need to be very good at keeping on top of their own network security (ex: preventing DDOS or other network attacks), offload that headache
  • Deterministic simulations for sensitive game areas, client presents, server authoritative
    • In Soulite Monsters the game server and client were written in the same language (C#) thus easily shared code, the client would do all the hard work of drawing images, UI/UX flow, and presentation elements for the player, even showcase rewards/combat for the player – but the server would run a very trimmed-down simulation of certain mechanics, some examples
      • Player Inventory (due to either bug or malicious intent, if the client inventory fell out of sync from an action the server had absolute authority)
      • Expedition generation (scroll consumption) and choices within
      • Monster Combination
      • Village Upgrades
      • Combat
      • Merchant Transactions
  • Learn from others experiences
    • Don’t just rely on your own games, participate in other game communities, see what kind of impacts Bad Actors have on them

Bad Actors exist outside of games

I’m pretty sure throughout our lives we’ve all been (or are even actively being) impacted by Bad Actors in all sorts of situations. Sometimes people (or groups!) simply have very strong motivations and refuse to act in good faith (even if they have learned to at least appear to be acting in good faith). I’m nearing 40-years old, I’m tired of that garbage, I can imagine others are well. I highly recommend that if you feel someone is not acting in good faith, or operating as a Bad Actor, to go beyond what is happening in the moment and dig into how to minimize that type of impact on your life.

Observe, learn, build preventative measures – actively engaging may be forced on you at times, unfortunately. With enough preventative measures preventing Bad Actors from soaking up reactive energy, well, the imagination really is the limit of where you could be putting that energy instead.

Personal anecdotes I don’t feel really impress the potential scope of the disproportionate effect of Bad Actors, so I shall leave you with some real-world examples

I figured my neglect of this online journal hit an all-time high so I thought I’d do it while Angel investigates Roblox Studio, a tool used to make games for Roblox. “Who needs a bridge?!” was just triumphantly shouted as a bridge was blipped out of existence in a game anyone in the house right now can play, load, and (now) find an absent bridge.

Of course the resident 7yr old, being a Roblox veteran, piped up in reply to the rhetorical question “YOU NEED THE BRIDGE TO CROSS THE WATER!”

This is already fun.

So I didn’t know too much about Roblox, and I still don’t, I have research to do. What I did know was…

  • Platform, not a game – relies on users to create content/games for other users
  • Multiplayer online focused
  • Games looked very primitive
  • Plagiarism galore, from movies to music to assets from other games (“Mario”, “Mickey”, etc. etc.)
  • The kids like it

That was my information launching point as my news feed started getting spammed with how much revenue Roblox Developers were pulling in. The same flurry of news articles let me know that the company has recently started being publicly traded and is has a pretty high evaluation. Those two things alone really piqued my interest, based on what I already knew!

Back in the days I was working for corporate entities (fingers still crossed I can avoid that scenario in the future) I put together a business plan for self published games. That plan was the seed of what I’m attempting to accomplish now and had a time-frame of around a year and a half. Part of that plan was to leverage the flexibility I have by not convincing dozens of people a decision is great (not even just great, but you won’t believe how great it is! Let me show you in this 22 slide Power Point presentation! So can I do the 1hr of work now?) before making it. The pandemic has already thrown any specific examples in the plan for a fairly significant loop, but that’s cool, I get to lean on that flexibility! Lean right into Roblox Development.

I’ve finished my first project Read Play Game, and what I’ve accomplished with it I’m very proud of. I’m in the process of Game #2, intended to be available on PC (itch/steam/etc) and Mobile, and potentially consoles as well if things look good. I had estimated Game #2 to be around 6-8 months of work to launch with monetized features, and additional couple months to iterate and check the metrics and see if it’s a good candidate to bring in enough money to pay the bills. I’m still quite a bit of work away from showing anything publicly for it, so right now seems like a great time to put a pin in it and see how viable it would be to bring in revenue from a Roblox project.

Now, to the people who I pester to read my things, you may be asking yourselves “what about those agnostic systems, those seemed cool and beneficial” – yes, and they still are, for Unity or almost any other engine that would support C# as a language. Also I have every intention of revealing Game #2 at a future date whether this Roblox experiment yields positive results or not (I already have the title copyrighted, once you have the fancy paper you just gotta finish the thing), so those systems and tools will definitely get lots of use. Due to Roblox’s unique development pipeline it would be difficult to bring in work or tools from other game engines in general, so that’s one negative in Roblox’s favor. I have the list about what I knew about Roblox, now here’s what I’ve learned so far about developing for Roblox:

  • Creators see 24.5% of revenue generated from their games
    • Face-value this doesn’t seem like much, I’ve included an image of how that’s split below these bullet points – as an independent developer my App Store Fees are 30% and I don’t have to worry about platform or support infrastructure
    • Even if I 100% make a game myself and put it on an app store, after fees and taxes I’m realistically seeing less than 50%~ by the time I actually get to claim any money, cutting that in half to not worry about a whole lot of things (including managing multiple platforms like Play Store, iOS, Steam, Itch, etc. etc. etc…) is actually not a horrible deal
  • Roblox Studio is… not horrible
    • I think only other developers would understand what a big deal a brand new tool not being horrible is, I may grow to loath it (or love it!) once I start actually creating with it instead of just poking around, but it’s a good initial impression
    • It is in a weird space of competing with Unity or Unreal, but instead of building out to multiple platforms (PC, Console, etc. etc.) Roblox provides the platform, just one for me as a developer to worry about
  • The company is now publicly traded, and the current content is rife with plagiarism and copyright infringement
    • Why is this a big deal to me? Well, the estimated $250,000,000~ dollars developers are expected to earn this year is probably going to earn the attention of license holders, since a good chunk of those dollars are earned with an IP that some Roblox developer doesn’t own
    • License holders are more likely to start paying attention, I think there’s a good chance content within the Roblox Platform may start getting taken down due to infringement… which may create a comfortable vacuum for small original games to fill
  • Lua is their programming language of choice, and I am very familiar with Lua
    • In Dawn of War 2: The Last Stand I built the behavioral AI entirely in Lua, an AI that was adaptable enough to replicate all player heroes on Wave 16 and getting me very angry yells across from the office as the AI beat players with their own abilities
    • During my time at Relic I was asked by a lead engineer to look at all their single-player scripts, they were apparently running at > 100ms~ sometimes spiking to > 1000ms~ (this is real bad, that’s a full second of a frozen screen) on the Xbox 360 – got it down to a chill 0.01ms~ spiking at maybe 0.1ms~ and kept all the behavior the designers wanted, they didn’t need to lift a finger and they could build off my work to add new content without sacrificing performance
    • I even have Lua experience in a server:client relationship thanks to a mobile project I worked on!
  • Expectations are low on the platform currently, games are fairly primitive
    • I expect competition to heat up due to other seasoned developers seeing what I’m seeing, but most of them work for corporations and will still be debating over power-point presentations while I can jump on this and hopefully get in early
Shamelessly snipped from https://developer.roblox.com/en-us/articles/developer-economics

So while I’m stepping away from a big comfort zone (Unity + smorgasbord of systems I’ve made, tools I’ve made or purchased, and assets I’ve made or purchased), those perks will be traded by my bullet points above. I expect to have a game the whole household here can play in a fraction of the time it took to get Read Play Game on itch. Within a month I’ll be able to judge if generating revenue as a Roblox Developer is actually plausible for a real-life adult with a real-life household to support, and even if I find out it isn’t plausible perhaps a break from Game #2 is just what it needs for me to come back to it refreshed and roarin’ to go.

I’m writing this while procrastinating calling the coroner’s office. It won’t have much if anything to do with games or development, but seeing as I’m pretty sure the majority of people who end up reading this are friends and loved ones this feels like a more appropriate space than a social media account. Words I can share for when I don’t quite feel up to talking.

All I know at the moment is that my mother has passed away, she was found in her home yesterday and no foul play is suspected – that’s all the officer who came to deliver the news had to offer, the coroner will have more information.

I don’t know much about my mothers life before me, nor do I know anything about her life in the last 15 years. What I do know is she struggled with significant mental health issues, issues that had me every 1-2 years living with a relative for a period of time (longest period was my Dad for a school-year) while she recuperated in Alberta Hospital, for all the friends I’ve met in BC – Alberta still has dedicated medical hospitals for mental health. The fact BC doesn’t is red-flag number… un-countable at this point. Stopping my immanent tangent on how subversively dangerous a crap performative government with a pretty façade can be… now. Also, thank you autocorrect for that fancy c back there.

Didn’t sleep much last night, my mother isn’t something that has occupied my brain space over the last decade. Rather than sleeping I couldn’t help myself mining for memories from the depths of… wherever they go. Reconciling the person who was dragged out of the house when I was in Grade 3~ by police due to erratic and violent behavior (the neighbors were incredibly concerned about my health, but only inanimate objects suffered any damage), who ripped the telephone out of the wall only to throw it into the dishwasher while declaring our dead grandfather was coming to visit. This is the same person who when I was a child with chronic nightmares would sit by my bed until I fell asleep, every night. Even when I was being a brat and making whiney noises of discontent if I was conscious enough to know she was slowly sneaking out of the room.

I got about this far before talking with the corners office. I don’t have much more to say on the topic, my next online journal update will be closer to the topics I usually talk about in this space, going to take a break for awhile first though.

Todays online journal topic was inspired by Angel, my lovely wonderful partner who couldn’t give two petrified rabbit droppings about the benefits of bit shifting.

Hilariously, as I’m writing this Angel sits down beside me and all interest was lost in what I was doing purely from the title alone. Speaking of that inspiration… so I was verbally trying to explain to Angel what Bit Shifting was and how it could help me. I was havin’ trouble with just words and I know Angel loves both visuals and spreadsheets, so I originally created this as an example to aid my whimsical desire to explain something

The idea here is to be able to use a single number to represent different types of content or even blend those types of content together

So that’s jumping right in – what the heck am I trying to do!? Well, the game I’m working on right now has a need for me to define some kind of pattern for content. I didn’t actually know that right away, my steps to reach that realization looked something like this (I bolded the relevant line):

  1. Concept (I want content that players interact with in this way)
  2. Prototype (Create a stand-alone scene in Unity to test my theories to make sure I can actually do this thing)
    1. This got to leverage other tools I’ve already made for other games
    2. Part of this process is showing me what I don’t have tools for
  3. Pipeline (Figure out how I’m going to create this content)
    1. Tools already existing: Is there friction here?
    2. Manual labor: What tools can I create to reduce my own labor?
  4. Creation (Start creating content for the game!
    1. Tip: Don’t be shy about taking steps back if you have a good idea it’ll save future time

In this particular case I have built up tools to help me out, so I get to use past work for some easy wins, hurrah! But something was bugging me, if I want specific patterns of content… I didn’t have a great way of doing that. Honestly, my impulse (because working solo means no one has to suffer through horrible workflows except me) was to define the pattern in plain old text, relying on my ability to mentally graph it all together.

That was a horrible impulse. It probably speaks a lot to my current mental state.
Note: If you find yourself pushing to mentally crawl forward rather than stopping to see how you can run, or even sprint, maybe read my previous post

Okay okay, so I keep using this word pattern. It’s a word that I’ve kind of described for myself for a specific need in this current game, but I also run exercises in how something that is super generic could be re-applied to other genres of games entirely, giving me a toolset of Genre Agnostic Systems to leverage for future games!

I tried to be super lazy and see if I could procedurally generate reasonable results, or maybe use a simple 2d image to map areas, but each of those approaches ended up having a lot of… bloat. Giving me a lot of things that I don’t need while also not making it as easy as I’d like for what I need. I ended up with a more direct approach: Build out my own data structure (that gets to leverage a data pipeline I already have!) to define patterns of game content, in… spreadsheets!
Note: Anyone who knew me in the 2000s may have heard me rant and rage against spreadsheets for game data – I’ve since found sheets useful for certain types of data, and here’s one example


I like to imagine how different genres would use this pattern data, I’d encourage anyone reading this to provide their own imagined applications in the comments! I included a legend in the first image, I’ll recap what numbers mean what hypothetical thing to be interpreted and used by a game

0Free/Open
1Basic Obstruction (player may obtain tools to pass)
2Monster
4Treasure
8Barrier (cannot pass at all)
128Extra Special Reserve
Types of game content represented in the pattern

What we have so far: the ability to define, in a grid, content that will appear in a pattern. That content can easily be combined by adding numbers together (2 + 4 = Monster + Treasure) (1 + 4 = Obstruction with a Treasure… presumably if you can remove the obstruction) – we can reference that pattern by name but likely we’ll use other methods to pick from a pool of patterns that make sense based off of a broader context (like narrative or theme)

  • Action Game with a mini-map
    • World can have pre-placed or procedurally placed areas where patterns of content may exist in the world while exploring, these patterns appear most visibly in the mini-map, but also viewable from a birds-eye perspective in game
    • Type of (Monster/Treasure/Barrier) of broader category determined by a mix of area theme, player progression, and any potential special events
    • Mixes are exclusive – one or the other is picked for added variety
  • Dungeon Crawler
    • crossroads and fancyRoom are examples of this
    • 128+ tiles are room entry/exits, moving to this tile changes the room (new pattern)
    • Perhaps shovels are a mechanic that can be collected and break after use, all (1) squares can be smashed with a shovel to move through
    • Mixes are inclusive, something can be an obstruction and a Monster
      • Not sampled: Room/Monster combo (3) – fight it or smash it with a shovel, either way allows movement through
      • Sampled: 132 is a special exit combining 128 + 4 (Treasure) – an exit that leads explicitly to a “Treasure Room” (pulls from treasure room patterns of rooms)
  • Match 3
    • Overlay patterns on top of a generated puzzle to apply unique block mechanics, quick example
      • Basic Obstruction: Need to match multiple times to consume the block
      • Monster: Earn experience for player character when consuming the block
      • Treasure: Earn currency for the player account

I like to start with 3s, I figure if I can have 3 plausible applications off-the-cuff then the creative box I have to work within is probably big enough.
Note: The game genre that I’m working in right now is none of the above, no spoilers!

The patterns can be nested as well, with a game having multiple uses for patterns! In a Dungeon Crawler example, a whole dungeon could be made up of dungeon patterns stitched together procedurally, with pattern cell data determining which pool of room pattern content to draw from when someone enters a dungeon room cell (entering and exiting that “dungeon cell” by the 128+ cells in the room).

I could even see an application for Read Play Game, where perhaps a player drops in a hedge-maze and a pattern is determined to both give the player options of movement (North/South/East/West) and what events could happen as they meander through. I’m excited at the possible things this is going to help me make! Also it solves my current problem.

I hope that made sense, I’m going to find out by sending Angel a link 🙂

My general plan for January was pretty simple: Take some time off around Christmas, take my concepts and initial idea-proving work and come back at it refreshed and full of energy and pep!

Things did not go as planned.

I found myself just as exhausted as when I decided to put a proverbial pin-in-things in December. “This ain’t right” I thought – I mean, I explicitly stated I was taking time to relax, so I should have relaxed right?! That’s how it works!

That is, apparently, not how it works.

So I’ve learned at least one thing, I don’t know how to relax right now. That’s… a step, but doesn’t really guide me to how to, y’know, force that relaxation on myself so I can get back to the high levels of energy that I’m used to. The level of focus that in the past meant a new person at my desk interrupting me every 5-15 minutes with brand new questions, swapping topics to solve problems while threading in my own work without a hitch. I had it! I want it back!

I’ve swapped people at my desk to assist in questions around school or helping get a cup that’s in the high cupboard, but I find myself playing catch-up far more than I used to when I sit back down to get back at it. We’re living in some pretty crazy times with some massive disruptions in all sorts of things, I’ve even started a “scrapbook” of things I just stumble on in my day-to-day that really highlight the… casual insanity. I’m hoping years from now some of the massive problems that have been exposed lately world-wide are addressed and that I can look back on that scrapbook with friends and have some head-shaking reminiscing moments. The state of the world is occupying my brain space much more than I’d like, is that it?

I don’t know. It could be a number of things, this is very new for me (a phrase I’m sure many people in their own scenarios can relate to in 2020 and… beyond…). Tackling new frontiers is very important in game development. Staring the unknown straight in the eye and saying “… I will google that” as opposed to passing-the-buck is a solid skill to have. To leverage that skill though, you really should have a basis of foundation to ensure you’re asking the right questions, to even know what you should be learning. Just try googling “how can I force myself to relax?“, there’s a plethora of suggestions out there, but also I don’t think I’d be asking the right question to begin with, I think the problem is more complex than I’m even able to articulate right now.

So where to go from there? Well, I’m trying to make Gilroy Games a sustainable source of income for my entire family. I’m my best asset, I can leverage my experience in both game design and engineering to accomplish any array of tasks generally assigned to a group of people, sometimes faster than the group. That’s not a flex, years ago when I was a single person assigned to a project (and only half my time at that) the progress of that project was praised and directly compared to fully staffed other teams in the company. It’s a phenomenal advantage to reduce communication time between workers to nothing (honestly, that praise is what planted the nugget that it’s a totally reasonable thing that I could just make my own games).

So the hard truth I need to accept: My best asset is not functioning at peak proficiency.

This is a problem I’m not familiar with solving. Just like I buy assets or modules to help speed things along in areas that I know from my experience would save me a ton of time (or in the case of assets, hit an artistic quality level I could never hit myself!) I think I’m going to need some outside help. I’m going to try something that is radically new to me. I’ve now had two chat sessions with a therapist.

Way I see it, it can’t hurt to talk to an objective human about this weird problem I’m having, a weird problem I’m having trouble even putting into words. I think this very post is an indication I’m doing something right – cause if I’m being real here the bucket of work that contains things like [journal updates, page updates, business administrative work, promotion] are for me some of the hardest things to do, requiring the most amount of energy. Here I am, doing it!

It’s a strange thing to ask for help when you don’t necessarily know what kind of help you’re even asking for, when part of the help is… defining what’s being asked for. I think that’s probably true when it comes to mental health in general, so all I can say is I encourage anyone reading this feeling any weird vagueness like I’ve described, just go for it. It’s a strange industry that weirdly specializes in that exact scenario.

Lesson learned this month: I need to keep working on and investing in myself if I want the games I make to be the best they can be.

I’ve now registered for my third copyright! The second one will get used later, thanks to the beauty of creating games for myself I get to make that decision without many an hour spent preparing presentations then selling them both inside of outside of meetings. It’s really quite refreshing.

I took a stay-cation from creating games in the wonderful world of warcraft, whose new expansion has given a small group of friends and I the excuse to be online together almost every evening. The bulk of 2020 socializing has fallen right in December and we were loving it. Alas, it’s time effort gently shifted from friends and fun times back to growing my personal game library and the journey to become a truly independent game developer (this next one hopefully makes money).

I wasn’t idle in December on the creation front, I have some prototypes, tested theories, and settled on a clear direction where I’m headed (which was a ninety-degree turn from where I originally thought I was going before I relaxed my brain for the first time in the year). Game #3 I’m hoping will be much more accessible than Game #2 (numbered by intent to create thus now chronologically out of order) and I genuinely am shocked anything similar hasn’t been done before (I looked! In a lot of places, not just the first page of a google search!), I’m super excited to bring the idea to life.

Certainly more accessible than a whole bunch of text that then lets you pick an option out of small boxes of text, haha. Read Play Game, you were a joy to create, but I understand your financial unviability. It’s okay though, it served as a great launching-point for this grand new adventure. Learning, it can’t be converted to a direct ROI for an investor (and I don’t have to, ha!) and yet it is absolutely invaluable.

Due to several combined factors (including a decision months ago to stop purchasing alcohol – that stuff is expensive in BC) I’ve fairly dramatically expanded the time I can take to create games before falling back into a corporate environment to pay the bills. I’m going to use that advantage to not charge right ahead like I did with Read Play Game. Many decisions were made based on how to save time, like which GUI framework to use. Since then I’ve learned quite a lot, let’s continue with the GUI example: I own NGUI, and am familiar with it, so that’s what I used. Since then I’ve seen quite a few very handy and time-saving Unity Asset Store items that leverage Unity’s built-in GUI solution… and well, I’m kind of tired of not being able to take advantage of them. So perhaps I’ll make the switch, or maybe I’ll discover it was a huge mistake and run back to NGUI. Either way, I’ll have learned a thing, and I think that’s much more important than having something fully playable as fast as possible right now.

Speaking of the asset store, what a perfect time to be an independent developer. There are technical items I’ve seen senior developers take weeks to deliver (then more weeks to bug fix, then refactor because they weren’t happy with it, then bug fix…) that I can just straight up purchase for less than a skip-the-dishes order. They’re tested, have reviews, and are supported over time. There’s a whole freakin’ RTS Engine that I bought because why not?! (current dream: Next game can financially support my family and I can whimsically make an RTS with it, no profit all fun) Not to mention the art assets, things that not just save me time but give me something I couldn’t possibly create even if I had all the time. In combination with so much going open source, so many services having free tier options (like how I do Cloud Saving in Read Play Game), I really feel my options are quite broad to create something fairly complex/large in a reasonable timeframe.

My own personal optimism for 2021 comes from an excitement to create, and I can’t wait to see what comes out the other end of that process.

Not just released but it already has its first update!

Read Play Game is available on itch.io, and my entire experience with itch has been fantastic. If anyone reading this is ever considering working on a game to share with others I highly recommend it as a starting ground. I plan to migrate it over to Steam (complete with achievements!) but feel that can wait for the new year.

I’m enjoying that this means several things
– I can make games entirely from my own home by myself
– Those games can be supported (Demo and Full Version are two different projects on two different platforms and both received multiple updates, and will continue to get more!)
– I’ve identified a fantastic launching-pad platform for any new game
– Lessons learned in how to build for a browser playable WebGL game (or demo)
– Tech that I built for Read Play Game is already being reused in Game #2!

Ah yes, that final point, I’ve started Game #2! This game has slightly different goals, predominantly this is going to aim to be a source of revenue. I’m hoping to combine my experience with free-to-play game models with the freedom of not chronically chasing the demands of [insert executive or investor who is responsible for funding a full team] to design and build a monetary model that works for the game. A model where I offer ways to support the developer (me!) and family with tangible in-game rewards whose existence hopefully won’t detract from the experience for players who prefer to just enjoy things for free.

Compared to games I’ve worked on in the past I have incredibly humble financial goals. I would be ecstatic if next game alone paid the bills, and I do have contingency plans in place if that indeed does happen (games that have very low chance of recouping their costs, like Read Play Game, but are a joy to create and may have a small audience who has fun with them – like a full PvP RTS style game! I may have already purchased a Unity Asset explicitly to jump-start this potential)

…but Game #2 will not be an RTS. It will be built to be playable on mobile devices with a free download or potentially PC/Console platforms with a pay up front price that includes all “permanent upgrade” style purchases from mobile. This game has significantly higher scope than Read Play Game (it will take longer to make), but it will definitely be done before my savings drain entirely and I’m forced to rejoin the corporate world to pay the bills.

It’s exciting! As exciting as it is, I don’t see the value in sprinting right now to have something playable ASAP. It’s December and we’re almost a full year through a pandemic, I’ve put a ton of my energy towards Read Play Game over the last 5~ months. This last month of 2020 I’m hoping to relax, something I’ve learned can’t be forced but I find it helps to state my intent. Stave off that “you must always be productive!” guilt, and on that note, I hope everyone can find a way to relax before the big 2021 – I’m sure we all need it.