Transforming narrative, one game at a time.

  • Twitter Social Icon
  • LinkedIn Social Icon

Mission & Narrative

Designer

 

KARIN CEDERSKOOG

Student Games - Level Designer & Scripter

Unreal Engine 4 & Unity 5 (C#)

DotEXE - Level Designer & Scripter

Unreal Engine 4

Engine: Unreal Engine 4

Languages: Visual scripting (blueprints)

Team Size: 4 scripters/designers

Platforms: PC

Project Length: 4 weeks

Year: 2015

I scripted character movement (wall, ceiling and floor movement) and designed levels for a fast-paced 2.5D platformer.

Level Design & Balance​

  • DESIGNED half of the level

  • Facilitated PLAYTESTER SESSIONS and incorporated FEEDBACK into the LEVEL DESIGN (communicating some issues to the team so larger design decisions could be made as a group)

My level design for the middle of level.

My level design for the end of level ("elevator" to boss fight).

  • I chose to make the camera zoom out so players had a clear idea where they were in relation to enemies.

  • Since these areas were nestled between areas with zoomed-in views of the player, they added greater variety to the level design.

Example - Playtesting Adjustment

​Players found an electric enemy too underwhelming and didn't realize it was an enemy. I found reference images to demonstrate how the enemy design could be changed. These changes were then implemented into the game.

Scripting

  • SCRIPTED character movement prototype (for fast-paced traversal on walls, ceilings and floors)

  • Worked with another scripter to deliver additional versions of characters movement

  • IMPLEMENTED TRIGGERS, sounds, etc.

The Challenge

  • Movement was the biggest challenge of creating the game, since Unreal Engine 4 didn't allow an easy way of switching gravitational direction. Corners also posed a problem for smooth movement.

Prototype - Character Movement

  • I used LINE TRACING to determine how far the character was from a given surface (wall, floor or ceiling). This method of using line tracing for detection ended up in the final version of the character movement.

  • A MAIN DIFFERENCE between character movement in the prototype vs. the final game, was I initially ADDED FORCE to the character, depending on the closest jump-able surface type. Subsequently, I tried to balance the force in each corner so the player would move smoothly around it. This method ended up proving imprecise.

Final - Character Movement

  • I COLLABORATED with another scripter, where we decided to use an enum for 5 PLAYER STATES - floor state, left wall state, right wall state, ceiling state and jumping state.

    • When players jumped to the ceiling, the controls flipped (although players were unaware of this because the control directions reversed when the state was changed).​ This helped resolve movement issues.

  • The corner issue was resolved by shifting between 5 player states to change the character's controls​.

    • The system checked the closest wall and discretely moved the player beside it using a static distance value, thereby ensuring smooth movement around corners.

  • We also included logic to adjust camera location and to CHECK JUMP DISTANCE.

Unreal-Engine-4-Level-Designer-Scripting

What I Learned

  • The challenges in creating character movement reinforced the need to DEVELOP A SOLID FRAMEWORK in the initial stages of game development.

    • Such as framework encapsulated each major component within its own function (i.e. checking walls and corners, line tracing from the character).​

  • As this was my first game project where I collaborated heavily with other scripters, I learned how to better ORGANIZE scripts and COLLABORATE with other programmers to developer an EASILY MAINTAINABLE SYSTEM.

 
 
 
 
 
 

Programming (C#)

  • CODED KEY SYSTEMS, including the dialogue system, quest log and system, etc.

  • Scripted many of the sounds, particularly pertaining to the dialogue and UI elements.

I coded UI pop ups, ensuring specific text displayed at specific times. The quest system I created allowed for different conditions (such as player inventory containing an item or allowing a new quest to start when others were in progress or complete).

I programmed the quest log system, ensuring icons in the quest log displayed on quest start, AND icons changed to a star background on quest complete.

Example Code

The dialogue system receives information (such as quest text) from quest classes:

Creating Designer-Friendly Systems

  • Designers could use the below fields (in Unity's inspector) to easily create functionality for new NPCs placed in the world.

  • Due the behaviors NPCs inherited (from the system I created), NPCs could immediately interact with players.

Unity-5-C#-Inspector-Game-Level-Designer
 

Engine: Unity 5

Languages: C#

Team Size: 4 scripters/designers

Platforms:  Mobile (iPhone, Android)

Project Length: 7 weeks

Year: 2015

I coded systems for an adventure game, where players bring life to new worlds and help characters along the way. My contributions included creating a dialogue system, quest log and system, etc.

Garden of Aesther - Systems Programmer (C#)

Unity 5