NEOSTALGIC

2024 In Review

2024-12-20

2024 is the first year that I've ever kept the files on my computer in a reasonably organized state for the entirety of the year. All of my screenshots are in neat folders separated by month instead of being spread across four different drives on my computer (mostly thanks to ShareX)! This year I thought I'd put together a little timeline of all of the digital stuff I worked on or interacted with. Basically, think of this as a guided tour of my screenshots folder.

I started using Obsidian this year. Having a consistent place to write notes in has been a huge game changer for me. It's created a bit of continuity that's made it easier to stay focused on big projects. When I write, it feels like I'm actually working instead of throwing effort into the void.

Obsidian also lets you animate this neat little graph of all the notes you've created over time.

ObsidianTimelapse2024.gif

Before I get into this, it's worth noting that this year was probably my most fulfilling and productive year I've had in a long time. Looking back over everything I did, there's a lot of material in here! I committed myself to a lot of projects and even finished a couple of them (!). With that being said, let's start the tour! From here on it it'll be mostly screenshots with some little annotations. Enjoy!

January

I've been excited about S.T.A.L.K.E.R. 2 since it was announced over ten years ago (!). Naturally, knowing the sequel was coming out this year I started a S.T.A.L.K.E.R. Anomaly playthrough. I actually recorded some gameplay footage, which is something I very rarely do.

AnomalyDX11_f4EQi3mJMA.jpg

I decided to run a tabletop RPG campaign for my friend using the Only War system. We started off playing on the Roll20 platform using somebody's custom Only War module, but quickly became dissatisified with the user interface and its lack of features.

I foolishly decided I was going to completely implement my own Only War module in FoundryVTT (another more advanced virtual tabletop system). Surprisingly, this is one of the projects I actually finished this year. Check out the difference in visual quality between these UIs!

chrome_QdBCIs3oVq.png

Foundry_Virtual_Tabletop_5tUhmqykuX.png

Oh yeah, and I booted up Daggerfall again. This is becoming a bit of a yearly tradition for me. There's something a bit charming and cozy about its primitive graphics. This is the Daggerfall Unity version.

DaggerfallUnity_xgsVcWItoB.png

February

I didn't get up to too much on the computer this month. I went on vacation and did a lot of skiing. I mostly want to keep this blog about my digital work but I can't help but share this photo I took in Austria. This is the closest I've ever come to feeling like I'm standing in heaven.

IshgyllMountains.png

I did find time to make some significant progress on my FoundryVTT module. I polished up the UI a bit more, got basic dice rolling for various skills working, and built some test environments. It was quite nearly a usable system at this point!

Foundry_Virtual_Tabletop_mS1HXUXpB1.jpg

March

I started working on my overly ambitious dream game which I'm calling Project Angel. Here's some shitty retro-style dithering I tried to do initially. I was really putting the cart before the horse here trying to make a cool looking game before working on actual gameplay. That being said, I learned a lot about shaders.

UnrealEditor_5iOJ2KRjjj.jpg

I started Elden Ring. What a gorgeous game. I got far, but I never did beat it. I should probably pick this one up again.

eldenring_04v7wSTz8V.jpg

I played this fun little indie game called SUMMERHOUSE where you just build a small house using a bunch of prebuilt assets. There's a few different scenes to build in and some options to control the weather. It's simple but I found it very charming.

SUMMERHOUSE_wNQKCgXssa.jpg

April

I started producing a bunch of assets for Angel. Again, I was really getting ahead of myself here, but I learned a lot about how to use Blender. In previous attempts at learning Blender I found myself hopelessly trapped in tutorial hell. Having a concrete goal actually helped force me to learn things the right way.

blender_gOMRHSwfk7.png

It was pretty satisfying to start assembling these in Unreal Engine. It looks like a real game! It could not be further from a real game at this point.

UnrealEditor_zE2tV28Ifh.jpg

This is a little project I worked on to better understand some retro-rendering techniques. I implemented a much nicer dithering shader and even implemented a bit of vertex jitter.

I started a new colony in Rimworld. This ended up being one of my more successful colonies. I decided to do my best not to cheese the AI with a killbox this time around. This is another one of those games I seem to come back to every year.

294100_20240425144259_1.png

May

This month I worked on my first actual gameplay mechanic (only two months after starting development!). It's a sort of "delayed" crosshair where the player's aim takes time to catch up to where the player is currently aiming the mouse. It's a small mechanic, but I think it's pretty cool! There's a couple other games that do this sort of thing, but it's something I'd like to see more of.

I started modelling a gun. Honestly I must've modelled this thing three times before I got something passable. This was my first time modeling something with moving parts. This screenshot is before I realized that my gun would have to be modeled as separate parts/vertex groups if I wanted to actually animate it.

blender_DG84RN7T0n.png

I played this game called Arctic Eggs. I'm not sure where to begin with this one. You cook eggs for people in the arctic - that's the game. Can you cook an egg on top of Mt. Everest? I'm still not sure.

2763670_20240527204234_1.png

2763670_20240527204341_1.png

June

I finished my gun model, rigged it with some bones, and did some very lazy animations.

Here it is in-game! I didn't finish animating it in the game for whatever reason. You'll also notice this is a new test level with some slightly better post-processing effects.

I played Ghost of Tsushima this month. This game is an absolute visual treat. Unfortunately I never got around to beating it as I was too busy taking screenshots.

2215430_20240619124935_1.png

2215430_20240619150921_1.png

I built this blog and the underlying infrastructure for it. Pretty much all the content here is in a self-hosted Strapi CMS. Pages are pre-rendered whenever something in the CMS gets updated (triggered via WebHook). Most of the content in my CMS is markdown so I used this really nifty Lorem Ipsum Markdown generator to make sure I could render pretty much anything that got thrown at it.

chrome_MmLsCSCgZX.png

This whole setup has resulted in very fast load times! Considering this is what I do for a living it'd be a bit shameful to shoot for anything less than this.

chrome_W3ywmmkXvd.png

July

Lots of time spent working on Angel this month. I finally decided to start working on the actual game and I needed a more thought out test level so I went ahead and started blocking one out.

UnrealEditor_I1eBEKXD2d.jpg

Here's the finished test level. It's not much, it's the culmination of a lot of learning throughout the year. Looks like a real game!

FinishedLevel.png

You may have noticed I got my dithering shader in a good place. My previous attempts at it had produced some strange results that didn't look quite right. If you're not familiar with bayer dithering, there's a great article about it here. This article talks about two-bit dithering but the principles apply to any number of colors you like. The end result is very pretty, be sure to open these shots in full screen for the full effect.

UnrealEditor_YNjXmUi43c.png

August

This month I really ramped up on game mechanics for Angel. I decided AI was a crucial component for it, so I spent a lot of time researching how great AI in games is implemented. One of the most notable AI systems in games is Monolith's F.E.A.R. Despite coming out in 2005, it's still has some of the best AI I've seen in games.

F.E.A.R. uses a goal-oriented action planning system that allows AI to accomplish a goal in different ways, based on the current state of the world (e.g. whether or not they have ammo, visible to the player, in cover, etc..). I spent a lot of time drawing and just trying to understand how this system was supposed to work.

chrome_I5P6bP7Wjs.png

I ended up implementing my own planning system for my AI based on F.E.A.R.'s. I'm not going to lie, this was a bit of a slog to implement. My C++ skills were not very sharp at this point so figuring out the best way to code something like this with the right amount of abstraction wasn't easy.

I started out creating a simple version of a planning system in Typescript, which helped to prove out the concept for myself. And ultimately I did get something working in-game! You can see here that the AI can respond to the situation changing (losing his cover) dynamically.

September

I was a little burnt out after spending basically the entire month of August working on AI for Angel so I decided to switch gears for a little bit and go back to finishing up my Only War module. This project had basically been left dormant since I last touched it in February. I finished implementing the character sheets and made them smart enough to automatically calculate most of the important stats. I also finished up the inventory system and started creating a bunch of items to play with in the campaign.

The campaign itself has been very on-and-off depending on the availability of my friend and I, but we were able to play test this new system a couple of times. So far the experience has been great! At some point I'll be looking to open source this module so that others can play it too.

Foundry_Virtual_Tabletop_Edsdf07eK0.png

Foundry_Virtual_Tabletop_lYqGbueO8S.jpg

If it's not totally obvious why I was suddenly so inspired to finish up the development for this module here's your answer: Warhammer 40K: Space Marine 2 came out around this time. I can't say that I've ever seen a game so perfectly capture the essence of the 40K universe.

2183900_20240918171117_1.png

October

I didn't get around to much this month. I traveled a lot for work and then immediately went on vacation. This didn't leave a whole lot of time for me work on anything outside of my normal job duties. I did however start playing Disco Elysium again. I bounced off of it the last few times I've tried, but this time it stuck. I love this game! The writing is very clever, I don't think I've ever laughed so hard playing a game. I've been following some of the ZA/UM drama. I feel bad for the developers, but I can't help but think this whole situation very cosmically fitting for this game.

632470_20241002175319_1.png

November

Things picked back up again this month. I was enjoying the mental space of not working on anything too diligently. I actually went back and played some Garry's Mod. I started exploring some old maps just for fun. There's something about the Source engine's prebaked lighting that just ages beautifully. It's amazing to me how much time and dedication went into some of these maps - and there are thousands of them to walk through and explore. Here are some shots from a few maps I checked out.

hl2_zOgQbkAeeY.jpg

hl2_3ieW087V14.jpg

hl2_qCrDobiYqe.jpg

I also started working on a new game, which I'm calling Cart Climber for now. At some point I had the realization that while Angel is a dream game for me, I didn't really have the skills yet to execute on it effectively. It's going to take me awhile to get where I need to be. I need some quicker wins under my belt. I came up with a relatively simple idea for a game: you've got this cart that's attached to a wall with tethers and using the cart's controls you need to get it up the wall and deliver your payload without dropping it.

UnrealEditor_F0LdXBoHJA.png

Even this simple game is, of course, not quite as simple as expected. Turns out building a game based around physics interactions is very hard! That being said, this game is much smaller in scope and I think something I can actually finish at some point.

Beyond that, S.T.A.L.K.E.R. 2 finally came out at long last. It's buggy. It's janky. But I love it all the same. It's pretty amazing what GSC were able to do here given that they're fighting off a Russian invasion right now.

1643320_20241125222646_1.png

Stalker2-Win64-Shipping_mFXqlX1VqJ.jpg

December

This month, I made a ton of progress on Cart Climber. Honestly there are too many features to explain in detail, but so far here's what I've implemented:

  • A system for picking up and throwing objects
  • A grappling hook object which sticks to the wall when thrown
  • A button system for interacting with objects in the game world
  • A controllable cart that attaches to the wall
  • Numerous tweaks/configuration to UE's Chaos physics engine to achieve a stable game experience

I have the barebones of a game now, but there's still a long way to go. I think a video speaks a thousand words really, so I'll just leave you with this.

Oh, and here's a dumb joke I made.

Now that I've got some basic gameplay I've been working on a much nicer cart model alongside a feature that allows you to move the support struts on the cart back and forth. My Blender skills are getting a lot better, this geometry is very satisfying to look at.

blender_ByHy8Koxh8.png

Wrap Up

That's all folks! I'm very tired of writing now so I'm going to bring this to a close quickly. This year felt great - I started the year with a pretty concerted effort to create more and I did it. Writing this post really put everything into perspective for me. I thought that just having produced something tangible/usable would be the most satisftying aspect of all of this, but really the most satisfying bit is the journey itself.

I'm really looking forward to picking up things in the new year and putting everything I learned in this one to good use. Happy Holidays!