top of page
image_01.png

GLINT
in Engine

tga_logo_black (1)_edited.png
FILIP KULL

This Game project is unique in that it was developed entirely
within our own game engine,
adding an extra layer of complexity and creativity to the design process. 

For this project I choose to develope:

WALL SPLINE TOOl

  • Wall Dencity

  • Amount of rocks per wall

  • Rock seperation distance

  • Rotation clamp

  • Rock type randomizer

  • Rock position randomizer

ROCK PARAMTERS

  • Spline widget

  • "Editor Tick" Converts spline into individual actors in the outliner.

  • Supports an number of different walls and rock meshes

Functionality
list

This tool lets level designers quickly and easly create dynamic cavern wall.

TOOL IN USE
walls_13.png
walls_15.png
Pipeline

Our programmers convert data from Unreal Engine levels and place assets in our levels according to said data. 

With this in mind, my tool had to create individual assets in an Unreal outliner outside of runtime.

walls_12.png
Filip Kull
SOLUTION
2024-04-05 11_50_16-Unreal_Testing - Unreal Editor.png
image.png

To spawn actors outside of runtime

I made a "Blueprint interface" actor.

This actor will hold a function

which will simply return true.

Not particularly useful on its own,

the important part is that

an interface can be called outside

of runtime.

2024-04-05 11_49_55-Unreal_Testing - Unreal Editor.png

Next, a "Blueprint Editor Utility" actor is needed to help check and ensure the final blueprint can implement interfaces.

If it does, then it is allowed to execute the function created in the "Blueprint Interface".

image.png
2024-04-05 11_50_30-Unreal_Testing - Unreal Editor.png

Final step is to add the "Editor Utility" actor as the child of my tool actor: "BP_SpineWall"

This is done inside its construction script.

Under class settings I can now add the interface and after compiling it is granted access to the function in the editor with the press of a button.

Editor tick.png
walls_10.png

Having tested the pipeline with the tool incorporated I could confidently move on to expanding its functionality

BREAK DOWN
Follow spline
walls_11.png

To make the walls follow the spline I first get the total length and divide it by the width of the wall pieces. Now that I have the amount of walls that will fit along the spline I increment along the spline placing walls at intervals of the walls width. 

Illustration.png

The rotation of the walls are based on the point on the spline it originates from. To make the tool more user friendly I am collecting all walls created in an array which gets destroyed whenever the function is called again. 

FILIP KULL

walls_17.png

On the far right of the blue section of the script graph is an unused feature offsets the walls upward, stacking them and creating massive walls.

walls_23.png
ROcks along walls

The rocks positions are based on where the walls are. Horizontally a random position is gained between the current and next increment of the wall loop.

 

Vertically it is a random saturated number multiplied by the set height of the walls.

walls_19.png
walls_21.png

A random position is set to a "position array" which checks weither or not the new position is too close to any previous position. If so, the new position is removed from the array. Then the loop repeats "Rock amount" of times.

2024-04-09 17_53_23-P7_Prototype - Unreal Editor.png
POSITION ARRAY
wall gif.gif
Placed rocks

After the position array has been sorted it is a simple matter of looping through

the array and spawn rocks in the curated position.

As a final touch, I randomly rotate the rocks around the pitch to add 

another layer of variance. 

This was an increadably fufilling project

because of how quintisential the tool was

for the game.

Without it, we would have to start from

skratch and figure out another enviroment

for the game to take place in.

“I am part of The Game Assembly’s internship program. As per the agreement between the Game Industry and The Game Assembly, neither student nor company may be in contact with one another regarding internships before April 23rd.

Any internship offers can be made on May 6th, at the earliest.”

bottom of page