This page is a selection of personal projects I have worked on or actively work on.
GSoC 2017 Project Summary
The goal of this project was to research the use of the Rust programming language in GNOME GJS to help reduce or eliminate memory leaks and increase memory safety, and where possible, implement it to do so.
A Game Experiment
Using Rust and SDL2.
This is a mamoth project, and has involved a lot of lessons for me. Essentially it is to become a kind of minimal framework for creation of a 2D game - the basics are there and working, but it requires much more work and refinement.
Recently I broke out various parts of the engine in to their own crates, some of which are published on crates.io.
Published Crates
tiny_ecs
The intention of this crate is that a basic ECS is provided, where you will be required to exercise a little additional control. This is somewhat due to some limitations, and also due to trying to maintain as little overhead as possible - this means no unneccesary copies/clones.
Where most other ECS crates provide a mechanism for inserting "systems" in to the ECS to run against entities, this one leaves it out - you can think of it as a "system for entity/components". You will need to create external systems; these can be a function, a loop, or anything else.
tiled-json-rs
A handy crate for parsing the Tiled JSON data in to a usable structure.
The crate includes a few small helper functions on Map, TileSet, and TileLayer. These functions are for common tasks such as generating a cloumn/row location (tiles are stored in a 1D array), a located box on an image for helping with tile-to-tilesheet image picking, and loading files (or strings).
cyclone-rs
A physics engine work in progress. Written by following the "Game Physics Engine Development" book by Ian Millington.
Currently has a 2d engine which works quite well.
Game of Life - Written in Rust
This is a project I'm working on bit by bit. It was an excellent way to learn
some of the more nuanced aspects of Rust and resulted in some rather messy
code at times. I also experimented quite heavily with it, from using straight
nested Vec
to using maps
throughout.
The code has gone through some pretty hefty evolutions at times, and now has many features on the way.
A simple Tic-Tac-Toe Web Server & Client
This was an assignment for a paper I did through Massey University. We were expected to do this using Python, but I managed to convince the professor to let me use Rust. I think it turned out well, certainly it demonstrates core client/server techniques.
This website
This website/blog currently is built using Gutenberg which is written in Rust.