Through this unit, I have been tasked with producing a small level from base meshes, with the addition of any Infinity Blade assets already provided via the Unreal Engine 4 Marketplace.
I began by creating a top down floor plan, making simple use of a Room and Corridor based design. I intended on each corridor and room to have a different kind of obstacle to tackle.
Due to my intended theme being that of a medieval type gauntlet, I
felt it necessary to model a few simple meshes of my own for various items. I
created an Axe, a Hammer, a Buzzsaw Blade and a Spiked Pillar as on first
glance, these did not seem to be available in either the basic starter content
within UE4, or the additional Infinity Blade packs we were allowed to use
within out work.
I began building my level by blocking out
the surrounding walls in-engine, then began placement of subsequent items.
I ran into some issues with certain
animations of objects, for example the spiked pillars were intended to spin,
and move laterally at the same time. Through developmental changes I figured
that rotating an object in place through an event tick and triggering a Matinee
do not co-operate, as when the Matinee starts, the rotation is commanded to
stop.
I fixed this issue by triggering the object rotation on an event tick and adding in a vector timeline, which allowed the mesh to move laterally on a set distance and return to it's original potition, whilst spinning in place as intended.
Whilst there is almost certainly a way to fix this and allow both
processes to operate simultaneously using my initial process, and not using a timeline, at my current level of knowledge I am
unsure as to the solution, I am sure as I develop my knowledge further I will
be able to come up with solutions to such problems with use of extra
programming nodes, fixing the problem with the use of a timeline however, has improved my problem solving abilities in-engine.
I also ran into a platform location issue, in that I was
triggering simulated physics on a number of platforms in the “Pitfall Peril”
corridor. Upon triggering of physics, I had coded a string to disable the
physics and use transform values to put the platform back in its place. Whilst
this in theory should have worked, some of the platforms did not relocate back
to their original locations, this was particularly puzzling as some of the
other platforms relocated perfectly fine.
The only other problem I have run into through my progress in this
unit, was a ‘pending kill’ related issue. I used some Infinity Blade assets in
the form of floor spikes, to act as the traps beneath my elevator puzzle and
balance beam sections. Upon hitting these spikes, sometimes the pawn would
respawn with no issue, and other times the pawn would respawn twice, bringing
with it another skeletal mesh which was suspended in the air.
This drove me to believe the ‘pending kill’ issue was triggering
as the pawn was suspended between two of the meshes and had not hit the floor
art the time of respawn.
This was easily fixed however, with the use of a separate node resulting in the
mesh no longer appearing, however the main player pawn does still sometimes
stutter on respawn.
Whilst I was somewhat familiar with the setup of the blueprinting
process as I have some basic knowledge of Kismet within UDK, I have learned a
lot through this unit. I have learned about new nodes I did not know existed
and utilised them to my advantage, to give some of my traps actual
functionality without issues hindering them.
If I was given more time with this unit, or was to begin the whole
unit anew, I would possibly implement more of my own meshes to create more
intricate traps, and utilise a higher quality mesh for the traps also. Due to
time restrictions however, I used quick, easy modelling techniques to make the
trap models and textured them in DDO for extra speed.
I have enjoyed this unit as it has tested me and improved my work
in general as well as my ability in-engine, I will continue working within UE4
not just on study based projects, but in personal projects also, this will help
me expand my knowledge on engine functionality across the board and assist me
in further portfolio projects.