Summary
In the first UE4 project I got involved in, I was tasked to help the author by implementing supportive systems to polish the user experience. I got the chance to step outside my comfort zone and try the famous blueprints of Unreal. The result has been satisfactory and it is possible that I will explore this engine more in the future.
Specifications
- Helped from time to time
- Developed in Unreal Engine 2.26
- 3D Environment
- More about the people who helped the development in the project downloadable build.
Project goals
- Gain experience in working with the Unreal Engine
Third person character
First system the player interacts with. Implemented by the artist alone at the beginning of the project, I rearranged its code once I took over him, by introducing functions and other small changes, to make it easier to read.
During the development more was added to the blueprint, but just before the release, in order to simplify the project use, it was decided to reduce the amount of inputs to just the ones to open the menu and to switch from and to the flying mode, and control it.
Movement
Basically, it is an interface between the various inputs and the already built-in system of movement.
To avoid an endless fall I implemented a system that detects when the player will reach a z coordinate under a specified threshold, and it will move it to the origin position.
Flying
I was able to simulate flying by changing the camera distance from a 3rd person distance to a first, hiding the player model and removing constraints such as gravity.
It is an instrument intended to be used to explore the environment more freely and rapidly and was also employed during the development.
In game
During the project development, I had to program various complementary systems to further polish the environment.
Here are some of them:
Group generator
In the original concept, you can notice groups of flying books moving around the buildings.
To recreate the effect I developed a blueprint to randomly generate a group of Static Meshes
, which are then moved following a Spline.
The code is based on the vertex animation tutorial by Ghislain Giradot.
Generate
Starting from the centre, and proceeding in a circle, transforms, materials and meshes for the books are randomly generated, which were subsequently made visible in the editor to allow the artist greater freedom to edit the finished product. This generation is triggered using a boolean.
Spline
Spawn actors in radius
User Interface
One of the last systems to be introduced in the project, and also one of the most complex. It is composed of multiple blueprints and parts of blueprints, which communicate with each other through events.
Master
Head of all the User Interface, it handles the startup intro and the toggle of the Menu.
Intro
The intro is composed in the Sequencer
and is then executed at the start of the game. A custom event called OnEndedIntro
is called once it is finished. To make sure the player doesn't mess it up, his inputs (outside the key to show the menu and therefore interrupt the intro) are disabled during the execution.
Credits
Necessary to give due credit to those who developed, collaborated and inspired the project, this blueprint contains a list of UIWidgets
that are shown in sequence at set points in the intro. A fade effect was introduced by programming to make their appearance and disappearance more elegant.
Some limitations of this system are the obligatory sequentiality of the UIWidgets
(there cannot be two at the same time), and the same speed for the fade animation for all.
Closing thoughts
First attempt to use Unreal Engine 4, this project taught me a lot about the software and its systems. A lack of strict control helped me develop the systems freely, and constant feedback and requests made me develop flexible systems that could be easily expanded in the future. Unfortunately, the absence of an online repository made it impossible to work on the project without disrupting the artist.
If I could go back in time I would:
- Establishing an online repository for the project. It would allow more than one person to work on the project at the same time, while also keeping a history of the changes.
- Use C++ to speed up the development of simple systems.
- Rely more on the use of functions and macros to organize the blueprints.