Portfolio

Lapis-chan

Lapis-chan is a new project of mine recently released to the public. Lapis-chan is an image board web application written in Lua using the really awesome Lapis web framework. Lapis-chan is feature-rich an continues to expand and improve with time and contributions.

I originally started Lapis-chan as an excuse to delve back into web development by learning to use the Lapis framework but after only a couple short weeks, I was able to build something I was proud of and decided to continue to support it with bug fixes, new features, and the likes.

Lapis-chan is released under the MIT open source license. For more information, check out the project on Github or see it in action at lapchan.moe.

Simple Tiled Implementation

STI is a feature-rich library designed to import and render Tiled maps in LÖVE. STI works by loading the raw Lua export file from Tiled and builds upon that data to create a fully functional map. Some notable features include:

  • Orthogonal, Isometric, and Staggered maps
  • Tile, Object, Image, and Custom Data layers
  • Box2D collision
  • Tile animations
  • Tile buffers
  • Draw culling
  • Parallax

STI was the first large project related to game development that I undertook. My motivation for this project was that I was using another Tiled library for LÖVE but the developer ceased development. Because of this, lots of people were left without updates to known bugs and broken compatibility with newer versions of LÖVE. My first attempt was to maintain that library but I quickly decided that I could do better by starting over from scratch. After significant development, the benchmarking results were impressive.

To date, the original forum thread where I post updates and support users has been viewed nearly 60,000 times. STI has also been starred on GitHub by nearly 150 people. STI has been used in commercial games such as Blue Revolver and by developers in game jams including the project lead of Tiled.

STI is released under the MIT open source license. For more information, check out the project on Github.

IT Simulator

IT Simulator is an arcade game designed for one or two players. The goal of the game is to ensure that the client's office equipment that you are servicing do not break while customers continually use and degrade them. This game was developed by Binary Cocoa as a marketing tool for Fisher's Technology, an IT firm.

I was brought on near the end of the project to help iron out some rendering issues, balance the game, and tweak some of the game's mechanics. We were on a very tight deadline but we managed to work together and pull it off. IT Simulator was taken to an IT Conference in Idaho, USA where it was present at Fisher's Technology's booth in an arcade machine for passersby to play.

IT Simulator was built using the LÖVE framework and coded entirely in Lua. IT Simulator was never released to the public and has no license information.

BOCO

BOCO is a simple 2D strategy game that can be played against an AI, a local friend, or other players online. The objective of BOCO is to fully surround your opponent's game pieces with your own.

BOCO was the first commercial game I worked on. As a contractor for Binary Cocoa, I wrote the gameplay, menu, and networking code. Much of the gameplay code revolves around my open source winged edge library (see below) that I wrote a blog post about, written in pure Lua. I also played a significant role in designing BOCO's UI.

The team who worked on BOCO was a small, international group based mostly in the United States. Other members of the team included another programmer who designed the AI, a graphic and sound designer, and our project manager.

BOCO was built using the LÖVE framework and coded entirely in Lua. More information can be found on BOCO's official website.

LÖVE3D

LÖVE3D is a set of libraries and tools that provides a 3D environment on top of the LÖVE 2D framework. LÖVE3D is still in early development and its capabilities continue to expand and the API refined.

The LÖVE3D team currently consists of myself and one other. Together we've built several tools and gathered several more, often extending them to fit our needs. Some of the tools we've built to date are listed below.

LÖVE3D is released under the MIT open source license. For more information, you can visit the LÖVE3D forum thread.

Lua IQE Loader

One of the first libraries built for LÖVE3D was an Inter-Quake Export loader. IQE is a feature-rich 3D model format that includes skeleton rigs and animations. This IQE loader is written mostly with pure Lua but also contains LÖVE-specific code for rendering. This library supports the following:

  • Vertex data
  • Bone data
  • Material data using Wavefront Material files
  • Loading textures
  • Accessing individual meshes
  • Buffering meshes for improved performance
  • Buffering animation frames for improved performance

Lua IQE Loader is released under the MIT open source license. For more information, check out the project on Github.

Cirno's Perfect Math Library

CPML is a collection of pure Lua modules compiled with 3D game design in mind. Several of these modules were written from scratch while others were curated. The modules written by myself and a friend include:

  • A fully featured matrix 4x4 module
  • A fully featured quaternian module
  • A mesh module

The modules we curated and expanded include:

  • A 3D vector module originally adapted from a 2D vector library
  • A Simplex Noise generator
  • A set of intersection functions

CPML is still under heavy development and continues to expand as we find need for new functionality. CPML is released under the MIT open source license. For more information, check out the project on Github.

Lua Winged Edge

Winged Edge is a data structure in computer graphics to describe polygons. The major strength of winged edge is that each face in a mesh is aware of adjacent faces, even in an environment with irregular topology or non-grids.

This library is written in pure Lua and has been used in at least one commercial game: BOCO. I used Lua WE in BOCO to do recursive adjacency checks for the win/lose conditions and for checking valid moves. I also wrote a detailed blog post about my work on BOCO for Binary Cocoa.

Lua WE is released under the MIT open source license. For more information, check out the project on Github.