We’re getting started in Unreal Editor now, for part two in the MMO -style controller mini-series. The overview and list of sections is in this post.
Start by creating a new project, use the Third Person Template, in the blueprint section. You could do this in C++, and I will do in the future.
Create a new project using the Third Person Blueprint template
We’ll change some things in the blueprints that you are provided with by default, so we can add the features we want our controller to have.
I mentioned in this post the motivations for creating an MMO-style control system for a third-person game. But what is an MMO-style control system, exactly?
From extensive research (read: I played a bunch of games), I’ve selected a few criteria for a generalised MMO controller:
Movement of the character along the ground:
- Move forward and backwards using W and S
- Rotate the character and camera with A and D
- Strafe left and right with Q and E
- Moving backwards is much slower than forwards
Controlling the camera is also linked to movement:
- Mouse cursor is visible, can interact with UI
- Holding mouse left-click and dragging the cursor around rotates the camera (but not the character’s direction of movement)
- Holding mouse right-click and dragging rotates the camera and the character’s direction of movement
- While right click is held, rotate (A and D) will make the character strafe
- Mouse wheel is used to zoom in and out
- The character needs to orient itself smoothly to the direction of movement
- When moving backwards, the character orientates to the opposite direction to movement – that is, when walking backwards, the character’s back faces the camera
For the last little while I’ve been teaching myself Unreal Engine. Recently, Epic Games made it completely free to use for anyone, which I think is an absolutely amazing idea. It could possibly be fundamental for pushing video games even further by getting future developers hooked.
Since I’m learning from the ground up, I wanted to create an MMO-style control system, using the blueprint system, based on the third person template available. Control systems are pretty fundamental in video games, and I have some very specific memories of completely giving up on well known titles because of bad input design.
For the last couple of days I’ve been working on implementing a test UI as part of an abilities framework.
When you click an ability, it has a recharge time (cooldown) before you can use it again.
This is the visual scripting code for that:
The whole script in Unreal Engine – looks like a mess to me…
I wanted to make sure that the information about the ability (so far just the cooldown) is not contained in the UI, but in the class of the ability itself. This will help with what I hope to add later, which is the option to choose from a selection of skills. Then you can change your skills to match the situation – platform too high? Swap to a Super Jump ability!
Here’s the UI in action, with the cooldown effect:
(If this doesn’t work, it is also on YouTube here. YouTube is also better quality!)
TODO: Make the skills actually do something! All they do so far is print a debug message…