“Advanced Project Timer” Project
Engine: Unreal Engine 4 Platform: PC Completion Date: March 2020
Aim
To build an executable using Unreal Engine 4 that can track project time for purposes of invoicing during contract work.
Description
During the start of the year I was in a fortunate position to hire some office space with another Game Developer, originally for collaboration purposes, but evolving into a space utilised for my personal programming projects and his contract work as a Technical Artist. Near the start I witnessed him putting together an invoice for the work he had completed over January, which resulted in what he estimated as him being underpaid because he didn’t know the exact hours he’d worked on each task. From this spawned an idea to create a simple program to track time spent on projects, broken down into tasks so that it can be easily used for the purposes of invoicing. I decided to use UE4 to create the project, even though it seemed a little like overkill for a program so simple, for two reasons:
- The UMG system in UE4 is extremely well set up and super easy to use and nut out UI quickly.
- To keep up my skills in UE4, as my work commitments in my retail job increased, leaving me with little time to work on more than one project at a time.
Work Completed
This asset reached its 1.0 completion Milestone, with the core functionality in place. It began written in Blueprints, but I quickly converted it to C++ because the code was a lot easier to read and navigate than the mess of Blueprints that were building up with mathematical algorithms that made the program. The program’s 1.0 version includes the following features:
- Create and name Projects, and for each Project, create and name Tasks
- Displays the start date for each project/task
- Displays the last worked date for each project/task
- Displays a toggle that shows total time worked for last Day/Calendar Month/Calendar Year, and an ability to Search a Date Range for each project/task
- Displays the overall time for each project/task
- Automatically sort projects into most recent to least recent and ability to reverse this, and to manually move projects up and down
- Change the display date format between DD/MM/YYYY, MM/DD/YYYY, YYYY/MM/DD
- Save data, load previous data, autosave feature
- Toggle between full screen and windowed
- Minimise/delete projects
Stretch Goals to be Completed
While the project’s first iteration is complete, it is still my intention to return and complete the stretch goals set for the project, as follows:
- Ability to export the project/task data to a spreadsheet
- Ability to save projects separately
- Fix the Programmer Art (to make the UI look professional)
Enigma Machine
Engine: MonoGame (XNA) Platform: PC Completion Date: June 2020
Aim: To build a simulation of an Enigma Machine from scratch, using C#, in order to keep my skills up in a second programming language other than C++.
Description: This project’s 1.0 version was completed in six days as a way to stretch my programming muscles after an increase in my work commitments for my retail job. The idea for this project was inspired by my research into cyber security and encryption. The application simulates an Enigma Machine from World War II (https://en.wikipedia.org/wiki/Enigma_machine), which is a very early form of encryption used by the Germans to send coded messages during the war.
Work Completed: The Enigma Machine is broken up into four parts: the keyboard, the plugboard, the rotors, and the lightup display. When pressing a letter on the keyboard, it simulates the path of the letter through the machine (originally used by electrical wiring in the original machines). The letter goes to the Plugboard, which switches 10 of the 26 letters with another 10 of the 26 letters. The letter returned from the Plugboard is then passed to the three rotors. Each rotor has each of the 26 letters connected to another of the 26 letters, and is also turned in place to one of 26 positions. After each letter is pressed, Rotor I rotates one place (which means if the same letter is pressed multiple times in a row, it will not code to the same letter – eg, if ‘HHH’ is entered, it may come out as ‘QLT’). If Rotor I reaches back to position ‘A’, Rotor II rotates one place, and if Rotor II reaches back to position ‘A’, Rotor III rotates one place. The letter is then passed to the Reflector, which also has 13 letters connected to the 13 other letters, meaning there will be no one for one switch of the same letter (eg, ‘H’ is not switched for ‘H’). The letter is then passed back through the rotors, back through the Plugboard, and to the lightup display, which lights up the coded letter. If the Enigma Machine is set back to its starting specs (with the rotor positions and switches in the Plugboard), and the coded message is entered, the original message will light up.
My application’s 1.0 iteration simulates this path. It also allows for a user to manually change the rotor positions and Plugboard switches (in order to reset and decode the message). The application also prints both the coded and decoded message to show the simulations. There is also an implemented feature where the starting specs, coded messages, and decoded messages can be saved to .txt files for both readability and to be able to be passed to someone else to decode.
Stretch Goals to be Completed: While the project’s first iteration is complete, it is still my intention to return and complete the stretch goals set for the project, as follows:
- Add networking so that coded messages can be sent across the internet to be decoded elsewhere
- Fix the Programmer Art (to make the UI look professional)
Gallery Project
Engine: Unreal Engine 4 Platform: PC 1.0 Completion Date: December 2019 Final Version Completion Date: August 2020
Aim: To build an interactive gallery in UE4 as a birthday/anniversary present for my girlfriend.
Description: The Gallery project has two iterations as follows:
1.0: Completed December 2019 for my girlfriend’s birthday
- Mostly focused around level design and building the gallery itself
- Using BSBs
- Starter Content Materials
- UE4 Marketplace Assets
- Lighting
- UI Assets for pictures and frame class to make it easier to place in the world (and to set up for future functionality)
- Features a Three Month Gallery with photos and memories from our first three months together all over the walls
- Christmas-themed for December
- Basic movement from UE4 third person template, with imported Paragon asset as the player character
2.0: Goal to complete by August 2020 for our 12 Month Anniversary
- Expand the Gallery to include six month, nine month, twelve month galleries
- Six Month Gallery themed around weather (one room has bushfire smoke, another rain, etc, to reflect our experiences between November and February)
- Nine Month Gallery themed around COVID-19 Lockdown to reflect our experiences between February and May
- Twelve Month Gallery is yet to be decided, as we haven’t reached that Milestone yet. (Final touches may be added after our actual anniversary)
- New features include:
- Timeline Gallery (reflecting an overview of our twelve months together)
- Controller support
- Sound (Music in gallery rooms that spark memories for us)
- Picture Interactivity (Ability to look at a picture and press ‘F’ to bring up a UI with a description of the pictures)
- Tutorial guidance (Arrows on the floor to indicate best path that can be toggled off)
- Loading Screen
- Setting for Christmas items to show only in December
- ‘Do you want to Quit?’ prompt when walking to the exit doors
Work Carried Out so Far: The whole Gallery level has been built including all of the display spaces, and everything described in version 1.0 was completed in December 2019. Out of the 2.0 version, the Nine Month Gallery has been completed, along with controller support, the setting for the Christmas props to only appear in December, and the Picture Interactivity system, as well as replacing the Paragon character with a model more appropriate. The Six Month Gallery has been started, and the other features and galleries will be completed by August 2020.
Projects Started in 2019 Status
Due to an increase in my work commitments for my retail job, my two projects from 2019 were temporarily put on hold.
Crowd Generation Tool
During my brief time renting office space with another Game Developer before the COVID-19 situation hit, I revisited this project and began cleaning up the loose code/blueprints, in order to lay it out in a more professional manner. However, the final feature still remains a work in progress, and it is my intention to finish this project in the near future.
Real Time Strategy Game
At the start of the year I evaluated all of my projects and project ideas and determined that my Return on Investment (time spent on this project vs how much I expected to get back from it, both in revenue and experience) was not enough to justify continuing this project. That being said, I really enjoyed making the foundation of this game and will likely come back to it at some point to finish it for my personal satisfaction.