Back in February I wrote a piece about the thing I loved changing . The short version: forty-two years in, the craft I built an identity around had been hollowed out. Not destroyed - hollowed. I was still building, but the interesting part, the part where you wrestle a problem to the ground at two in the morning, had been compressed into a prompt and a response. I called it a fallow period and…
You can play the game, and read all about how it works, at bbcexile.com. Exile has been with me for nearly 40 years. Written by Peter Irvin and Jeremy Smith and published by Superior Software for the BBC Micro in 1988, it was doing things an 8-bit machine had no business doing: a vast procedurally generated cave system, creatures with what seemed like intentions, real physics with gravity,…
Building a believable computer opponent for a 4X strategy game is one of those problems that turns out to be bottomless. I’d use the cliche it looks simple from the outside… but I don’t think thats true, I thought this would be a tough nut from the outset. I’ve built a chess playing engine before and that was far simpler to get a strong opponent - though it helps that that…
Source code available online here A claim that has gained traction lately is that Donald Trump’s posting patterns suggest “sundowning” — the late-day cognitive decline associated with dementia. The argument goes that his late-night and small-hours posting, often described as becoming more erratic or aggressive, points to something going on cognitively. Its a serious claim and…
Recently GitHub announced a change in pricing model for CoPilot which they’ve tried to wave away as not a price increase (because the list prices don’t move) but which really is as they are now charging for direct usage rather than per request. What’s interesting to me isn’t so much the changes themselves - CoPilot had an exploitable model and most users of AI are doing so…
You can find out more over at the projects website. I’m going to keep this brief as I’ll doubtless be expanding on this at length in the future but I wanted to take a moment to introduce a project I have that is a good way through development and that I hope people can play soon. Generally I prefer to wait until I’ve finished things before I talk about them but I’m going to…
The source code can be found on GitHub. In my previous post on neural networks we went through the basic concepts and simple mathematics involved in training and running a neural network. It’s so simple that it gave me an idea: could I run this on an 8-bit micro. Namely a BBC Micro. I don’t think its really foreshadowing to say that yes, you can run a neural network on a BBC Micro, and…
Having built a raycaster for my Wolfenstein 3D recreation I wanted to take things to the next level and build a “simple” ray tracer. The result is a real-time path tracer written entirely in WebGPU compute shaders, running in a browser, rendering levels loaded from actual Doom WAD files. No hardware ray tracing cores, no ML denoisers, no engine — just maths, triangles, and a GPU doing…
The source code is on GitHub. A real-time path tracer built entirely in WebGPU compute shaders — no RT cores, no ML denoisers, just maths and triangles. Woke up one morning and wanted to follow up the Wolfenstein 3D raycaster with a ray tracer… obviously Doom levels were an obvious starting point. It traces rays through Doom levels and procedural dungeons at 60fps, with a BVH, temporal…
The leather jacket has no clothes. Jensen Huang stands on stage at GTC, basking in the adulation of an audience that treats product launches like religious experiences while NVIDIA’s market cap hovers north of four trillion dollars. The narrative being pushed is simple, that Jensen is a visionary genius, that NVIDIA is the essential infrastructure of the AI revolution, and that the future…
The full source code for the neural network and the interactive demonstrations can be found on GitHub. Increasing numbers of us are turning to solutions based on neural networks to help us with a wide variety of tasks. From accelerating software development through to getting advice on personal issues they are becoming almost the goto tool for many people. But how do they actually work? I figured…
I asked Claude to recreate the classic 1986 game Thrust for me in the browser. It created slop but then things spiralled out of control. Thrust was one of my favourite games on the BBC Micro — written by Jeremy C. Smith and published in 1986, it’s a deceptively deep game with amazing physics and gameplay. You pilot a ship through caverns, collecting fuel, avoiding turret fire, and retrieving…
You can play the game online. Honestly this is one of those projects that I’m not quite sure where it came from. Thrust was one of my favourite games on the BBC Micro written by Jeremy Smith and published in 1986, it’s a deceptively deep game with amazing physics and gameplay. Jeremy went on to create the even more impressive Exile with Peter Irvin before tragically dying in an…
I wrote my first line of code in 1983. I was seven years old, typing BASIC into a machine that had less processing power than the chip in your washing machine. I understood that machine completely. Every byte of RAM had a purpose I could trace. Every pixel on screen was there because I’d put it there. The path from intention to result was direct, visible, and mine. Forty-two years later,…
This morning I had a ChatGPT conversation that started about engagement metrics and ended up with a systematic destruction of my identity. It was a wild, disturbing, but ultimately revealing ride that joined a few dots for me. The engagement problem We’re all aware of how social media works: it optimizes for scroll time, it works to keep you on the platform, and promoting outrage and…
You can play the game online. While working on the 8-bit console I got the itch to create a twin stick shooter. There’s some Geometry Wars in this and some Jeff Minter with a dash of Pink Floyd. Best thing to do is just go play it rather than me describe it! But there is a YouTube trailer and images below and I’ve written about it building it too . Its open source and you can grab the…
You can play the game online. I was looking for a twin stick shooter and nothing quite scratched the itch — nothing in my Steam library anyway. I fired up Geometry Wars, enjoyed it, but it still wasn’t quite what I wanted. What it did give me was the spark to build my own. I’ve always loved the vector aesthetic (Rez remains a favourite), and I knew I only had a couple of days — in total, perhaps a…
The source code for this can be found on GitHub here. Over the past few weeks I’ve been building a fully-playable 8-bit virtual console from scratch — CPU, instruction set, assembler, sprite system, IDE, the lot. One of the more interesting side quests has been teaching an LLM to generate valid assembly targeting my CPU. You can follow the full build in my YouTube series here . Its called Building…
I’ve been itching to create some emulated 8-bit hardware for some time - not for an existing system but rather for my dream 8-bit system. However it always felt “too big” as I knew that I’d need tools like assemblers, graphics editors, and basically a whole lot of stuff. Then a couple of months ago I colleague asked me “how did you build that so fast”, something…
I started programming on a BBC Model B as a kid — mostly for fun, mostly because it felt like a little world I could reshape. That hobby quietly turned into a career around 1994, and I’ve been building systems, tools, and odd little worlds ever since. I began with C and assembler (6502 and 68000), moved through C++, Smalltalk, SQL, C#, F# and JavaScript (which thankfully matured into TypeScript).…
The game can be played online and you can find the source code on GitHub . I have a long and storied (well, storied to me - anyone reading this drivel is probably thinking get over yourself) history with the classic mainframe game Star Trek . I first played it on the BBC Micro in the early 1980s - there are loads of versions but I suspect I played the Acornsoft version Galaxy (pictured here). I…
You can download the app from the App Store . I have super fond memories of playing early golf games on the BBC and PC. My very favourite is a game called Holed Out!! on the BBC and on which I spent many hours playing with my mum. But I also enjoyed the PGA games on the PC and played C64 and Spectrum games with friends. Though they were more into football. Recent golf games leave me a bit cold -…
You can download the app from the App Store . While I was creating 8-bit Golf I realised that the editor, which was quite satisfying to use, could quite easily be repurposed to allow a user to draw on graph paper. It really didn’t take long to rework into a standalone app and I published it without really marking the moment and moved on. I confess in the interim other than occasionally using…
You can download the app from the App Store or view the “official” VoxEd store linked page here . I confess I’m rather proud of this one. I’ve always enjoyed pixel and voxel art and I have several ideas for projects that would make use of voxels. I’d been dabbling in creating some models using some of the tools that are out there but all had oddities I found annoying.…
In what is either a massive display of ego and hubris or something to be modestly proud about (you decide) I’m using my own Mac and iPad sprite editor SprEd to work on the textures and icons for my city builder. However I realised I’d not included any tools to rotate things and so this morning have quickly reloaded Swift and the source code back into my head and added those features.…
Things have been going quite smoothly so far and over the last couple of evenings I’ve added the ability to drag select ranges and create zones (though haven’t accounted for flats yet). This all happens in the landscape shader which is passed the corners of the range and information about each tile encoded inside a vector and passed into the shader as an attribute buffer. When the zone…
As I mentioned in my last entry, and as anyone who has played a city builder will know, these kinds of games have a lot of UI in them. That being the case I need a way of easily putting all this together. A primitive GUI library basically. I do most of my web work in React or SolidJS and I quite like the JSX approach and so I struck upon the idea of building my UI toolkit based around this.…
Actually maanged to get a decent amount of time in on personal projects this week. Mostly in the morning before work as my best buddy is injured and on 7 days of vet prescribed rest - so no walks. I’m missing the walks. Its tough on us both. But we’e done lots of brain training and I’ve got some coding in. First task for the week was to get the camera working properly on the…
More progress on the bite sized remainders of Elite - ECM and Energy Bomb now implemented. Got quite a cool effect for the energy bomb though I can’t take the credit for it as I found it on ShaderToy . Thanks to the original author. The latest build of the game is available online .
Another bitty week as I’ve been coding for work and when I do so I find, inevitably, the amount of time I spend coding out of hours decreases. However got quite a few things done: Witchspace Thargoids Thargons Altitude and planet crashing Space stations turn hostile when attacked and launch Vipers Ships have different rates of pitch and roll The latest build of the game is available online .
It was a bit of a stop / start week as I have a lot of actual work on at the moment. However I did find time to get missiles into the game. I’m still not happy with how ships (including missiles) move in on other ships and the player. I’ve not quite got the roll and pitch stuff down yet but will come back to it. ECM next.
Continuing to plug through my list of tasks to complete the game. Over the last couple of evenings I’ve implemented the different laser types (pulse, beam, military and laser) and also added an “Initial Loadout” screen (shown below) so that no one need ever be without a Docking Computer ever again! And as most of the remaining tasks related to different bits of equipment it makes…
Bit of work this mornign to optimise the asset loading. Some assets were loading in parallel and others in sequence which led to things not loading as fast as they could. Just reworked the loader to batch all the promises up together and then unpick the multi-type result. On my rural broadband (allegedly its fibre…) that got loading down from 6.7 seconds to 4 seconds when nothing is cached.…
Been a bit of a spotty work for progress on fun projects due to being crazy busy at work. I crawled into this weekend. However some progress has been made. First up I worked on getting saving and loading games in place - pretty simple, just serialize out the relavant bits of game state to JSON and pop them in local storage. Loading a game, reverse that. The other thing I wanted to get in place was…
Cracked on with the landscape system over the weekend and got a nice SimCity 2000 / Transport Tycoon style isometric system up and running. It uses the diamond square algorithm with a few constraints added. It was trivial to get a beautiful rolling landscape in place… fiddly to get it looking all chunky and isometric! I also spent a while wandering why large maps seemed to stop rendering at…
As a brief introduction by next retro remake is based around SimCity which I’m calling Empire of Asphalt. If you want to follow along you can already find the code on GitHub: https://github.com/JamesRandall/empireOfAsphalt I’m going to keep things as simple as I can so it will be somewhat akin to the original game in terms of systems though I’ve got some fun ideas for rendering…
I’m at that stage of the project where there are lots of little things left and so I’ve done what I usually do at this point which is to pop it on a Trello board. Most of these things are evening sized so I’m going to do them in the… evenings. You can see the list below. I need bigger spans of time to get the foundations in on the next fun project…. so weekends will…
Got the combat routines all wired up now with damage being handled properly, explosions etc. Its my first chance to really try the tactic routine for the enemy ships - I’m super pleased with how authentic it feels though the more precise hit boxes are making it a little trickier. In any case I will post a video later this week.
Ok. So here’s the revised collision detection code: function processLaserHits ( game : Game , resources : Resources ) { // all we are really interested in for deciding if a player has hit a ship is the intersection of the bounding // box of the ship onto a 2d plane. To do this we take each face of the bounding box, discard the z, and look to see // if our laser axis (represented by point…
The oh so clever 2D solution for laser intersection doesn’t work I realised this evening. That’s what happens I guess when you literally dream a solution. Problem with it is how I determined the outline quad - its flawed as it can result in the same points being repeated. What I’ve done instead this evening is to do the same but with each face of the bounding box. If you…
I’d come across a very funny bug the other day - while testing the lasers and explosions I destroyed a space station and about the same time ships started to spawn at a rapid rate. Several s second. A literal stream of ships. I thought the issue was connected to me destroying the space station as I hadn’t intended to allow that (I just haven’t coded in the block yet as its…
Refining Explosions On looking at the explosions this morning I realised that the faces of the ship that I use to form the explosion didn’t start off in the correct position. This resulted in a moderate amount of head scratching before I realisesd what was going on. Each of the faces has its own normal and I’d used that as the nose orientation of the face so that I can roll and pitch…
I rattled through a load of stuff today, the brain was working well despite no sleep! Player laser hit detection Bizarrely one morning in the week I woke up with the approach to this already in my head. I guess it had been percolating for a while as I haven’t had much time to code this week. My solution is essentially to treat it as a two dimensional problem. I’m already tracking…
You can play the latest work in progress of the game online here and the source code is on GitHub. Elite is absolutely one of my formative experiences - videogame or otherwise. It launched in 1984 on the BBC Micro at a time when most games were either clones of arcade games or following the same basic structure of scores, levels and lives presented using 2D graphics. Then there was Elite. A fully…
You can play the game online here . Back in early 2022 I’d been making one of my regular revisits to 90s videogaming and spent a fun couple of hours playing Wolfenstein 3D by iD Software. I still have vivid memories of downloading and playing this back in 1992 from a BBS. I lived with my parents at the time (I’d have been 16) and I remember running round the house proclaiming…
You can download the app from the App Store or view the “official” SprEd store linked page here . Sprite Picker is a simple, free and easy to use texture and sprite packer for the Mac. It will pack your source images into a single image and create a JSON file containing the offsets of the image in absolute co-ordinates and as texture co-ordinates making it ideal for use with Metal…
You can download the editor from the App Store or view the “official” SprEd store linked page here . I should say up front that SprEd is not an open source project, rather its available on the App Store for the cost of a couple of coffees. And please don’t email me asking me to make it open source (I might at some point but its not going to be because people want a free sprite…
In 2022, according to Strava’s annual “state of strava” report 24 billion, yes billion, miles were recorded on their platform. Imagine if you could convert 5% of those miles into 1 pence (GBP) and donate it to charity. That would be £12 million collected even before you factor in (in the UK at least) gift aid. That, basically, is what Give By The Mile is about. A platform for…
If, like me, you grew up coding in the 1980s you’ll probably have fond memories of the Mandelbrot Set - it, and other fractals, were everywhere. I could be wrong but I think I first came across them in a copy of BeeBug, a magazine that I read avidly! In any case I vividly remember watching one slowly, oh so slowly, render on my BBC Model B. I’ve always found them fascinating and, as…
Way back in 1981 a genius named Malcolm Evans managed to coax a 3D game out of a Sinclair ZX81 (an 8-bit micro with a Z80 CPU and 1Kb of RAM). It randomly generated mazes and used low resolution “character block” graphics to display them in 3D complete with a monster that chased you. The game was called 3D Monster Maze and it really was amazing to see back then and remains an…