My name is Al Ridley and I'm a freelance game developer with a focus on working with small teams and individuals to assist in the process of bringing game design documents to life. With over 20 years of general programming experience, I bring plenty of knowledge and passion to any project I work on. Whether your goal is to test out a game idea via the construction of a prototype, or you're looking to add another team member to meet deadlines, I am available to work with you remotely to get your project ready for release.
![]() |
![]() |
![]() |
![]() |
||||||||||||||||
Looking to hire a game developer? |
|||||||||||||||||||
Email: info@eatsleepindie.com | |||||||||||||||||||
Discord: eatsleepindie#0989 |
I have over two decades' worth of experience as a freelance programmer and almost 10 years experience with Unity and game development. I began my freelance career programming data-driven web applications using Coldfusion & PHP, and following over a decade of success, I decided to cash in all my chips and begin a life-long dream of developing video games for a living.
Work over the last several years has ranged from having a small part in games - setting up Steam SDK, building multiplayer frameworks, etc. - to Lead Developer for Creative Storm Entertainment's sequel Age of Gladiators II. The development team was small and so my responsibilities were numerous, ranging from rigging character models to programming AI for the arena.
|
|
![]() |
![]() |
![]() |
![]() |
||||||||||||||||
Looking to hire a game developer? |
|||||||||||||||||||
Email: info@eatsleepindie.com | |||||||||||||||||||
Discord: eatsleepindie#0989 |
I have over two decades' worth of experience as a freelance programmer and almost 10 years experience with Unity and game development. I began my freelance career programming data-driven web applications using Coldfusion & PHP, and following over a decade of success, I decided to cash in all my chips and begin a life-long dream of developing video games for a living.
Work over the last several years has ranged from having a small part in games - setting up Steam SDK, building multiplayer frameworks, etc. - to Lead Developer for Creative Storm Entertainment's sequel Age of Gladiators II. The development team was small and so my responsibilities were numerous, ranging from rigging character models to programming AI for the arena.
|
|
Freelance work has been keeping me pretty busy these last two weeks, but I've got some free time this weekend to wrap up the few things remaining in order for me to record a 20+ minute gameplay clip. With the culling system now complete and fully tested, I've spent a lot of time playing through two quarantine zones and putting props, crates, etc. in place to ensure that as much of what's done can be shown as possible. I'm circumventing random generation for this clip in favor of loading predetermined zones and structure layouts to make sure that everything plays out according to plan, especially considering that I've still got a ton of work left to do insofar as balance.
My custom real-time zombie culling system is finally complete. In the end, I saw even more of a performance boost than I had originally anticipated. I was immediately able to spawn 1,000 zombies in a quarantine zone, upping the previous max count from ~600 in scenes that contained a lot of world geometry.
Work on my zombie occlusion culling system is finally complete. The following video might be easier to see on YouTube so I've provided a link below for convenience. Zombies on the left side of the screen (frustrum culling only) will be sent for rendering anytime they are within the view frustum, which includes zombies that are occluded (hidden) by world geometry. On the right, the system I've been working on in my spare time now culls any zombies that are occluded, skipping the rendering process for any that cannot be seen; in practice, this will often amount to several hundred zombies that no longer need to be rendered every frame.
I just finished up the next milestone in my real-time occlusion culling system. With this update, the only step remaining is to apply it to zombies and reap the rewards. I'll likely save the final step for tomorrow since there's some clean-up I need to do, and I also want a good night's sleep before I wrap things up.
I'm already overdue for some sleep so I'm going to have to make this short, but I just hit another milestone in my zombie culling system and wanted to share before I turn in. In my previous post, the data being used for the video only ever queried the culling data for the position that the player spawned at; I've since expanded on this by baking all necessary data and performing the query based on the player's current position, which results in the following:
I'm currently working towards a major update for RIZN: real-time occlusion culling for moving zombies using data that is pre-baked in the editor. Frustum culling has been in place since the start, and for those that are unfamiliar with these terms, I'll explain what they do, why they're important, and why it's worth the time to do this.
I decided to try out a new zombie type yesterday and am happy to introduce Betty, an oversized zombie that charges at the player and self-destructs once she's in range. I've set her up with ballet lessons for this video, but the concept should be pretty evident, especially considering this type of zombie is fairly common in zombie shooters.
I've just hit another milestone in my quest to finally get a full-fledged gameplay loop in order. Quarantine gates and doors are now working, consuming a key from the player's inventory and providing a way to move on from their current quarantine zone to the next. The zone generation system I covered in a previous devlog - now implemented in actual gameplay - has added a lot of fun to my dev sessions in that I am can now take short breaks from the work and do a quick playthrough. With these new additions in place, the only part left to close this loop is to expand on my zombie spawner so that more undead can be spawned efficiently in these new zones as the gates/doors are unlocked.
Today is March 14th which means it's Pi Day, and to celebrate I decided to test the limits of my zombie spawner with 3,141 zombies at once. Happy Pi Day everyone!
I've been slowly pushing forward with random level generation over the last few months and have finally reached a point where I can say with confidence that the concept is proven and working even better than I'd originally hoped. I opted for randomly generating levels at runtime so that the demo I release later this year can feature Survival Mode, a game mode that lacks any narrative and instead tasks the player with simply surviving the hordes of zombies as they work towards finding a cure for their infection. This would allow me to release the demo much sooner, leaving me the remaining time until release to focus on the narrative itself and fixing any bugs, etc.
Every once in a while, I get inspired to work on something completely pointless purely for the sake of gaining more experience with the tools I use every day as well as having some fun. Yesterday was one of those times. Inspired by an episode of Adam Savage's "Savage Builds," I've wanted to build a Panjandrum ever since I watched him attempt to build his own. Sadly, Adam's efforts did not pan out as he'd hoped, but I'm happy to say that even though this little side project took twice as long to complete as I had expected, my Panjandrum was both lethal and left me laughing on a level that this project seems solely capable of achieving.
Today marks two years since I first decided to start messing with zombies and I've compiled a short video to highlight the journey thus far. This game started as a fun way to test out updates I was putting in place for my third-person character controller but I quickly grew fond of finding more and more ways to decapitate and delimb the undead.
It has been nearly two years to the day since I first decided on a whim that I wanted to shoot some zombies in the head. After more than 75 YouTube videos and over 140 devlogs, I finally reached a point where I was confident in committing to the title I'd been sitting on for the last month and a half. Partially inspired by the copy of BRZRKR that sits on my home office desk and partially inspired by the formula1 used for calculating the rate at which such an infection spreads, (S/N)(bN)Z=bSZ, the project formerly known as "Bite Me" not only has an official title, but also a brand new IndieDB page as well.
I've just finished up work on a new shader that effectively mimics what had been done manually for the original (Un)Pleasantville post. The desaturation effect that was featured therein was done solely for the purpose of satisfying my curiosity and as a short break from the level-design work I have been lost in for over a month now. After receiving a fair amount of positive feedback via social media when the video was posted, I decided to see if I could make the effect work in a way that enhanced gameplay and ultimately decided to tie it directly to the player's infection level.
It's 3 PM on Saturday here which, due to the freelance schedule I have been keeping, is effectively my Friday night. I've had a few items on my to-do list that would be pretty quick to implement and, having just finished one, I felt the need to share it. I enjoy working on things that make me laugh out loud and this one evoked a full-on belly laugh multiple times during the testing phase, so here's a rare follow-up post. I'm quite proud of the fact that like the microscope before it, I modeled this walker from scratch and had no issues whatsoever during the process. The more experience I gain with Blender, the more I feel like chains that have held back my game development are removed, freeing me to be as creative - and arguably deranged - as I want to be.
Free time this week has mostly been spent making more progress on my level editor, but I diverted for a bit to start work on some props for the research lab. These areas will be used for advancing the player's character in the area of skills, buffs, and similar things. I really enjoyed creating the mesh for the microscope, which was one of the more complicated things I've created from scratch in Blender so far. I haven't quite decided exactly how skills will progress yet, but at least I have the props at the ready for when that time comes.
I just finished up work for this week and my next plan is to organize my Trello list so I am prepared to spend some time this coming weekend on my level editor, but I figured I'd write a devlog first since I had not done so in a while. The last several mornings while drinking my first cup of coffee I changed focus to a bit of work that I could share since I have a way to go before showing the work I've been doing with level design. There were several zombies at my disposal that I hadn't included in the game yet due to their design existing just outside my realm of knowledge with Blender. I also have a Trello card that is nothing more than a 40+ point list outlining every step to go from mesh to in-game zombie, a process I had worked out a long time ago and had used for the over 30 zombies that were already in use. With more Blender experience under my belt, I decided to take the plunge and force myself to get at least a few of the remaining zombies ready for dismemberment.
Continuing this week's theme of writing as little code as possible, I have here some simple retargeting tests for zombie attack animations. I purchased this pack from the Asset Store recently when I saw they were on sale, and I had never worked with animations from this particular artist before, so I was curious. I figured I'd take a short break from UI updates to retarget the more-complex animations that came in the pack to see how well they worked with these Synty characters, and the results were even better than I'd hoped.
This is my first vacation from freelancing in a very long time and I've been spending parts of it working on UI updates for my zombie shooter. My current freelance gig is very heavy in the programming department - specifically complex physics simulations that are performant on mobile devices - and since the motive for taking this week off was to take time to clear my head, I've set my goals for this week to make progress in my zombie shooter while programming as little as possible. So far, I've only written around 20 lines of code since last Thursday, but I've still been making what are in my opinion some of the most impactful advances in the overall aesthetic of my shooter.
If you've visited this devlog in the past, you may have noticed two things when it comes to the clips I share, whether they were shared to social media or here on my portfolio site: the gameplay is much smoother but there are a lot of artifacts on the screen that lower the overall quality of the video. I've been recording my gameplay clips at 1080p60 for a while now and I don't think I ever will again. The loss of quality on the individual frames - especially when the camera is panning quickly - is too great to make the boost in framerate worth it. I think the following video stands as evidence of that fact more than any of the clips I have shared before, and while up to this point the compromise left me on the fence, the video that resulted this time has me absolutely convinced that 30 FPS is the way to go.