Category: Portfolio

  • Frame Advisor – Arm

    Frame Advisor – Arm

    I am one of the technical team leads on Frame Advisor at Arm. My main focus areas have been the on-device interceptors (Vulkan and GLES layer drivers), Android device management, infrastructure and the frontend. I have also been largely responsive for the release process and am heavily involved in architecture and design for the product.

    Frame Advisor is primarily written in C++ and Python, and makes use of Qt for the frontend.

    Frame Advisor is a developer tool that provides detailed frame-based analysis for mobile graphics on Android applications. It is available as part of the Arm Performance Studio suite of profiling tools for Arm-based devices. Use the tool to capture the API calls and rendering for a problem frame to discover what might be slowing down your application. The intuitive visualizations show the composition of the workloads in your application frames, the output the GPU produced and whether the application was conforming to best practice guidelines.

    To improve frame rates and energy efficiency, use Frame Advisor to:

    • Discover inefficient API use.
    • Explore how efficiently data flows between render passes to create the frame.
    • Find expensive render passes with high numbers of draw calls.
    • Check if geometry is being drawn and indexed efficiently.

    Source – Arm Frame Advisor

  • Performance Studio Unity Plugin – Arm

    Performance Studio Unity Plugin – Arm

    Another project I worked on at Arm was creating a Unity package for integrating the Arm Performance Studio tool suite into game development workflows. This package has the following features for integrating with the Streamline profiler.

    • C# language bindings for emitting event annotations.
    • C# language bindings for emitting software counters.

    This was an interesting experience where I learnt more about the Unity editor and how to integrate a plugin into it. You can view the plugin on GitHub as well as a published guide on how to make use of it.

  • Performance Advisor – Arm

    Performance Advisor – Arm

    One of my first projects at Arm was working in the Performance Advisor team. I saw this project through from its initial conception through to the official release.

    Performance Advisor is a lightweight reporting tool that is part of Arm Streamline, available with Arm Performance Studio. It transforms a Streamline capture into a summary report that shows how your Android application performs on Android devices with Arm CPUs and Arm Immortalis or Arm Mali GPUs.

    Easy-to-read interactive charts show how performance changes over time, and where bottlenecks are causing the CPU or GPU to run inefficiently. Discover if your application is vertex or fragment bound, and get advice about how to solve common graphics problems that might slow down your application, overheat your device or consume too much power.

    Source – Arm Performance Advisor

    I became the frontend expert of the team, designing much of the user interface using JS, JQuery, D3.js, C3.js and more. The backend of the tool was developed in Java, which I also contributed to and aided in design discussions.

  • Python Web Editor – Micro:bit

    Python Web Editor – Micro:bit

    I worked with the Micro:bit Educational Foundation for several months through a program at Arm.

    During my time with the foundation I helped to improve the Python web editor to release a full redesign as well as supporting new hardware. I made use of recently added web APIs for device management.

  • 5G Traffic Simulation – Intel

    5G Traffic Simulation – Intel

    I worked as a Wireless Software Engineer at Intel for just over a year for my internship.

    Whilst at Intel I developed a real-time diagnostics tool and worked on generating and simulating 5G traffic. The biggest challenge in this was simulating the vast amounts of data a fully loaded 5G network can handle – this involved exploring parallel workloads in depth as well as using custom NICs and drivers to handle such a large amount of network traffic.

    This data was generated and then fed into a frontend I also wrote that provided real-time graphs of network performance and load. The network simulation was written in C and the frontend made use of Qt and C++.

  • Website Design

    Website Design

    Over the years I have created various websites for clients. Usually this involves heavily customising an existing WordPress theme. In some cases this has also included creating logos and branding for the business as well as business cards and posters.

    You can see some examples of my work below:

  • FACILITY 7 – Unity Game

    FACILITY 7 – Unity Game

    FACILITY 7 is an experience that explores the concept of time. Is there a goal? What is its purpose? That is for you to decide.

    Screenshot

    I created this game for my One Game A Month challenge using the theme ‘Age’. I created the game from scratch in Unity using C# and it is playable on Windows, Mac and Linux.

  • Stoodle – Custom CMS

    Stoodle – Custom CMS

    Stoodle is a service I developed that allows students at the University of Bath to share and review notes from fellow students on their course. It was developed using PHP/SQL for the backend and HTML/CSS for the front end. I also made use of Bootstrap for the user interface.

    Stoodle has many features:

    • Creating an account
    • Logging in/changing password
    • Uploading notes
    • Browsing notes
    • Rating notes
    • Commenting on notes
    • Customising your profile
  • Virtua Cube – VR Unity Game

    Virtua Cube – VR Unity Game

    I developed this game in a team of four over 24 hours at a hackathon (BathHack). The game requires an Oculus Rift DK2 and is a virtual reality survival game. We created the game in Unity using C# and the Oculus Rift SDK. You control the game by moving your head and must avoid looking at the cubes coming from all directions. There are also various power-ups you can collect such as ones that speed up and slow down time, a laser gun allowing you to shoot and destroy cubes as well as a bomb. The object of the game is to survive for as long as possible, there is also a high-score table.

    Virtua Cube

    I also submitted this game as part of my One Game A Month challenge. I really enjoyed working in the team and with virtual reality.

    Since this post a brief video of the game was made by WEARVR:

  • SUPERVIRUS – Unity Game

    SUPERVIRUS – Unity Game

    SUPERVIRUS is a roguelike game where you control a virus and attempt to infect as many computers as possible. I created this game for a One Game A Month challenge using the theme ‘Rogue’.

    SUPERVIRUS

    I created the game in Unity using C#, it is playable in Windows, Mac, Linux and in the browser. I based the game off of a 2D Roguelike tutorial so I could learn more about developing 2D games in Unity and creating procedurally generated levels which this game features.

  • 30 Second Challenge – Unity Game

    30 Second Challenge – Unity Game

    30 Second Challenge is a game where you must complete a series of obstacle courses in under thirty seconds. I completed this as part of participating in One Game A Month which is a website which provides a monthly theme for a game and game developers have until the end of the month to create a game based on that theme. This months theme was ’30 Seconds’.

    30 Second Challenge

    I created the game in Unity using C#, it is playable on Windows, Mac, Linux and in the browser.

  • GPD Reader – Android App

    GPD Reader – Android App

    I created an Android application called GPD Reader which allowed you to view the latest news from Google Plus Daily on the go. It was designed for phones and tablets, followed the material design guidelines, provided an optional dark theme and had the option to send you a push notification whenever a new article is posted.

    I created the application using Android Studio in Java. At the time, I also a regular author and contributor to the Google Plus Daily site which has since been discontinued.

  • Dungeon of Doom – Java Game

    Dungeon of Doom – Java Game

    As part of my coursework at the University of Bath I spent two months creating an online multiplayer dungeon game in Java. A server application can be started which will manage the game and then any number of players are able to join the game from their client.

    Dungeon of Doom

    The game includes chat functionality as well as a combat system for when players encounter one another in the dungeon. The object of the game is to collect a specified amount of gold and get to the exit before anyone else. The game is turned based and has keyboard and on-screen controls. There are a variety of additional items in the game that can help players such as a lantern to increase a players view, armour to increase your protection, a sword to increase your attack and potions to restore lost health.

  • Invasion – Don’t Starve Together Mod

    Invasion – Don’t Starve Together Mod

    I ported my existing mod over to Don’t Starve Together which means that the aliens are now networked and the mod can be used on multiplayer servers. This involved restructuring some existing code and ensuring the aliens and ships were created and managed on the server side instead of the client side. You can view the mod on the Steam Workshop.

    Invasion

    See the original mods section for more details.

     

  • Invasion – Don’t Starve Mod

    Invasion – Don’t Starve Mod

    I developed a mod for Don’t Starve which adds alien invasions into the game in Lua. The mod spawns a number of crashed ships throughout the world each season so the aliens slowly take over the world. The aliens will only come out at night unless provoked but will attack you on sight.

    Invasion

    It was an interesting project as I enjoyed programming the aliens artificial intelligence. The alien has several states it can be in and will always try to return to its ship before daylight. I also used Spriter to animate the aliens. The aliens were improved versions of the ones I created in Luneoids. You can view the mod on the Steam Workshop.

  • Luneoids – Android Game

    Luneoids – Android Game

    I made a complete Android game over a six month period called Luneoids. The object of the game is to survive against waves of aliens by tilting your phone to move your ship. You can collect gold to buy various upgrades and new ships to help you progress further during each try.

    Luneoids

    I used Game Maker Studio to create the game as I used this tool to create a large amount of games when I was younger. However I also made extensive use of its GML scripting language to allow for more advanced features to be implemented. The Hotline Miami series was created using Game Maker Studio so the software is more advanced than many realise.

    My younger brother helped out by drawing all the graphics by hand whilst I coloured them using GIMP to provide a unique art-style for the game. You can view some gameplay footage below:

     The application has since been removed from the Google Play store. But you can still get it here: