Populating My World

Now, the setting for my campaign is a brand new island, but that doesn’t mean there won’t be people here. While it is true there won’t be any natives (at least as far as anyone is aware) plenty of people have an interest in this island. Some for a fresh start. Others to plunder the riches of the dungeons. Some for the mystery of this place. And a few have arrived to safeguard against the potential danger this place represents.

Primary Settlement

The first group my adventuring party is going to encounter is the primary settlement created by the adventures exploring this island. This settlement is split into two sections: the civilian flotilla and the adventure’s stronghold.

The Flotilla

The flotilla is a collection of ships and semi-permeant floating structures a few miles off shore. Viewed from the outside it looks like a small floating city, with almost all the accommodations you would expect from a well established settlement. Blacksmiths, eateries, tailor shops, housing, a town square, even a hospital all exist in this floating city. As for why the civilians live off the island, that’s simple. The Island is dangerous. Seemingly random beasts sometimes appear, and it is safer for the civilians to just not be in harm’s way. Not to mention easier for the adventures to drive off the beasts.

Adventure’s stronghold

The stronghold is the on land coastal settlement of the adventures. While it doesn’t have as many of the accommodations that the flotilla has, it is hardly bare bones. One giant bar services the adventures, with enough partitions that it functions as almost 5-7 bars. Several weapon and armor shops with gear from all over the multiverse. Many so called “general stores” with all the gear an adventure could want. And then you have the administration.

This is a stronghold after all, so those in charge had to fortify it. Several barracks line the impressive outer walls, with enough semi-retired adventures living in them to fight off several Dragons if it came to it. For those adventures not in the full time business of defending the settlement there are boarding houses randomly distributed throughout the settlement… At least they appear random, until you note the even distribution and a few other patterns that guarantee whatever threat the settlement faces: someone will be on scene quickly. Finally we have the administration of the entire settlement, flotilla and stronghold both.

Administration

The group primarily in charge of this settlement are “commonly” known as The Insatiable Scholars. This is a group I created for the backstory of an old character I once played. In short they believe Magic has no inherent morality, whether it be a firebolt, the magic to become an undead Lich that feeds on souls, or even healing magic. To them the magic itself is not good or evil, although the consequences of a given use may be. Along with this amoral stance is a generations long quest to learn all there is to know about magic. Understandably, an island connected to all the planes of existence, that seems to spontaneously create dungeons and magic items, presents an irresistible siren’s call to them. With their considerable resources, connections, and raw power they got themselves put in charge of the island’s exploration and investigation.

In game terms this means that the primary contact for my group is going to be a very powerful Wizard. This Wizard is going to be a bit absent minded and quirky, but have a bit more level headed wife to keep him on track. Both are very powerful, but so caught up in administrative work and keeping this place from falling apart that they can’t actually go and investigate as they wish. While they will provide the party with some support, they aren’t going to be able to wave their hands and make problems disappear for the party (the way a level 20 player might).

Everyone Else

This is getting a bit longer than I first thought, so I will give a quick round up of the other factions on the island at the start of the campaign. I may return to these and expand on them in a future post.

Goblins

Firstly there are at least 3 goblin tribes that disappeared into the Island’s interior and disappeared. Are they dead? Fractured into more tribes? Combined into one goblin empire? No one is quite sure. But it is known that at least some of them live on, as goblin raids and ambushes are not unheard of.

Creatures

Next up is the “local” fauna. Creatures from all over the multiverse appear to just… show up on the island. They struggle for dominance, some going extinct on the island before more creatures arrive to put everything into chaos again. Almost like the island itself is “borrowing” from other places to create a new ecosystem all its own.

Other Problems

It is speculated that some of the big boogeymen of the D&D world also have outposts on the island. Beings like the Mind Flayers, Cults dedicated to Dragons or Demons, covens of Necromancers or Vampires. Almost nothing is off the table. But by the same token almost nothing is yet written in stone.

Dragons (In my dungeons? more likely than you might think)

The last group I have decided will be part of the setting is a “lauth” of dragons. Long story short a “lauth” is a small group of dragons that have agreed to a common goal, becoming something close to a clan of dragons. These dragons need have nothing in common besides this singular goal, so traditionally good and evil dragons may align together.

In my case the lauth on this island will be comprised of several metallic, chromatic, and even gem dragons. No one is quite sure what their goal is, but tow things are certain. They seem to have the uncanny ability to know everything that is happening on the island at any given time. And they have made a habit of intercepting adventurers returning from a dungeon dive to take the magic item they retrieved. Curiously though, despite the dragon’s ability to simply overpower the adventurers and take what they want, they almost always offer a trade for the item in question.

Returning to Old Problems

As I started working on my game there were one or two things that I came across that I didn’t fully understand. Okay, there were a lot of those. But one or two I got to a “good enough” state and moved on. Well, that came to bite me in the ass recently. Specifically with the Canvas Scaler. Most of my game’s visual elements are UI objects, as such they scale to the camera to always be in a specified relative space on the screen. But how they scale is determined by a multitude of factors, starting with the Canvas Scaler.

I won’t get into the minutia of the Canvas Scaler here. But put simply you can choose to set a maximum size, minimum size, or a scaling style for the UI elements. Took me a while to decide what was best for my project, and I am liable to change it again. Before my recent dive into the Canvas Scaler, some objects would scale strangely and end up off screen. And then I figured out why… and it was dumb.

A common way to organize Unity project game assets is to group them under “empty game objects”. These objects are 1 dimensional points in space with no physics, but are useful for grouping objects to make the scene more manageable. They can also be used to apply a single transform (movement, scaling, rotation) to an entire group. I was using these empty game objects for both purposes. Making my scenes easier to manage and to move objects as a group. Unfortunately, UI elements and normal game objects don’t play nice together. And by grouping UI elements under an empty game object I disconnected their scaling from the Canvas Scaler. I needed a new solution.

Thankfully the solution was staring me in the face. I had already been moving UI elements independent of an empty game object, so I just needed to find a UI element that could stand in for one. And I did. It has a few kinks to work out (mostly from adopting it so late), but it shows promise.

Physical vs Digital Prototyping

Sometimes in design you can’t just jump in and see what works. And for me, that is a bit hard. When people are standing around deciding the “best” way to do something, arguing the merits without seeing the result, I will often just go and do the thing. That way we have something tangible to compare, change, and discuss rather than abstracts. So finding something where that approach is… counterproductive, is a bit like hitting my head on a low beam: startling, annoying, and gets my attention.

So if I can’t just jump in and mess with things, what do I need to do instead? Simply put: I need to make a “prototype”. By which I mean, I need to make a rough draft of what I want the final product to look like. And that leads to three possible ways of doing it.

First is the option I use most often, make a mock up in program. For my game projects that would mean either making a new scene or rearranging an existing scene in Unity. The big advantage is that this is like putting paint on canvas, if it works no further work is needed. The two big downsides are that it can take a lot of time and suffers a lot from “good enough” syndrome, where you have it in place so it is “good enough”.

Next up is to make a mock up outside of the development software. My first instinct would be to make a Power Point “presentation”. This would mostly be an artistic representation of the final product, sometimes with screenshots of the game itself. Upsides are that it is fairly easy to edit a “completed” idea and doing repetitive images is as simple as copy/paste. Downsides are that, again, it can take a while to get things in the positions you want them. And once you have invested that much effort you might say “good enough”.

Finally is the solution I was resistant to trying, but now embrace: paper prototyping. Simply put it is drawing out the ideas on paper. Even if it is just prototyping a part of the UI design, it is so much faster and cheaper to test things in paper. That is the primary advantage of paper prototyping: the speed of being able to try things. So long as you can put aside the idea of needing the prototype to “look good” and simply accept it as “functional” it works wonders. But on the downside, if you need to wow someone with the looks… this isn’t going to do it. But that isn’t the point anyway. The point of paper prototyping is to get lots of ideas out rapidly. Then you can see what works and what doesn’t.

To loop everything back to the start, and my method of “just try it and see if it works”. I think I have come around on the idea of paper prototyping actually fitting that idea. It isn’t just debating ideas, but seeing how they could work. And doing it much faster than most other methods.

Results of Feedback

So I got some feedback from my playtest build. Several bits of feedback where simple bug fixes or graphical mistakes that were easily fixed. But there was one big bit of feedback I didn’t expect: people didn’t know what to do with the game.

Now I had kind of seen this coming. Several times I started making a tutorial level, only to abandon it as the design left the tutorial behind. I figured if I needed it I would get back to it when I was sure of the rest of the design. Well… turns out I need something.

So a simple plan formed: basically make a slideshow explaining the mechanics of the game. Each game mode would have its own collection of images to describe how that mode functioned, and the player could advance through them at their own pace whenever they want. No forced tutorial or “Now you do the thing” hand holding. Know what your doing? Get straight to the puzzles. Want to figure it out yourself? Go for it. Need a hand figuring out the new mechanics? I got you covered. Completely lost? Simple explanation just a click/tap away.

When I was first making my tutorials I was doing “all the things”. Slowly introducing concepts and elements so as to not overwhelm. Showing patterns in the puzzle without going “Here: see this!” But in all that I forgot one of the first design principles I was ever taught: K.I.S.S. Keep It Simple Stupid. And that is what the new design is: simple and too the point.

Setting up for More Playtests

Last time I talked about feedback from playtests. But that is actually putting the cart before the horse a bit. Because obviously before getting feedback you have to have a playtest. And before you have a playtest you need a test build. And… well let’s pop the stack and start at the beginning.

First step in getting my game ready for playtesting was to remove the development objects. In short I have an object that keeps track of a bunch of data between scenes. This object gets created when you start the game, never unloading. But when testing my game during development I don’t want to navigate all the way through my game just to test a minor fix. So during development I just put that data holder object in all the scenes. There are a few times I have to remove it in order to test some things, but they are few and far between.

The next step was shoring up the “in progress” items. This time it was the settings tab in the main menu. I ended up removing a part of settings that I had thought might be a good idea, but latter developments had rendered unneeded/clunky/over complicated. This left me with a slap dash UI design, but everything is functional so good enough for testing.

After a few more last minute fixes/finishes It was time to make a build. This part was easily the most straight forward. Just click the button labeled “Build Game”, give it a name, and wait for it to finish. Installing it on the target platform was a little more involved, but only marginally so.

The biggest hiccup I encountered was attempting to install the game on one of the target devices. It was an older phone no longer in active use (no sim card) and just getting it set up was a bit of an ordeal. But then the real problem showed up. It just refused to install the game. So, bad news: the main device I was going to let people test the game on won’t work. Good news: I could install it on my main phone, and might be able to find another device to use.

Have ads… Now where to put them

So I have ads working in my game. But where do I put them? You might think this a simple thing. Until you yourself actually start designing something that needs ads and have to find the space and time for them. So lets go through the three types of ads and discuss where I might put them.

Firstly we have the most simple of the ad types: Banner Ads. They are very simple, a bar at the bottom of the screen displaying an ad. Somewhat like a billboard on the side of the road, but in a game. The simplicity of this ad spills over into the simplicity of where I will use it. Banner ads will appear in the game modes, but not on the main menu. Putting them on the main menu feels tacky somehow, but just passively having them sit at the bottom of the screen during play feels fine. Next up is an ad type that took some thought.

The next type of ads are called interstitial ads. These ads are full screen video style ads that can be skipped, usually after X seconds, much like ads you see at the start of YouTube videos. These are a bit harder to figure out as they need a real trigger to play, and I don’t really want them getting in the way of the play. What I settled on is having them play when you go from a game mode back to the main menu. That way they don’t interrupt play (as the player was interrupting play to change things up anyway), don’t pop up an annoying amount of the time, and can still be skipped. And now for the annoying one.

The final ad type is rewarded ads. These ads are very much like interstitial ads with two big differences. Firstly, these ads can’t be skipped, they play to completion every time. Second is that, as the name suggests, after the ad plays the player is supposed to be rewarded with something. But the big question for me was always: what could I possibly reward them with?

For a while I just thought I wouldn’t use them. Not like they are required right? But then I figured out something I could “reward” the player with: the hint system. I haven’t figured out the specifics yet, but a way it may work is that you start a session and want to unlock hints. So you watch the ad and get hints unlocked. The real questions are: Does this unlock ads for all modes this session? Does it unlock X hints? Hints for X levels? I still need to figure this all out… and then program it.

Out of Date Tutorials

One of the greatest strengths of my generation (and the following generations) is that, by and large, if we don’t know how to do something, we just look it up. The internet has put most skill sets a few searches and minutes or hours of research away. Don’t know how to format that file for your presentation? The internet can tell you. Don’t know how to make a resume? The internet has plenty of examples. Don’t know how to change the oil in your car? The internet has plenty of tutorial videos, probably even has one for your make and model.

So why do I bring this up? Because there are plenty of programming things that I have no idea how to do. And so I go look it up. And I usually find a way to do what I am trying to do. Or a way to do a similar thing that gets the job done. Along the way I usually find at least one thing I wasn’t looking for, I didn’t know, and could be very useful.

So, onto the point. I have been getting close to the finish of my game… and finding these last few steps the most annoying, mostly by virtue of going in blind. The step I am working on now is integrating adds into my game, so that I can hopefully make some money from this. But, as the title suggests, the first tutorial I found to do this was out of date. The tutorial was less than a year old, and at first it only looked like some cosmetic UI changes had been made in the process since the tutorial was made. But… once I got to the coding part of the process, everything started returning errors. That is when I knew something was wrong.

But As stated above, I just searched again. Quickly I learned that the tutorial I was using was for version 3 of the integration and the current version was 4.3. Understandably the process had changed significantly. But a new tutorial was quickly found, and the fundamentals were largely the same. It just used different tools to accomplish the same thing. Importantly the new version did allow for more control. However even the old tutorial was not a waste of time. As I learned a useful bit of programming to do something I didn’t know how to do (but which I knew must be possible). And, as with the old tutorial, the new also taught me something I didn’t know. But more importantly this new tutorial explained why it would be useful. After all, simply knowing something is no where near as useful as understanding it.

What should a game designer learn?

What should a game designer study?
Yes.
But what experiences are beneficially to my game design?
All of them.

This was one of the more memorable conversations that took place in my game design class. Student was asking what supplemental courses to take (art, programming, animation, history, etc.). The teacher’s response could be boiled down to this: There are no experiences that can’t be useful to a game designer. So, what does that mean?

There are two main aspects to this, experiences and skills. I will start with experiences. Any experience can be used to influence game design. Perhaps a scene from a movie you watched gave you an idea for that nagging mechanic you are trying to figure out. Maybe your experience extending your running range influences how you design level up mechanics. Or you could even design an entire game to get across the sense of peace you experienced when sitting on a hill on a sunny day and got a whiff of some flowers. A designer, of almost any kind, draws on their life experiences to inform their design. So the more experiences you have, the more paints you have in your design paint kit. But where do you get the brushes to apply that paint?

That is where the skills you pick up come in. The broader your skill set the more of a game you can influence. For a very simple example a programmer with some basic art skills can make temp assets without going to an artist every time. Similarly a UI designer with some programming experience can figure out what the programming flow might look like while they are making the design. In short if you can expect what the next step in design is the better you can prepare for it and possibly save everyone’s time. Or even (as I am doing) create something completely by yourself.

What I have heard this skill distribution referred to is a T skill distribution. Meaning you have a basic understanding of everything in the pipeline, maybe even enough skill to help out on occasion. BUT that you have one or two specialties. The broad “base” of the T vs its tall central pillar. In this way, no skill you learn is wasted in the design space. Even seemingly unrelated skills can surprise you when they come up and are invaluable.

Reviving Discarded Ideas

In game design it is an all too common thing to get an element 80% working, and then decide it doesn’t fit. Or perhaps it doesn’t mesh with who you are doing something else. Or you go in an entirely different direction. The point is that you will have many ideas that get left in the dust. Many might even be fully functional before you discard them. But how you discard them is important.

One piece of writing advice that has always stuck with me is to write the first draft. Then delete that draft and write it again. This stuck with me because I can see the logic of it, but it is so antithetical to how I do things. The logic is that now that you have done the thing it will be easier to do it again, but better this time. And it actually makes a lot of sense. But, a part of me is violently opposed to destroying my old work. If I ever try this piece of advice, instead of destroying the old work I would seal it away out of my reach.

Back to game design, I am a strong believer in making multiple “save states” of my work. These save states are snapshots of different points in development. Often when I make these I need to duplicate all the scripts and prefabs I use so that I can leave the old version alone and largely functional. But what does this have to do with reviving discarded ideas? Simply put, when I discard a piece of code I have written I very rarely delete it. Perhaps I comment it out. Or I leave it in an old version. Or I simply remove the script without changing it at all, just leaving it in a file somewhere for latter. What this means is that if I discard something. Then decide I need it after all later on. It’s always there, ready to be revived.

Eventually, I’m going to have a hell of a time cutting out all the extra files I don’t need in the final build. But in the mean time, I have the entire history of my design process at my fingertips. And that means that while an idea might be discarded, it isn’t gone.

Navigating the Web of Scripts

When I need to add a new feature to my game I need to code it in (Duh). But it isn’t always as simple as that makes it sound. Each scene is it’s own world and what I do in one scene does not always translate to another scene. No, if I want something to carry over I need to set it up special. Thankfully I long ago created an object that carries over between scenes, its entire purpose is to carry variables between scenes. But interacting with this object can get a bit weird at times.

One of the main reasons for this is that each time I load a scene my scripts have to go and find that object (Named dataHolder). And you might think this would be simple: “On start find thing” and it is… until it isn’t. You see I discovered something about the Start part of scripts. If you have more than one in a scene they all try to run at the same time. Doesn’t sound too bad, until Script B needs Script A to have set something up, but Script A hasn’t gotten there yet.

My solution? Have only one Start section in my “controller” script and have it access functions of the other scripts that run what their Start sections would have run. But how does this relate back to my dataHolder?

I needed a new variable for volume control, so obviously I would shove that in the dataHolder. But what would access it? Now the solution should be obvious to you, after all I just spent two paragraphs telling you why it is the solution. But my first instincts where to have the script that needed that variable go looking for it. But when that one variable turned into 2 or 3 variables and one needed to be translated from one form to another… not a viable solution. So shove it in the controller.

And I went to do that. And everything just seemed to work. Nice and simple, barely any programming involved. Makes me suspicious any time the solution is so easy. But this time I think it really was that easy. Because I put it in the right part of the interconnected web of scripts.