Crazy Crane is a game about moving objects into a target areas using a crane to collect points. It was created in Unreal Engine 4 with all the assets being created in Maya. All of the textures were developed in Substance Painter. 

My Role: I came up with the concept of the game and created all of the assets and blueprints for the game. 

After modelling in Maya I decided I wanted to texture it in Substance Painter to get the best result possible. I did this using ID maps so each individual area could be coloured using different materials. I spent a lot of time working on some of the details of the crane even though they might not be seen in the final game to make the textures as good as possible. I bump and normal map techniques in order to achieve a higher level of detail without making the poly count of the model too large. This render was done in Maya using a sky sphere wrapped with a HDRI image to get some more realistic lighting. 

After working on the project for a while to try and get a prototype ready for the hypertalks, I have finally got a working prototype which can be played but doesn’t have much functionality. At current it consists of one level with 3 target zones which the player must drop the shipping containers into. Getting the crane to turn took a long time as it used lots of complex blueprints and code which I wasn’t familiar with. Once I figured out how to move the crane on a 360-degree axis I then had to start to think about how everything else would move. I decided that the slider would have to be constrained to the mesh so it follows when it moves. However, the slider also has to move along the crane so I had to add that functionality to the blueprints of the crane. This also took a long time as I had to make a blueprint string which checked the location of the crane constantly, so it could follow and slide in the correct manor. This proved very difficult as there weren’t any tutorials on it which meant I just had to try and figure it out. As a beginner at Unreal I struggled with this part but slowly I started to grasp what things meant. Next came another problem which was the magnet, this would have to be constrained in a few ways. First it would have to be constrained to the crane so that it follows it when it moves similarly to the slider element. But it also has to be constrained to the slider so that it follows when it moves along the crane arm. Finally, I had to add another constraint to the magnet so it couldn’t descend or ascend too far. All these constraints work together to make sure the magnet is always in the correct position. I then attached a rope mesh to the magnet and slider and constrained it so it would only attach those 2 meshes. I would’ve liked to have a rope which swung around but, Unreal doesn’t have any rope mechanics so this wasn’t possible to do. This meant that I had to stick with a non-swinging rope. This turned out better though as swinging might have just made the game frustrating.

With all this done I had a fully functional crane in terms of movement. There was another major issue to overcome in the base mechanics of the game before I could start to add other elements though, this was picking objects up. Figuring out how to make a pawn pick up another actor in unreal engine was almost impossible as there were zero tutorials on how to do it. Through extensive trial and error though I managed to figure out how to use two collision boxes and an overlap event to attach an actor to the crane magnet when they were close enough. This meant that I had the core movement of the game sorted out and could now move on to making the levels, scoring systems, menu, UI, timers and missions.

I recorded some gameplay and added some mock up scoring to it in premiere to demonstrate what the game will look like. This can be seen below:

Once I had done the Hypertalk I knew I needed to get straight on with the game design in order to get it finished in time. Since there were lots left to do I got straight to it by making all of the levels. I made the first 4 the same since they are in the same location and then made the crazy 5th level in outer space. I used a skybox and some clever wrapping of a Nebula Image which I made using a generator tool. Once I was happy with the way the landscapes looked respectively, I started to setup the crane and movable meshes in each level. Since I had already blueprinted the movement as stated before all I had to do was place them in each Level. I then worked on some cosmetics for a bit then eventually moved onto the scoring. I started this by making some new targets as the old ones were very visually appealing. I decided to make them squares instead of circles so they would behave better with the oblong containers. This solved the issue I was having before with overlap events causing things to fly away. I then placed these into the levels and got to work figuring out how to blueprint a scoring system. Most of the tutorials online about scoring systems are about first-person shooters and generally don’t relate to dropping something onto a target. However, I still learnt about the core principles from some of these videos which helped me to develop my own scoring system which has now been successfully implemented into the game. It works by checking to see if the object (e.g. container) is overlapping each part of the target and then adding points if it is. These points are then sent to a HUD UI which displays the points on the players screen. An annotated Blueprint for the scoring system can be seen below:

Once I had figured out how to add the players score to the screen when they hit the target, I had to create some parameters and fix some issues. One of these issues is that meshes would interfere on the target. This was because the mesh would stay which meant you couldn’t drop another in the same zone. To fix this I decided that when a mesh hits the targets the points will be added then the mesh will be destroyed thus clearing the target zone. This worked well and also helped show when you had hit the target. I was very happy with his change.

The next thing to work on was the timers which I wanted to include mission pass and fail parameters. I figured out how to set up a timer for the level after watching a few tutorials and gaining a base understanding of integers. It was quite complex but easy to understand when you get the hang of it. This can be seen in the annotated blueprint here below:

After I had the timer working and showing in the viewport of the player I had to figure out how to end the level and have the game figure out whether the player has passed or failed each level. This meant adding more blueprints onto the timing blueprint so it can check points and proceed with a set of events. If the player had enough points I wanted a screen to appear for a few seconds which said mission complete proceed to next level. Then I wanted a mission failed screen to come up if you didn’t get the required points. I created both of these screens as UI elements and set them up to be shown if the amount of points is reached or not reached. I have the failed screen setup to automatically restart the level after 5 seconds and then the complete screen takes you back to the menu after 5 seconds. This achieved what I wanted and allows the player to play through the game properly. I then went through and adapted the timers and points required for each level of the game. This can all be seen in the annotated blueprint shown below:

Once done I figured out that sometimes people might complete levels before the timer runs out. In cases like this you would normally have to wait for the timer to run out however, I came up with a simple solution. I setup a keypress to check the players score to see if they had enough and if they did it would pass them through to the mission complete screen as usual. This key would also send you to mission failed if you didn’t get enough points in that level. I found this solution worked well and eliminated the waiting around for timers to run out issue I was having. This can be seen in the blueprint below:

All this took weeks to finish due to the complex blueprint required to do the smallest things in unreal engine. After all this I played through the game and fixed some of the bugs I was experiencing. Some of these bugs were game breaking but I managed to get rid of them by adding some tweaks to the blueprints. On top of this I had to work on making sure all the UI elements were coming up properly on the screen after finishing each level. All these small tweaks went a long way towards making the game run properly.

I then went onto the space level (level 5) to adapt the scoring system to that since it would not use targets. Level 5 was a wrecking ball level in space, this involves going around in the crane and destroying walls which would give you points. I needed to figure out how to adapt this to this level so that a point would be added when the crane collided with and object. This can be seen in the annotated blueprint below:

Once that problem was solved, I just wanted to add some extra movement to the crane within level 5 so it could move forwards and backwards as well as turn. This was so that it could move around the space environment to destroy the various walls littered around. This was a simple blueprint which just involved setting up some axis controls and translation in the blueprints. Once this one done all I had to do was adapt the timers and mission success parameters for the level and it was done.

At this point the game was functionally finished but I wanted to add some extra touches, so I went into illustrator and designed a menu, thanks for playing screen and a controls menu. These just made the game look nicer instead of just overlays. These can be seen below:

Another thing I added to the game was audio, I wanted something to bring the entire thing together as it was a bit silent. I decided that it needed some background music that flowed throughout the entire game and it needed some sound effects for when things were destroyed.

I am very happy with the audio in my game as it ties the entire thing together as I wanted it to. I think the 8 bit style music fits well even though it is not necessarily conventional for a 3D game. I couldn’t find any audio examples of cranes moving and for obvious reasons couldn’t obtain it myself. Due to this I had to think of something which might sound like a crane. After doing some browsing through some audio files I found this one. It is actually audio of a drill press but certain parts of it could easily be mistaken as crane sounds in the right context. Since it was attribution free and sounded good I went ahead and implemented it into certain crane movements. Overall, very pleased with how the sound design turned out.

After I did all this and much more that I couldn’t list the game was completed. I compiled it for windows and tested through the entire thing and it worked as intended.

Attached Below is Gameplay of the Entire Game: