Developer Journal for You Pilot A Piece Of S***: GAIDEN
Instead of waiting months until after release I’ve decided to post this on launch day. I’ve gone over some of the more interesting details of the project so that you can get a sense of the process and how it evolved over time. It started out one way but eventually progressed into the steaming pile of gaming perfection you see before you now! Enjoy!
It happened on a crisp autumn morning as I sat on a park bench sipping a fine, ethically-sourced Earl Grey tea. A gentle breeze caressed my face and I shivered ever-so-slightly as I tightened my handmade, organic wool scarf; a carefully-woven gift from an old artist friend who now taught Still Life painting at the prestigious Harper Rymore Institute Of Arts. I pondered the philosophical teachings of Socrates and Yamamoto as I casually leafed through the pages of La Bredouiller Savant Gauche; a fascinating compendium of abstract works in the style of Arz Moderne and Phillipe Almeida.
It was then that I heard a soft rustling just above me and I gazed upon a trellis that was merely a stone’s throw away. Its sun-bleached latticework was gnarled like the weathered fingers of an old man; an indication of a life well-lived.
A raven had perched atop the wooden structure; a sleek, dark silhouette burned against the autumn sky like a piece of hot cigarette ash carelessly strewn onto the morning paper. Its seemingly curious eyes fixated upon mine and I gently closed my book and set it down beside me. I was careful not to startle my new friend as we sat in complete silence for what seemed like minutes…hours…millennia?
Suddenly the inspiration struck me, like a flat stone skipping across the placid lake of my imagination and ricocheting off the rotted trunk of a partially submerged tree.
You Pilot A Piece Of S***: GAIDEN was born.
2: HOW I REALLY CAME UP WITH THIS SCHLAUCHEN
A coworker and I were basically sh***ing on a bunch of games and the people we knew who liked them. He said something along the lines of “They could release a game about a turd in a sewer and those guys would still love it!” and a lightbulb went off in my head. That’s it.
3: CRAPPY TAPPY!
My initial idea was for a mobile game that had a random and infinite scrolling level with the piece of poop in the center of the screen. The player would tilt and rotate the phone and that would move the poo through all the obstacles in the level. You would gain points by collecting various items and for distance traveled. The game ended when you hit an obstruction and it would tally your points and place them on a leaderboard. I thought it was an interesting concept but when I finally looked into it there seemed to be issues with implementation.
I started to come up with other ideas and imagined that it could work pretty well as a Tappy game for the PC where you would simply click the mouse to float the poop up and down to avoid obstacles. I decided to head down this route and began brainstorming the mechanics of the game and the levels.
4: THE BASE ESTABLISHED
I got most of the basic functionality working first and spent no time on the graphical side of things:
1: The Level (just a cube for the floor) was basically a “tile” that would spawn as the Player crossed a certain threshold and then disappear when the Player could no longer see it
2: The Player character (in this case, just a cube) that would “jump” a certain height when a button was pressed
3: Obstacles (yes, a cube) that would spawn randomly in different places and instantly kill the Player when touched
4: Pickups (you guessed it, more cubes) that would randomly spawn and give points to the Player when touched
5: The Points System for awarding points to the Player
That was about it. The idea was that the level would continue indefinitely and you would try to get as many points as you could without touching the ground or any obstacles. That’s a solid game right there folks! $59.99!!!!
I decided to take some time away from Out Of Hell development to build this instead. My reasoning was as follows:
1: I just needed a little break from Out Of Hell. I recently made huge strides in progress but I was starting to get burnt out. I had just finished a massive map of a Lake/Camping area (the biggest map I’ve ever attempted) and was starting a new Sewer location. I figured that this would have been a good time to take a breather before getting too deep into a new map.
2: I was just really inspired! Funny ideas and scenarios kept popping into my head and it wouldn’t stop so I jotted everything down.
3: In just a matter of hours I had gotten the basics of the game working. I did a little more planning and thought that I could do it all in just a few weeks or a month at the most. I was going to keep it simple and fast. I put myself to the test and did it in roughly 15 days! A friend of mine recently used the term “Lo-fi” to describe YPAPS-G and that is precisely what I was going for! This whole thing is a giant shitpost in game form afterall! 🙂
4: I have a lot of ideas for games that come and go. When they come, I usually think “Oh, that is an awesome idea! When Out Of Hell is finished, I’ll get right on it!”
The problem with that is I don’t know when Out Of Hell will be finished. I have an idea of when it should be finished and I’ve certainly set goals but I can’t tell exactly when it will be complete. It could take another year or it could take 3. I started work on the remake of Out Of Hell back in 2013 or maybe even…sooner?? It’s been in the works for so long that I can’t even remember!
I didn’t want to put this idea on the backburner like all the others because I had a feeling that it wouldn’t take long to create and who knows, I may not get a chance to make it in the future!
5: I don’t have any delusions of grandeur and I sure as hell didn’t do this for the money (somehow selling a million units of a poop game seems like a stretch) but I won’t complain if it brings in a bit of passive income! Now I can just leave it to do it’s own thing in the background as I concentrate on my main project. It just made more sense this way.
6: BREAKING IT ALL DOWN
I typed out what I wanted the levels to be and what would be in them like so:
I then organized all the obstacles into their respective types:
Breaking it all down like that made it easier to code for later. I made 4 types of Parent obstacle classes (each with their own functionalities) I extended child classes from each of those and after that it was just a matter of changing any variables or visual assets specific to that obstacle type.
7: THE EVOLUTION
I jumped into the visual design portion and made the poop character, the tiles for the first level and all the obstacles required for that level. It all had a 2.5D look to it (these pictures are just an idea of what it would have looked like at the time. I didn’t have the updated designs seen here yet and it’s all quite messy)
I eventually made everything appear flat because it was less visually confusing and I was going for this style anyway.
At this point I didn’t really like the game as it played to be honest! It became frustrating because you couldn’t touch the floor or ceiling or any obstacles because it meant instant-death. It technically had all the mechanics of a Tappy game but I thought it could be more.
This isn’t the first time I’ve had an idea that seemed great in my head until I prototyped it and realized it wasn’t so great in practice! I came up with other ways to make it more interesting and completely dropped the instant-death when touching any obstacles.
“What if…instead of just coins, the player could pick up all sorts of crap on the ocean floor like sea shells and cans and lobsters and magnets and these extra items attached themselves to you and would grant you special abilities?”
“Oh, but that stuff isn’t all going to fit on the piece of poop! What if I made the poop longer? YESSS!!! A long chain of poop! And what if the poop was like a physics-thing that would whip around all over the place?! BAHAHAHA!!!”
One of the collectible items that would have allowed the Player to shoot was a doll head. That idea eventually evolved into a mannequin head and depending on the type of mannequin head you picked up, it would allow you to temporarily shoot peanuts or lasers for X amount of seconds. That idea eventually evolved into being able to choose from a bunch of different mannequin heads, each with their own attacks and attributes.
In essence the game still played like an infinite scroller; you would make your way through all the different level themes and then it would simply cycle through them again once you reached the end. You would keep collecting points until you either died or got bored and turned the damned thing off.
I thought that putting a limit on the amount of levels was beneficial for replay value and that playing in short bursts over and over is better than playing through one overly long campaign. I added a “Final Boss” character, wrote backgrounds for all the mannequin heads and made endings for them.
8: THE SHARTISTRY
I replaced some of the obstacles with more absurd things! For example, I changed the falling anchor to a corpse with a cinder block tied to it, floating beach balls into spiked mines or a bear floating in the water to a Bigfoot doing…I dunno, that weird swimming thing that it does!
I also removed the Farm level because it didn’t make any sense and I replaced it with a Ninja Hideout level because that made even less sense!!!
For the Final Boss character, I originally wanted a giant snake-like creature that would bite and shoot corn niblets at you:
But then I thought the concept of a massive Shithead (quite literally) that insulted you as you attacked it was funnier and far grosser. It also shoots ninja stars because why the hell not:
Try out “The Duke” or “The Admiral” characters as those gamemodes are the closest thing to my original concept: a giant floppy turd swimming through a sea of garbage.
I recorded myself (using a phone) doing most of the sounds from farting noises to blood-curdling screams. However, after playing with these sounds in place for a few days I couldn’t get over the fact that the whole game just sounded like me. Anyone that had tried the game at this point thought that it was fine and that I was overanalyzing it but I just couldn’t shake how distracting it was.
I settled on purchasing sound effects that were far superior to anything I could ever produce. The reason I tried recording my own sounds was to keep the costs down but I am glad that I decided to spend the money where it was needed. I did use some of my recordings in the final product and it shouldn’t be too hard to spot them because they sound like ass!
I won’t share the exact cost of making this game but even for a little side project like this (at the current price I’m charging for it and after all fees are deducted) I would have to sell over 600 units just to break even! Believe me when I say I did this for the love of it.
I had gotten to a comfortable place where the game was pretty much finished (barring a few bugs/issues) I contracted the music out and while waiting for it, I jumped back into Out Of Hell just for a change of pace. I stuck with Out Of Hell for the next couple of weeks but ideas for YPAPS-G still kept popping up in my head! I clearly wasn’t done with it so I started to implement these new ideas into YPAPS-G.
It then got to the point where I decided that it would be best to end the current arrangement for the music because in a nutshell, there were some small issues and it just didn’t seem to be working out the way that I had imagined. I found another composer named Eric Matyas (https://soundimage.org) while looking for Title Screen music and when I heard some of the samples on his site, I was instantly like “Wow, this one is perfect for the Ninja level and this one would be perfect for the Sewer level!” I contacted him about usage and everything fell into place!
It’s a shame that I couldn’t include the hilarious vocal tracks that were originally planned for the music but I can always try that in a future project.
11: STAYING MOTIVATED
I think that the early stages of game development are the easiest parts and the final stretch of development is actually the really difficult part. That’s when you start treading water forever because you’re tired, frustrated and sick of it all.
To me, making a game is a marathon and not a sprint. We all have the excitment, energy and wide-eyed enthusiasm when we first start out. We make announcement videos, we throw out some concept art and maybe even a few documents detailing the game mechanics but if you don’t have what it takes (or if you’re not batshit-insane, like me!) to do the distance and work through all the difficulties that will eventually get in your way, you won’t cross that finish line.
Here are a few things I did that helped keep me on track:
1: I curbed my enthusiasm for early publicity! I put a cap on it and controlled it. When I teased YPAPS-G with these images…
…I already had the game in a fully playable state and with a lot of the graphical assets in place. The reason why this helped keep me on track was that it allowed me a lot of breathing room by having several updates worth of content ready to go if needed. I wasn’t stressing and so I could stay focused.
If I had blurted out the announcement for the game when I first came up with the idea, the only things I could present to you was a gameplay concept and perhaps a couple of images. I did this with Out Of Hell a long time ago and see where that got me!
2: I took advantage of any bursts of inspiration that came up. I rode it all out and there were certain days where I feverishly worked well into the early morning hours. I found that I could get more done in 5 hours of being in this inspired state than in 5 days of an unmotivated mental state.
Of course, I took breaks throughout the day but that creative fire is unpredictable and comes and goes as it pleases! I believe that it’s important to take advantage of it when it hits.
3: I made a TO DO list of things that needed to be done. It seems like such a basic thing but you would be surprised at how much it can help you to stay focused. For instance, I would make a list like this:
I would decide “Alright, today I will complete 1, 2 and 3.” and so that day I would focus all my energy on those 3 things and ONLY those 3 things. I would not allow myself to get sidetracked and tinker with number 8 or swap out number 2 for number 7. I would only focus on 1, 2 and 3.
If I finished earlier than expected I’d decide if I would relax for the rest of the day or keep going and do 4 and 5. I’ve found a checklist to be really beneficial because it gave me a sense of progress, it felt good crossing items off the list as they were completed and it allowed me to stay focused when I was feeling uninspired. Just get through that checklist!
12: TESTING, TESTING, TESTING
I tested this game for nearly 3 months! In the early stages it was a difficult, frustrating mess and I tried my best to balance the game because in the end, remember that:
Challenging = Good
Frustrating = Not Good
I don’t want anyone punching a hole through their screen because of me so I had different people test the game and I got a lot of really valuable data from it.
Some of the tweaks I made included reducing the amount of hits it took to destroy enemies, increasing the frequency at which the powerups would appear and giving the Player and enemies/obstacles smaller collision…radii…radiuses’es”s? This game is much more forgiving than it was just 2 months ago.
Scoring was also a mess because I was just assigning numbers to different enemies without any logic or reasoning behind it.
“Hey! The Bigfoot looks tough! Uhh…10,000 points!“
Eventually I came up with a simple, consistent method of assigning point values to each enemy. I mulitplied 200 points (the lowest amount of points you can get in the game) by the number of hits it took to destroy the enemy. So:
6 hits x 200 = 1200 points
I made some exceptions to the rule here and there but that is the basis. To determine the amount of points until the Player ranked up, I came up with this simple equation:
P + (π) / (y^2 – z^N) * R – 200 = ?
( P ) is equal to the cubic tangent
( N ) being the probable angle of the visible frustrum
( R ) being the instance multiplied by the squareroot of the Snults
Therefor: P(37.00) + (3.14159) / (y^2 – z^N(381)) * R(9) – 200 = 150,000
There were a number of bugs in the game but I’ll mention some of the ones that burned themselves into my psyche. It took weeks of research and trial and error before I could fix these issues. There were other bugs that I’ve described in previous posts on the blog but here are a few of the worst ones and I hope that by explaining it here, anyone who runs into them can fix them right away:
1: The SAVECONFIG feature
UE4 has a nice little node that takes care of saving your configuration:
In this example, when the button is clicked it gets the user settings, changes the screen resolution, applies this new resolution and then saves it locally. It’s straightforward, isn’t it?
Well I could not get this thing to work for about 3 weeks! It was driving me absolutely crazy because I was following the tutorials step by step and it still wasn’t working. Eventually, out of pure luck I discovered that if you are testing your game with PIE (Play In Editor) mode it will work just fine but here I was testing my game in Standalone mode, which is why it wasn’t working! No one said anything about that!
So in order for this to work in Standalone mode (and I assume, your final shipping build) you must do the following:
type: -MultiprocessSaveConfig in the “Additional Launch Parameters” box. That’s it.
2: The invisible death wall
There was an issue where the Player would die after progressing to a certain point. It took me a while but I finally discovered that it was because I was hitting the level boundaries. Every map has an invisible boundary that you cannot go past. It is an absolutely huge boundary and under normal circumstances you would never get close enough to it but the way I had set my game up made it possible.
My (stupid) method:
The Player moved through 3D space and a level tile would spawn in front of them and the tile that they had just passed over (which was no longer visible) would be destroyed to clear it from memory. This method works but you are limited to the level boundary which you would eventually hit since you are moving through 3D space.
The proper method:
The Player should be locked in place (lock the X,Y axis) and allowed up/down movement along the Z axis. The level tiles should spawn and move along the X axis giving the illusion of the Player moving though 3D space. The tile should then be destroyed when it is no longer in view. This method allows for a truly infinite scrolling level and you will never hit the boundary.
3: Crooked kick
This one is going to sound a little confusing because I don’t have any visual examples to show you but try to follow if you can. I had a problem with the obstacles spawning off-kilter; seemingly at random. I eventually narrowed it down to an enemy (a Ninja with a spinning kick) which spun along the Y axis (it was the only one that behaved this way)
I noticed obstacles spawning at strange angles whenever I was struck by this enemy and it turned out that even though I had locked Player movement along the Y axis, the enemy was knocking me a few degress along the Y axis when it hit me with its irregularly-shaped collision. It only appeared as though all the obstacles were spawning askew when it was the Player character that was knocked off its axis the whole time!
I remedied this by having the enemy rotate along the X axis instead and (just to be safe) giving spherical collisions to any other enemies that rotated so that there was no irregular collision meshes to knock me off my trajectory.
4: Delta Time
I had absolutely no idea what Delta Time was before this. When I did some testing on a friend’s laptop (it was a lower-end machine) it suffered from low framerates but it was still playable. I noticed that some of the enemy movement was really slow.
After looking into this issue I learned that any movements that were dependant on ticks were not locked to the framerate (which is what Delta Time takes care of) I’m not going to go deep into it because there are tons of places that explain this much better than I do but after I applied these changes, the movements now sync with framerate regardless of computer specs.
When I first saw the documentation for getting a game onto Steam, it looked…daunting, to say the least (if you’ve ever put a game onto Steam, you’ll know what I’m talking about) It took me a couple of days to absorb it all but I learned what was required to get it onto the platform, what graphical assets (such as trailers, artwork) needed to be in place and the entire process of uploading your final product onto Steam.
I can’t delve too deeply into it because there is an NDA in place but there is a fairly straightforward system to walk you through what needs to be done (including video tutorials) and customer support is really good.
Now it takes just minutes for me to make any changes to my development build and upload it onto Steam. What seemed so intimidating just days before has become a walk in the park!
Halfway through development I already had ideas for a sequel. The great thing about this is that the entire framework is already complete and it’s basically just a matter of changing the visual assets because all of the functionality is already there. If YPAPS-G takes off and there’s interest in a sequel, you can bet I’ll continue the story! (Yes, there’s actually an overarching story to it all)
More weapons? More characters? Multiplayer? Going into OUTERSPACE?!?! If you demand it, I will make it!
16: FINAL WORD
I had an absolute blast making this game and I learned so much from it (really) With each project I undertake I learn more about the process as a whole, I learn more about myself and also about other people. This time I knew when to ask for help (not that I got many useful answers but at least I asked this time!) and was much more upfront and straightforward in my dealings with others.
My knowledge of working in Blueprints went up a few levels by doing this little side project. I’ve always struggled with any type of coding and I have to say that I have a ton of respect for programmers and people who are capable of doing it. I think that you need to have a certain type of mind because as an artist I always think in general, abstract terms. I’ve found that programming requires you to be very specific, precise and logical in your thinking. For me, that has proven to be a tough hoop to jump through!
I now understand the process of monetization on the Steam platform. I actually dreaded this part in the early stages of development because I didn’t know much about it and thought that it would be too complex. Ironically, it has become one of the easiest processes during the entire development cycle.
I want to tell anyone who feels inspired to make their own game to just take the chance! Don’t fear failure; don’t fear success. Set those things aside and be creative! You’ll learn a bunch along the way and it’s fulfilling in ways I can’t even describe.
Just think about it this way. 3-4 months ago this started out as NOTHING. It was a joke between a friend and I. It was words in the air; ideas floating around in my head. If I treated it as a passing thought then you would not see this in front of you right now:
See what I mean? It went from absolutely nothing to being a game on Steam in just a few months! I could have just laughed the whole thing off, went on with my day as usual and forgotten about it. This time I seized it instead and decided to make it into something that could potentially bring enjoyment and laughs to people who see it.
Whether you’ve got an idea for a game, a story, a drawing, a painting, whatever. Who knows how far it might go? It’s worth it to take the chance!