Archives for category: Comedy

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!

So yes. It has been a LONG time since I’ve posted anything. But I do have a good reason. Mainly is that I went away to Sydney for a while and then I started a new game project that took longer than was intended.

But said game project is now done. So I am very happy to present to everyone my game “The Elephant”.

https://drive.google.com/open?id=0B6PHPlztnNd8TkZ2UVhmMzV6Y00

(PC and Mac Versions are within the folder)

So what is this game? Well the inspiration of this game was comedy sketches. I wanted to see if I could make a short comedy game of about 1-5 minute length in a week. Now obviously it took me about 3 weeks to complete. But the challenge was a simple comedy game made in a week. I might do something like this again in the future so hopefully when I do so I will be able to get much closer to the one week goal.

 

Second thing that I’ve done recently is a poster for RMIT Music and their next concert. I didn’t post it when I finished it as I was waiting for them to post it onto their official page first.

RMITMusicPosterPrint.jpg

 

Third is another commission I did recently for a friends pathfinder character. I am pretty happy how this drawing came out. I am happiest with the lighting with all the stars flying of his magic. In terms of things I think I could have done better I feel as though it probably doesn’t have as much contrast from the inky black areas to where the stars a illuminating things.GeordieCharfinal.jpg

So, I had a job interview recently and I decided to make a game about job interviews.

Fortunately mine went much better than in the game but still, I saw an opportunity to be silly and I took it.

So without any further ado, I give you Job Interviews Suck.

https://dl.dropboxusercontent.com/u/67682888/TwineGames/Job%20Interviews%20Suck.html

So a little bit ago I decided while I didn’t have a proper game design job I should keep making personal projects in the meantime. Rather than my game design skills languish and go to waste.So I decided was that I should make short simple (mostly comedic) games that I could pump out every week or fortnight.

And this is the first of these games.

It is called Boring Game and it was inspired by Ubisoft and the whole Assassins Creed: Unity fiasco with them saying women were just too hard to make.

Hope you enjoy!

https://dl.dropboxusercontent.com/u/67682888/TwineGames/Boring%20Game.html

Coffee

This was my final assignment for Narrative Communications this semester. We were told to create a twine story using the narrative principals we had learnt throughout the semester. And this was my approach to the task.

I find often in games media currently there is an obsession on making things as dark and moody as possible. One could argue that this trend is the game industry trying to convince everyone how mature games are now. I do think this is the case, but I also think there is some work being done that is dark to make an artistic statement. Whichever case a piece of media may be it’s not exactly my style. I generally prefer to do something lighthearted and silly. One day if I practice enough I might be able to create something lighthearted and silly while still getting a message across. But in the mean time I guess I should just try to write silly stories of people severely overdosing on coffee.

Enjoy