top of page
AssemblyRequiredLogo.png

Project: Assembly Required

​

Engine: Unreal engine 4

Platform: Windows PC

Role: Lead Tech

 

Description: This game is a farming rogue-like taking place on an alien planet where the player character must mine and grow crystals to enable them to escape the planet before destruction

 

This game is being produced in a team of 17 students over the span of 6 weeks, including 6 level 6 students (seniors) and 11 level 5 students (juniors). I took on the role of project lead as well as technical lead managing 3 juniors. 

​

Responsibilities

​​​

  • Inventory system

  • Crafting system

  • Character mechanics

  • Procedural level generation

  • Designer tool kit production

  • In-game player tools

  • Farming & growth mechanics

  • Jira for myself and tech juniors

  • Leadership role

  • Manage source Control

Role Breakdown

 

Scripting: For this project scripting was my primary role within the team, the game developed was very technically heavy and took on many challenges that I had never before attempted. The focus while scripting was on:

​

  • Core systems and gameplay design.

  • Core character mechanics.

  • Designer tool creation.

  • Procedural level generation.

  • Design with a focus around gathering items to be used, bought and sold.

  • Any particularly complex script.

  • Tutoring and aiding juniors in script .

​

Here's the main aspects I worked on and developed throughout the project:​

​

Item Mechanics & systems

  • Fully functioning inventory system and hot bar with functionality for: ​​

    • Multiple items.

    • Item stacking.

    • Item addition and addition to partial stacks.

    • Item removal and removal from partial stacks.

    • Check for if the inventory is full.

    • Item selection, reordering and movement within inventory.

    • Use selected item.

    • Inventory communication across all other systems (crafting system, shop, etc..

  • Item implementation, used throughout multiple systems with hierarchal parenting & data table to allow for easy addition of new items for designers .

  • Crafting system, allowing for character tool upgrades and ship repairs/purchases​.

​

Character Mechanics

  • Character movement, including smooth 360° character rotation to follow the mouse.

  • Character camera 

  • Character hoe tool, the tool is used to create "crop plots" on a grid based placement system.​

  • Character hose tool, the tool is used to water crystal shards placed within crop plots.

  • Character directional interaction.

  • Character drill tool, the tool can be used to:

    • Hold to collect crystal/crystal shard items from crystal resource nodes, while within drill range.

    • Drill will not function on crystal resource nodes that are too high level.

    • Can be upgraded in the crafting system to level the drill up and mine higher level crystal nodes.

    • The drill tool is used to harvest "planted crystal nodes".

    • Used to deal damage to and defeat enemies with a basic.

​

Level Systems, Mechanics & Tools

  • Crystal rarity system & crystal resource node blueprint, with functionality for:

    • Procedurally set rarity level, dependant on the number of levels the player has progressed through​.

    • Rarity is percentage based and customisable for designers in a data table.

    • There will always be at least one of each crystal type for the rarity level.

  • Level creation tool for designers, allowed for:

    • This tool is a single blueprint that allows for designers to drag into an empty unreal level and start designing.

    • Addition of attached blueprints through the click of a button​ (resource nodes, enemies, hazards, entrance/exits, etc.).

    • Blueprints already pre-referenced to allow for correct and automatic initialization of actors.

    • Therefore allows for dynamically spawned levels to be implemented.

    • Designers can set which actors are required to complete the level through a list of "level complete actors" and eyedropper tool. This leaves the code open to future design changes if required.  (e.g. all enemies required to be defeated to complete the level)

  • Procedurally generated levels system, allows for:

    • Important to note the cave layouts are in-fact designed and pre-set, however the order in which the caves generate is procedural. 

    • A new cave level will be streamed dynamically once the exit hole is activated and all "level complete actors" have been completed.

    • ​The entrance and exits between levels are linked/refrenced dynamically at runtime to ensure designer freedom when creating a level.

    • Levels will not repeat after each other but are otherwise procedurally generated in a random order when needed to keep different playthroughs unique.

    • When initialised upon level streaming start the system will determine the current rarity level from the "crystal rarity system" and dynamically set the crystal type for that cave level.

  • Developed further a "rock wall tool" for designers. Originally developed by a junior this tool allows designers to generate rocks along a spline. I added the following functionality:

    • The spline tools is able to save and remove any layouts the designers like.

    • The tool will remember saved meshes rather than reconstructing upon initiation.​

​

Farming Mechanics & systems

  • Implemented the farming system. This system has the functionality:

    • Players plant using crystal shards in an empty plot (created with character hoe tool)

    • Shard can then be "watered" by the player (using the hose tool)

    • The shard will then proceed to grow, the growth time is determined by the type of shard planted (taken from datatable).

    • Once grown the shard will reach the harvestable state, ready for the player to drill.

    • Harvested crystals from farming give significantly more crystals

 

Shop Mechanics & systems

  • Implemented variety of shop systems, including:

    • Buying and selling functionality​

    • Shop stock updating based off what the player has already mined.

UI

  • Implemented vast majority of fonts and dynamic buttons

  • Implemented spatial UI functionality, the spatial widget simply needs to be drop and dragged for designers to edit the text.

  • Implemented resource spatial UI and animations

  • Implemented main menu functionality & camera.

​

Leadership: The team was composed of 17 students, 6 final year students and 11 second year students. For this project I chose to take up the position of technical lead due to my knowledge of the engine. I managed a team of three juniors for the technical side. I also took the position of project lead as I had a solid grasp on the direction of the project and knew the technology well. My leadership roles included me:

  • Mentoring juniors (& seniors if needed) on the technology and workflow in my area of expertise.

  • Giving presentation of ideas and gameplay to the team and examiners alike

  • Building the project daily to ensure it functions and plays as intended.

  • Organising playtest sessions where the play testers reported bugs and gave feedback to iterate on.

  • Ensuring deadlines are met across the entire team as well as my own.

  • Ensuring the team is happy with the current project, scope and workload.

  • Hold frequent meetings to allow for questions and ensure the vision and core pillars of the game are kept.

​

Project Management (Source Control & Jira): As the project lead I took on the role of project management as well. The main team split into smaller teams (tech, character art, environments, design, etc.) where each team took a lead. This lead would then assign tasks using Jira to other students in their team. At the end of each day the senior would have a roundup meeting to show off work, ask questions and give a progress report. Also as part of my role I managed the source control, we used GitHub for this project. I lead a presentation on how to use GitHub and how it works, if anyone had any questions or worries, I was the person to come to. 

​

​

​

​

​

bottom of page