Hudson Douglas


Software Engineer



Excited to work with others in solving computing problems and developing ICT project management solutions. Eager to apply critical thinking skills and contribute towards the ICT industry. Looking forward to expanding my knowledge through experience in a growing industry.

This web page is a work-in-progress!

00:00

Open-Meteo

Sliding Puzzle

June 2023 - Ongoing

C# Unity VR Feature


A classic, configurable sliding puzzle developed to be interacted with in virtual reality. Made in Unity as part of a work-in-progress collaborative project title.

The feature was implemented with VR interactivity first and foremost; the player must intuitively grab and drag sliding blocks into the vacant spot. This is accomplished via Unity's Rigidbody physics system to avoid redundant code and wasted time while also allowing for direct compatibility with the OpenXR system currently implemented, as it works by picking up Rigidbody objects.

The implementation focuses on being friendly to configure for non-programmers; the feature makes heavy use of Unity's Inspector feature, providing an accessible user interface within the editor to change any parameters.

The current implementation is flexible enough to allow designers and artists to assign their own images to the blocks, in what order the blocks may start in, the puzzle's grid size and the correct order of which an external "Win" function can also be assigned via the Inspector.

Front-End Web Development Project

Aug 2021 - Nov 2021

KDDart / University of Canberra, Internship | Bruce, ACT


  • Coordinated in a team of 4 skilled in programming, graphic design, web design and project management.
  • Discussed, designed and documented solutions for modernising the display and accessibility of a database web interface product.
  • Scheduled regular meetings with the client for progress updates, concerns and prospective changes.
  • Implemented reactive CSS web visuals, a modernised and branded colour scheme and intuitive layout facelifts.
  • Implemented cross-platform accessibility.
  • Design implementations based on the product’s target audience expectations and requirements via research.

AI & Light

May 2022

C++ Real-Time Interactive Game


(Above is a non-playable demo.)

A demonstration program containing two variations of AI-controlled players versus the player (you!) in an enclosed environment lit up by a custom light rendering system.

You are tasked with controlling the white triangle to take the key item--the white orb--and leave into the red square, avoiding the guard triangles searching for you.

The colour of guard agents determines their current AI state:

  • Blue: Guard behaviour.
  • Yellow: Search behaviour.
  • Orange: Chase behaviour.
  • Red: Attack behaviour.
  • Green: Bathroom Break behaviour.

One guard is controlled by a Finite State Machine instance, using the Dijkstra algorithm for path finding. Another guard is controlled by a Utility AI instance, using the A* algorithm and euclidean heuristic for path finding. This guard is signified by a pink dot on top of it, and has the tendency to use the bathroom when needs be, appearing green while doing so.

ArkaNot

May 2022

C++ Real-Time Interactive Game


(Above is a non-playable demo.)

An arcade classic re-creation of Taito's 1986 Arkanoid.

Your goal is to destroy all breakable bricks for each level using your ball, advancing to the next level. You lose upon losing all balls below the paddle.

Each brick colour rewards a unique amount of points upon breaking and has a chance of dropping a random power-up (small, falling block). Silver bricks take two hits to destroy; gold bricks cannot be destroyed!

The colour of the power-up determines the power it grants your paddle:

  • Green: Catch. Balls will stick to your paddle for a while before launching (or, launch them yourself with Left Mouse/Space).
  • Red: Laser. Fire lasers to break bricks above with Left Mouse/Space.
  • Blue: Enlarge. Makes your paddle wider.
  • Cyan: Disrupt. Triples the amount of balls on-screen.
  • Yellow: Slow. Grants a few seconds of slow-moving balls--these power-ups can stack for even slower time!
  • Gray: Player. Grants an extra life.
  • Purple: Break. Grants a large amount of points.

NOTE: Black or empty levels indicate an invalid level has loaded. - If the level is black, you have gone back too many levels. Hit Enter to progress until the first level. - If the level is not black, but empty, you have progressed too many levels. Hit Pipe (|) to go back to a valid level.