ART PASS OF THE ETHER INSTITUTE AND PICKUPS
Hey all,
So another big step this week to getting Ether One playable in UE4! I decided to make this week more of a ‘vertical slice’ for want of a better phrase.
I began with setting up a really basic PlayerController, HUD, Pawn and GameInfo Blueprint so that I could get basic movement and interaction in. Nothing too complex apart from implementing the first pass of the pickup system which I needed to play in the level.
I used a basic OnInteract trace for my different interaction Blueprints. The best tutorial I found for this was on the Unreal Engine YouTube page: https://www.youtube.com/watch?v=WwfsWr4A894
When starting to think about the complexity of our pickup system I found Hourences tutorials EXTREMELY helpful to get my head into the mindset of working within Blueprints. Some of them cost a little money but I’d definitely recommend the investment and they’re not much at all for what you get.
Note: BlueprintsCont1 tutorial has the pickup content): http://www.hourences.com/thesolusproject/
The Ether pickup system has a few different layers to it. You can check the pickups name by pressing and holding the LMB over the pickup to display the name in the world. You can pick up the item, rotate it and then take it with you or put it back. You can also use items to place into specific item zones or use them to get access to other areas. I decided not to tackle all the complexities at once and to just focus on what I needed for the Prologue (Ether Institute) gameplay.
This checks the items name and prints it to the screen for now. I’ll add the world display at a later date.
I then added a trace check to see if you’re trying to pickup an item or to put one down. This required me to create a PlaceItemZone blueprint which pretty much has a tag that says ‘I’m an item zone’. These zones in the game are where you can place items for later (Think Case shelves for anyone that has played the game) so they don’t need much functionality. The main thing I implemented here was a check to see the pickups height from the centre of the rotation. This is set in the Pickup item Blueprint explained a little later. The reason we do this is so that we can’t place items through a surface and also so that when you rotation the item in front of you it rotates around the centre of the object.
To get the functionality I just got the Item zones location, split the vector, got Z and then added the HeightOffset of the item (Z) to the Itemzone’s height then combined them back to tell the item where to be placed.
I also added a few basic blueprints for interaction which trigger switches, levers, valves and radios in the game. These are really easy to setup and the Construction Script is AWESOME for allowing you to change things such as the desired mesh, rotation, speed or pretty much any custom variable applied to each Blueprint that you might want to change per object. I actually couldn’t believe how quick it was to implement all the different interactions. I’ll go back and add more complexity to them at a later date but the main thing I wanted to achieve here was a basic play through of Ether.
The prologue are of the game which I’m working in doesn’t have much gameplay. It’s designed to just teach the player basic interactions so in this example I need to pickup a Key card to open the doors and progress. In the level blueprint I check between the trace of the switch to see what the item name is that I’m currently holding. If it matches the desired item, then the door opens.
The main thing as a designer coming from Kismet that I had to get my head around not being able to fire Remote Events around everywhere to connect events up. Communicating from Blueprint to Blueprint via the Level Blueprint is easy enough when you know how but it’s surprising how long it took me to figure it out. This is probably obvious information but I’ll list below the communication JUST IN CASE anyone is feeling as stupid as me:
1) Create Trace function inside Player Pawn.
2) Add Blueprint interface (see Unreal YouTube video listed previously) I called mine ‘InteractInterface’.
3) In the ‘Switch’ Blueprint add the InteractInterface as the event to fire everything from (remember to follow tut video) then at the end of the sequence create an ‘Event Dispatcher’ called ‘CheckSwitch’ – add the Switch Blueprint to level.
4) Create a Door Blueprint with a Custom Event ‘Open Door’ – Set up all the parameters to make door open and add Blueprint to level
5) With Switch Blueprint selected right click in Level Blueprint and add ‘CheckSwitch’ or whatever name you used for the Event Dispatcher.
6) Check the conditions you need to (such as item name) then call the Custom Event that you created in your Door Blueprint to open the door.
I then duplicated the door and switch Blueprints throughout the level keeping in mind to update the correct references in the Level Blueprint.
I then started to apply all the materials to the meshes I needed to make the Prologue look playable adding collision anywhere I walked/fell through. Although the lighting system is different in UE4, I added all of the same lights that we used in the UDK build so that we have a point of reference when someone goes into do a proper lighting pass. We want to try to keep things as consistent as we can with the released version.
I added all of the Dialogue through PlaySoundatLocation in the Level Blueprint. There is quite a bit of complexity to the Dialogue system in Ether so for now I just wanted a quick prototype to get a feel. We’ll add stacks and priorities at a later date to replace the PlaySounds. I also added all the ambient sounds for the level with the same values we used from UDK too.
I’ve also set up the chair sequence that is at the end of the level which probably took the longest time since there is so much going on – mainly due to timings and delays. The only thing missing from this sequence are a few Anims from the SKMeshes which I couldn’t export from UDK for some reason and also a camera seize from the player whilst keeping control of camera movement (I might need some programming help with that one!).
So the milestone for the week is pretty much complete. Right now you can play the game from the start (including the phone call with camera fade) until the chair sequence at the end of the level. I think the next step will be to go back over all the interactions and make sure everything is airtight before continuing. I know there will be a lot of things that have been missed along with making sure all the interaction and movement is consistent with Ether.
Thanks for reading! Feel free to share any useful advice or thoughts on the process and if anyone see’s anything we’re doing massively wrong be sure to pull us up on it 🙂