Niels Derderian

Junior Technical Designer


Welcome to my portfolio, you'll find my best projects!

I am looking for a position where I can combine my technical skills and my game design knowledge in a team project.

Looking for mainly a Technical Design opportunity, I also have a generalist profile: I like to touch to everything in a project.


Socials

About meContact me
Back

Block Breaker Level Automation Tool

Level Design Tool

In a one-month project to release a mobile game on Google Play, our team of six aimed to reach as many countries as possible. With tight deadlines and localization efforts for multiple regions, efficiency was critical.
As the Tech Designer, I developed a Dynamic Level Generation Tool to automate level creation, optimize performance with Actor Pooling System, and a Google Sheet Localization Tool for the many translator joining us, ensuring a smooth and timely launch.

  1. Duration: 1 month
  2. Role: Tech Designer
  3. Team Size: 6 (3 Artists, 1 Sound Designer, 1 Level Designer & 1 Tech Designer)
  4. Engine & Platform: Unreal Engine 5.4, Android

Tool I used:

UE iconUE iconUE iconUE icon

I. Dynamic Level Generation Tool

Problem: Manually designing and implementing levels was too slow for our fast-paced mobile game development cycle. We needed a way to quickly generate levels while maintaining variety.

Solution: This tool automates level creation. It uses Level Data Assets to store predefined block patterns, which are then loaded randomly at runtime with Asset Registry and using the Actor Pooling System.

Benefits:

  • Saves hours of work for Level Designers by automating tedious tasks
  • Saves a lot of time with a seamless integrations into the build with no additional setup
  • Fast & Easy tool to handle

Editor Utility Widget

I've created a Editor Utility Widget where the designer can enter the "Level Number", which is a part of the Level Name (In order to manage them efficiently).

Inside the Level Builder map and this number, the tool will Load the level and "Export" it. The export button will create a new Level Data Asset or update an Existing one.

To maintain visual consistency with Unreal Engine's Editor, I designed the widget to seamlessly integrate with its style, ensuring it didn't feel like an outsider tool. Additionally, I implemented "Warning" effects to alert designers if they forgot to enter a level number, preventing errors and improving usability.

I've added a button to the Editor Toolbar for quick access to the tool, implemented using an Editor Utility Blueprint. A script is launched at the Editor starts to ensure the button appears.

(Initially, I used Python, but due to my limited experience, I changed the way to do it, and setting up a C++ plugin for a simple shortcut wasn't worth the effort.)


Level Builder Map

I've made a dedicated map to build the different levels with the tool: the Level Builder Map.

There is explicit border that shows where the designer can work.
Paired with the Level Exporter Tool: it displays the current level and Block Information (Max count and Current number in the level).

The designer can easy playtest there level with a special Level Builder Game Mode and dedicated HUD.


Level Data Asset & Asset Registry

The created Level Data Asset are then gathered by the Asset Registry during the game initialization, store all the existing Levels and randomly call them at runtime to generates them.
This streamlines the level integration process into the game.

Thumbnails are captured manually for management purposes.


Editor Utility Tasks

In the tool, the Load and Export process are managed with Editor Utility Task to have them work on the side asynchronously, allowing the designer to continue working on the editor.


Task System Diagram

In yellow are "heavy" task for the CPU.


Showcase Video

How To Use Document sent to the Team


II. Actor Pooling System

Problem: Spawning and destroying too many actors hurt performance due to CPU overhead. Constant memory allocation, deallocation cause frame drops and our target platform are mobile devices.

Solution: I implemented an Actor Pooling System to reuse existing block instead of constantly spawning/destroying them.

Benefits:

  • Reduces CPU usage by eliminating costly spawn/destroy cycles
  • Improves frame rate stability

Pool Setup

I manually initialized the pool once as we do not need it to be dynamic in the project. As we have a viewport constraint due to mobile platform and visibility limits, I've set up a maximum of block possible in the level.
The pool is located outside the player screen.

When the game initialize, it gather the blocks data from the pool and when they're spawned they are flagged as "In Use".

The "Spawn" and "Despawn" are managed inside the BP_Block that will initialize all the blocks variable: bInUse, Transform, BlockType.
And the Block Type initialization define the behaviour of the block in game (Normal, Explosive, Bonus, Malus, …)


Block Life System Diagram

When the game initialize, it gather the blocks data from the pool and when they're spawned they are flagged as "In Use".


III. Google Sheet Localization Tool

Problem: Manage a lot of translator working on the same file.

Solution: I created a Google Sheet Localization Tool that allows a large number of people to collaborates on the same document without the need of making custom filter.

Benefits:

  • Fast & Easy to handle
  • One place for every localization

The translator must to select his language from the list on the right to update the sheet view.


Segments

Because of the uses of segment (the language selector) we allow multiple people working on the same document with their own view.


Translation Work

By selecting one or more language it updates the view for the translators allowing them to directly translate their parts.
By aiming a lot of countries, we made the choice to write no text in the game project, the translation needed are only for the store page.