Tools: Go + Web Junk
Doing a big refresh on the website
You may have noticed the website is getting pulled apart at the moment as I update things. Taking this as a chance to update some web stuff.
Ongoing Morning Show
Live shows every weekday morning from 08:30 BST. The shows cycle between various topics but are a focused slot.
Initially this was to move to more short form live to tape style content and getting better at no-cut edits. We started with Dreams content being the bread and butter but have experimented with a range of topics. My preferred format is a prepared topic format.
Recently the format has shifted to a Virtual format with VRC and I want to explore new ways of presenting this in 2021.
Skate All of August - 2020
Skate & Film Challenge
This was a video project to skate and film every day for a month.
Had some real breakthroughs this year with the ability to two wheel manual, lost the heel brake and start really working on slides.
It was a real sense of of awesome during the Covid lockdowns.
Dreams Tutorials and Shorts
Tools: YouTube, Twitch and Dreams
The bulk of content was produced as livestreams as I producded independent teaching session and materials for the community in my own time as a passion project.
Some of these were compressed into short form tutorials and silly skits for TikTok to try broaden the appeal of the teaching content.
Game Dev | Null
Tools: Photoshop, ClipStudio and Inkpub
True Stories from Making Games
True stories collected and drawn from making video games.
This is an industry of make believe where we make fantasy reality but at a cost. The insane day to day is filled with fun tales of nerf guns and late night pizza. All the time a darker side lies on the edge from broken lives to homeless developers waiting on that final paycheck is on the edges of our industry.
This is a collection of true accounts, washed and anonymised for you, a cathartic telling from me and my friends in the industry. I’ve tried to balance the humorous absurd with the dark. In my development doodles I hope to show you not the day to day but the unusual moments.
So you can laugh and identify with them but also if you ever face stories like these in your own life you know you are not alone. I hope you share your tales with your friends and ask for help when you need it, and if you are just curious about development I hope this shows you another side.
Simple playground to try some Raycaster coding
Want to go back to this one because I wanted to experiment with slow light transport. Mostly just got the basics up and running and refreshed myself on the basics of writing a raycaster.
Web Writing and Publishing Software
My wife was writing her first book when she go frustrated with needing to break up drafts because almost all the software from Microsoft Word to Google Drive didn't handle large documents well. I was also frustrated with the publishing and editing flow being split between different software.
InkPub is a web based software so it can be used on mobile and desktop the two platforms she writes on, and is backed by a simple git system for saves and versioning.
It then includes a range of editing and publishing tools to take the full book from draft to edit and back then finally to ePub. This is important as often it is after publication or during the first round of previews we find errors and the original text needs editing by a small team so having all of this in one piece of software has helped a great deal. We have published 4 books so far using this software.
Playground to try some UX ideas out on
I wanted a basic SDL playground I could keep around for UX experiements which had some basic support for networking and imgui integration. I frequently spin this up to check it still compiles and its often my starter for a small code project.
Tools: C++ with Psybrus
Celluar Voxel System
This project is now shelved it went in some interesting directions but ultimatly I folded the work into some RnD projects.
So I'm not talking about this project much. It's been a very long term thing but for a range of reasons I want to get this off the ground. for a range of reasons.
One interesting point is I'm finally working on Psybrus, an engine built by @Neilogd
We used to work together so I'm familiar with his code and I like the way his code works. Psybrus gives me a stable, small and extendable basis from which to build out this project and the future projects. This project will have a few deadlines and milestones, and I'll post progress but the big picture and purpose shall remain behind the curtain on this one.
Camera Capture with Drive Upload
Currently I'm using 3rd party software to uploaded some security web cam footage. Sadly I have the Belkin cameras which don't play nice with 3rd party software and have some documented software exploits. I've hardened my network and tweaked with the cameras which account for most the problems though now once your on the wifi you can get to the camera feeds but I'm okay with that level of security.
Previously I've used OpenCV for image work but its C libs and dependicies would muck up this pure go project with platform specific dependicies which I don't like. I might still go with OpenCV approach but otherwise I might implement some image functions into a Go lib. This is more an experiment than anything as I do have a 3rd party solution. It did provide some interesting learnings around MJPEG.
Google Drive Word Counter
So Ducky has been using a Google Drive script to track her daily writing. It's buggy I've had to fix it and honestly it doesn't do all the things I would like. For a few reasons like plugging into external API and tracking non-google drive writing in the future, I started writing a Go Tool which plugged into the Google Drive API and building a word count report. It's been interesting to plug GoLang into Google API, which is obviously clean and slowly building some reporting stuff. InkPub is a project I chip away at, and I'm mostly happy with it. Also used BoltDB as my first GoLang with DB work. Useful to learn from.
I want to put in a Twitter API hook and multi-user support. Make it a bit more robust so I can pop it onto a Raspberry Pi and forget about it.
Alley Cat GBJam
Tools: C++ with SDL2
Demaking the DOS Classic into Game Boy Graphics
Part of the #GBJam I decided to build something for Pebble watch but also to start playing with SDL2 in a real way. This is part of my ongoing move away from Unity and similiar for my home projects. For the range of reasons I covered in my Wizard post. It was a good experience but I spent a lot of time muddling with Android toolchains and getting workflow stuff setup.
Sadly I don't have any working Pebble HW to complete this on.
Go Twitch IRC Bot
So KBot is an interesting project which I want to take up for both personal and work reasons but honestly it's been pushed to the back burner.
It's been an interesting learning project as we still haven't deployed anything with Go at scale yet. So all these learnings are good and its a good sandbox on which to launch a bunch of other stuff. Also a lot of the code has been lifted into my other Go projects.
Tools: YouTube, Unity and Blender
Video Programming Series
After a friend expressed some frustration with compute shaders and a lack of resources targetted at those new to shaders and Unity but not new to programming I wrote a series for him as my primary target. These proved to be some of the most popular tutorials I've produced to date. I particular enjoyed the grease pencil with Blender overlay format and want to look at an updated format for these.
FP Website Generator
Simple Go Tool to generate and manage site
Sick and tired of Wordpress updates, limits and such I moved the site over to mostly AngularJS.
That caused issues with indexing and other structured data problems, so I decided to look at Jekyll.
I happened to be working with Go at work and thought the template libs so solid that it would be trivial to do in Go.
It had the added advantage of any custom logic being simple to add.
Cards Against Paper
Tools: Python on Google App Engine
Cvh Cloud Implementation
Didn't productionise it because the game depends heavily on its social element.
LD31 Snowman <3 Kitty
Snowman loves Kitty is a small story about a Snowman falling in love with a kitty in a snowy backyard that is INCOMPLETE :( Made for Ludumdare 31.
The snow sim was working great till I discovered a few limitations which I banged my head against most of Sunday so it's just a TOY. Experiment and play around. I'll try upload a non-compo version later with complete story on a different link.
Also for anyone wondering I just had to save the most down voted themes: There is no floor, Love, Kittens & Snowman as well as entire game on one screen ;)
Global Game Jam 2015
Failed Attempt at Text War Game
The concept was a text game of the sort playable in SSH but done in the browser.
You command an army but entirely using textual reports done with natural language. Intentionally imprecise based on how difficult it would be for a real medieval general in a tent without a bird's eye view.
LD29 Beneath the Surface
Unity Digging for Dinosaurs
One of the more fun LudumDare games I've made you dig up Dinosaurs from the earth in a very calming game. The digging aways layers of earth presented an interesting problem in data and mesh generation. After fighting with Unity shader model I reverted back to a 2d version of the gameplay.
After the weekend I discovered the sub mesh method which wasn't working due to texture sampler not being supported in Shader Model 3 was because I was in HLSL 3 and didn't have some console specific stuff I was used to. Post Comp I am looking at both a DX11 and Ray Marching implementation. This is my current tinker project when I get a few hours.
LD28 You Only Get One
2d Unity Climbing Game
Climb up a burning building to save as many people from the top of the building. I used this as a chance to explore the 2d toolchain and new animation tools. Lost most of the weekend to building the 2d character and art fiddling more than I should of. Also the building generation is just a noise algorithm it really should be game defined tiles. Overall I'm happy with the gameplay in the time and it was a good way to learn 2d workflow on Unity.
Tools: Unity on Android
Unity Android Game with One Touch
Three colours and one touch try convey a series of platforming and stealth levels. The jumping was quite floaty in the game which broke the feel of the gameplay. Though it was interesting doing a minimalist mobile game. The stark colour schemes and art style meant no time was lost to content creation. Most the time was spent trying to get Unity physics to work just right.
LD25 You Are the Villian
In an empty flat with no furniture a mobile phone and a Chromebook, can you make a game in a weekend? Turns out yes! It was entirely developed in Chrome then uploaded in bursts through my phone. The game is a management of criminals running jobs. The gameplay failed mostly as the flow wasn't very intuitive.
LD23 Tiny World
Love Letter and 1st physical Jam game
The idea was to make a Jam game as a love letter. The first physical game jam I did at Cambridge CB2. The concept was to build an abstract mesh from a message, then break it into pieces to form a puzzle. The player then rebuilt the puzzle revealing the message. It was going to be the first time I said openly expressed my love to my girlfriend.
The Concept was solid but unfamiliarity with Unity, and the physical game jam environment where my downfalls. You get a lot less time due to travelling to the venue and socialising. Also again the choice of an unknown tool introduced too large a hurdle for a 48 hour game jam. This did lead to further exploration of breaking up meshes using Delaunay triangulation which I have on my interesting list of things to explore.
Tools: Python with pyglet
Interesting Procedural Cave Generator
After failing to complete LD14 I returned to PTK and C++ for speed and familiarity. The procedural cave system proved to be quite successful providing fun and interesting layouts. The gameplay was light but I really enjoyed this title.
I used a form of cellular automaton to generate the caves. Starting with noise successive generation breed open rooms and shapes. With every few generations some custom logic to ensure spaces are linked and providing interesting combination of open space and maze by linking or seperating spaces.
LD14 Advancing Wall of Doom
Tools: Python with pyglet
Explored using OpenGl with Python
An incomplete entry it was a fun exploration of Python with GL. Pyglet is a lite windowing system, which allows easy OpenGl usage. The premise was a neverending platformer as you climbed a tower.
Tools: C++ with PTK
My 1st game in 48 hours
The first LudumDare entry it was the the first time I had made a game in 48 hours and I really enjoyed the format. I've since become a frequent entrant into LudumDare. I find the format invigorating. Developing a game in 48 hours with no prior code or art provides an interesting challenge. Much like a musical game or script workshop you abandon structure to be creative within a tightly constrained deadline.
Podcast Teaching Games
Tools: C++ with PTK
Teaching Tool for Podcast
While doing a game development podcast in University I was tutoring some students. I came up with the idea of building games as part of the podcast and using the source to teach concepts. I started with a simple Coin Flip game.
Then I built a text based Checkers game with them, then showing them how to port it to PTK. Showing how simple graphics and input could be done.
Following Checkers I used LifeLab, Conway Games of Life, to show how emergent gameplay behaviours can emerge from a simple ruleset.
Beat My Bot
Tools: C++ on Provided Framework
Squad Based AI Tournament from University
Northumbria University hosted a Capture the Flag AI competition for the games students. Building on a game framework you had to provide AI for a squad in a capture the flag game using a set of parameters.
Tools: C++ with OpenGl
Flocking AI Experiment
Simple 3D Boid simulation to explore flocking behaviours, written in OpenGl.
72 Hour: Magnets
Tools: C++ with PTK
Puzzle game built on Magnets
Puzzle game built around three colour magnets. The player controls the ball by switching the magnets colour making it ignore one colour, be attracted to another then repulsed by the third. Visualising the fields was fun, and it provided some interesting puzzles. The complexity of which is made much more difficult by the pace of play.
68k Space Invaders
Tools: 68k ASM
Build Game on 68000 ASM
Not wanting to spend hours in the real-time lab before I understood the language I used Easy68k to familiarize myself with 68k ASM. The project slowly built up. I had to remember the old way to draw sprites and I had some creative whitespace and memory stomping errors. In the end the project was a success. I didn't add sound simply because the Easy68k sound was not old school or anything like the real thing.
The next project was Pong on the real target machine. This project has helped me loads but it is more fun on the real hardware where I can use a pedometer and timer interrupts.
Tools: C# on XNA
Simple Pet Game
Simple Pet Game where you took care of Frank on a little island. It was part of an exploration of social AI for my dissertation.
Keep It Simple Stupid
Tools: C++ with PTK
Theatre Experiment about Audience
Looking at how to model Audience behaviours has always been interesting. Games like Tony Hawk Pro Skater and similar abstract an audience response through a combo system. KISS explored trying to pace a play and stick to a three act structure by delivering well timed lines. The experiment failed due to exploding complexity of content but it was an interesting exploration.
Tools: Python on Symbian Nokia N95
Build Wii Engine from Scratch
Using the built in accelerometers to make a little game. Think of it as turning your phone into a Wii-mote. Analyse and use Python to develop a simple application. Analyse and use the data captured by a motion device. Define and use the motion device to recognise gestures. Develop a simple application using skills gained.
The choice of platform and device was a well made one. The device is well suited for rapid prototyping and Python is still flexible. The libraries are well structured and light weight enough that minimal effort is required to start. The amount of feedback a mobile platform can provide while doing these motions is limited. This coupled with the limiting processing power means as a motion gaming platform it is limited. The use of motion in other applications however is still a valid.
The motion sensor is a limited device which does not do what sales teams claim. The processing of motion is several degrees more complex than traditional controllers. This is compounded if a neural net is used. The range of motion detection is very limited. This is due to both the low range of the device and lack of absolute positioning.
If a game is made with the limits in mind a successful game mechanic can be achieved. The gaming audience is more likely to notice the limited patterns of this style of motion controller as time passes. This receptiveness could have a strong negative affect on games which could turn unique control systems into simple formulaic inputs.
Tools: C++ on Wii
Build Wii Engine from Scratch
Second year project for university module. We basically had to write a game on the Gamecube. However as I was working fulltime getting into the labs during office hours was an issue. So I got permission to do a Wii Title instead.
Basically it was put-put. The level was generated from a heightmap, and textured. Simple system kept track of score. Basic graphics, motion controls and sound in place.
Tools: C++ and Python
Exploring Data Driven Dialouge
To create a data-driven system for use in the games industry that will generate complete social interactions using seeded scenarios which expands based on player interactions.
Coming from a roleplaying background I'm never satisfied with Dialouge Trees and their limitations. So I looked atomising interations and making them in such a way that AI can process and understand them. This massive undertaking was first dreamed up about five years ago. The project was attempted in a loose way and concepts investigated many times. Most times the attempts weren't even named. Two noticable pre-cursors were KISS (A dramatic simulation) and TavernQuest (a tavern generator which made DTs for NPCs).
As my Supervisor points out I'm in great danger of falling the trap of the 80's where they tried to solve the problem of everything. The important difference is every aspect of a game world is known and defined. So we can cheat a little, because we know everything.
This is an ongoing personal project and I see the dissertation hand in as a first important solid step.