I’m working on a graphics library for common lisp and have built some short example programs to test features as they are added. I present a collection of these demos and their source code below.
The library is designed to simplify some parts of opengl by wrapping common resources (textures, framebuffers, shaders …) in a class that makes creating, using, and freeing opengl resources easier and more consistent. The library also supplies linear algebra types (vectors, matrices, quaternions) and common functions for them. Matrix and vector data can be passed to shaders easily.
This post outlines how I used a small 2 inch display as a monitor for my pi. Where it can display tty terminals and X desktops and applications as if it was a normal screen connected over hdmi.
My overall goal is to have a sort of handheld “console” that I can connect a keyboard to and use as a normal computer. This post implements the display functionality needed to fulfill part of the goal.
I lay out the steps needed for interacting with the display over spi and the issues I encountered trying to use it like a monitor. The end result is a system service that runs on startup, consuming 2.5 mb of ram and ~2% of the CPU. It also respects the X display power management system (dpms) to save on battery life by going to sleep and turning the backlight off.
A program in Common Lisp that, by defining two functions, one can extract the relevant features from a webpage and get an RSS feed out of it. There is also a script that will update the feeds and push them to an external git repository.
By running this as a cron job (say on a constantly running single board computer), or through a CI pipeline (such as github actions), one can have their own RSS feeds accesible from anywhere with an internet connection. One can then point their rss reader to these public git repositories to subscribe to the rss feeds
Physics based puzzles, launch a green satellite with an initial velocity and watch as it is affected by and affect how a solar system moves. The goal is to have the satellite dock with the red planet present in each level.
Made in 48 Hours for Duck Sauce Games Jam 2024 Using my graphics library built in C++ with Vulkan and OpenGL rendering backends.
A game about frying fish for a hungry cat. Made in 48 hours for global game jam 2024 using my Graphics-Environment library built using C++ on vulkan and opengl.
Roll a marble through a grassy landscape. A simulation of ball physics in a procedurally generating continuous world. I used this project to learn about on the fly 3D model generation, accurate 3D collisions, seamless swapping of models, 3rd person cameras, and noise functions.
Set in a solar system full of planets. Lost ship logs litter key areas, rewarding exploration. The game uses Vulkan or OpenGL for rendering. Written in C++.
Here I go over a lot of the 3D maths involved in creating a space sim. This includes getting directions from world space to screen space and quaternion rotation for 6DOF ship movement. This is my second 3D game, and I feel I’ve learned a lot over the past week.
Extending my complex function animation library to work with graphing functions of the form
f(x, y) = g(x, y)
My first game in 3D, this was made in 48 hours for GMTK Jam 2023 using my graphics framework. I used raycasting to convert from a mouse position to a square on the board that is warped because of the camera’s perspective projection.
Draw Functions as images and create an animation between points and scales on the graph. This is my first project working with common lisp.
Made with my rust game library in 48 hours for Duck Sauce Games Jam 2023, where it earned 2nd place.
Protect your carrot patch from encroaching weeds.
Made with my rust game library in 48 hours for global game jam 2023.
A centered falling block game with hexagons. You must match the same colour together to clear rows and continue playing. If the blocks reach the centre then you are out. The player can select a ring of hexegons and spin it around to chnage their positions. For this project I used Rust with the SDL2 game library.
This was made in 48 hours for a game jam, as an opportunity to practice Rust and SDL2.
A short physics platformer made in 48 hours for Ludum Dare 51. Two characters share one mind and swap between the bodies every 10 seconds. You must get through each level, making sure that the other character is able to complete the level too. I used this jam as a learning experience, as this was my first time using Rust (and SDL2) for a game jam.
An on-rails stealth game with spell cards, made over the course of 2 months for OGAM-16 with my C++ graphics, audio and map loading libraries. This was the work of a team of 3.