I'm an 'all-round' software designer/developer that is based in Melbourne, Australia.
First and foremost, I'm a 'nuts-and-bolts' kind of person. If I can do it, chances are it's because I've done it before, pulled it apart, put it back together and pulled it apart again.
This 'build-and-rebuild' approach I've taken with learning is, partly, due to my fondness of automotive modification. Anyone in that world can tell you that experience, knowledge and wisdom come from knowing every nut and bolt, what it's job is and how it does said job, and there is no substitute for 'getting your hands dirty'.
Since entering the game industry officially in 2021 as an engineer at Grease Monkey Games, working on Torque Drift, I've grown and excelled to a position of lead engineer on the project, maintaining server, mobile and PC codebases of the project, all while facilitating the designers and support staff with tooling in the Unity engine and supporting build pipelines.
In my free time, you can find me at any of the numerous 'hole-in-the-wall' pizza/burger shops around Brunswick, at home working on a number of projects I have (and potentially even livestreaming them) or exploring the city of Melbourne as a New South Welshman.
Related course work: Media and Communications, Internet Communications, Digital Media and Entertainment, Application Programming, Mobile Applications and the Cloud, Games Design, Information and Communication in Business, Web Programming, Social and Interactive Media, Digital Economy, Digital Culture, Project Management, Games Production, Media Production... and others.
Download my CVI've always been a fan of the 'Wangan Midnight' franchise, I also played drag racing games on mobile previously and found them lacking in some area or another (not bad, just lacking). This, and my 'nuts-and-bolts' approach, inspired the development of Midnight Pass. While my previous style of development has been useful for the exploration of skills, it is not a directional approach. The ‘street racer' genre of games is something that I have enjoyed before and look to add to with Midnight Pass.
On the design side, I found the feeling of driving my own car (with a manual transmission) highly enticing as, famously, there is a directly connected interface with the mechanics of the car and ‘the feel’ of the driving. However, there is still a need for accessibility. As well as this, while I'm part of a crossover, a sizeable audience of gamers are not car enthusiasts, and so 'engaging' has several definitions. Managing and appealing to these different definitions means, to me, creating an experience that translates the authentic experience into an authentic feeling, allowing for authentic engagement. To me, this is the key to 'fun'. It was crucial that the game captures these aspects where many other games of this nature fail (in my opinion).
Technically speaking, the game’s update model will use a custom CDN using Firebase and Unity's Asset Bundle system and Firebase’s file hosting. Multiplayer, due to a ‘limitation’ of Firebase being that it is ‘non-real-time’ multiplayer, will be a REST API using Firebase’s Realtime Database, Firestore, Cloud Functions and Storage features. For example, multiplayer replays will be serialised via a command pattern and played back on opponent devices. This allows for a decoupling between the logic of the game and the input of the game. As mentioned, there is a directional approach to development, so various elements of development will be as platform-agnostic as possible, utilising the .NET framework and C# where possible, mostly using Unity for rendering, while still writing neat, segmented, separate components for object composition. As an aside, I'm also looking into testing functionality of these platforms, as I've noticed test driven design as a trend in the industry recently. Lastly, knowing a bit about real-time ray tracing, I'm interested in, if just for the novelty, looking to create a relatively interesting rendering experience.
While there's currently no live version on Midnight Pass, I have a Notion board that I use for daily development, it contains active tasks and notes I have on the process. Or, alternatively, reach out to me in private as I'm more than happy to answer any questions or just discuss it more.
Check out the Notion BoardDuring the development of another project, I made the decision to port its progression to Unity. While becoming familiar with Unity, this happened.
I thought about how a game developer's first exploration of an engine is often a basic and simplistic remake of some sort - I figured Pong was a good idea. However, I didn't want to replicate the known and loved Pong as it is, so I chose a neon aesthetic, partly to test my own post-processing programming.
While becoming familiar with Unity, I learned how the rendering system within it worked, and took the opportunity to implement my own custom version of Unity's Post-Processing stack to see if I could. This became vital as the neon aesthetics' bloom and noise needed constant tweaking as it is reactive to gameplay - which is something that I believe is easier to do with my own implementation of post-processing over Unity's.
That left design. I liked the idea of a game of Pong that constantly changed the aim and objective frantically and possibly even comically, so I decided to make it. To me, phone games can be a goldmine (by way of the whole 'limitations give way to innovations' thing), Neon Pong is a draft at such attempts. My 'Hello World' on the matter, if you will.
This was released on the Google Play Store (sorry Apple folks, I don't own anything Apple) if you want to give it a try. Pure, ad-free, in-game transaction-less Pong. I will mention that this was made in a day to familiarise myself with the Unity Editor. With time, I will go back to polish it, but as is, it is a rough prototype made to show that I can use Unity.
Go to Google PlayI wrote it for this site after finding my original implementation lacking and found alternatives like THREE.js to be, in my opinion, too 'bloated' for my usecase.
Specifically, I found that I wanted basic rendering capabilities without the need to control the madness that is the OpenGL state-machine manually, setting state line by line.
Basically, with an API between THREE.js and Unity, but specialised for ray marching, WRenderer allows for HLSL-ish GLSL with the likes of an '#include' system, allowing for the use of reusable libraries. It also has a built in post processing stack to get the best out of what it can do.
It takes cues from modern rendering practices where it can (when WebGL v1 allows) and wraps them in ES6 style Javascript objects (classes) and the end goal is to hack my way around the restrictions of WebGL to path trace mesh files to globally illuminate, complete with PBR reflection/refraction... all in browser.
The repo is on Github for browsing, feel free to use it. Just be aware that it is for *ray marching and path tracing* and as such, needs a bit of work to draw meshes as a rasteriser.
This was a passion project that served a massive amount of education on how modern path tracing works.
Check out the source codeWith a lot of my communication being through the Discord platform, I became accustomed to its feature set. Including displaying Spotify data when linked to a Spotify account.
With music being a major part of my daily lifestyle, I celebrate music at all the culture it encompasses, including the advertisment of it; to me, Discord displaying the track I was listening to is Discord displaying the mood I'm in, the thought I'm thinking... my mind in that moment.
When I moved to a company that uses Slack for internal communications, I noticed Slack doesn't have this feature... and fair enough. But to me, I'd like to advertise my music wherever I am, on whatever platform... or at least have the option to.
I was also curious about the method of plugging in one service to another via REST APIs and the security of that method via OAuth tokens.
Seperately, I wanted to dive into a world I'd previously never visited before; Chrome extensions.
So, in total, Slackify is a Chrome extension that connects to your Spotify account and displays a status on Slack of what you're listening to, while providing a neat UI via a Chrome extension to allow for customization.
Check out the source codeAt the end of my Master's degree, I needed to work in a group to create a product. With myself being the only 'full on' developer, the engineering of the creation was at my discretion in terms of implementation.
I elected to use the 3-layer N-Tier architecture system to contain an SQL database and use NodeJS as a middle layer, with the rendered HTML (rendered via NodeJS's PugJS) being the presentation layer. I was asked what I wanted to take on, with AI being my answer. My group and I planned to replicate a real estate website that used AI to advise in the place of an agent, based off of user data and browsing habits.
The way this worked was to note user behaviour, store it in SQL as keywords related to a user, then, when browsing, using a 'Netflix-style' recommender system, wherein the behaviours were compared to the behaviours of other, more active, users in an effort to find suggestions that the user might not have found otherwise. Technically speaking, the 'AI' was nothing more than a dot product comparison of behaviours and with me already being familiar with the idea of a dot product comparison through my experimentation in rendering and games, the recommender was somewhat trivial to implement.
While this project is not directly related to game development, I was required, as per the course material, to write a review of the existing literature on AI in a specific area (being video games). With 'AI' being state machines in games for decades, the advancements in AI have been dramatic in the industry and are mostly recent, meaning I wasn't reading papers from the 90s, instead, about studies and experiments with reinforcement, generative adversarial and deep learning intelligence.
If you're a game developer and are looking to see how AI can either aid you with development or the functionality of a finished game, feel free to give it a read.
Read the literature reviewHAWC or "Home Automation Wireless Control" was a student major project that I was a part of for my Bachelor degree in 2017.
Much like other home automation systems, HAWC relies on client/server models in conjunction with relay technologies to power appliances.
Specifically, a server running NodeJS communicates with the outside connections and triggers scripts on specified wireless relays. The full set of features allowed for users to securely log in and control their home from anywhere, while also allowing for timers and third-party plugins.
My role was as one of two programmers involved, focusing more on the electrical engineering side of the project, while the other programmer initially created the server system's scripting. By the end however, we were both very adept with the full scope of the work.
I do not own the full and finished code, nor do I take full credit for all the code, but it is available to look at on my Github repository for it, if you were curious.
Check out the source codeAfter watching Blade Runner and its sequel, playing Prey (2017), seeing the trailer for the upcoming game 'The Last Night' at the 2017 E3 XBox conference, and being a huge fan of games with interpretive meanings like Hotline Miami, I was inspired to make a 2D, side on, sprite-based, narratively driven game where your choices matter. I was starting a project for my final project at university and started from scratch in GameMaker Studio to build a game that was better mechanically, technically and narratively.
Afterwards, given that GameMaker Studio's mostly a 2D engine, I moved to Unity and used it as a springboard for learning 3D lighting, physics and volumetric rendering. Does Unity do this 'out of the box', yes, but I learned it on my own as well, developing the rendering and VFX from the ground up using OpenGL for a stunning visual experience. Inheritance is for me, a learning experience project, not a production one, as such, there is no tangible release date. But be assured that anything cool that I do probably came from this.
When I started to learn C-based languages, I was introduced to the Arduino brand by my father. It was the first time I was aware of programmable circuit boards and the large scope of their applications. At about this time, the clock in my 1990's Mitsubishi Lancer started to fault. It sparked an idea.
I decided to learn a bit of C++ on my own (at the time, I barely knew C#) and combine my skills in electrical engineering with those of programming to create a novelty application that, given the electrical components, added more functionality to a simple clock module. It wasn't much, but as an avid car enthusiast, it was one more step to making my car more unique and to my own taste.
For those who did tertiary education, there would have been plenty of those assignments that one 'just didn't want to do'. This was one of them for me. I decided to jokingly jest at the pretentiousness associated with some of the stereotypes of coffee drinkers including the 'culture' of higher grandeur surrounding falsely premium consumer products.
While I didn't feel it worthy of being in my portfolio, I felt it was noteworthy as it is the first occasion where proper and modern design was in my head from the moment creation started. Clear and elegant design needed to be evident in the visual aspect of the site as well as overall readability.
One of my first attempts at game design, Just Text Me was a game on mobile that would emulate the Android messaging app and would give you contextual responses to people talking to you which would drive narrative in a 'choose your own adventure' way.
I was inspired by "Emily Is Away" and ultimately decided to shelf the project when Telltale games published the "Mr Robot" mobile game which applied a similar concept to mobile but within the context of the Sam Esmail's television show of the same name, with my reason being that 'I appreciate that I cannot do better than this' at the time... the titular game was really well made.