Edward Dobson

Games Programmer

Hi, I'm Edward Dobson

I'm currently working at Double Eleven on Rust Console Edition.I have a Masters degree in Computer Games Programming with a first from Teesside University.I have been playing video games for most of my life ever since I first played the original Rayman on the PlayStation 1 over 14 yrs ago.
Over the years I have grown to love multiple game genres including strategy, first person shooters and Role Playing Games.
When playing I like to think about how I would approach a certain mechanic and then sometimes try to recreate these mechanics in my own projects.I have also started to experiment with smaller game engines such as Godot and using development tools that aren’t required for my role.

Rust Console Edition

During my time on Rust Console Edition (Rust CE) is built in Unity and written in C#. I have worked on the following content updates.

  • OCEANBOUND - Bug Fixing

  • POWER SURGE - Bug Fixing

  • 2nd Year Anniversary - Content Additions

  • CULTIVATOR - Bug Fixing

  • HORSEPOCALYPSE - Bug Fixing

  • UNDERGROUND ASSAULT - Critical Bug Fixing

  • COMMUNITY SERVERS - Feature development + Bug Fixing

  • SEASONAL EVENTS - Content Additions + Bug Fixing

Community Servers

Project Home

Check out what community servers are about on the Rust Double Eleven Site

Community Servers (CMS) offers console players the ability to run their own servers and build their own unique communities.
CMS has offered me multiple opportunities to develop new features and expand on previous tools/features that Facepunch created for the PC version of the game.

CMS has also brought me closer to the other departments within the Rust team. For example I have worked closely with Production and Design to come up with new exciting features for players. I have also had constant contact with QA to help them create descriptions for all of the Rust commands so that the players can understand them.

  • Spectate

  • Admin Hammer

  • Banning items

  • Custom Modifiers

Spectate

  • Inventory manipulation

  • Mission manipulation

  • Animations

  • 1st and 3rd POV

Admin Hammer

  • Delete objects

  • Gather information object information (who placed it etc)

Banning Items

  • Ban items from different categories (Tech tree, loot containers etc)

  • Banned items are deleted server wide, if they are in loot containers.

Custom Modifers

  • Different gather rates for tools

  • Different loot drops amounts

  • Different furnace speeds

Jazz & Azul

Jazz & Azul (2021) is a first person story focused game, that follows the story of two kids that live in vastly different worlds trying to meet for the first time.
I have mainly been focusing on the programming side but I have helped with some parts of the 3D artwork. These include unwrapped and texturing.

Project Restructure

When I first gained access to the project files, all of the assets were in random places and there were a few duplicates.
So I created new folders with correct file names/structures.
As the project goes on I plan to remove some of the old scripts etc.I also helped restructure the script order so that the game flows better from a narrative and game play perspectives.

Optimisation

When I first got the build for the game was horrible, hitting 80-100% usage on both my GTX 1070 and i7 9700k.
With the games art style being simple and low poly I knew something was wrong.
When trying to find out the cause of this issue I noticed that the batch call amount was hitting 20-30k.To reduce this I implemented Occlusion Culling which helped reduce the amount of batches massively.However they were still hovering around 2-5k in places, this was due to the previous artist having several materials on one object rather than creating UV maps for them.To reduce the material amount I imported the models back into Blender removed unnecessary polygons and creating UV maps.This allowed me to static batch common objects, reducing the total.

Cutscene Manager

Originally the video clips would just play and the player would have no ability to skip or pause them.
So I implemented the functionality to do so. The two main functions are PlayCutscene() and SkipCutscene().
To play a cut scene you add the file to the cutscene manager and input its name.

Subtitle Manager

To add more accessibility to the game I worked on implementing subtitles to the cut scenes and world dialogue.
There are two functions that make up the manager the first is CreateSubtitleData() that you can see below this function takes in a text file then splits each line and adds them into the string list.
After this I go through each line and find ones that just have numbers on this means they are timings and add them to their own list.
The second function displays the subtitle there is a wait delay this is used to display the subtitles slightly later if the dialogue starts later in the cut scene.
I loop through each string and update the text element after the current delay.

Dungeon Generator

Created for my final year masters project, the dungeon generator allows the creation of multiple different styles of rooms.
The generator places these rooms randomly within the dungeon.
To add more meat to the project the player can place and dig tiles.
Some tiles drop items for the player to use in the crafting system.

Dungeon Saving

Saving Method

I originally used a binary file to save the data, however this made it hard to debug and monitored the data that was being saved during testing.
So I decided to move to a json file which allowed me to debug more easily.

What I Save

To make sure the file size doesn’t get too large I only saved the data that is needed. This data included the following.

  • World Name

  • Seed

  • Seed Set

  • Mode Name

  • Dungeon Variables

  • Player Position

  • Modified Titles

  • Player Inventory

Dungeon World Maker

Here you can see the world creator screens, where you can modify the rooms parameters and remove already created worlds.

Dungeon Inventory

The inventory system allows the player to place and remove items from their backpack.
You can also search the creative inventory to find any item you want.
There are two separate inventories one for the creative mode and the other for the survival mode.

Dungeon Generators

Floor

To increase the variety of the dungeon I have developed a few different types of rooms.
I do this by taking a point in the dungeon and then picking which room type to use.

Walls

My first approach was to place tiles around the floor edges.
This caused some position issues with path end/start points.
The new approach I took was to create another tile map and place the wall tiles in all of the empty tiles within the floor map.
This had three main benefits the first was the build time was decreased and it allowed me to implement a dig mechanic.
Finally this also fixed the path issues I was having.

Paths

To form a path I take two build points and then place tiles in the direction needed.

Custom Blocks

What this project allowed me to do is implement custom blocks/tiles.
These allow tiles to have attributes that can modify players stats such as speed and health, while still being a tile.

Crafting

When I finished making the generators my next aim was to make the dungeon feel more alive.
So this influenced my decision to implement a crafting system to give the blocks more of a purpose.

Ingredients

By using the custom tiles I was able to add a drop functionality to each of the blocks.
With this I made some of the blocks drop certain items for example diamond ore dropping diamonds.
These items act as the ingredients to the crafting system.

Recipes

Each recipe has an item assigned to it each item has an amount needed to craft the recipe and the item that is needed.

Building

To build an item you need to have all of the recipe components and enough space within the inventory.

Crafting

To craft an item make sure you have enough ingredients to make the block. The blocks can be used to upgrade your dig damage.

Sole Sweep

You play as Sole a mechanic working for the Tecrua company and are tasked with repairing the atmosphere for an alien race.
Sole sweep was created for the Women in Games 2021 Jam, it was developed as part of a team including myself.
The other team members are;

Reyn Reynolds - ArtistDaniel Roberts - ProgrammerJessica Murray - Game DesignerEleanor Rogers - Narrative Designer

I worked on all of the game play systems and level creation for the project. These systems including dialogue, cut scenes, item pickups and platforming.

Bug Ops Arcade!

Bug Ops Arcade was made in 2.5 days for the WOWIE 2.0 game jam, this did not include the art assets.
I worked on the shooting, weapon pickup, level loading, in game UI, the mini map and the shop system.

Cuber

CUBER was developed by me and a single designer as part of my masters year. The game was developed in Unity and written in C#. All of the systems that are in the game were developed by me.

Slime Time

Slime Time is a 4 player co-op party game. The game was created as part of my Beta Arcade module in my 3rd Year of University. The group consisted of 10 people me included. There were 2 artists, 7 programmers and 1 designer.

Trailers

Stills