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

1Basic Obstruction (player may obtain tools to pass)
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 🙂