Well, it’s been a few months since I wrote an update! I’m going to make this a short one because to be honest, I haven’t been making a lot of progress. I forgot how hard it is to find time when you have a full-time job, so I’ve put the monthly Blender renders on hiatus until I finish my game. Speaking of which, I’m at a bit of a loss on what to make.
In my last update I mentioned I’d start making prototypes, and to an extent I did, but it was more to figure out basic workflows in Unreal Engine 5. I also know I said I’d start prototyping game ideas in Godot, but I decided against it because I’d rather focus on just learning UE5. With my limited time, I’ve learned how to do some very simple things such as import assets and animations and then create animation blueprints to play blended animations. All very beginner level stuff.
The progress has been at a snail’s pace, and that’s mainly due to the fact that as mentioned before, I don’t have as much free time as I used to – and I also don’t really know Unreal Engine 5. So realistically, I’m better off going back to what I did back in 2021 and making tiny games to learn the engine.
This is something that does frustrate me as I want to make more complex and interesting games, but to be honest, I really need to get experience with the engine first. Even trying to scope my game for October has been impossible because I don’t know how long it takes to do anything in UE5.
The other aspect is I don’t want to work on this every weekday. I make games now as part of my day job (yay) – but that does mean that most nights when I get home from work, I don’t want to do anymore game development. I also just have other responsibilities. Plus, it would be unhealthy to work on this every night anyway.
So yeah, I’m going to go back to making *tiny* games. Just to actually learn Unreal Engine 5 and to warm myself up for the bigger games I’ll hopefully get to make. It’s a bit frustrating and feels counterintuitive, but I’m going to make those tiny games again. It won’t be 1 Game a Week, but they will be very small games. That feels like a lot less pressure to me, because if a game is bad, it’ll be a few weeks before I get to the next one – which will hopefully be good! I’m also no longer making a “big” game for October that I feel needs to justify the months of work on it. The risk is a lot lower.
So yeah, that’s it! tl;dr I’m going to make tiny games every couple of weeks. The goal is to build up my experience in Unreal Engine 5 until I’m comfortable enough to start expanding to larger games. I’m also going to put the Blender projects on hiatus until around October.
This post was a bit of a ramble but I just needed to write this down somewhere public, to give myself permission to work on smaller games again. If you’re interested in seeing some small weird games in the coming months, keep an eye on this blog.
As always, thanks for reading my post and I hope you have a great day!
I’m writing this blog post about a week late, February has been a hectic month! Moving to a new country and getting settled has been challenging, but I’m finally starting to settle down in my new job and apartment. With that said, I haven’t done much “personal project” work in February since my weekends were mostly spent buying whatever furniture I needed, doing admin and also just relaxing because I don’t want to burn myself out! Thankfully I’m finding myself some more free time, so I’m planning to actually have some proper updates in March.
March Goal: Game Prototypes
If I want to release a game for October, I’ll need to know what I’m making! I rambled a lot in my last update about how I want to approach this game, and basically I’m going to do the tried and tested approach of making tiny prototypes of different game mechanics and seeing what interests me.
Unlike that time I did 1 Game a Week, I won’t be polishing these prototypes. They’ll be throwaway, made to just answer questions, and they’ll be ugly and unbalanced. I’m a master of overthinking things, so just making prototypes and getting forward momentum is the most important thing for me to do.
I’ll probably use Godot to make the prototypes, even though my plan is to learn Unreal. This is just because in my experience it’s easier to get a simple project up and running in Godot than Unreal. I’m sure for other developers it would be the other way around, but that’s just what works for me. Once I know what I’m making, I’ll jump over to Unreal as the “real” code base. Plus I can publish Godot projects online, so I can get quick feedback on my prototypes.
March Goal: A new Blender Render!
I haven’t done a render since January, and I want to keep on track for my 12 renders this year. So I’m picking something that has fairly simple geometry. I specifically want to try and get the material to look a bit more photo-realistic, so I think I’ll play around with the lighting and textures with this render. I also have my desktop computer back, so I’m no longer rendering on a 6 year-old laptop that takes an hour for a simple Eevee render. I’m planning on uploading the render in the next week or two!
But yeah, that’s it for this update. It’s a short one, but I’m hoping that on the start of April I’ll have the game prototypes complete and a lot more insight on what game I’m going to build.
As always, thanks for reading my post and I hope you have a great day!
So, here’s my first monthly update, and what a month it has been!
I’m very happy to announce that today I have started as an Associate Designer at Rockstar North in Edinburgh!
I’ve been a fan of the Grand Theft Auto series since I got a copy of GTA III for my 6th birthday (lol). I feel incredibly lucky and privileged to have the chance to work with the talented people behind some of my favourite games such as GTA V and Red Dead Redemption.
The team were incredibly welcoming and I’m very happy to call Edinburgh my new home. I look forward to exploring the city and also having a part to play in the future of Rockstar Games!
(And of course, any views expressed on this website are my own and in no way represent Rockstar Games or Take Two Interactive)
Blender Renders: 2 out of 12
I finished my first two renders earlier this month. First I made a Power Cell animation from the game Jak and Daxter, then I made a render of the Master Sword from The Legend of Zelda. Getting two done in January is a good start since I don’t think I’ll be able to keep pace of 2 renders per month now that I’ve started my full-time job.
I would like to do another simple render next month. Nothing too crazy with the model itself, and something where I can play around a bit more with composition and lighting. I’ll see how it goes in 4 weeks!
Personal Game Devlog: What to make? (I ramble a lot here)
In between preparing for my move to Edinburgh and making some Blender renders, I spent a bit of time figuring out what game I want to make by myself this year. Just like everybody else, I have a ton of game ideas. But ideas are cheap and execution is what counts. So before I actually make a game, I need to decide on what idea interests me the most and to be honest I’m in a proper state of analysis paralysis right now. Suffice to say, I haven’t decided yet…
Why can’t I decide on a game idea? I’m definitely overthinking it a lot, but here are a few problems:
Overscoping
Most of the concepts I am interested in end up as games with a scope so large that it would require a team to make and therefore would be completely unreasonable to develop solo in a few months. Everyone who has ever tried to make a game runs into this issue right away. Thankfully, I’ve gotten better at recognising when the scope is unrealistic. Unlike when I was a teenager, I know I cannot make an MMO by myself. But a single-player immersive-sim RPG? So tempting, I’d love to do it, but still too ambitious for one person…
Uninterested in making “tiny” games
Yes, I know that the classic advice is to make tiny games and in doing so you slowly learn the technical skills required to make larger ones. That is definitely great advice – I have learned a ton by making games as part of 1 Game a Week. There’s still an ocean of things I still need to learn but I just don’t want to keep making tiny games. So that’s why I’m trying to go for something a bit larger than what I’ve done before, while still giving myself time to work on it.
October soft deadline
I’ve already given myself a soft deadline of October to release a game. I also want to make a game that is larger than what I’ve made before. I think that’s a reasonable timeline, but I want to be confident in the game’s vision so that I don’t pivot the project halfway through and suddenly I’m targeting April 2024 as a release date.
Part-time Project
Even though October is a few months away, I will have a limited amount of time to work on this solo game project since I’m prioritising my day job. So with that in mind, I think it makes sense to make a game that plays it safe with the design so that it requires less playtesting to validate ideas. Not saying I’m going to make a complete ripoff of another game, but maybe I’ll play it relatively safe when picking the game I want to develop.
While writing this post I came across an article by PC Gamer that talks about how indie devs are creating “micro” RPGs, and it got me thinking about my own goals for game development projects. I realised that I end up thinking of trying to make games that are either commercial in scope, or are a stepping stone to a commercial project. Which to be honest I don’t think is the right way for me to make games solo.
I also think that if I immediately aim for the end result of “a game that makes money”, I’m going to act in a risk averse manner and not make anything creative or original, which won’t be very fun. So I think I should really not worry too much about the game having broad appeal and instead try my best to make a small interesting and unique experience, that resonates with a small audience. Which seems obvious to be honest, considering that people don’t go to indie sites like itch.io for mainstream hits.
This section has gone on for longer thatn I would have liked and there’s still a hundred different thoughts I have about this. But as I said at the start, I’m overthinking this.
So I think the best approach is to take an idea for a small game and see how much I can expand it, rather than take an idea for a large game and try to shrink it down. It’s like writing Tetris and then adding rules and modes to expand the scope, instead of starting with something like a CRPG where removing something can destroy the game balance and experience.
I’m going to stop now because I’ve overthought this way too much and I really just need to start sorting my game ideas so I can prototype the low complexity ones.
Thank you for reading my rambling devlog, next one is going to be more coherent!
It’s January 1st 2023, and here I am writing another retrospective blog post! Overall last year was very good, considering how horrible the prior two years were. Thankfully there were a lot of positive changes in my personal circumstances, but I just want to write a bit about my goals for this year. I had 3 big goals I wanted to accomplish last year, and I managed to get 2/3 of them finished. Not bad! The first big one being…
I Got a Game Development Job!
I’m extremely happy to be writing this – I finally got a full-time game development position at an amazing AAA studio! I accepted the offer back in October but I haven’t actually started working there yet. At the end of January, I’m going to be moving from Ireland to the UK to start my first full-time job in the game industry. Needless to say I’m very excited to start! I won’t be able to write or talk about what I’m working on due to the NDA, but I’ll still be working on some of my own smaller side-projects when I have time.
Wrote a 3D Scene Editor for my Ray Tracer
In 2021 I spent quite a lot of time working through the Ray Tracer Challenge by Jamis Buck. I talked about this before but essentially I used it as an opportunity to learn C++, graphics programming, Google Test and simple CMake. I was very happy with the results, but I mentioned this time last year that I wanted to extend my work and add a 3D editor to the Ray Tracer. I’m very happy to report that I did! You can see my post where I go into more technical detail by clicking here!
I’m very happy with how this turned out. Admittedly it’s a bit janky, but for my first attempt at something like this I think it could have turned out a lot worse! There is unfortunately some functionality not present that is in the Ray Tracer, such as CSG and material patterns. But after a refactor and cleaning up some of the main code, I should be in a position to finish off any missing functionality for a 0.2.0 release. However, that’s all hypothetical. For the moment I’m done with the Ray Tracer project, I learned a ton and got what I wanted out of this project. So yes, it’s not a “1.0” release, but I’m happy to say it’s “finished”.
Began learning 3D Art
Towards the end of this year I tried picking up Blender again, followed some tutorials and now I’m on my way to improving my 3D modelling skills! I’m still a very early beginner, but I thought it would be worth at least mentioning that I started to properly learn 3D around now. I first tried learning 3D at the end of 2020, but I decided to not continue at the time.
After finishing the famous Blender Donut, I’ve mostly been following tutorials from Blender Guru, Ryan King and Sickly Wizard to create some scenes. Here’s some of the work that I’ve done this year, nothing truly original and mostly created from tutorials, but still I’d like to show it off!
I’m particularly happy with the PS1 style desk scene thanks to Sickly Wizard, and I like the Skyrim Sweetroll I made. I don’t quite know how to make the icing texture, so I like to think it just hasn’t been put in the oven yet. The candy is from a Blender Guru tutorial, and the strange untextured ship/turret is from an unreleased game jam project I was working on.
A Year in Preview: 2023
I have a good feeling about this year. It’s going to be busy and very different to what I’m used to. To be honest, writing these goals feels over ambitious and realistically I don’t think I’ll accomplish all of them – but I’ll definitely try!
Move countries and work in the Game Industry!
This is definitely my big goal. It’s going to be strange for me living away from home for the first time, but I’m excited to live in a new city! This is something I’ve wanted to do for a very long time and I really want to make it work. I’ll be busy throughout this month getting ready to move to the UK and setting myself up for the rest of the year. My main priority this year is to do the best job I can in my new role. Everything after this is lower priority but I do hope to accomplish them.
Release a Small Game
So last year one of my 3 big goals was to release a game. I sadly didn’t manage to do so due to a few reasons.
I decided to move away from using Unity and began learning Unreal Engine.
I couldn’t decide on an idea, and the ideas I did like were way too over-ambitious. If I’m being honest, feels like I was procrastinating by trying to find the “right idea”. I did make a few prototypes though!
Got sidetracked with a house move, renovation and some other commitments.
The big difference is this year I’m going to do monthly dev-logs where I write about the work I did month-to-month. I’m not promising that they’ll be super detailed or well-written, but it’ll be there to show off my progress and to stay accountable.
I have a few game prototypes I’d like to make, and I’d like to pick something interesting but small in scope. I’m giving myself a release date of around October to release the game. I hope to have a project outline done by the end of February and then I can work on the game throughout the year. Because of my full-time job and other commitments, the game will be slow to develop so I’ll need to keep the scope tight. If I don’t hit the October release date, then I’ll delay the game release to early next year so I can wind down in November and December.
Catch up with my Reading Backlog
During C̸̭͒Ō̶̮̣͒V̴̲̌̈́I̴̙̣̋͊D̶̠̄ I bought a lot of books that ended up gathering dust on the shelf. This year, I’m going to finally get through one of them!
Game Engine Architecture – 1165 pages
So, this book has just under 1200 pages. If I read 100 pages a month, I’d finish it by the end of the year. Now, I’m not planning on actually reading it cover-to-cover, but I do want to at least skim chapters and then read in-depth for important chapters. But my goal with reading this book is to get a greater understanding of what goes on under the hood of game engines. I like to know what my code is actually doing, and I think really studying this book will make me a better game programmer overall.
Now, if I somehow manage to get through that book quickly enough, I’d like to also get through these two as well!
A Programmer’s Introduction to Mathematics – 360 pages
I’d like to improve my graphics programming skills, and a large part of graphics programming requires a thorough understanding of Mathematics. I know enough for gameplay programming, but once it gets to more advanced topics and reading about algorithms written by mathematicians, I get lost. I’d like to become more comfortable with understanding Maths concepts so that I can understand what is actually happening intuitively, rather than copy-pasting someone else’s algorithm.
Effective C++ (Third Edition) – 272 pages
While I’ve been using Blueprints to learn the Unreal Engine API, I’m very shortly going to be using C++. I already have a good bit of experience after working on my Ray Tracer, although I’d like to “level up” my C++ skills. From reading online, this book seems to have a lot of examples of well formed vs badly formed C++ code.
Create 12 3D Renders
I also want to challenge myself to make 12 polished 3D renders with the purpose of sharing them online. On one hand, I’m considering pacing myself at around 1 render a month, or I could make them during November/December once I release my game. I mainly want to do fan-art stuff this year. They’ll mostly be small, simple props rendered in Unreal Engine, and I might throw in some animations and VFX too! This is purely to pick up a new hobby.
Finish Grade IV Piano
So I’ve been practicing the piano for the past few years, and I’m doing the graded exams through the Royal Irish Academy of Music (RIAM). This year I’d like to push ahead to the next grade, which is Grade IV. Although I’m moving to the UK, I’m thankfully able to do my lessons online. Eventually I’d like to compose my own music, but perhaps that’s a challenge for next year!
Relax, don’t burn out!
So yeah, I have a lot of plans for this year and it looks like I’ll be very busy. The most important thing however is that I don’t burn out. If I manage to just live in the UK and do well at my job and get nothing else done then I’ll consider this year a success!
So that’s it!
That’s my post. Another year came and went. I’m really looking forward to moving to the UK, working with the new team at the end of January and finally “officially” being part of this industry.
I hope everyone who read this had a great New Year and I hope you all stay safe and stick around for next year! Thanks so much for reading ❤
Last year I started working through the Ray Tracer Challenge by Jamis Buck, and I wrote a software ray tracer in C++. This was a highly educational and interesting project for myself as it gave me the opportunity to really learn 3D Maths and C++ in a fairly controlled way by working through the unit tests presented in the book. I finished that about a year ago, but I always wanted to add an editor or some tool on top of it that allowed someone to actually create their own 3D scenes without editing the source code.
Today I’m happy to say that I’ve finished my first editor implementation! I’ve been working on it on and off for the past few months and it was quite an experience, learning the basics of OpenGL, Dear ImGui and putting everything together.
The first version of the editor. Simple scene and material editor with a scene outline and inspector.
Render of the scene shown in the editor.
The first version of the editor can:
Save and Load Scenes to a .rrt file (XML)
Create, Edit and Assign Materials to different scene objects
Transform, rotate and scale controls for objects
Change render camera position and direction, and render dimensions
This is only the first version of the editor, as it doesn’t expose the full functionality of the core ray tracer. Features such as Constructive Solid Geometry and Pattern Materials aren’t implemented, but I might do so in the future. Realistically it’ll be bug fixes, small updates and refactoring the 3000 lines of code in the main class.
While that’s a small amount of features for v1, here’s a list of the low level systems that had to be implemented to support the user-facing features:
Replacing CMake with Visual Studio Solutions (I was spending too much time fixing CMake issues)
Cursor picking (Scene raycasting and collision detection, 90% of it was done for core raytracer)
Scene rendering (Setting up OpenGL VAO, VBO, Shaders, etc)
User Interface (Setting up Dear ImGui and all the minutia involved)
PLY Model loading – Used Stanford PLY as it’s a simple format that supports vertex colors
The Math library (Never ever ever making my own Math library again, it’s just painful)
Model View Projection Matrix for Camera rendering
Probably a lot more I can’t remember…
Point is, there’s a lot of implementation details that’s easy to gloss over for what does seem like a simple project on the surface. Once I come back to this project in a future, I do plan on adding support for CSG and Pattern Materials. But, that’s quite a while away. I want to focus more on game dev in the near future.
Feel free to check out the source code and download the release! It’s completely open source so feel free to do whatever you want with it. The source code is available here: https://github.com/Reccy/CppRayTracerChallenge
This was taken while trying to implement the rotation gizmo. It works fine now, but debugging rotation bugs is incredibly frustrating.This is an early gif from when I first got the flycam and orientation gizmo working. The gizmo is rendered by the camera to an OpenGL texture, which is then rendered one frame later onto the screen.Another rotation bug. Instead of storing the X Y Z euler coordinates separately, each scene object only has a quaternion rotation. Each frame the euler rotation is generated to display on the UI, then it is transformed back into the quaternion. This is clearly very unstable because of floating point imprecision and the fact that a quaternion maps to multiple euler angles. So now, the quaternion is generated from the euler angles.Same bug as above.No bugs this time, just showing off the working gizmos. The gizmos took a surprising amount of time to get implemented.
So it’s January 1st 2022 and here I am writing a yearly retrospective blog post. I don’t really know how to write these, so I guess I’ll just take a look back over some of the things that I’m proud of that I did over 2021. To be honest, I’m kinda uncomfortable writing this as I don’t want to appear arrogant, but I also think that maybe it’s a good idea for me to at least acknowledge my accomplishments in the past year?
Anyway, here we go!
Started my website / blog
So as I was finishing up my full-time job in May, I started building this website in WordPress. I’ve wanted to setup a personal website for a long time, and I always had a kind of vision for what it’d look like. Ideally it would be a fullscreen interactive website, like the one for Nicalis. But it’d be some sort of simple game and that’s how the user would navigate the website. While I think it’s a cool idea on paper, it’s actually a lot of work and also it’s terrible for accessibility. So I’m glad that I finally just decided to make the simplest website possible for my blog and portfolio. It frees up more time for me to actually work on the portfolio itself.
Finished the Ray Tracer Challenge book
Something that I’ve also wanted to do for a while is tackle the Ray Tracer Challenge by Jamis Buck. I started working on this in May while I was in my full-time job. I finished the project in early August. This project was treated as an opportunity to improve my C++ skills and to start learning about graphics programming. This is the largest program I’ve written so far in C++ and I found it a very educational experience. I learned how to create and run C++ unit tests with Google Test and how to configure the project using CMake.
This is also the first program I’ve written where using unit tests gave me the freedom to optimize my code without worrying about breaking the existing functionality. Since I had good test coverage, I could iterate on my code very quickly as I wouldn’t have to spend much time testing. I got to use a variety of different techniques to figure out how to improve the ray tracer performance.
Some of the tricks I used to reduce the render times were:
Multi-threading to render each line using a thread
Variable caching to avoid expensive calculations
Replacing std::vector with a native array to prevent heap allocation and std::vector setup times
I’m really happy that I managed to finish this project and learn so much from it. I do have some more plans to expand on it in 2022. I think it would be cool to build a 3D editor around it so that a user can place the primitive objects in real-time and then perform a render, rather than downloading the source code and recompiling to get a render.
Made 15 Game Prototypes as part of 1 Game a Week
After finishing the Ray Tracer Challenge in early August I messaged Rami Ismail on Twitter to setup a consulting call for advice on getting better at game development. His top advice was to begin making 1 game prototype every week. There’s actually a great article on his blog that explains the premise: https://ramiismail.com/2014/02/game-a-week/.
So that’s what I did! For the rest of 2021 I made a game almost every week
To be honest, most of these games are terrible… which is ok!
The whole idea of making 1 prototype every week is to figure out what does and doesn’t work, and to learn from my mistakes while getting better at game design. I made a lot of mistakes, and I wrote a blog post for each of these games where I tried to figure out what went wrong and what I’d do differently in the future.
Some of the mistakes I made are classics such as over-scoping, not managing my time well, not having a simple game concept to work on, ignoring game juice, not adding SFX or decent game art, and a few other issues that I go into in the specific blog posts.
I think overall the issues I run into with most of my games are that I focus too much on complexity and trying to come up with a clever design rather than building the toy first and failing fast. Just getting the initial idea down as a playable demo and going from there is a proven approach that I don’t seem to do as often as I should. When I do get the small toy working quickly, I can realize the idea doesn’t work out. I’m then in a position to scrap it and try something else. For example, my Ludum Dare game was made in around 12 hours, but I spent 36 hours working on a failed prototype before I scrapped it. The final 12 hour version is much better.
I also learned a lot of Unity and prototyping techniques over the last few months. I don’t think my skills are at a place I’d like them to be, but at the same time I’ve only spent a single College Semester’s worth of time on this challenge and on full-time game development. I guess it isn’t that much time in the grand scheme of things, and I still have a lot to learn!
But at the same time, I’ve learned a lot with the past 15 games.
A Year in Preview: 2022
So after building a Ray Tracer and making 15 pretty bad (but useful!) prototypes, I’m at Day 1/365 of 2022. While I have some non game development work scheduled for January and some other personal life changes going on, I have exciting game development plans for this year!
Make a Video Game
First of all, I want to make an actual full video game. Not just a 1 Game a Week or Game Jam entry, something that will take a few months. The largest game I made up until now was MAG-CHAMBER in 2016, which took 3 months of work during college. I know now that I’d be able to make that game in half the time since I’m a much more confident programmer than I was 5 years ago. Plus the fact that I can dedicate myself full-time on a game for 3-6 months makes me think that I can make something pretty cool! It could be terrible, but it could be cool. I’ll find out either way and learn a lot while doing it.
No matter what, this is the year I make an actual game!
Get a Game Development Job
Something I’ve been working on for the last few years is getting myself into a position where I can work as a game programmer full-time. Arguably I’m already doing that now, but I’d like to actually get paid for it too, and to work on a project that actually has a budget and artists and composers and designers and all that fun stuff.
I think having my 15 prototypes plus a full game will be plenty for my portfolio to get hired as a full-time Game Programmer. I do already have some experience as a Game Programmer Intern in 2018, so I’m sure with the extra work I’m putting in this year I’ll be able to get myself into that position. If I don’t, then at least I’ll have made a game and will be in a stronger position for 2023! But for real, getting hired this year would be great. If you’re a recruiter reading this, here’s my contact details.
Add a 3D Editor to my Ray Tracer
I’d love to make improvements to my Ray Tracer to add in extra features and fix some bugs. The major change being an actual real time 3D Editor. While I don’t use C++ for my day-to-day work, I do enjoy playing around with a language that uses manual memory management and gives me the opportunity to use lower level optimization techniques. This is low priority compared to my other two plans, but I hope to get a good shot at this later in the year!
So that’s it!
That’s my post. Me looking back on 2021 and looking forward to 2022. Writing this felt pretty strange, since usually I’d keep all of this stuff private on a .txt file that would get lost somewhere on my hard drive. But now everybody can read it on my blog, which is cool since now I can’t back out of my commitments!
I do want to get my main goals done for this year, but I’m sure I’ll also meander a bit and end up doing other smaller projects. I think Making a Video Game and Getting a Game Programmer Job are both pretty big goals, but at least they’re clear and I can work towards them this year. Updating my Ray Tracer is something that’s a much lower priority, but I think it will be a fun project I can work on during 2022’s Winter once I’m in a job. Hopefully.
I hope everyone reading this had a great New Year and I hope you all stay safe and stick around for next year! Thanks a lot for reading ❤️