Tis been awhile since I’ve visited this online journal, that’s because I’ve had a full time job since the new year (which has been taking up waaaay more than full time hours ๐Ÿ˜… oh games industry)! Once an NDA’s involved all the neat and interesting things I look at on a day-to-day basis run into some problems sharing, so I’ve been quiet. Thus a journal update will not revolve around game development for the second time.

My partner has been plagued with health issues that we’d like to avoid exacerbating with a Covid infection, and in 2019 I had a nasty bout of pneumonia (to the point of being prescribed an inhaler for the first time in my life – also a fancy test in a hosptial to see if I had asthma after my symptoms cleared, no asthma here! whew) so I’m in no rush to be sick again, that experience was absolutely miserable. We’ve followed credible information around Covid since the start of the pandemic, particularly around transmission and how to keep that down. Thus far we’ve avoided any illnesses in the household! Legit, not a single sickness for over two and a half years! Until now.

Over the years my partner and I have evolved from dating and “living together” to a concrete family unit, both of us have children from past relationships and in my partners case there’s a Parenting Plan that regiments all sorts of fancy rules enforceable through the courts, as part of that plan the kidlets have week-long periods of ‘parenting time’ for vacations regimented and scheduled for the years to come. This last week was one of those weeks.

Good and the bad, a bitter sweet last week. Together with some friends Angel and I booked a nice, Covid-safe vacation together while the kids were with their father. I have pictures! It was lovely, friends agreed to bubble-up together (none of us spent any air-space time with any other humans up to 2 weeks prior to our vacation) so we could have a stress-free relaxing time at a lovely cabin next to a lake.

It was really the most relaxing, enjoyable vacation I’ve ever had. With one, small hitch: one of those Parenting Plan agreements is to have scheduled evening video calls with the ‘other parent’ and the kids each evening. Each day while at the cabin one of the little ones started showing symptoms that progressively got worse each call. Turns out they had a big family gathering where both Grandparents, an aunt and that aunt’s child were all coughing and sick. They were definitely coming home sick.

Welp, we’re sticking by one of our strong goals/values, that if Covid enters this house it ain’t leaving – we will not be party to continued transmission. An additional goal is to avoid gettin’ the adults sick, we’re unsure if our efforts will bear fruit there but after a trip to the hardware store I’m feeling pretty strong about the strategy! Angel turned their crafting skills over to creating Corsi Boxes to help keep the air clean, on top of that improved ventilation (combo corsi boxes, another HEPA air purifier and windows open 24/7) we have the largest space designated a masking space while bedrooms are occupant-maskless zones. Operation stop-transmission-cold is underway!

Speaking of that new job, here’s my new Covid-as-safe-as-can-be (with a likely active infection in the house – the little one showing the worst symptoms [fever and deep chest cough atm, can hear the phlegm] either has very sensitive sinuses at the moment or is incredibly anxious, but either way won’t let the rapid test swab further than just 1cm up the nostril – they’re already quite miserable so we’re not pushing the issue and are moving forward assuming Covid) work environment! ๐Ÿ™‚

Both kids have snack stations and various extra-special amenities in their rooms to enjoy mask-free, they eat their primary meals in there. For Angel and myself, our bedroom doesn’t have much space outside of the bed itself… so we opt for the other air-space-safer mask-free zone, the patio!

It’s only day 2 of our ‘new normal’ at home, so far too early to tell if our transmission mitigation efforts will yield success. Our plan is to keep it up for at least a week, certainly until symptoms have abated. Afterwards we’ll keep the ventilation and new corsi boxes goin’ and ditch the masks, because it is really quite inconvenient to not be able to sip a drink while workin’ or playing board games. That said, aside from the poor little one with the gnarly symptoms+fever, maskin’ at home hasn’t hindered us having a good time.

Thanks DJ Kidlet for the rockin’ good times dance party!

Game development is a space rich in creativity and ingenuity – after all, you get to imagine and create entire virtual worlds, the limits really are the imagination… provided you’re willing to negotiate with your idea and certain realities. Yes a “metaverse” sounds amazing but perhaps jamming a bunch of people in a networked high-graphic-fidelity environment opens up some unique challenges. Things to negotiate may include: variable regional network quality, availability for high-end equipment to draw those fantastic high-quality graphics, and rulesets to help curb bad faith behavior that would create a disproportionately bad time for users not exhibiting crumby behavior.

In my personal experience it’s very rare for big ideas to take into account these certain realities up-front. In fact, I’ve witnessed the exact opposite where reality is willfully denied, where on-the-ground workers (in games usually software engineers) who try to raise warning flags are told to “stop being a roadblock” or that they need to “be a better team player”. There’s options in this particular scenario!

  • Drink the kool-aid and also deny reality
    • most positively reinforced choice, improved chances of promotions
    • increases chance of project failure
  • Malicious compliance
    • enthusiasm of this route may be perceived as being a “team player”, a higher chance of positive reinforcement
    • added risk of someone seeing through the snark/sass and thinking you’re a jerk
    • potentially dramatically increased chances of project failure, encouraging aspects of the project to jump down rabbit holes
  • Bare minimum compliance
    • least amount of effort to keep getting paid
    • project suffers from “missed opportunities” – basically have a robot instead of a human at this point, providing exactly the expected outputs yet in the unique position to understand implementation details to know how to bring out special attention to detail which players tend to enjoy (but don’t really fit in a pitch document)

I’m sure that’s not an exhaustive list of options – after all, I was there when a Lead Designer walked off the job in protest of demands handed down. The trend is that in each case the project will suffer, the project is much more than just the idea.

I’ve discussed my own approach when in a leadership position and it’s centered on empowering the developer rather than providing them a detailed task lists. This means I release my hierarchy-granted “idea power” to others and the results have been overwhelmingly positive. This also helps distribute problem solving agency when a big idea may have particularly large challenges, ensuring the people doin’ the work are talking about these challenges rather than pretending they don’t exist – dramatically raising the chances someone on the ground with the power to tackle a particular challenge will be inspired to provide a concrete solution.

So here’s an idea

I was originally inspired to write an online journal entry (writin’ these things doesn’t come easy for me! need motivation) by a little idea I had while in the shower, rather than let it sit in the back of my mind or jot something quick down in my on personal private document storage… why not just post it in my journal? Could someone “steal” the idea? Sure, why not. I’m in no position right now to make it a reality, why not give someone else a shot (feeding the idea that more than myself or close loved ones reads these, ha). Heck, I don’t know what one year will look like from now, at this point I don’t know if I’ll ever be able to find the space and energy to execute on any of my ideas.

More importantly, an idea by itself may possibly live pristine in imagination, but reality will always shape how it’s experienced by anyone else. Did endless Match-3, MMO, Fortnight, or any other endless clone-feeling games ever take away from your joy of your original experience? Sure, you may already be bored of the general experience so the latest-new-thing (which is a safe derivative of another popular thing), but to me that situation sounds like a great opportunity to expand the horizons and see what else is out there! Anyway, ideas are cheap, final outcomes are complex and varied even when trying to be a copy/paste experience, and I do believe variety is the spice of life.

Let’s start with the most surface-level aspect of an idea, a label! What kind of name do I think would set the stage for this idea…

Emotional Beings

There it is, that’s what jumped out at me. Alright, the idea is rooted in Emotional Beings, how can I best nourish these roots and articulate the overall idea? More importantly, what can I do to get my idea across before I’m interrupted enough times and lose my motivation? These words don’t bring me revenue, and there’s something I need to do that does bring in revenue, so where’s the path of least resistance… aha, flagrant screen-snips of content found on the internet!

visual guide to human emotion
the general concept is an “Emotional Wheel” – this was the most legible one I found in less than a minute of searching, I found it on this website! https://www.visualcapitalist.com/a-visual-guide-to-human-emotion/

Alright, I now have some context that I can refer to while laying out my idea, the emotional wheel, a tool to help visualize labels we can put on feelings and how those labels can relate to one another. I’m just going to jump in and see if I can bullet-point summarize the idea with a name and one referenceable piece of context:

  • The player is a disembodied entity that doesn’t exist in physical reality
    • Can interact with the physical world in limited ways, imagine haunted house movies
    • Ability to interact with the world improves over time
  • Player forms a bond with a living being
    • Their ability to interact with the world may be tied to proximity of those things to the living being they’ve chosen to bond with
    • Being a big fan of choice I think it’s important the player chooses whom they bond with
    • Living Being is now a proper noun that’ll be referenced with the expectation that it’s the particular one a player has chosen
  • The Living Being is completely automated, run by a dynamic AI that is constantly reacting to their Emotional State
    • One goal here is to emphasize how feelings can start to feel very big, and when that occurs other feelings kind of get… smaller feeling in comparison
    • Like the Emotional Wheel, I think a visualization will be very important to help convey these concepts
      • Must be able to show a number of different Emotional Contexts (ex: something may happen that causes the Living Being to feel Amazement and Confusion, but that still shares space with Lonely and Irritable which was already sittin’ in there)
      • Real-time feedback to perspective also important, an idea that the lens of view for Emotional Contexts can shift, some strong feelings may still exist but we’ve temporarily focused on something else, so our Living Beings attention has shifted away from it
      • Yet, as time continues and circumstances change something may occur that snaps attention back to the big emotion that’s been hiding outside of perspective, conversely shifting attention away from other emotions that may have surfaced
  • The Living Being starts with very simple basic needs it’s having a hard time meeting
    • The Player needs to be able to “nudge” the Living Being towards fulfilling those needs (simple ex: hunger is causing them to feel very Scared, the player could search nearby cupboards for them and make a noise on the one with some food in it)
      • Perhaps through observation the Player finds the Living Being has food preferences, Scared in the example can be reduced by providing any old food but Joy may also erupt if you point them to a favorite
  • That’s it, that’s the last bullet point, it’s 2pm and dinner starts at 5pm and I need to swiftly transition to paid work

To me this paints a pretty clear path in my brain to get started if I were to create a whole game experience around this idea. These details are just what I used to try to articulate it though, they’re not set in stone, the goal is to just try and get the idea across – if it makes even a little bit of sense I’d happily consider expressing it a mission accomplished.

Now I have no intention of manifesting this idea in any way right now, it was really just a shower thought. If I felt I had the resources to create something with this idea, well that has a wide array of how that looks. I could try investing energy into creating a visual pitch document to try and secure investor money to pay people… ๐Ÿคข no I won’t be doing that. Thanks to > 15 years of making games and a wide variety of experience there I’m also in a unique position to create the entire thing myself, and I have options. Unity could help me create an intimate single-player experience, or I could pivot to Roblox as a platform for wacky and weird multiplayer interactions. In either case, I just don’t have the time/energy to even think of pursuing it further, so I’m alright with letting this paragraph be the final tombstone of this resting idea.

I started writing this online journal post to procrastinate solving a bug that only rears its head with multiple people playing in my Arena Defense Roblox project, not to discuss the bug or much around it really (after a shower mulling it over in the shower I’m pretty sure I know what’s going on and how to fix it), but rather to sort out my thoughts and observations about Roblox Development in general. While learning an entirely new engine (for me) that’s uniquely suited for online multiplayer experiences was suuuuuper exciting… I’m having a hard time finding a realistic Roblox path to a reliable source of revenue (aka: helpin’ pay them bills and rent). Things have changed in the Roblox environment since this post, contrasted with other things that didn’t change in a way I expected which may have given solo devs like me a little bit of an advantage.

Arena Defense

The project idea itself is pretty simple: a combat game where players defend against increasingly difficult waves of enemies, get defeated, rinse/repeat. Many years ago a small team of us (3 dedicated devs, a couple part-time helpers) put together The Last Stand for Dawn of War 2, as an homage to that fantastic time I used it as inspiration for the general theme. Added in a monetization route and simple drop in/out play more friendly to Roblox with rogue-like mechanics helping the simple core loop flow.

It also has some really cool elements, overall the polish level is quite low, I emphasized figuring out the difficulty of expressing game mechanics in Roblox over the polish/presentation of those mechanics – lots of rough edges in there that need smoothing (hint: unless I’m proven wrong about how this won’t help pay the bills them edges probably won’t receive the smoothing). ANYWAY the cool stuff!

  • Unique Tools (weapons really, ways to defeat enemies and progress with different styles)
    • Each tool has uniquely available upgrades/bonuses that can be chosen between successful waves
      • Bonus unique upgrades can be purchased/unlocked with GG Coins!
  • Fun/Silly enemies
    • I was testing enemies who were just basic geometry with my own image attached (Rolly!) when our resident 7yr old (at the time) asked if they could make an enemy
      • While the art was being constructed I quickly put together my own 2d art and experimented with how to present it with aFace
      • Resident 7yr old art complete! Combined it with my strategy found for aFace to create the Fire Cpirit
      • Seeing it live in the game sparked excitement from Mom! Mom put together art for EyeCU and Polka Dot
    • Took a unique AI approach with “Stacked” behavior which I haven’t tried before
      • I’ve built adaptable/modular AI before (The Last Stand AI was written by me in Lua, it was able to competently use any/all abilities a player may uniquely obtain through their choices during Wave 16’s Clone Wave)
      • This extends that mentality, not only is the AI extensible by adding or removing different behaviors (ex: ‘Movement’ or ‘Targeting’ or ‘Attacking’ or ‘Helping’) but those behaviors can be “Stacked” to temporarily change (or adding if that type of behavior didn’t exist) based on various circumstances
        • Ex: Equipping a tool may add a permanent ability type behavior (with its own conditions and evaluations when it’s best leveraged), while engaged that ability may change the movement behavior to something better fitting for the ability for the duration of that ability, when the ability is finished it’ll remove that unique movement behavior from the stack reverting to the previous one
  • Robux (real-money) purchasing flow
    • Okay this might not sound as cool as the above stuff BUT let me tell you that to make something purchasable for Robux I…
      • …didn’t have to run each individual item through 2+ departments
      • …didn’t spend more than a couple minutes for each item to enable purchase-with-Robux (instead of GG Coins)
        • from the moment the bonus is created and functional in the game it’s only minutes away from being added as a purchase – to contrast this, working with real-money transactions in even small companies requires several hoops to jump through even if you don’t consider the social/hierarchal hoops
      • …didn’t have to make considerations for multiple platforms! (no iOS, Android, Windows, or Steam integrations, if it’s available for Robux it’s available on every platform Roblox is available on)
    • That’s really about it – aside from the fact that this is a crucial step to converting the stuff I make to money that can pay my bills (so the fact I could streamline it down to minimal effort is actually really, really cool)
  • Reusable Roblox Systems!
    • Roblox may not be a path for payin’ the bills but it has great potential to make fun multiplayer experiences as a solo dev – if I find a sustainable way to get the bills paid I’d love to dedicate time to making fun unique things for Roblox
    • Sample of some completely reusable systems I ended up building: AI, Display Helpers, Asset Management, Inventory, Store/Merchant, Dynamic Gameplay Text, State-full and Stateless Progression, Dynamic Probability System, Choices (same principles as the core choice mechanic of Read Play Game! very generic, used by players to choose initial tool and bonuses), and Conditions
    • Handful of super handy utility bits that saved me a bunch of time

Aside from the things that can be experienced in the game I got to personally refine and improve some of my development skills – regardless of the tools, platform, or language, some skills are universal.

Next Steps

Right now I have guesses that the Roblox advertising ecosystem is far too competitive to get a reasonable return for my effort. Unlike social media platforms (like Twitter) Roblox doesn’t offer ROI predictions (ex: how much you spend vs. how many people will see vs. how many will click through), this lack of transparency is already eyebrow raising.

Aside from that, one of the advantages I saw as a solo developer on Roblox was that there was a massive marketplace of assets made by other developers, much of it made available freely. One of the other advantages I saw was that there seemed to be rampant copyright infringement which would likely start drawing attention of copyright holders now that Roblox is a multi-billion dollar ($38 billion USD according to google as of me writing this) publicly traded company.

…I tweeted out this snip the other day

worth noting Squid Game was *released* on Netflix September 17th 2021, it is currently October 26th 2021 – looking at the most popular games none of them are associated with or have a license from Netflix (the property owner)

So turns out I was completely wrong on the whole part where copyright holders would vigorously defend their works. I guess that’s just for EBay, Etsy, or small-time developers. Without action from copyright holders, assets for popular things get hyper propagated on that developer marketplace, this is colliding with entire studios of teams cranking out games heavily inspired by mobile monetization trends. Many of these games are asset swaps of previous games, this asset swap process kind of organically has the developers iterating on their core game experience as well creating a bit of a competitive snowball effect.

Basically, what originally looked like a very promising environment for small (or independent! like me!) developers has rapidly evolved via a snowball-like-effect where bids for advertising are heavily influenced by the current highest-earners on the platform or well-funded new studios.

My guesses could be wrong, so I’m going to find some validation for’em first. In my past professional experience one team I was on tested a theory: a pre-release game (in this case, ‘beta’) is less likely to convert free-play users to spenders, and that the ones converted are less likely to spend money. Seemed like a solid theory, why would people put trust into something that isn’t “complete”?

Welp, we were paradoxically wrong but also the success of our Retention, Average Revenue Per User, Average Revenue Per Paid User, and Life-Time Value metrics were attributed to the fact that it’s because “it’s in beta” and apparently users willing to participate in a beta will be more loyal. Or something. Doesn’t matter, that was the excuse why the project was canceled despite exceeding targeted Key Performance Indicators (above in bold) ยฏ\_(ใƒ„)_/ยฏ

Anyway. The point is we learn the most when we identify we can be wrong, so what are my next steps despite my guesses?

  • Change anything giving the impression it will be a ‘full game’
    • This could be true one day if I invest months of full-time development effort on it – but it’s not looking likely if my guesses are validated
    • I think it’s fair to call it a playable experiment, and if fun is had there’s still opportunities to support it with Robux purchases
  • See how far $40~ will take me with Roblox platform advertising
    • More money would provide more reliable data, but also my savings are dwindling and I’d like at least one more kick at this bucket, it would take orders of magnitude investment to get incrementally more accurate predictions to results from spending more money
    • There’s hints that could be found even with this minimal investment as to whether I should look at a next-step in advertising spending
  • Attempt to bring in organic players to the playable experiment
    • This is not my forte, in general all advertising streams are so integrated (including what seems organic, like through influencers) with… well integrated with everything, that spending floods out traditional ‘organic’ where (depending on our echo chambers) up to more than even half our interactions that seem organic are actually fueled by some kind of funded marketing or PR campaign
    • I’ll make the cost-less attempt though, found a subreddit community for Roblox that may be interested in trying a unique Roblox combat experience

Roblox provides Developers some basic metrics, I should be able to combine those with community interaction to see an impact from the above. Expectations are low given the incompleteness of the experience, but hey, any data is better than just assuming I’m correct. If I can get any traction on an experiment, or if that traction indicates enthusiasm, then perhaps my guesses will have been wrong and I’ll dive in and dedicate the time required. Otherwise, I think this experiment may simply end up being a positive learning experience while I pivot my energy back over to the project I put on hold to explore Roblox.

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 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 ๐Ÿ™‚