Jaxson MacFarlane

Game programmer


VixenGL (C++/OpenGL/SDL)

VixenGL is a game engine I'm building, made to replicate the look and feel of 90s shooters like Duke Nukem, Blood (1997) and Doom. It started as a basic 3D Software Renderer, but I rewrote it to use OpenGL so it works better on modern hardware. It has a base engine, game loader and a level editor. All still WIP.

Here are some key features:

  • Shader effects to look software-rendered
  • Billboarded Sprites/Sprite sheets
  • Source-style controls
  • Maps build with Walls/Sectors/Portals
  • Level Editor built in-engine, with ImDearGUI for UI and undoing/redoing.
  • 3D preview in the level editor, and textured floors in 2D view
  • Zlib for loading from ZIP archive for game content



Guts and Blackpowder (Roblox/Lua)

Guts and Blackpowder is a game I made with the Roblox Engine and is published to Roblox. As of writing this, the game has over 100 million overall plays, and gains an average of 9000 concurrent players. I am the lead scripter on this project, and the project lead.
Guts and Blackpowder is a game set during the Napoleonic Wars (1803-1815). It is a FPS/TPS zombie game. The challenge of the game comes from the setting in 19th century Europe. You must use muskets, sabres, cannons, axes and many more weapons to beat the undead. The game has two modes Endless and Objective.

Biggest Contributions I've made to the game:

  • All AI in the game (zombie types). Including decision-making, prediction, player interaction, and etc.
  • Main game manager for both modes
  • Weapon framework for all the guns, instruments, and other tools
  • Optimized Potentially-Visible-Set for deciding where to spawn things throughout a level as it is played
  • Manage of team of 5 other developers and 14 Contributors
  • Researching period-accurate uniforms, hats and other clothing

Cinematic trailer


Gameplay


Astrosteel Invasion (Love2D/Lua)

Astrosteel Invasion is a turn-based strategy game I made with Lua in the Love2D framework in 72 hours for the Networking Nexus game jam hosted by Indie Game Academy. The theme was "collaboration". In this game you control units of Robots invading an alien world, and each unit has a given number of troops that acts as their health, and each unit gets a set number of moves per turn. Some units do only melee combat, while others shoot guns. The objective of each level is to either get your bomb carrier robot to the gate of the alien city, or kill all of the alien units. The alien units are controlled by an AI that calculates every move it can do, and then picks the best one rated by a score. It then repeats this until all of its moves are used up.

You can find the game page on itch.io here. If you're looking to play it, I highly recommend you download the Windows version if you are on Windows because the web version is a bit off, because love.js isn't perfect.

I was responsible for all the programming, including:

  • Scene class
  • Tile-based movement
  • Level loader
  • Enemy AI
  • UI
  • Particles
  • Unit abilities
  • Building world 1, 2 and 4

ECS game engine (C++/OpenGL/SDL)

At Humber College I made a game engine for the game engine 4 course, built completely from scratch without the template code given by the professor. Here I learned how to make an Entity-Component/Unity style game object class. An Entity can have children entities, and each Entity can have various Components. Like a Transform, Mesh, Material, Shader, or Bone. This engine has a transform hierarchy, meaning a child entity inherits the transform of its parent. Using this I was able to load entire models/scenes from many different model formats like FBX, OBJ, and COLLADA using the ASSIMP library and implement skinned meshing. It loads the armature from the file, and you are able to translate, rotate and scale bones to affect the mesh they are skinned to. The Animator component allows you to play animations loaded from a file onto an armature.

Demo of Mesh Skinning/Skeletal Animation

Checker Board Scene

Shadow Mapping


Hooked (C++/SDL)

Hooked is a game that I made with 3 other teammates for our college midstone project at Humber. I was the lead programmer for this project. The game is a simple fishing game based off the fishing minigame from The Legend of Zelda : Link's Awakening. We worked on it over a semester (~3 months). It was written in C++ from scratch in SDL2.

I was responsible for:

  • Game engine architecture
    • Base Game class
    • Game States / Scenes
    • Input handler
    • Sprite rendering
    • UI Renderer
    • Base Game Object class for creating objects and a scene graph/hierarchy
    • Basic 2d physics
  • AI for the Fish
  • Simulated Rope physics for fishing line
  • Fishing pole control logic
  • Shop to buy/upgrade fishing pole
  • Handling the git/github repo

Bloodpowder (C++/SDL)

Bloodpowder is a game I made for the 2022 Global Game Jam and Humber Game Jam in 48 hours. The theme of the jam was Duality. The main mechanic of this game is that your character's health and the ammo in your gun are linked. Meaning if you shoot your gun, you lose health. Having no ammo in your gun would be a gameover. Ammo/Health can be picked up from dead enemies. The objective of the game is just to survive for as long as possible.

This game was built on an old version of my Vixen engine. It is software rendered, and there's an issue with the rendering but I couldn't fix it in time for the deadline.
If you wish to play it, you can find it on Itch.io here

I worked on this game alone, so I was responsible for everything:

  • Base game engine/Software renderer
  • Weapon logic
  • Character movement
  • Animated Billboarded sprites
  • Pre-rendered Enemy model (made in Blender)
  • Raycasting between sectors to hit enemies


It Feasts on Gibs (Love2D/Lua)

It Feasts on Gibs is a game I made for the Ludum Dare 46 Game Jam in 48 hours, the theme was "Keep it alive". It's built in the Love2D game framework. In the game you are the owner of a giant monster and you must feed it to maintain its health. If it dies, the game is over. Waves of zombies come after you, and you have to blast them into tiny pieces to be fed to your monster. Your character can also be hurt by the zombies, and obviously if you die, the game is over.

You can look at the game page on LD here. The game is also up as a web-version or Windows version on Itch.io. The source code is also up on Github.

I worked on everything in this game including:

  • Character health and movement
  • Monster "AI"
  • Zombie AI
  • Shotgun code with projectiles
  • 2.5D physics for the gibs
  • All artwork/sprites
  • I made the sound effects with jsfxr
  • I even composed a short music track for the game


Whacker of Thy Weeds (Love2D/Lua)

Whacker of Thy Weeds is a game I made for the Ludum Dare 45 Game Jam in 48 hours, the theme was "Start with Nothing". It's built in the Love2D game framework. You play as a farmer, raising a large Jack-O'-Lantern. During the day time you can plant pumpkins, buy items from the shop, and place barricades. At night evil weeds come to destroy your crops, and you must defend your farm. If the weeds destroy your prized Jack-O'-Lantern, you lose. Over time the pumpkins you plant grow, and you can harvest them to gain money to buy things.

You can look at the game page on LD here. The game is also up as a web-version on Itch.io. The source code is also up on Github.

I worked on everything in this game including:

  • Character movement and controls
  • Plant growing logic
  • Artwork/Sprites
  • Sound effects made with Audacity and jsfxr
  • Weed AI and Worker AI
  • Shop to buy items and UI


Defender Clone (C/SDL)

For a college assignment I challenged myself to writing a game in something I'm less familiar with. So I wrote a game in C from scratch. Not C++, just C, compiled with MinGW/gcc. I made a clone of the game Defender (1981) where you fly a space ship over terrain and you must defend humanoids from being abducted by alien spaceships. I wrote this game in 12 hours over 2 days. The main challenge of C came from no STD library and the lack of native Object Oriented Programming.

Art was sourced from OpenGameArt.org

Main features:

  • Space Ship Controls and physics
  • Human physics and pick-up logic for both aliens and the player
  • Alien lander AI that targets humans and flies off with them
  • Spawning logic that scales as the game progresses
  • Projectiles for shooting aliens
  • Repeating terrain

Gameplay

Video on the development