Tag Archives: gamedev

New Service: Godot Tool and Game Development

I’m pleased to announce that I’ve been able to get deep enough into Godot development at this point to feel comfortable offering development in the engine as part of my service profile.

Godot joins Unity and Unreal as well as bespoke development as a core Perfect Minute service offering. If you’ve got game development needs and want to use Godot for your engine, I’d love to have a chat!

Paint By Monsters DevLog 7 – Design Process Part 1 – High Level Design (So Far)

Paint By Monsters started life, as with many of my original designs, as an attempt to subvert aspects of an existing popular design. In this case, it was the Horde Survival/Bullet Heaven microgenre, which has exploded in popularity since Vampire Survivors appeared on the scene.

This type of game is an attractive prospect for a dev – mechanically simple, technically and artistically feasible for a reasonably skilled development team, and with a reasonably short development cycle. If I had any sense, probably, I might have been content to simply create a much more direct version of the experience myself. But.

Originality in Replication?

I often take a contrarian stance in some aspect of a new design (witness the small squad sizes in Contension or the worst-of-both-worlds combination of cards and tiles in Mechanisms). I often end up thinking about how to “reverse” a particular a genre. In this case, I was thinking about “reverse horde survival”.

The obvious first step, for me, was inverting the relationship of player and entities onscreen. In Horde Survival, you are one against many, so obviously in the reversal you play many against one. This eventually became many against few rather than one, since there’s still action economy to consider, but the core idea remains the same – the player uses a horde of relatively weak minions to fend off a small band of powerful invaders.

This idea, on its own, is the same basic formula as Dungeon Keeper and its ilk. That’s not a bad thing – Dungeon Keeper was a lot of fun, after all – but one thing dungeon defense games don’t do all that well is the kind of continuous action that horde survival has perfected.

So how could we channel that feeling of “action” if mostly you’re just spawning hordes of autonomous creatures? Feature Demo 0.0.1 took a look at the simplest version: spawning minions in realtime. Nothing fancy, just skeletons appearing whenever and wherever you hold the mouse button down.

The next few feature demos built on top of this foundation – 0.0.2 added a little agency to the enemy, 0.0.4 added a win condition, 0.0.3, 0.05, and 0.0.6 added new enemy and minion types. The “minimum viable loop”, such as it was, seemed complete. And it felt…not great.

Player Experience

I knew why it didn’t feel great. Even with a bunch of minion types to switch between, even with limited numbers of each minion type, even with adventurers carefully tuned so you could just barely beat them if you did a good job with the resources available…you were just moving the mouse around with the button down. It didn’t feel intentional.

That’s when I starting thinking ahead, thinking about what the Player Experience should be. Player Experience is something that gets talked about a lot more in board game design than in video game design, in my (limited) experience, but it’s important in both.

It’s not really about the core loop, though that loop will inform it. It’s not really about the theme, though the player will form impressions based on the theme that will affect their experience. It’s not even really about the action economy itself.

Player Experience, at its very core, is the answer to “What do I want the player to feel while playing this game?” For Paint By Monsters, as it turns out, the answer to that question is: I want them to feel like an artist who uses their art to stand up against tyranny, the same way many artists I admire around the world have done throughout the ages.

Until this point, mind, I had no idea that was any part of what the game was about. I thought I was trying a new take on something that’s kept me creatively engaged for years. I wrote a book a while back set in a world where music and magic were the same thing. I was spending hours in that world nearly every day for 2 years, and at some point, I realized that in that world any art form should invoke magic.

Paint By Monsters was playing some of those same notes, and I kind of thought it was going in the same direction. But reading a story where some folks use art as magic, and actually playing the role of one of those folks, as it turns out, feels different. There’s a lot that comes out of that, but the big thing was clarity on a few different pieces of design:

  1. The Adventurers (who til now I’d sometimes been calling Heroes) were antagonists. There’s an easy perspective switch to make here – anyone with a little history in their head can appreciate how the crown and its servants might sometimes have dealt unkindly with common folk and upstarts in centuries gone by.
  2. The player should really feel like an artist while they play. Thus was born the notion of The Artist, the character represented by the player themself, and the Studio, the room in which they make their final stand in each life.
  3. Along with the Artist came Brush Strokes, which eventually became the basis of Feature Demo 0.0.10. It feels very different to just continuously spray minions into the arena, trying to surround and confound the enemy, versus using quick, precise strokes. It feels intentional.

These, then, are the cornerstones of the game’s core gameplay loop. We call it Room Painting.

Each new room is a new chance to try to stop the Adventurers from getting closer to the Studio. In each room, you channel creative energy to paint minions into the scene, and somewhere in the ensuing chaos one side or the other emerges victorious.

There are a lot of fun bits and pieces that have emerged from this core concept, and I’m looking forward to talking about those in future articles, but the emergence of these three key ideas, and particularly the Brush Strokes mechanic, was the first time I felt like I was headed for a good understanding of the Player Experience.

Art, Artists, Art Directors, and Beast-Headed Men

Somewhere around this time, I started talking to artists. I eventually landed on the incomparable Curtis Rioux and his merry band at Stellar Boar Studios. At first we talked solely about the studio doing art for the game, but as I went through the application process for CMF, I realized that games have many kinds of design intermingling, and art was an area where I really didn’t have the right skills or sensibility.

Happily, Curtis does have such a sensibility, and furthermore, when I sat down with him to talk about his ideas as Art Director for the game, he was already moving at the speed of thought. He brought a bunch of medieval mythical creatures to my attention, the best of which we chose for our starting lineup. I can’t wait for him to tell you all about the process of bringing those to life.

This new input set fire to my brain. I’d had a vague notion of what the world map might look like before, but adding these unusual creatures to the mix, along with a bunch of HEMA nerdery (check out Tod’s Workshop and Shadiversity in particular), gave me a strong sense of the tone of the game. There’s a playfulness here that wasn’t immediately apparent with the generic royalty-free assets I’d been using initially.

How can you not laugh at this guy?
Why is he wearing a padlock as a jaw strap?

I recognized, looking at these strange artifacts of ancient imaginations, that we’d do well to hold our tongues in our cheeks now and then.

Take Me to Your Action Heroes Murder Hobos

Maybe because of that new sense of levity, I also recognized that the game feels a bit like an Action RPG, and also that dudes who just run around with swords are Bo Ring. We needed a little flavour. A little flare. A little Michael Bay, if you will.

At this point I’d already worked on 0.0.7 & 0.0.8 (heavily informed by the excellent upgrade system in Brotato) and 0.0.9 (Dungeon Keeper, obv), and those informed my ideas about where we might inject some Action Hero notes. I also drew these:

This isn’t actually how it will go, but it inspired something all the same.
An early concept showing the Dandy swinging on a chandelier like Errol Flynn. Somehow, despite the diagonal lines, I thought I was making “pixel art” with this.

Just messing around with these sketches let me think in more concrete terms about what kinds of action might matter – interacting with the environment (particularly the addons from 0.0.9), the room, and the Minion horde. And that set me down the path to thinking about archetypes and Murder Hobos.

Murder Hobos is an idea in tabletop RPG circles that the group of characters in a typical D&D game is sometimes indistinguishable from a band of drifter serial killers whose sole purpose in life is to destroy life and steal property.

These days a lot of RPG players recognize that maybe this isn’t the healthiest model within which to run a roleplaying game, but for Paint By Monsters it fits perfectly.

The Adventurers are, after all the antagonists. It’s fine if they’re despicable. Better than fine – it drives home that whole thing about opposing tyranny.

And if the Adventurers are the expression of tyranny, then the ultimate realization of that is the crown itself. I’d already been thinking about including a traditional roguelike world map (sometimes called an FTL map), and putting Studio and Castle in opposition to one another fit very neatly into that setup.

This became the second loop of the game, which we’re calling Gauntlet Building. The player adds rooms to their magical gauntlet, trying to head off incoming Adventurers, and each time an adventuring party finds a room, they invade the gauntlet in search of treasure and glory, kicking off another iteration of the inner (Room) Loop (the one with the painterly gameplay).

There are, as with everything else, lots of fine details that have spun off from these seeds, and we’ll tell you more about those as development proceeds.

Roguelike? More Like Roguetolerate

The final piece of our puzzle is meta-progression. Folks often say this was the real secret to Vampire Survivors’ success, and it’s hard to disagree. The game makes you feel like you’re adding stacks on stacks on stacks on NUCULAR WEPPONS.

This is the second place in the design where my inner contrarian raised his head. Most roguelike games keep the the meta-progression elements behind very simple interfaces. A few have played with expectations a bit, or used more traditional unlock systems where completing specific in-game goals will open up new and exciting possibilities. But we already had such an interesting, unique world taking shape that tacking on the merest mechanical necessities felt really unsatisfying.

I started thinking about Evil Overlords and the tropes around them. Think about the villains in Lord of the Rings or Wheel of Time, for example – a dark lord is defeated, an epoch passes, a dark lord rises once again, ad infinitum.

Epochs

As a word nerd, any chance to use the word “epoch” is a chance worth taking, and so we came up with the Epochal Loop. The Artist may not be a dark lord, but they do rise and fall in the same age-old cycle.

Curtis (remember Curtis?) suggested that maybe in these sections of the game, the player is travelling between worlds, exploring an infinite universe of possibilities, and I thought that was just the best thing, for lots of different reasons.

Among those reasons is how it explains why the world we’re on is always in roughly the same technological period. Sure, civilizations rise and fall, but these days folks like to say History doesn’t repeat, but it rhymes.

We could say the roguelike elements of a game like ours – procedural worlds and progression, unlocked pools of randomly awarded abilities, cycles within cycles – fit this idea, but on some level it just feels better to say that maybe The Artist’s very soul is attuned to the medieval, and so when, in their travels, they happen across worlds upon which the people are just getting around to forging steel and fight senseless battles that will nonetheless inspire great art, they feel drawn to those worlds.

At least, that’s the backstory.

In Paint By Monsters, we call the place where the soul goes seeking its next home the Spirit World, and we’re building some unique gameplay around it. It will be a dark, mysterious place that lets you move at a slower pace – a good place to reset your mind and stretch your legs – and we’re still working out some of the details, but we’re aiming for a distinct identity that feels rewarding on its own rather than feeling like the player is wasting time away from the “good parts” of the game.

And not for nothing, it fits nicely with the Perfect Minute Games ethos – we make short, beautiful games for smart, busy people.

If You’ve Read This Far, Thank You!

So that’s where we’re at as far as the high notes go. I’d like to talk sometime soon about the other end of the design process – the nitty-gritty details of planning each thing in a way that will lead to a reasonably well-defined end goal – but for now I’ll leave you with this teaser for our forthcoming art devlog.

Meet the Paint By Monsters Demo Full Cast!

Left to Right: Barber Surgeon, Dandy, JuggerKnight, Giovannia aka The Artist, Blemmyae, Nucklavee, and Monopod

Featured Image

19th century engraving of The Trusty Servant, from the 1579 painting by John Hoskins (public domain).

Bizdev for Gamedev is Not For Everyone

One of the things I took on when I started looking seriously at turning Perfect Minute Games into my full-time gig was an accelerator on-ramp program run by Genesis here in St. John’s.

VCs != Games

The program, which is called Evolution, is not new to me. I completed it a while back, along with another Genesis course, when I was focused on earlier iterations of PMG and some other ideas. Both courses were, at the time, aimed squarely at preparing pitch decks to present to VCs.

I had a problem with this approach in my previous encounters. VCs – particularly those in my neck of the woods – don’t really get into games all that much.

VCs like to bet on companies that will scale massively, for one thing. They make a lot of bets and pray one of them will grow their investment by 10x or better, paying for a whole cohort of failures. Game development doesn’t really scale like that, barring a few mega-dev/publishers (Zynga/Tencent, EA, a few other outliers).

They also like to bet on the company, not the project. Games are usually funded per-project, which is the way most creative work is funded. Ask any experienced grant writer how many times they’ve written a project proposal versus a company proposal, and you’re pretty likely to get a much bigger number for the former than the latter.

VCs also want company equity, and the number of game studios that actually develop a stock that’s worth owning is vanishingly small. Not to mention company equity usually means board seats, and hence some level of executive influence or even outright control. Very few VCs are equipped to exert non-destructive influence over a company making games, and that’s assuming they’re not the type of VC that will strip-mine the company for valuable IP and dump the carcass in an alley.

Now, Jason Della Rocca and Keith Katz did (do?) run a gamedev incubator of sorts , and there are a few other accelerator programs around the world that focus on game developers, but even there, the numbers are small, and the model is murky at best.

Seed Funding and Games

I recently decided to withdraw from the Evolution program. I realized that the problems I’d encountered in my previous run-through were still there, and that I was stressing myself out trying to balance the time demanded by the program – which are MUCH heavier than they were the last time around – against the time required to actually work on things that apply to a game development business.

It doesn’t help, of course, that every investor I’ve ever talked to about games has, to put it politely, laughed me out of their office. There is an overwhelming negative signal from such folks towards game developers trying to establish a studio. One of the problems with the Evolution program is how focused it is on exciting these folks, who are all but openly hostile to the business segment I’m in.

So how do we fund startup studios? There’s certainly lots of advice on the subject.

  • “Don’t quit your day job” is offered as a very literal prescription from all corners. This is, of course, good advice for individuals, but an astonishingly bad foundation for business development.
  • The omnipresent “Friends and Family Round” is commonly suggested. I sometimes wonder if this round works if and only if you come from a wealthy social background; certainly I know of very few people with friends or family who would invest more than a pittance into their business.
  • Folks outside of Canada often look at the CMF with envy, since it provides at least some kind of ab initio on-ramp for the budding developer. But even on a (bargain-basement-priced) $100,000 development budget, CMF still insists you come up with $25,000, and that’s not nothing.

I don’t want to suggest these problems are unique to game developers. But I do think they’re more imposing for us, as a rule. There are far fewer resources suited to the challenges of our business. Even those challenges that are otherwise generic – think building a working business model, analyzing market trends, making revenue predictions, establishing business relationships, and so on – don’t map cleanly to their game development incarnations.

Meanwhile, the dominant “traditional” modes of game funding – publishers and hardware incentive programs – fall outside the expertise of most business development resources. Even those resources focused on the tech sector as a whole don’t know enough about the game business to be helpful. They don’t adjust well to a business that operates, as mentioned previously, much more akin to arts funding.

There are resources that can help, though. The IGDA exists, for one, and there are mentors out there who will, for a reasonable fee, offer their hard-earned insights. There are half a dozen commercial market analytics services that can offer insight into how games make money. Some of them aren’t even crushingly expensive!

But it’s been my experience, thus far, that the average founder in this business is going to need to pick up bizdev in a hurry. So let’s talk about what to look for.

  1. Obviously, if you’re in Canada, look at the CMF programs. There are people who will laugh at this option or tell you this will cripple you, and hey, maybe they’re right. But these programs are incredibly generous when set next to the average investor or publisher contract.
  2. Look at your local business development options, particularly those more suited to brick and mortar. There are things you won’t necessarily know about – cheap accountants and lawyers, subsidized business consultants, business plan writing courses – that will help you develop as a business executive, and saving time, especially in the early stages, is critical, because you need all the time you can harness to develop a product.
  3. If you have access to low-interest credit products, you can self-fund. It’s a bad option, but you’ll get some return on it, maybe, someday. Think about how to bake that investment into your company, though. Get advice on the best approach.
    1. You can also sometimes access business funding programs by backing the debt with a personal guarantee. This is a bad option, too, because even if you incorporate you’re liable for these debts – but the interest rates may be low enough to make it better than other debt-funded options.
  4. Look for programs from large-scale business development agencies. They won’t all directly provide money with which you can pay yourself – the latter, in particular, is a rare beast indeed – but they can often provide other means to that end. Hiring a junior under a recent grad incentive may allow you to take on extra work, or get a product to market faster, or have a resource for a set of tasks you would otherwise need to handle yourself – marketing, hiring, design, the list is endless
  5. Build small games in quick succession, and get them out there. This serves many purposes, but for now let’s focus on two key ones:
    1. It provides some kind of revenue stream that can feed into the general operating coffers
    2. It provides proof of “traction”, which is a term business development folks like to use when they don’t want to say Show Me The Money, Jerry. Traction is essentially how you prove you know what you’re doing. And when it comes to traction, there’s just no substitute for products that are already earning revenue.
  6. Approach publishers early and often. There are a number of resources to help with this, including a big list maintained by the some of the folks behind the Indie Game Business channel, and a much smaller but more curated list from Beamable. There are also specialists out there in the world who offer their expertise in this area as a paid service, and there are lots of networking events that will accelerate the process (again, for. a fee).
  7. Look at companies servicing game developers like Beamable and Xsolla, as well as more general-purpose startup folks like F6S.
  8. Get whatever data you can from market insight services like VGInsights and data.ai. Some market insight services offer a very affordable price to indies, though these tend to also be limited in ways that can be quite inconvenient. Nonetheless, they’re sufficient to get started on building a business plan.
  9. You may be able to avail of specialty funding. Check out the city, state, and federal organizations for arts and technology. Look for project development grants, digital media tax credits, innovation funding, and SRED-like programs, just for a start. These aren’t just for the specialists! Ideally, games are such a tight mix of innovative technology and art that funding opportunities can be found on all sides. Of course, the cold truth is that many programs – foolishly, in my admittedly biased opinion – on both sides exclude games

I’m sure there are many, many other tools out there I’m missing, and I’d love to hear what you’re using. My goal isn’t to provide infallible expertise so much as it is to provide a starting point for someone who might find themself in my shoes. It can be grueling, and if you’re a dev as well as a bizdev, the time and effort required can leave you feeling stretched and exhausted.

But if we’re going to do this for a living, it’s critical work. I wish you luck.


Featured Image

Bangkok Road Confusion” by hc.saustrup is licensed under CC BY-NC-ND 2.0.

Paint By Monsters: DevLog 4 + Feature Video 0.0.10 – Brush Strokes!

I’m gonna talk about all the faffery in a minute, but if you want the TL;DR, I invite you to take a look at feature video 0.0.10 – Brush Strokes;

Why “Brush Strokes”, Cousin?

One of the folks in my local gamedev community, the incredible artist rsvpasap, asked me a while back what kind of “painting” there was in Paint By Monsters, and at the time I didn’t have any kind of sensible answer for them.

Well, now I do, at least in the first-proof-of-concept sense. The Brush Strokes feature was directly inspired by that conversation, and I hope Angie would be proud to have sent me down this road.

On Assets, Asset Markets, and General Faffery

I’ve been mostly buying assets for PBM from itch.io artists, but there’s only so much content you can find there. I’ve looked at a bunch of new spots, particularly ArtStation and the Unity Asset Store, and in the latter I happened across the Gesture Recognizer asset.

This asset, on its face, is exactly what I wanted for Brush Strokes – a clean, simple asset focused specifically on recognizing a range of gestures, with good editor integration and the ability to create new gestures without a lot of faffing about. So, you know. Good job Raphael Marques on that front.

Unfortunately, Gesture Recognizer has a few problems out of the box that make it less than ideal to work with as of this writing. Maybe the creator will update it sometime, but in the meantime let’s talk about how I approached the issues that I encountered.

Fixing Gesture Recognizer

The first problem – and really, this is as much an indictment of Unity as a vetting agent as it is of the asset creator – is that unless you’re starting with the example level included with Gesture Recognizer, creating a new Gesture and trying to fill in the ID field causes a whole boatload of exceptions to show up in the Console Log. These will lead you back to the GesturePatternEditor.OnInspectorGUI method, and in particular to this line of code:

var closedLineProp = gestures.GetArrayElementAtIndex(currentGestureIndex).FindPropertyRelative("closedLine");

There are two exceptionally unfortunate things about this line of code. The first is that nowhere does the editor code check to see whether currentGestureIndex is a valid index for the gestures array. The second is that it is only really required in a small subset of gestures, because closedLine is only a concern when you’re closing a gesture that contains a closed loop of some kind.

My solution to this issue was relatively simple. I put an if statement around the entire editor block containing this piece of code:

if (gestures.arraySize > 0)
{
    //do stuff, including the array access
}

This fixed the editor errors, at least for the cases I care about.

I ran into some issues with the OnRecognize event that the asset uses, but I can’t 100% rule out PEBKAC for those, so I’ll just state for the record that Dynamic Events are tricksy, and you should look for them at the very top of the event list for the handler object.

I don’t really want to admit how long it took me to find that entry, but…it was a long time.

The Other Problem With OnRecognize

The really tricky bit with this event, however, is that the parameter for the event, RecognitionResult, only includes the points from the recognized gesture. The asset seems to be focused on some kind of cleaned-up vector drawing use case, so I’m sure that works great in that circumstance where you’re doing the scaling and whatnot in another component (for the record, you probably need to inherit from DrawDetector to do that properly).

But if you’re more interested in the gestures themselves – place, size, all that kind of stuff, and if you want to keep things nice and centralized to boot – you’re going to want the points as measured at the time of input.

Now, I’m not proud of my solution to this one, but I will say that it serves the purpose, and that’s enough for the kind of rapid feature iteration I’m doing on PBM. What I did was this: I changed the array of points that define the input being examined – which is a member variable in the object that invokes OnRecognize (that is to say, DrawDetector) – from private to internal.

internal List<UILineRenderer> lines;

This lets me do the following in my event handler:

var cam = FindObjectOfType<Camera>();
var dd = transform.GetComponentInParent<DrawDetector>();
var lines = dd.data.lines;
var line = lines[lines.Count - 1];
var point1 = cam.ScreenToWorldPoint(line.points[0]);
var point2 = cam.ScreenToWorldPoint(line.points[line.points.Count - 1]);
Vector3 gestureVec = point2 - point1;
Vector3 gesturePos = ((point1 + point2) / 2.0f);

This works for basically any straight-ish line, and gives me the two primary things I care about:

  1. The position of the gesture in world space
  2. The orientation of the gesture in world space

I expect to have to do more complex analysis for future specializations, but these two vectors allowed me to specify

  1. Where my brush stroke effects appear
  2. How big they are
  3. What their orientation is.

Of course, then I had to figure out how particle system shapes work and how they interact with the Position, Rotation, and Scale of their host GameObject…but more on that next time.