Blog post originally published on June 6th, 2014 at: Besusproductions.com
After having discovered the potential of Unity (namely in a web demo for the Complete Physics Platformer Kit) while working with UDK, it didn’t take long for me to jump ship. Upon opening the Unity editor, between the hierarchy and the lack of the standard quad-window layout used in UDK and Hammer, I was definitely intimidated. A handful of video tutorials later and not only did it all make sense, but I felt quite comfortable navigating the application. A few more tutorials and I understood GameObjects and how scripts are used create actual gameplay. It wasn’t long thereafter that I felt as comfortable in Unity as I had ever felt in UDK or Hammer.
My next task was making up for “lacking” functionality I had come to expect. Namely a visual scripting editor and a way to manipulate the camera for cutscene purposes. It was then that I found out how addicting the Unity Asset store can be – it was amazing seeing all of the potential in the assets for expanding my project. Eventually however I did acquire the base assets that I needed: PlayMaker (visual scripting) and Camera Path Animator. With a base game foundation, knowledge of Unity, and the assets that I know would be required to accomplish what I envisioned, I set to work.
First and foremost was building upon the Physics Platformer Kit. The default character (model) included with the kit was nice but it was also stock and needed to be swapped out. I am not an expert with 3D modeling software so creating, rigging and skinning my own rig was out. I eventually came across one on the (shocker) Unity Asset Store which also included many of the base animations that were used by the Physics Platformer Kit. Unfortunately there were no animations for picking items up over the characters head so I needed to learn how to create my own. A few YouTube tutorials later and I was able to create animations on the existing rig in 3DS Max. I started with basic animations for picking items up and pushing/pulling them (which just required a single frame moving the arms to the desired position), moving to a slightly more complicated animation of the character throwing an item and eventually created animations for a dive-jump, flip and spin. This proved to be great practice because a month or so after creating them, I found a different model to use as my main character (which uses an entirely different rig). Creating the animations for this model went significantly more quickly now that I knew what I was doing.
With the character and animations established it was time to add some more moves for the player. The Physics Kit included the functionality for picking up and pulling item and a triple jump (higher jumps when executed in succession). This was great for the physics aspects of gameplay, but it felt just a bit too limited when comparing it to classics such as Mario 64 and Banjo-Kazooie. I then added a wall jump (with wall sticking), a dive-jump (as mentioned above), and removed the triple-jump and replaced it with a double jump (as I always found myself trying to perform a double-jump while play testing with the triple jump). Now that I had the core gameplay mechanics done, it was time to move on to the most difficult part of game development: level development.
I knew that the overworld I wanted to create would be similar in design to the overworlds of 90’s platformers; different rooms with “portals” leading in to the levels. The rooms would be styled to match their respective levels so that the player will know exactly what they are in store for before entering it. I began to sketch out the first two level environments that I had, but as I add gameplay elements I found myself constantly tweaking these to put more emphasis on the newly added feature.
Throughout the level design process I kept tinkering with the code as I would continue to find issues or want to make modifications. Whether it was with the drag in the water, the wall jump mechanics, or adding a bomb item to expand the gameplay, it seemed as though I couldn’t keep myself out of Visual Studio. After eventually working out all of the bugs I decided that I needed power-ups. I started with adding a pickup which would greatly increase the players speed (and update their running animation) but eventually decided I would rather go with Mario 64-style hats in the form of card pickups. These cards would update the player model and grant them/increase different abilities. The Ninja pickup for example greatly increases speed and grants the player the ability to wall jump, the Diver pickup would allow the player to move at full sped underwater, and the Astronaut pickup would reduce the player’s gravity. These were just a few of the ideas that I initially had after pursuing this avenue.
After getting the initial cards implemented I decided to keep the card-theme and converted the “Power Star” items (PowerCube’s) previously implemented to Card’s instead. With the core gameplay and items “completed”, now I find myself needing to come up with a back story for why the player needs to collect these. Although collect-a-thon platformers don’t typically put too much emphasis on story, there still needs to be a reason behind why the player is where they are and why they are doing what they do. Once I get this established, I’m confident that additional level environments and ideas will closely follow.