Wednesday, 24 February 2016

PDP Week 5

This week I focused my time on researching some more mechanics to implement, as well as fixing any bugs/ making adjustments to things that I already have in my level (like adding some more invisible walls to step the player from glitching out of bounds with research from (Bobic, 2000) with an article on advanced collision detection). The purpose of this week is to add a bit more variety into my level, while continuing to expand on its scope and size.


Upon testing my current level (a critical process in the development of any game) I encountered various areas where it's possible to go out of bounds to unintended areas (like falling off the stage into the sea below). To remedy this I added various blocking volumes (invisible walls) around the current level in places where the player will instinctively know where they're not supposed to go, and will fully-expect an invisible wall anyway. So for example in the tricky platforming sections with the bounce-pads they will hit an invisible wall if they try to bounce away purposely in the wrong direction, but in this instance they are also used as guides to help navigate the player along without actually telling them, which is me building upon the theories I've established din previous weeks further. All of this is an example of me conducting professional level design practises, as the player starts to learn how the environment is structured and what the common conventions for various objects in your game mean, they'll also begin to get a grip on the level designer's style too.

I also started making a branching path today at the start of the level, something I originally planned but should still be wary of. Because when the player instantly loads the game they have freedom to go wherever they please, a concept introduced in one specific place (like the bounce-pads) may not make sense when used in context somewhere else. This is why I will strive to introduce different concepts in different places, so that the player can go anywhere first and still gradually learn and understand how to play through the level.

The new mechanic I created this week was an elevator platform, using a tutorial by (Tesla, 2014) linked below. Essentially it acts as a completely static platform until the player stands on it (that's when a collision is detected) and from there it will move upwards in a fixed direction at a fixed speed until it reaches the stopping point using an animation timeline inside the Unreal 4 editor. From there the player can carry on and play through the level once the elevator stops, and there is a lot of potential for this new mechanic in my game to navigate around different platforms and pieces of terrain.

https://www.youtube.com/watch?v=09-Owqumeo0

With this new platform created I started applying it within my game world, in a semi-hidden area when the player begins the game, as explained below:

The player starts the game and sees a curved platform with a staircase veering off to the left, enticing them to follow it.

They then encounter a platform they can jump across to. This may also be the player's first time jumping, so it's easy for them to walk around and try again if they miss, as they continue to get the hang of the mechanics using the earlier theory I researched.
When they jump across and look down into a place that at first looked like a deadly drop, they see a strange white platform that's a strongly different colour to all of the other platforms in the scene. With the long trail that led them here it gives a strong compulsion for the player to jump on it...

And when they do the white platform will fly straight up and take them to a secret part of the stage! It offers a very fulfilling feeling to the player, as they found this secret area with no tutoring at all creating a very rewarding experience.


Next week I will continue to flesh out my level using this new mechanic, and continue my research into level design techniques too.


References: 

Bobic, N. (2000). Advanced Collision Detection Techniques. [online] Gamasutra. Available at: http://www.gamasutra.com/view/feature/131598/advanced_collision_detection_.php [Accessed 24 Feb. 2016].

Tesla Dev, 2014. Unreal Engine 4 Tutorial - Basic Elevator/Lift - YouTube [WWW Document]. URL https://www.youtube.com/watch?v=09-Owqumeo0 (accessed 2.24.16).
 


Thursday, 18 February 2016

PDP Week 4

This week I started building upon the fundamentals of my level design using the bounce pads from last week, while also conducing some research onto a good method to go about doing this. In the last blog post I created an area which is only accessible via a bounce-pad, so I decided to design an area which uses that mechanic with confidence in that the player will know how they work and will be able to reach the end.

According to a video below by (Brown, M. 2015), someone who has a lot of previous professional experience working in the games industry, there is a very efficient four-step method to constructing a game's level, as used in example games like Super Mario 3d World which expands upon the initial concept of 'showing not telling' that I researched. It basically involves ensuring your game has lots of variety while introducing a unique concept in every level, to make each one feel memorable to the player while also keeping the end-user engaged with the game without them getting bored, since there will always be something to look forward to in the next stage. This source underlines a good base guideline to set out each level: first, you introduce the new mechanic in a safe space, somewhere so that the player can experiment and toy with the new gameplay element in relative safety without fear of dying due to trial and error over bad game design.

The next step is to actually use the new game mechanic in the context it was designed in and take it another step forward. So far example with moving platforms (something I will implement into my level at a later date) the player will already understand their basic workings, so the next encounter with them could be over a pit or using them to climb up a wall, as the level's difficulty gradually scales. The next step is to take this new mechanic in a different direction, and apply a 'twist' to it as you throw the player off. For example, as a twist there could be moving platforms as you navigate over them, but there could also be bounce-pads as well to test the player's mastery of two different gameplay mechanics at once! This adds yet another layer of depth to your level as it gets harder at the same pace as the player, without ever having them way out of their comfort zone with no idea what to do.

For the last and final step, add one last tough challenge to truly test the player all of the skills that they've acquired in the level. Once they've reached the end of this final test and bypassed the whole stage, gracefully bow down to the mechanic for that level and discard it just before it gets tiring and wears out its welcome/ loses its appeal, as the player continues to proceed onto the next level, with yet another new gimmick lying in wait for them to master!


https://www.youtube.com/watch?v=dBmIkEvEBtA

This is a process I will implement into my own game, in fact, it's something I've already started doing when incorporating my bounce-pads and introducing them to the player! Such as when I first introduce the bounce-pad in a safe space, the player is free to experiment with it until they have a good understanding of the mechanics behind it. So I could take it a step further from here, and this is the progress I made:

When the player walks up the stair they will encounter a bounce-pad, and know exactly what they do.
Upon collision they will be bounced up to another platform. Initiating the 2nd step in the 4 step process with a challenge of jumping up onto platforms with these bounce-pads.

After a while I introduce the twist to the bounce-pad mechanic, which is the 3rd step of the process. There's another bounce-pad placed here, but this time it's on the wall! Another platform is clearly visible across the large gap, so using the player's previous knowledge and presumptions based on the evidence I've left for them, it's only logical to jump into the bounce-pad on the wall to see what happens...

The player will find themselves rocketing across the gap! This modified bounce-pad object was simply done, as I edited the strength value for that specific instance to be much stronger horizontally across the X axis than upwards on the Y axis.

The player will now come to the end with one last puzzle, following the guidelines for step 4. It's the final challenge for the player before they wave goodbye to the bounce-pad mechanic before it gets tiring.

All the player essentially has to do is bounce off the last jump-pad, and position themselves to land safely back at the start of the level without falling off into the water! It's the last hurdle to face until they go somewhere else and explore another part of my level, while also just being a really fun and exhilarating way to travel back to the start of the map as they tumble down from a great height!


Next week I will conduct some more research for different level design techniques to apply in another section of my level!


Reference:

Mark Brown, 2015. Game Maker’s Toolkit - Super Mario 3D World’s 4 Step Level Design [WWW Document]. URL https://www.youtube.com/watch?v=dBmIkEvEBtA (accessed 2.17.16).

Wednesday, 10 February 2016

PDP Week 3

Researched how to use Unreal Engine 4 efficiently regarding the creation of a level. I looked at various tutorials for tools in Unreal 4 to create levels, such as the video embedded below. It was uploaded by Epic Games team themselves behind Unreal 4, and is an incredibly helpful official tutorial, as it explains a 'staging process' all level designers should know about. You essentially fill in and develop the game's levels in four different sections. You should start section 1 bu making your entire level as basically as you can (such as with simple boxes and cubes), to shape out the entire thing, so when you play test this early design it's very easy to amend things on the fly to shape/ resize them at will. Afterwards you continuously add different layers of detail (like detailed models and lighting) within the parameters you've already set, so very little testing is required and if anything does need changing, it takes much longer and you save a lot of time in the long-term designing a basic level before you make it pretty.

Link: https://www.youtube.com/watch?v=XDsJOFyxMnw

My end-product I'm aiming for will look more like a combination of stage 1 and 2, with basic decorations, lighting and materials. I will do this as this entire development plan for these 11 weeks is geared towards me learning various new skills and techniques behind making a good level structure, which I feel is a priority over giving it lots of eye-candy to gaze at. So this week I started creating the level's structure with basic shapes, as the design is the most important aspect. I can make it more pretty with lighting particles and decorations later on.

For this week I started implementing the level design learning theory of teaching the player by 'doing, not showing' which I researched on week 1. Where when the level loads, the player can turn to the right and see a huge staircase through a corridor. When they walk up it though, there's a huge gap in the middle with no feasible way to jump across with their character's default abilities. In order to subtly let the player know there really is a way to proceed, there are two up arrows placed on the wall on both sides and a floating dialogue box that reads 'what goes up, may come down!' This is in place so the player has no way of really knowing how to get up there, but they do know that it's something they can and should do.

To really take this further if the player jumps down the hole then there's a round bounce-pad down there, which is completely obscured by the stairs with the player having no way of knowing it was present before. However, because it's a big coloured disc on a grey mono-coloured floor, the player will instinctively want to walk on it, and if they do, it will rocket them up into the air by applying a set force of upwards velocity in its blueprint code. Once they've been shot high into the air, the player will be able to position themselves on the way back down to land at the top of the stairs and continue! So doing this I essentially learned how to teach a player how to use a bounce pad, without even telling them what it is or that it even exists! It's a very effective and professional tutorial method used in games, and applying it into my own level is evidence of me building upon my researched knowledge. It also gives the player the satisfaction and thrill of discovery, and allows them to toy with and get used to each new mechanic in their own time, and proceed with the game whenever they feel comfortable enough with it. Here's a step-by-step process of this sequence of events in action via screenshots below:

The player encounters an interesting staircase, and wonders what's at the top


They decide to head up and see
It's a dead-end, with no feasible way to get across, but the arrows point upwards regardless
If they look/ jump down, then they will see a bright object that stands out from the grey aesthetic.


If they have the curiosity to touch the bounce-pad, it will unexpectedly launch them into the air and safely up the stairs!

I also added invisible walls to the side of the stairs and building. Since death won't exist in my level and I don't want the player falling off the stage and into the water, these blocking volumes help guide the player along the right path without being visible walls that get in the way of the scenery.

Wednesday, 3 February 2016

PDP Week 2

I spent this week importing assets from the Unreal Marketplace into my game and started actually creating my level. To start with I had to install the latest update of Unreal 4.10, I then afterwards created a new project with third person game gameplay, that had the default starter content included. This will be the base of my level, and I will design it around the mechanics of this (with a few other things included like jump pads and moving platforms made by me).

I've imported various free assets from the Unreal 4 Marketplace, which I am also going to use to create my game, and they are all royalty free. These asset packs are: ParticleEffects, SunTemple, SciFiHallway, BerlinFlat,WaterPlanes, GameTexturesMaterialPack and Blueprints. I chose these packs as there's a lot of variety in what they have on offer, from various models to decorate my level with like water and particles, to plenty of textures and blueprint scripts to bring my game's world to life. Not all of these elements will be used in the final product though, and any that don't I can delete from UE4's content browser to free up space, and also lower my project's overall filesize as a good form of optimisation practise.

The migration of various assets took a long time, and I finally began to create my game's level. It's still in very early stages and I want to plan out the look of the level first, and then fancy decoration and particle effects can be placed in afterwards. First I added some flowing water into the scene inside a container, with the plan being to have the player walk over it later on glass. Likewise I also added flowing water with buildings below in the background, which will be viewable through windows later on but help give my level a sense of scale as it's suspended in the air.

An area of flowing water, a huge version will also be placed below the stage due to it being not very system intensive, which means it will be good for optimisation and to not slowdown the game too much.

I later added pipes around the water area, so when it becomes an enclosed space with a roof later on the water will feel more authentic. Likewise, you can see a cityscape background in the distance which will be visible through windows, to show just how high up the player is

As a limitation towards my work I've discovered Unreal 4.10 can be very temperamental at times, and there have already been plenty of bugs that have hampered my progress in some way: from glitching the mouse curser, to constantly scrolling through menus to no way to prevent it, to simply crashing when I've clicked the button to save the game. These numerous problems that I've discovered are something to be aware of as I continue to create my level, as I don't want to lose a substantial amount of progress due to a sneaky bug. To remedy this I will be making a separate backup to both my computer and my portable hard-drive at the end of each work session in the engine. Likewise, I will also be saving my game regularly to keep things safe, but not too often, as even saving for me occasionally risks freezing my computer for a couple of minutes at a time before it stabilises and continues to run. And in that time something dangerous could happen. It's good I'm encountering these bugs now though rather than later on in development, as at least I can prepare myself in advance for any issues that may pop up in the future.