Red Mars Digital


Deadly Dungeons

22 Jan 2018 Finally!! As it turns out, making a game is a ridiculous amount of fun, but also takes even more ridiculous levels of time and patience. No surprises there I suppose. As expected, my 4 week time limit was overly optimistic - but 3 additional weeks later I am now able to unveil the first complete version of my SNES-esque 16-bit throwback, "the Deadly Dungeons of Baron Backslash".       Although the game is fully playable (and very challenging), a lot of the content is still rough around the edges and in some cases not much more than a placeholder. This is particularly true of the sound effects and music - much of the former is very obviously DIY, and the latter was quickly knocked out over a couple of evenings without much finesse. There are probably also still plenty of bugs - I already have a short list of non-breaking issues that I plan to tackle at some point soon, and it'll almost certainly continue to grow. Having said all that, I am pretty pleased with how things turned out overall! Given that I didn't have the first clue about basically any aspect of game development until less than 2 months ago, I'm quite proud of the way I tackled some of the trickier stuff - things like the creature AI, the level generator algorithm, the animations (well, some of them at least...) and the overall game engine performance. Most importantly, and the real point of all this in the first place, the experience taught me a hell of a lot with regards to general, transferable programming concepts. Things like the importance of code organization, how to write reusable functions and classes, and debugging (so, so much debugging...). It also gave me some really good hands-on practice with object-oriented, pseudo-classical and functional design patterns. So anyway, there you have it - this took over my life for the last couple of months, but at least it made it through to release. Was it worth it? Well, have a go and decide for yourself :)

Game on!

01 Dec 2017 Seeing as I'm approaching the first anniversary of making a new year's resolution to finally learn to code, and seeing as I've actually stuck to it rather well, I've decided to mark the milestone by having a crack at a programming rite of passage - making a game. I'd had a few different game concept ideas bouncing around my head for a while, but wasn't really landing on one I wanted to commit to. Some weren't quite fully formed enough, others were just way, way too complicated for a first attempt. I know just enough about what's going to be involved to know it's going to be a hundred times harder than I think it will! Roguelove Ultimately I decided it would be best to keep things (relatively) simple, avoid over-thinking it, and stick to a tried and tested formula. I'm sure the sensible approach is not to try to push boundaries with a first attempt, as I'd just be setting myself up for a fall. So I decided to go down of the most well worn, cliched paths of all - and add yet another throwaway game on to the pile of '16-bit pixel-art Roguelike dungeon crawlers'. Instead of going the (presumably slightly easier) route of developing a turn-based RPG though, I've decided to try to draw inspiration from awesome 'twin stick' arcade style time-sink games like Nuclear Throne or The Binding of Isaac, and see if I can make it a fast paced reflex action game. Stepping back from the game itself, the real idea here is to get some practice making a large and complicated project. What I'm really hoping to get out of this is some practice in code organization, object-oriented design and so on - creating a little game that's remotely fun and playable will be a bonus! Setting out... I've decided to give myself a month to see what I can come up with - a deadline should help me to focus. After a quick bit of research I'm going to use IceCreamYou's MainLoop.js to control overall timing, and Robert Norenberg's super-cool 16x16 Dungeon Tileset sprite sheet as a starting point for the graphics, but am planning on doing everything else from scratch myself - no off-the-shelf game template tools or builder apps like Unity etc. So... that just leaves me figuring out and coding a game engine. And AI. And a procedural level creation algorithm. And learning how to do pixel art, and drawing a ton of it. Then animating it. Then adding sounds and music. Then making it balanced and fun to play. In a month. Over Christmas. Easy, right? Watch this space :)

Raspberry Pi

12 Jul 2017 I'd heard all sorts of good things about the Raspberry Pi - the cheap, tiny computer packing a disproportionate punch in processing power. Apart from being loads of fun and endlessly adaptable to use in all kinds of weird projects (such as a 3D scanner, a bicycle-mounted projector or a drum machine made from beetroots) , they have a great reputation as an educational tool for anyone looking to level up their coding skills, or master Linux and the command line. After splashing out £55 on a (relatively speaking) top of the line Raspberry Pi 3 starter kit from, I can confirm that they are indeed both educational and a lot of fun. I can't say I've built anything remotely close to a 3D scanner yet, but one small thing I have accomplished with my Pi that I genuinely use fairly often is the hacking of an Amazon dash button to control my Sonos system, instead of its intended application - in this case ordering a pallet of cat food. The button is now discreetly mounted in my bedroom, in an easily reachable spot behind my headboard - and when it's pressed an ultra-relaxing playlist (things like Brian Eno's Apollo Atmospheres & Soundtracks, Yagya's Rhythm of Snow and Aphex Twin's Selected Ambient Works 2) plays on shuffle at a low volume for an hour through the bedroom speakers. This is the perfect quick fix if I'm trying to get to sleep and need something to help mask the sound of the noisy kids in the flat above! This wasn't a tricky project, just combining two Node.js packages; Dasher and node-sonos-http-api. There are several good tutorials out there about this, and suprisingly it didn't take much more than some minor JSON tweaking to set up. Nevertheless, I'm happy with the results! After spending some time experimenting with the Raspberry Pi, I also think it could be the perfect low-cost, low-impact solution for powering the 'Edutainment Console' project I'm currently developing for installation in a zoo / visitor centre. It may be cheap, but it's a machine with plenty of real-world uses.


9 May 2017 My first major learning resource was a Udemy course; Colt Steele's Web Developer Bootcamp. Across 297 video tutorials, this course covers a lot of bases - from first principles and the essential skills of front-end development through to the command line, Node.js and back-end packages, databases, git and deployment. Over the years I've tried out quite a few web development courses and tutorials from various providers, and I have to say that for me this bootcamp stands head and shoulders above the others I've tried that are pitched at a similar level. As well as being a natural communicator, Colt has clearly put a huge amount of thought into the structure of each individual lesson and the bootcamp as a whole. His extensive tutoring experience is obvious, and it's also clear that he's sought out and acted on student feedback to make sure the pacing is just right and that the key messages all stick. In my opinion this course didn't put a foot wrong. I can't recommend it highly enough for anybody serious about getting to grips with the fundamentals of web programming from very first principles. So, thanks very much Colt!

Sudo reboot

3 Apr 2017 I've had what I would call a background interest in web design, and programming in general, since I was a teenager. For whatever mix of reasons though I've never found the right opportunity, or the time, or the drive, to seriously immerse myself in the mysterious world of code and develop my understanding to the extent that I could consider making it part of my career. But all that ends now! I've spent the last 6 years working in the HR team at Sony Music UK. The 9 before that were spent in the HR, payroll and finance teams of a mix of other companies up and down the UK. Although there were plenty of ups along the way to go with the downs, in the back of my mind I was always fully aware that this career path was not my calling - far from it - and I'd felt stuck in a cul-de-sac for some time. So, after waking one morning to a particularly stark vision of having plodded along in my payroll rut all the way to retirement, I threw caution to the wind and handed in my resignation. I then made a promise to myself that 2017 would be the year that I finally rebooted myself and got round to installing that long list of pending life updates. Decisions decisions So what exactly does this reboot look like? Well, I'm not totally sure! I'll need a refresher in HTML and CSS, that's for sure; it's been a good while since I last made even a simple website. I will also need to build on my rudimentary Javascript, and essentially start from scratch with the modern back-end ecosystem - Node, Express, and whatever else people seem to agree are the essential technologies this week. I'd also like to expands on my professional use of Business Objects by digging deeper into SQL, and exploring alternative database technologies like mongoDB. Oh and I also want to get properly acquainted with Linux, and find out just what a Raspberry Pi is capable of! And who knows what other interesting tangents I might find myself heading down that I can't even picture yet? Can't wait. Changing course It's not an easy decision to throw away your job. It's exciting and terrifying in roughly equal measure, and everyone keeps telling me how 'brave' it is. But I consider myself incredibly fortunate even to be able to consider it. From my past life working in payroll I know that for far, far too many people, going without just one pay cheque can mean being unable to feed their family, or slipping into a spiral of debt, or finding themselves out on the street. Compared to this I'm in a relatively safe position, for which I'm hugely thankful. I don't have kids, and over the last couple of years have managed to prepare for this opportunity by squirreling away a modest safety net. I've got no time to waste, and will need to be careful, but if I can stay disciplined I'll have at least a few months before the alarm bells start ringing in earnest. I'm sure the time will fly by though - and I have a hell of a lot to learn! Hopefully the red lines will loom close enough from day one that I don't let myself get complacent, and stay focused on making the most of this once-in-a-lifetime opportunity. This blog will be an attempt to keep a record of my successes and failures along the way. I have a few ideas for projects to start off with, and who knows what these will lead on to? I'm looking forward to finding out. It's time to get my career back on track. Bring it on!

© Red Mars Digital 2017