Archives for posts with tag: gamedesign

Good morning all, welcome to another edition of the Kana Quest devblog. Now last time I said we would have a blog written by the composers to talk about their process. As they are still working hard on making all the music right now we are going to postpone that one for an upcoming month. But is still happening.

And one more bit of news… Kana Quest will be coming to PAX Aus this year!!! So if you’ve been wanting to give the game a go, come on down, say hi, play the game, and find a handful of bugs as I freak out that there are still bugs in this thing. It shall be a swell time.

Now, onto this month’s topic…

Top 5 Dumbest Things That Theo Coded/Implemented Into Kana Quest.

So I was talking to my programmer Reuben this week and we got chatting about some of the frankly stupid things I’ve programmed since I started Kana Quest. And to be honest, most of these things are funny. So for the sake of entertainment, I am going to curate the finest pieces of coding idiocy my brain has produced. And hopefully this will explain to my relatives what I mean when I say that Game Designer is not a Programmer.

5. Stupid As Hell Names

So this one is relatively harmless on the “Theo, oh god what were you thinking” scale. It just meant that every now and again I would get a bewildered Reuben going “Theooooo, what does _______ do”. So lets look at some of the stupidest names for variables or function names that exist in Kana Quest shall we?

DumbCodingPart1

Because nothing says “Always give your variables descriptive names” like asdf.

I mean who hasn’t had been in a situation where they are too lazy to come up with a proper name for something. And this function is a pretty minor one so who cares riiight?

DumbCodingPart2

I mean at least this time the silly name explains what the script does… it moves shit… and it checks if shit has been moved. Simple. I can’t see any problems with the documentation here what so ever. Except for… you know… what is the actual shit is this script is moving.

DumbCodingPart3

This script is a completely different script from the last one

In a similar vein… “heyLookAtThisShitImHolding4U” is just flawlessly named. It perfectly sums up what the script does. It sits there holding level button data and doesn’t do anything else whatsoever. 10/10 flawless coding.

DumbCodingPart4

Unlike the previous scripts, if you got rid of this one you would get horrible visual glitches. Lot of pressure to place on monkeys, but they do the job.

Fun fact, if you have infinite monkeys sitting at infinite computers running Unity, they will eventually end up with an exact copy of Kana Quest. Really puts my coding ability into perspective.

DumbCodingPart5

And now we reach the pinnacle of both comedy and stupid names… Star Wars puns. 

The name here isn’t the funniest thing. Its the conversation with myself that happened afterwards in the comments. I forgot multiple times that I had written this stuff and each time I’d add another comment. I can’t really add any more on because I remember that I wrote all of this now, but its a fun little bit of stupidity. And it makes a good closing point on the category of dumb names.

4. The Hierarchy of the Parallax Objects.

So for those of you who have never used Unity or Unreal Engine. Every level (the technical name is a scene in Unity) has a hierarchy of all the objects within it. A normal person’s hierarchy might look something like this.DumbCodingPart6

See that window to the left? That’s this level’s hierarchy. Each object on that list is an object in the level. And if there is an arrow next to the object it means there are objects attached to it (the technical term is the object has children). This is what you are supposed to do. This way you don’t have to scroll down a massive list every time you want to change something. So you would think, that because I did it correctly here, in one of the levels, I would have done it consistently correctly across the whole game…

Ha no.

See in the level select screen, the background parallaxes. What that means is that the 2D images in the foreground move faster than the background images. This creates the illusion of depth. And it allows me to make pretty gifs like this.

World8-9Transition

So what does this have to do with the hierarchy? Well because of the silly way that I coded the parallax system. It can’t handle having objects having children like shown above. So now the level select scene’s hierarchy looks like this.DumbCodingPart7.gif

The eagle eyed amongst you can notice that there are some objects that do have children in this hierarchy. That’s because some objects are ok for me to give children, while there are others that is isn’t ok. The line is if I don’t want to be able to move the child objects with the parallaxer. Doesn’t excuse the stupidity of doing it this way but at least I get to turn it into that sweet #content.

3. The Way Movement of Kana Coded.

Hey Kids! Do you like repeating the same bit of very long complex code 4 times with with very small and minor variations that are very easy to miss? Then you would have LOVED the way I had originally coded Kana Movement. Unfortunately (fortunately) I can’t show you what this one looks like as Reuben mercifully has fixed it to function in a much better way.

See the problem was when I first coded the movement I didn’t know about all your highfalutin coding terms like *structs* and *enums*. So the way I tracked the direction the player was moving was with an integer value. And it would run four different versions of *THE SAME CODE* four different times just gated off with if statements to get the effect that I wanted. It worked, and according to Reuben my logic within that chunk of code wasn’t even that bad. But it did mean that it would take me 4 times as long to add in a new mechanic or edit the movement code as I had to repeat all the changes I made to one part of it an additional three times. One of the first things Reuben did when he got the job of programming was changing this.

DumbCodingPart8

What I should have done in the beginning

When Reuben finished cleaning this up, he was able to delete a whole 2000 lines of code. And adding in new mechanics became infinitely easier as a result. Good times.

*somewhere Reuben’s eye starts twitching*

2. All The undo Function Information.

On a running theme of not knowing how structs work when I made it the undo function. See there is only one thing more complicated that moving Kana in this game: Undoing Kana. See the problem is that when I first made the undo function I decided that rather than swapping the game objects back to their original positions I decided that I would just swap all the data held on the objects that got moved.

This was fine when there were no strange and unusual mechanics. But the moment I started adding new mechanics I had to start adding new variables to track if one of the objects was one of these new mechanics. This would have been ok… if I tied all those variables together under one struct, it would have been fine. Also for those who don’t know what a struct is. Basically you get to determine the boundaries of a new variable type. And because of this you can make an array or list of that new variable type. This is important is it would allow me when making the undo function to ensure that the many different undo variables don’t get out of position. But that’s not what I did. So instead we have a tangled mess of a metric fucktonne of different list variables that we just have to hope and prey don’t get out of position and work as they are supposed to. Reuben took one look at this script and just said “nope” and decided he wouldn’t refactor the system.

DumbCodingPart10

You can see Reuben’s opinion of this system in the comments up the top

DumbCodingPart9

And these are all the other variables being used to manage the undo function. 

And you might have noticed if you were paying attention, that there is a variable in there called “movementType”, with the comment “//0 is up, 1 is down, 2 is left, 3 is right”. That does mean exactly what you think it means. The issue that I told you about as the number 3 dumbest thing that I coded into Kana Quest… it is present in the undo function. And because the undo function is such a mess, it never got cleaned up.

DumbCodingPart11.gif

Everything is fine. Say it with me now, EVERYTHING IS FINE

 

1. The Animation System

And here we have, the biggest, baddest most horrible monstrosity my sick, twisted mind thought was a good idea at one point. The animation system. “Why is the animation system such a problem? Surely your game doesn’t use that many animations” I hear you ask. Well think again because if I have an opportunity to make something bloody hard for myself I am going to take that opportunity.

And it alllll comes back to the fact that I decided I wanted the Kana in Kana Quest to look like this.

 

See how cute the Kana are? What could possibly go wrong? Well it all comes down to the numbers of it all. See this game teaches you how to read Hiragana and Katakana right? Well there are 45 base Hiragana, and 45 base Katakana. So that means that I will need 90 animations to cover each Kana. And as long as I just load up the correct animator object that has the correct animation attached this will be fine. Riiiight?

Wrong, because I decided in all my infinite wisdom to attach EVERY SINGLE ANIMATION to the one animator object. But then I hear you ask, but it’s only 90 animations, surely that’s not too bad right?

WRONG

Before I said there are 45 base Hiragana and 45 base Katakana. There are ways to alter the sounds of Kana. For example き(ki)+や(ya)=きゃ(kya). There are an additional 21 animations for both Hiragana and Katakana for all the ways you can modify a Kana’s sound. So there are 132 animations.

But like a bad infomercial…

BUT

WAIT

THERE’S

MORE!!!

Because this is just for the normal Kana. There are Stone Kana, Ice Kana, and Ghost Kana that all have their own unique animations. There are an additional 132 animations for both Stone and Ice Kana. Which brings us up to 396 animations. There are 20 animations for all the Ghost Kana, so that brings us up to 416 animations, all attached to the one animator. There are a couple of other unique one off animations that I am excluding here for the sake of brevity, but suffice to say there are a lot of the fucking things. The end result is an animator window that looks like this.

DumbCodingPart12.gif

But, the best thing about all of this is that the version of Unity I am using is 3.1.6f. Which is long before they added a zoom function to the animator window. Which means I’m stuck panning manually like this if I need to edit, ANYTHING. And of course it also means that I can’t mass edit the transition logic. So Reuben and I have had to edit, EACH, AND, EVERY, ONE, by hand. Which leaves a lot of room for human error. Together we have probably spend a full working week of time, just editing and navigating around this thing.

Ah, fun times.

Wrapping Up

I hope this has been a fun look at my own stupidity and inexperience. We will be back next month for another Kana Quest devblog. Hopefully it will be with our composers but I’m sure I will be able to find something to talk about if they can’t do it next month either. Here are the relevant social medias for Kana Quest

And until next time, have a great month!

Advertisements

Hi all, another month and another Devblog is here.

Sorry it is a day late, but I was volunteering during the Australian Federal Election yesterday and did not have time to write a post. And on that topic, all I will say is I am deeply disappointed with the results for a myriad of reasons. You might be happy with the results and that’s fine, but know and respect that this was a big loss for the Australian game development scene. If the election had have swung the other way, Labor would have reintroduced the Interactive Games Fund. This would have provided the industry with an additional 25 million per year. Now, of course, we will survive. But I really hoped this could have been an opportunity to do more than just survive.

Now onto the main thrust of this month’s devblog. This has been a bit of a weird month for the development of Kana Quest because all the major things have more or less been done. So we are in the fix up phase of things. Lots of small little boring things. For example…

W6L15.png

Before

newLevel2

After

This was a pretty small change, and I don’t blame you if you missed it. In the darker worlds the text displaying the number of medals becomes unreadable. So I added a backing to the medal counter to stop this.

I also finally got round to making some sprites for the final mechanic in Kana Quest. KanaveyorBelts.gif

These are Kana-veyor belts, they move all Kana in a row or column along one spot. Up till now we have just been using place holder assets. Still haven’t fully implemented them yet. That’s Monday’s job.

Also found a whole bunch of very strange and niche bugs.SlimeAnimationBug

For example here if you go to slime a Kana, then pull back to the first frame of the animation, and then let go of the mouse. It will cause the slime Kana to break and be unusable.

IceNNandBinDontRegisterMove.gif

Or how about, if you have an Ice “n” Kana and you move it into a removal tile from an adjacent position you don’t use a move.

Ice+YaYuYoBug.gif

Reuben (Kana Quest’s lead programmer) has had fun the last few weeks squashing this bug. So the problem was that when you used a ya, yu, yo Slime Kana on an Ice Kana and then undid any subsequent moves, the Ice Kana would become whatever was the last Kana it moved with. The cause of this problem was being caused by the fact that we had not set up the Ice + Ya/Yu/Yo animations yet. See, all the Kana faces are handled by Unity’s animator system. And the animator will change the animation according to each tile object’s hiraganaNumber variable. This a variable that is stored on the back end so the player never sees it, but it is vital to the function of the game. But when you add the Slime Kana to an Ice Kana, this changes the hiraganaNumber . However because there was no animation that corresponding to the new hiraganaNumber the animator just says “I’ll just keep playing whatever animation I was playing last”. However because of another weird quirk of how Kana Quest has been built, when you undo a move, you aren’t actually moving the Kana to their original positions. You are swapping all the data being stored between the two Kana involved in the move. So for a brief moment, the Ice Kana would have the hiraganaNumber of whatever you moved it with. This is normally impossible to see, but because of this bug this causes the Kana to display the wrong image.

But I hear you ask, why did it take Reuben a few weeks to fix this up? Well the first thing is that Reuben only works on Kana Quest two days a week, and secondly is that whole animator system I glossed over earlier. See, because all the Kana are just different instances of the same object, each of them have over 300 different animations that could be playing at any given time. And each of those animations need to have the logic behind them properly added. This results in a job that is both time consuming and impossibly dull. Oh and because we are using an old version of Unity for this, we can’t zoom out of the animation tree. So poor Reuben was stuck looking at this monstrosity for hours.

fuckedAnimationTree.png

Also note that this image is from about a year ago. There are now more animation states. So lets all tip our cap to the incredible job Reuben did with enduring this system this month. Also I feel its important to clarify that the janky-ness of these systems are my fault not Reuben’s. As I made them well before he was involved in the project.

Ok, one last weird bug before I sign off for the week.TileSlideMidMoveBug.gif

So if you moved a Kana on or off of a Kana-veyor belt while it is moving itself, it caused the whole system to have a bit of a melt down. This gif here its pretty tame as it just causes the わ to appear where the blank Kana was at the start of the level when the undo button is pressed. But in other times when I was trying to replicate this bug I had multiple Kana going “nope” and just translating off the screen and then glitching in and out of view if you tried to move anything around them.

There have been a bunch of other small little changes that have been going, but most of them aren’t easy to show visually or are just exceedingly boring to write about. So I’m sorry if this month was a bit light on the ground. Next month however I will be in Japan for Bitsummit. Unfortunately I wont be exhibiting there, but I will be around. But the long and short of it, is that next month I think we will do a tour of the places that inspired a lot of the art in Kana Quest.

Until then, take care.

Hi all,

It’s the second Saturday of the month which means its time for a now Kana Quest Devblog! Last time I said we were going to unpack several choice levels from the game, and what makes them good levels. And that’s exactly what we are gonna do. So

Now if you’re new here, Kana Quest is a cross between dominoes and a match-3 game that teaches you to read Japanese. You match sounds between letters, and when all letters are connected the level is complete.

GoodLevel1.png

This is the fourth level in Kana Quest and is the first level that consistently stumps players. Up to this point levels have been made to get the player used to moving Kana around, and understanding that stone Kana can’t move. This is the first level that actually tests the player’s understanding of how Kana match. So, how is this achieved? It is achieved by asking the player two simple questions; “In what order do the three movable letters need to be in so they all match?” and “Now that I have the order of the three movable Kana, how do I position them so that the one stone Kana also matches?”. These might seem like very simple questions, but there are a few factors that make them a lot harder than you might suspect. The first thing is that, this is the first time the player has had to order 3 Kana. Second is that all of the Kana have been deliberately placed so that the player has no matches, this means they are effectively starting from scratch. Thirdly the number of potential configurations is way higher than all levels up to this point. Finally, because the stone Kana is placed in the centre of the board, it means there are a total of 4 different correct solutions. But it doesn’t guide the player to any of those solutions in of its self. This forces the player to pay attention to the sounds of each Kana, and use that information to solve the level. Not use the shape of the level to tell them the solution. This is not to say that using the shape of the level to guide the player is a bad thing. It usually is a great thing to do, especially for more complex levels. But the purpose of this level is to test the player’s understanding of how Kana match.

 

GoodLevel2

The next level I want to look at is the final level of world 3. So where the previous level was testing the players understanding of how kana match, this level is testing the players understanding of one directional kana. One directional kana, are a lot of fun to play with because of how the restrict the number of potential arrangements of the kana. This is useful because it can be used to signal to the player the shape of the solution.

This level is set up so that there are only 5 possible positions for each row that could be the correct position. This helps the player start with a very strong sense of how to solve the level. But there are two curve balls in this level. The first is the one normal Kana (の) at the top of the level. Because this kana could potentially go anywhere in the level, the player has figure out how to best utilise it. The second is the one directional す on the right of the level. This says to the player that one of the three rows to the left of it need to be all the way over to the right, but you need to figure out which it is. When these two elements are mixed with each other they create an ideal puzzle. A puzzle where the player has a strong idea of their goal, but they still have to work for it. One last small detail from this level that I like is the blank one directional kana. These serve to prevent the player from trying red herring solutions. Red herring solutions are fine to have, but each red herring still needs to lead the player towards the solution. If a red herring just leads the player down the wrong path and leaves them at a dead end, you need to get rid of it, as it will only aggravate your player.

 

GoodLevel3.png

So for the last level that I want to talk about today is from the ninth world. If the first is an example of a good introductory level, and the second was a good intermediate level. This is a good hard level. So what makes this a good hard level? Well, honestly the same thing that’s made the previous two good; You know what your goal is, but you don’t know how to get there. This level achieves this with the り in the centre of the level. Because it is central, and it cannot move because it is a stone kana, the first thing the player will do is look for the other kana that match with it. In this level there is the transform kana (the rainbow coloured one), the ice ろ, and the paralysis ひ. The paralysis ひ has to end up to the right of the り because it can only be moved once before turning to stone. This leaves three spots left for the ice ろ. This puts the player on a strong starting direction for the level. But the thing that makes this level so challenging is that because of how ice, paralysis and one direction kana work, if the player makes moves carelessly they will trap themselves and be unable to complete the level. Once again, the needed end state is easy to determine, but how to get there is the challenge. The only real difference between these three levels is that they make the “how to get there” part more complicated.

Anyway, that’s the Devblog for this month. Hope you enjoyed. I’ll be back next month on the second Saturday of the month. I haven’t figured out what the topic is gonna be, but ill figure something out. Until then, take care!

Hi all, its another month and that means its time for another Kana Quest DevBlog!!

Like last month I have just been working on levels. But the big difference between this month and last month is that I am now SO CLOSE to finishing all the levels in the game! There are 13 worlds in a Kana Quest, I have finished making levels for 11/13, and the 12th world is more than two thirds complete. So we are in the home stretch here folks.

At this point I have had a chance to work with all the mechanics in the game and I thought it would be fun to talk about each in depth about the positive and negative elements of each.

mystery

And oh how the mighty have fallen. This is a Mystery Kana, and they were the first mechanic I made for Kana Quest, and I was so proud of it at the time. And I still think its a valuable thing to have in the game, but the more I used it the more utterly irritated I got when I play-tested any level with them in it. So why did I make them? Why are they important? And why are they so irritating? So I made Mystery Kana because I was having a very specific problem, players weren’t flipping over the Kana to learn the pronunciation to complete the levels in the first world. This is problematic because it would render the entire function of Kana Quest meaningless. So I needed a way to effectively force the player to look at them. Mystery Kana do that very well. They just also irritate the player at the same time. The way these things work is they cannot move, but can match. The player needs to keep track of what each Mystery Kana, does and does not match with. Then using that information, figuring out what the Kana’s true identity is. The biggest problem with Mystery Kana is they just simply break the flow of the game and force you make non optimal moves to figure them out, and then you can complete the level. The end result is they start to become a nuisance after a while, and its for this reason they get phased out after world 4.

OneD

The One Directional Kana have been a solid work horse throughout development. There are so many things about this mechanic that are excellent from a designer’s perspective. 1st is they are easy to understand from a player’s perspective. The arrow shows you what they do; they only move in one direction. 2nd is they have a huge amount of design space. Design Space is a design term for talking about how many different interesting configurations a mechanic can be used in. And these Kana allow for so many interesting levels to be made. I am still finding new and interesting ways to use these things even in the 12th world. They are also very flexible in how they can be used. If you want to build an entire level around them, you can and it will probably be a really fun level. But you can also just throw one of these into a level to help guide the player towards the solution. I suspect once I have finished making levels, and I’m in the polishing stage I will end up adding a lot of One Directional Kana for this exact reason. What’s more is they also have interesting interactions with basically every other mechanic. The only complaint I have against them is they can be very punishing of mistakes. The reason for this is if you move one spot too far and then make a bunch of other moves, you end up spamming the undo button more than is ideal.

IceDemo

The fourth world’s mechanic is the Ice Kana. These Kana will keep sliding in the direction you move them until they make an invalid move. These Kana are a good mechanic, but no where near as easy to work with as the One Directional Kana. They have a large amount of design space, they have interesting interactions with most other mechanics, and they can make some very fun levels. But the problem is that you can’t just through one of these into a level. Even if the Ice Kana is supposed to be a minor element to a level, you have to build the entire level around the Ice Kana to accommodate it.  This is not a bad thing as it allows you to create a nice change of pace for the player at points, its just something that needs to be treated with care. Another small problem is they tend to demand levels be a fair bit larger than a similar level without them would be. Other than that, I think Ice Kana are great.

SlimeKana

The Slime Kana are another mechanic in a similar vein of the Mystery Kana as they both play around the sound matching aspect of the game. And so what they do is they will change the vowel sound of any kana you use them with. However unlike the Mystery Kana, these do not get highly irritating after a while. The main reason for this is that they often feel like they are helping you, rather than getting in your way. And because of this is they can just be plugged into a bunch of levels to add a little bit extra. But the biggest weakness of them is that they struggle being the core element of a level. Where the Ice Kana can’t help but be a diva, the Slime Kana struggle with it. Another problem with the Slime Kana is that because the Kana that appear on them can only be Slime Kana it does mean that the Kana on them just get seen less than every other Kana. But the gameplay of them is still solid enough that I made two variants of them.

 

GhostKana

This is a Ghost Kana. Ghost Kana, cannot move and cannot match. But they will come back from the dead once the player has made a group of Kana equal or greater than the number on their head. This is a tricky mechanic. And honestly they represent the biggest disparity between what its like to work with them, compared to what its like to play with them. Because playing with them is honestly pretty good. They make interesting scenarios, and force you to think about the level in a different way. But from a designer’s perspective these things are so hard to work with. You have to engineer levels so carefully around these to make them fun for the player. They have very limited amounts of design space too, so I honestly struggled to finish the world where these were introduced. And what’s worse there are some mechanics that this straight up does not work with.

YaSlimeKana

So this is the first of two Slime Kana variants. This is a Blue Slime Kana. Blue Slime Kana are different because they only ever attach to Kana that end with an “i” sound… and they add an additional vowel to match with rather than completely changing the vowel. This is because of an actual function in Japanese. See Blue Slimes can only have the following letters や/ゆ/よ. And these letters can attach to other letters to make slurred sounds. For example き(ki)+や(ya) = きゃ(kya). So きゃ will match with “i” ending kana, “a” ending kana and “k” starting kana. This makes the mechanic quite satisfying for the player to use because it opens more doors for them than regular Slime Kana do. And its for this reason that they can be a bit frustrating to design around as a game designer. Another problem with them is they have to attach to a kana that ends with an “i”. This over the course of the game makes “i” ending kana being over represented in comparison to other kana. Whats more is that often you have to design levels in which fully utilise the multiple vowel sounds. But this often leads to further exacerbating the over represented “i” problem. But other than these issues, these kana have all the strengths of regular slime kana. And they allow me to illustrate an important part of reading Japanese.

Paralysis These are the Paralysis Kana. They can be moved once… but after that they turn to stone and cannot be moved. These are probably my second most useful mechanic, just after One Directional Kana. They allow for interesting level design, and they have a good amount of design space to them. Not quite as much as One Directional Kana, but still a large amount. They are also very easy to understand what they do. And they can be the focus of a level, or be used as a back up element. The biggest problem that they have though is they have a hard cap on how difficult they can make a level. This isn’t a bad thing as it does mean it’s basically impossible to make a level that is too difficult with these but it does make them a bit more restrictive as one might like in later levels.

Transform

Transform Kana are pretty straight forward. Then can become any Kana, but they can only be one Kana at a time. This mechanic probably has the least frills of any of my mechanics, and you what that’s ok. It works just fine. They ask a simple question of the player, and that question is “where am I needed, and what do I need to be?”. So the trick to designing around these Kana is making sure there is a spot that can only be connected with a Transform Kana. Which is fine as long as one is careful with the other Kana that are used within the level. If you aren’t careful the player will just plop the transform kana anywhere and not have to think at all. They also suffer the same problem that Slime Kana face in that they struggle to be the focus of a level, but they do slot into lots of levels pretty easily.

MaruKana

Here is the final Slime Kana variant. And this is yet another instance of me basing a mechanic off an actual function in Japanese. There are small added strokes called “tenten” and “maru” for Hirgana and Katakana. These will change the consonant of the letter they are attached to. In the game this often is something that is a disadvantage, not an advantage like the other two Slime Kana. Because of this you cannot finish a level if there are any Purple Slime Kana left in play. This forces the player to find the part of the level that can accommodate losing its consonant sound. Basically everything that applies to the first two applies to this one.

  DickheadKana

This is an “n”. Because they don’t share a consonant or a vowel with any other Kana they cannot match like a normal Kana. So I decided to make them the Unfriendly Kana that all other Kana hate. So for as long as an “n” is in the level, you cannot complete it. So how do you get rid of an “n”? You dump them into a rubbish bin. Which looks like this.

Bin

Once an “n” is moved into a rubbish bin both are removed from play, and the spots they occupied become empty spaces on the board. This mechanic requires a fair bit of set up to get working, but once you set up a level to accommodate them its a solid mechanic that has a solid amount of design space. One unique problem with this mechanic is using effectively uses up twice the amount of space that a regular Kana would. Because of this levels with this mechanic tend to look very cluttered and can be a bit difficult to process. Outside these problems they are a solid mechanic that just needs a bit of preparation to make work.

 

Finally we have Kana Sliders. The art for these is still under way, but what these do is they move every Kana in a row or column down one spot as long as there is an empty spot on the board in that direction. This is a very easy mechanic to design around and offers a lot of design space that had not been available for me for most of the game. Because Kana Sliders care about empty space, it allows them to interact with Slime Kana and Unfriendly Kana that no other mechanic has been able to do so far. The biggest problem with them however is they tend to make levels with ridiculous amount of moves required to complete them. There are levels that require more than 70 moves to complete with this mechanic. This can be problematic especially if the player makes a mistake early on as they will be punished especially hard for that error. Other than that issue, I love working with Kana Sliders.

And with that this weeks Kana Quest Devblog comes to a close. Next time I think I’ll pick out a handful of choice levels, analyse them, talk about how I made them, and talk about why I think they are special.

First thing’s first, I know I missed the January devblog. I’m sorry it wont happen again. But… it’s here now, and it’s a new year, which means this is the first devblog for 2019! This is going to be a big year for Kana Quest as this is the year we are going to release! Knowing the end is in sight is a strange feeling as I’ve been working on Kana Quest for the last two years of my life. But I hope you all will be there with me as we run headlong down this final stretch!

So what does this “final stretch” look like in terms of development? Well for me personally that means making all the levels. I had spent most of 2018 finishing the art and making all the visual assets, but in terms of gameplay, very little was being made. But now that I’ve finished all the visual assets and Reuben my programmer has finished programming in each mechanic, I am able to churn out levels very quickly. How quickly is that? Well since last month’s devblog, world 5, 6, and 7 now have all their levels made. Of course these levels still need play testing before they are 100% good to go, but they are playable, and reasonably balanced.

So, seeing as levels are all I have been doing this past month, I’m gonna tell you how I have been making them. And some of the weird things I have to pay attention to when I’m making levels.

The first thing I do when I start making a level is I figure out, how hard I want this level to be, and what kana I want the player to see.

flowchannel

Sorry if this is a bit too game design 101 here buuut… This is the flow channel. Flow is that feeling where you are in the zone. But getting the player into the zone requires very careful balance from the game designer. So something I’m sure you will notice when you play Kana Quest is that every three to five levels will build in difficulty, only to drop back a bit and then continue ramping up in difficulty.  The reason you do this, is that it’s just more fun for the player.

In Kana Quest there are a few different ways you can control the difficulty of any given level. They are:

  • The amount of Kana in a level
  • Size of the level.
  • Potential board state permutations
  • Number of potential solutions
  • Complexity of solution.

So lets go through each of them. And first up is the amount of Kana. So in my experience, you have a hard cap of about 14 -16 different Kana in a level. Why is this? This is because past this number, there is too much information for the player to comprehend. And personally, even I can’t process levels with this many Kana. It’s also a difficulty that isn’t a lot of fun for the player. Solving the puzzles is fun, recognising kana… not so much.

The size of the level like the amount of kana, also has a hard cap. This time its not so much about overwhelming the player though. The largest you can make a level in Kana Quest is 7×4. This is simply because if you make the level any bigger, it will not fit on the screen. I know that sounds silly, but due to the way pixel art works, there is no easy way to just “zoom out” without also causing a lot of pixels to bunch and stretch. But honestly, most of the time this is plenty to work with. If you are smart about how you construct things this is not actually as bigger constraint as one might think it is.

What I mean by “potential board state permutations” is how many possible unique configurations can be made in any given level. So for example.

These two levels have the same kana, and the same starting positions but the first level is significantly easier than the second because the number of possible configurations of kana has been significantly reduced. Forgive me if my maths is wrong but the level on the left has only 120 unique board positions, whereas the level on the right has 362880 unique board positions. And while an advanced player can see through all the unnecessary information in the second level, it doesn’t actually make the puzzle any more fun for the advanced player because in both scenarios, the solution only requires two moves. So while you are giving advanced players a disappointing level, you are giving new players a level that is so information dense they will almost always solve the level by brute forcing the solution. What I’m trying to convey here is that when designing puzzles you need to control the amount of possible states so that you can guide the player to the solution. Now for more advanced levels its fine to offer levels that are more open ended, but you do need to be very sparing with how you do so.

Next up is the number of potential solutions. This category is a tricky one as personally I feel as though levels with multiple solutions make the level harder, not easier. Why you might ask? Well because it means that your players are less guided towards the optimal solution. It means they are more likely to get caught on unintentional red herrings. It also means that if the player wants to get a gold medal for a level, but they have only ever completed the level using an alternate solution that is more move intensive than the planned solution, they could spend way too long trying variations on the “wrong” solution. Really this is a side effect of having too many potential board state permutations, but every now and again its fun to have levels that offer multiple answers. Lots of levels in Kana Quest only have one solution, and lots of levels have multiple, the important thing is using this technique intentionally.

The final technique that I can use to control the difficulty for the player is probably the most important one. And that is complexity of solution. If the solution only requires two or three moves, its not a particularly complex solution. This usually means that the level isn’t super difficult. However, completion critical moves increase the complexity. A completion critical move is a move that if not made, the level cannot be completed.  Of coarse this can then be balanced with previous techniques. For example.example3

This is a level from world 1. And is in my opinion one of the best levels in that world. This has a very low complexity of solution, but in contrast to the all the levels before it, it has a slightly higher difficulty. But that difficulty comes from a larger number of potential configurations, multiple solutions, and a larger level size. The result is a level that isn’t too difficult, but does force the player to stop and think about the solution. But as the game ramps up in difficulty, ramping up the complexity of the solution is usually the safest way of doing so. Why is that? Well, it means you can control the amount of information you throw at the player to a far greater extent. Remember, you don’t want to overload the player with information, if they do they just start brute forcing the puzzles and have a bad time.  So an example of a good level made by giving the player a complex solution is this level.examplesolution

The reason this level is good is because it requires a good amount of moves to complete, and there are only two completion critical moves required (using the Slime Kana on the correct Kana), and those moves can be executed by the player at any point. Whereas, here is a level that has gone way too far on the complexity of solution.example3

This level is way too hard and is to date the most difficult level I have made. And the reason is, that every singe move in this level is a completion critical move that requires being done in the exact right order. If you make one wrong move, you cannot complete this level. The fact that this level has a relatively constrained number of possible configurations is its only saving grace. And I wouldn’t be surprised if I remove, or rework this level before the launch of the game.

I think the real take away from this blog if you are making, or thinking of making your own game is; What are the different vectors for making a game difficult? Are there enough? Are there too many? What are the implications of using one of those vectors? What are the implications of using multiple of those vectors at once? How far can one push any and all of those vectors before a game becomes impossible? And most importantly, at any point in a game, what vectors of difficulty does the situation call for?

Anyway, these are the things that I’ve been thinking about for the last month or so. I’ll see you next month. If you have any questions about game difficulty or you disagree and you want to start a discussion, feel free to leave me a comment and we can have a chat. Until next month, take care.

Hi all! Welcome to the DevBlog for Kana Quest, where I document what I’ve been working for the week, and what I’ve learned along the way.

This week I did something I’ve never really had to do for Kana Quest before, and that is draw people in pixel art using very limited amounts of pixels. So this week we will go through the things I made and what the process for doing so was.

But firstly let me give you some context on what I’m making this for. So each world in Kana Quest has its own unique layered background art that repeats so that I can make use of parallaxing. I’m currently working on world 8 which is a homage to John Brack’s 5pm Collins St.

This slideshow requires JavaScript.

You can see in the original there are two rows of people. I’ve finished the first one, and am up to the second. And this is where this weeks topic comes in. See the people in the second row are going to be much smaller than the ones on the foreground and thus I have way less pixels to work with.

 Each of these people range from 21-39 pixels wide and 61 – 88 pixels tall. In other words they are all way smaller than any of the people at the front. Quick heads up, I’m not going to go over how I arrived at my pallet for these people. I’m going to focus on the drawing aspect for this week.

So where did I start with these? Well I started each with an idea of what the person should look like at the end. I know this sounds silly but just having an idea of what you want them to look like will help. I also made a conscious effort to make sure they would all look different from each other. But once I had an idea of what I wanted I would start with the head.

w8PersonHead

I wouldn’t go for anything super detailed, just a roughly head shaped blob. Then I would figure out what shape the head should be using what I was planning and using reference photos. Always use reference photos, if you are anything like me and have the imagination of a gold fish they will be your best friend. For this blog we are going make a caricature that you will probably recognise from sailor moon: the nerdy schoolboy with massive glasses.

neeeeeerd

Gurio Umino from Sailor Moon

For this character, I figured he would have a pretty large and round head. Which also helped create room for his big glasses. I also gave him a bowl cut to make his head even more ball like. Something that I noticed very quickly making these characters is when you have this few pixels shape is really important. You have to express as much as you can from the rough shape of things. This is why I chose glasses boy here as the example for this blog.

w8PersonHead

Once I had the rough shapes blocked out (the face, hair and glasses) it was just a matter of shading everything to give him depth. Now I am not using hard outlines for these people. You are free to do that for your own pixel art if you like, I’m opting not to because it is not in style for Kana Quest. Another thing to pay attention to while shading is to use your shading to imply shape and texture. For example on the glasses I use shading to show how thick and bulky they are. I also use skin shading to show the curvature of his face.

But of course this is just the face. As I said before, for each of these characters I started with the head and worked my way down. The reason I did this is because by starting with the face I can get a good sense of what sort of personality I want to depict. In the case of this one, I wanted him to be pretty stiff and awkward looking. I also wanted him in the classic Japanese School uniform winter blazer. So what I did is I created a basic shape of his body; in this case a rigid rectangle. Then I placed where the hands and feet would go. It’s always easier to place where you want the hands and feet to be and work back towards the body than the other way round. In this instance the hands and feet were just straight next to his body, so it would have been pretty simple either way. Then I drew in the outline of his blazer and finished with shading. Once again keeping in mind that we need to use shading to help the viewer infer what the shape of everything is.

w8PersonBody

And there we have it! A finished person. Now if you excuse me I have another five of these things to make before I can finish making this world.

Anyway I hope you’ve enjoyed this week’s devblog. I unfortunately wont be uploading a devblog next week as I will be exhibiting Kana Quest at this year’s Animaga in Melbourne. If you are coming, please come find me at in the indie game section, say hello and give the game a shot! But until next time, take care and have a great week!

Hi all, this week I finished illustrating the art for World 7 in Kana Quest. And I’m pretty pleased with the end result. So I thought I would go through each of the “work in progress” images and talk about the things I did.

World7Wip

So here we have stage one. I wanted this world to be based around yellows and reds but then balancing it with light blues as the contrast colours. I also try to centre each world around something different, and I hadn’t done Japanese shops yet so I started with the central theme of the world from there. A couple of small details I put in here is the convenience store says Konbi 2. The word for 2 in Japanese is “ni” and “konbi” doesn’t actually mean anything. But if you add them together to make “konbini”, you get the word for convenience store. And on the billboard above, it says “Wayward Strand Coming 2019”, along with a QR Code to their website. I’m putting in a reference to this game because the Art Director (Goldie Bartlett @GhostTownGoldie) helped me out a bunch when I first started working on Kana Quest, and I wanted to acknowledge the help she gave me beyond the credits. The final little detail here is the drive through restaurant is called Zukina and is blatantly ripping off Sukiya a popular Donburi chain in Japan.

 

World7Wip2

Here’s the next stage. The biggest change here is the massive change of the colour pallet. I mentioned earlier that I wanted to have the yellows and blues contrasting, but the yellows I was previously using were too green, and thus they ended being complimentary with the blue. So I redid the pallet, grounding the shading with a nice warm purple which gives everything a beautiful looking away from a sunset sorta feel. Apart from a couple of small alterations these colours stayed the same until the end. And I feel as though, you should be fine with deciding to change your colour pallet if the current one isn’t working. Every time I’ve done so has resulted in much more striking scenes. Of course if you have too many colours doing so might be a bit tricky, so maybe stick to a few colours to start  with, then change them as needed until you are happy and then use as many intermediary colours as you like.

 

World7Wip3

Once I was happy with the foreground shops, and colour pallet I moved onto making the background buildings. I have a fair bit of trouble with things that are not in the foreground because you need include less detail, but because it’s pixel art, you need enough detail to properly convey what it is. And to be honest I don’t think I’ve mastered this yet. I probably included too much detail on these background buildings. Also a small quirk about how I make these scenes, because each layer is parallaxing (foreground layers scroll faster than background layers) I have to make sure that the art for the background buildings extends to the lowest point in the foreground shops, otherwise there will holes. But the result is a bunch of artwork that just isn’t seen 80% of the time.

 

World7Wip4

Next up was completing the shading on the background buildings. There’s not a whole lot to say about this stage, its just a slightly more developed version of the previous image. Except that in this one, I’ve repeated the background buildings so they take up the whole screen. I do this to get a better idea of how it will look in game.

 

World7Wip5

Next up is the foreground. This is the first time I’ve had an actual person in the foreground. I had people in the stalls in World 5 and some students in World 6. But noting this front and centre. The main reason is lack of courage. I started learning pixel art specifically for Kana Quest. But I finally stopped putting it off and did it. My process was as follows. Create a rough sketch of the outline of the character. Then clean up the lines so everything looks nice and neat. Then block in large areas of colour going over the previously created line art. Finally add in small areas of shading and detailing.

 

World7Wip6

Last one! There are only two main changes here. Firstly I finished the sky to have the same dither effect used in all the other worlds, and then I gave my young boy a baseball cap. What team is it for you ask? Why, it’s a cap for the Hanshin Tigers: the team of choice in my area of Japan. I decided to give him the cap because he looked like a kid who’s a part of the baseball club at school, and thus would totally be all about his local team.

Fun fact about the Hanshin Tigers, they haven’t won in decades and its all because they got cursed by Colonel Sanders. And no, I’m not making this up. When they last won the championship, their supporters threw a Colonel Sanders statue into the river next to the stadium. Why? Because they thought it would be fun to find lookalikes of team members in the crowd, and then throwing them in the river in celebration. But the Hanshin Tigers had one American player. And they couldn’t find another westerner, so they just threw in a Colonel Sanders statue in instead of a fan. But the following years they went from being the champions to 18 years of ending in last or second last place. So years later they went in and pulled up the statue. But they only found the top half, and the Colonel’s hand was missing. But their performance improved a bit. So a few years later they went looking for the other half, and found it. Once again the team’s performance improved again. And they were now one of the better teams but they kept getting unlucky losses towards the end of the season. So there is a huge bounty on finding the missing left hand, but alas they are yet to find it. The found parts of the statue actually now rest inside KFC Japan’s headquarters.

1200px-Curse_of_the_Colonel_DSCN7774_20090921

Look upon the destroyer of Hanshin Tiger’s fan’s hopes and dreams.

 

Anyway, that’s all I got for this week. Until next time take care and have a great week!

Hi all, welcome to this week’s Kana Quest Devblog. This week I started work on World 7 in Kana Quest, and as a result I have been looking at a LOT of reference images. And looking at my references, made me start breaking down the different stylistic patterns I was seeing. Then in turn I started thinking about how those patterns affect the feel of a piece. So today we are going to look at a two different techniques/styles in pixel art, and what feelings they convey.

The first technique I want to talk about is the use of outlines. A lot of character art will have strong lines around the character as well as components of the character it’s self. Compare these two pieces of character art.

They both utilise an anime an anime-esque aesthetic but the end result and feel from the two is massive. And the pattern that I’ve noticed is that the lack of borders make a piece of pixel art feel more mysterious. While the inclusion of borders make the piece more concrete.  The piece that really illustrated this to me though was this one.

I love this piece. The reason this piece is so evocative for me is the incredible use of both bordered and border less pixel art. The silhouettes of all the creatures is clearly defined by the borders but the shading is done without. This creates a wonderful push and pull of between the known and unknown. Of course the use of mono directional dithering (seen in the clouds and the antelope monsters fur) further adds to this feeling.

 

Which brings me to the topic of dithering in general. Depending on how you use dithering it can change the feel of a piece dramatically. In this piece the use of irregular dithering makes the scene even more surreal and mysterious.

 

 

 

 

mossy_robo_by_sky_burial-d9u76yl

Source: https://sky-burial.deviantart.com/art/Mossy-Robo-594919677

And yet, dithering can also cause a piece to be almost “too real”.

db8c9a9259fa221c720fb700c77fcc92

I tried to find the source of this one, but I couldn’t find it. If you know the source please let me know so I can edit it in!

And I think it all comes down to the type of dithering being used, and the extent that its implemented. What I mean by “the type of dithering” is if the dithering follows a consistent linear progression (as seen in the second image) or if its irregular (seen in the first). Also you can see that in the first image, the use of dithering is far more restrained, whereas the second image uses it basically everywhere. When I first started doing my art for Kana Quest I was definitely using dithering way too much. And I’ve come round to the view that your dithering should be used to create the texture of the piece. In the case of the mossy robot the dithering makes the texture feel kinda chunky and bumpy.

Anyway, while writing this I realised that everything I talked about has a consistent theme. Each of these techniques creates a tension between what is “realistic” and what is “abstract”. Using dithering over flat colours; more abstract (usually). Using outlines and borders makes pixel art more abstract, but more easy to define. And I think something that I want to be more conscientious about going forward is how abstract I’m willing to push the art of Kana Quest.

But before I go check out the progress on the art for  World 7 in Kana Quest. Its coming along nicely so far, though there are a few things I think I’ll have to fix up. I’ve also had a blast hiding as many little references into this one as possible. See if you can find them all. There are three so far. Anyway, until next time have a great weekend!

World7Wip

 

 

 

 

Hi all, and welcome to the Kana Quest Dev-Blog for this week. This week I am going to show you a small part of Kana Quest’s pipeline. Specifically, the process I have to go through to add new world art onto the previous world. Which, full disclosure, is terrible. When I was making my parallax system I did not consider the fact that someone would have to use said system. And that someone would ultimately be me. How that slipped my mind as a solo game dev, I don’t know but here we are.

With that said, what do I mean specifically when I say I am adding the new world art onto the previous? Well a few weeks ago I talked at length about the process for creating the background art for the 6th world in Kana Quest. Isn’t it nice? But unfortunately I now have to get this art from Photoshop, into Unity.

World6WIP3

Legit, still really chuffed with how this art turned out. I would give myself a pat on the back if it weren’t for the horror I am about to inflict on myself.

And then once into Unity, get it to connect onto the previous world’s art. You would think this is easy. And it should be. But then you know… my coding exists sooo guess we can’t have nice things.

w5wip

I remember when I thought getting this world to connect was going to be easy.

See I can’t make them connect by putting the two finished images side by side and creating some transitional artwork. Because of one thing. All these environments use a parallax effect, so the point in which each part of the world will end in different places. And the only way for me to know exactly where that is, is to make a world’s art, implement it, then figure out where the end of that world will be, and finally create an end point for the art. But then we have to start worrying about the game objects that handle the parallax effect for the art, as well as trying to make the transition seamless by making transitional art. Like I said before, this is not a great pipeline. But on the bright side Franz Kafka is incredibly proud of me.

So let’s look at what everything looks like at the start of this “process”. This is the level select scene before I add any of world 6’s art.

5thWrldScene

As you can see in the first image the foreground images extend way further than the sky does. This is to compensate for the parallax effect moving these images faster than the ones in the background.

World5Gif

As you can see in game, everything lines up and looks nice, unlike how it does in their initial placement. Remember, as long as the player doesn’t see your garbage fire you can just pretend it doesn’t exist.

 

So the first job I need to do is figure out the point that the transitional art will start. This is pretty easily figured out by scrolling to the end of the world and seeing roughly where the camera ends.

5thWrldScene2

The arrow is pointing to the effective end of world 5 because it is the point where the last level button appears to the player. So everything beyond this point will be used to transition to the next world.

So now that we have our end point we have to start making transitional art. I start with the sky because we want it to the first to change. The sky moves the slowest and thus will be the last to finish switching over to the new pallet (even with a head start). Making the transitional art is also really easy as it just involves dithering between the original colours to the new colours, like so. It’s vital to give yourself easy goals to score. This will lull yourself into a false sense of security, and get you thinking “Surely its not as bad as I remember”.

W5SkyEnd

5thWrldScene3

As you can see here, the transitional sky image cuts a little bit into world 5. 

Then we repeat this process for each layer in the world. So for this world we do it for the buildings, the park, the stalls, the lanterns and finally the ground. Each layer should be staggered a little bit so that the final result should look something like this.

5thWrldScene4

You can see how the off screen starting point for the transition art is staggered so that the foreground images start further away. But by the time the player scrolls past they will all line up and look great. Remember, as long as the player doesn’t see your garbage fire you can just pretend it doesn’t exist. 

But this is just for the transitional art. Once we have the transitional art in place we have to position the world 6 art to line up properly. But because the parallax effect is handled by different objects for each world, you can’t line up the images in the inspector and call it a day. I have to figure out where those images have to be so that once moved by the parallax script in game, they line up. But in the scene viewer, the final positions overlap and look pretty awful. This step is the most time consuming and irritating as its like putting together a jigsaw puzzle except all the pieces are moving and you don’t get to see their true position when you want to place a piece. But at least the result is a nice clean transition. Remember, as long as the player doesn’t see your garbage fire you can just pretend it doesn’t exist.World6ImplementedGIF.gif

So how would I improve this pipeline? Well I would start by improving the parallax script. If I had designed the parallax script to handle all the worlds at once, a lot of this irritation would be improved. Because then I could simply place the transition images where they need to be in the Scene Window and not have to switch between running the game to figure out the placement and then back to the Scene Window to position things correctly.

Secondly if I had fixed world lengths for each world I would be able to standardise the interval between each world’s images and thus be able to immediately place new world images by entering that interval into the Transform component’s X value.

Thirdly I could make the parallax script run in editor so that wherever the Scene window is looking at, the script will get that X value and parallax as if the camera was in that position. But once again this relies on there only object that handles the parallaxing.

Anyway I hope this this been an “fun” look at Kana Quest’s pipeline and hopefully it inspires you think about your pipeline and the inefficiencies built within it before you start production. Because that is one of the biggest mistakes I’ve made with Kana Quest. Ensuring quick and easy implementation of things is something worth spending a fair amount of time to work out. If you don’t get it sorted it can and will cost you days, weeks and even months of development time. And if you are really careless, you could end up writing a Dev-Blog about “The World’s Most Irritating Jigsaw”.

Until next time, have a great week.