It would be a bit difficult to portray the story of this article in pictures - it would mostly be a series of photos of us in various stages of despair. Instead, we'll show you the model that caused us all this hassle, and the improvements we've been trying to implement all this time.
The Hammerocerros was one of the first creatures modeled for The Riftbreaker. The other two were the Canoptrix and the Arachnoid. The model dates back to 2018. We've learned a lot since then, so it feels a little dated, especially compared to the new creatures.
The story we want to tell you today is multi-layered and will show you the unpredictability of the game development process. As we told you a couple of months ago, we decided to introduce a new strain of creatures into The Riftbreaker: Omega creatures. They are much beefier and larger variants of regular Galatean creatures. They also come with a suite of extra abilities, such as damage auras and calling in meteor showers on demand. To make Omega creatures extra special, we decided to give them custom models that reflect their unique nature and extreme danger level.
Omega creatures are larger than their regular counterparts. This increase in size wasn't kind to the Hammerocerros. Even this big, it still looked like an amorphous blob. We decided that the Omega variant needed significant improvements.
While modeling creatures is a gratifying task and one of the most pleasant parts of a 3D artist’s job, animating those models is a complex task that involves the work of several people - a designer to come up with all the creature’s states, an animator to create the animations, and a programmer to put them all together in an Animation State Machine. Any changes made after all this work is done may generate potential bugs and require a new round of tweaks. We wanted to avoid that, so our artists would create new, enhanced versions of the existing models that could still use the same skeleton, animations, and animation state machine. It worked great for the vast majority of creatures. The problems began when we reached our good old Hammerocerros - one of the first models purpose-made for The Riftbreaker.
The first Zbrush sketches of the Omega strain. The armor on the back is much more pronounced. A pair of large horns are meant to show you that this guy means business.
Our game’s development started in 2018. Back then, we used 3DS Max for modelling, rigging, and animations. We had been using that program since Zombie Driver days (fun fact: the level editor for ZD was made entirely using the 3DS Max scripting language). When we started prototyping The Riftbreaker, we still used 3DS Max and gradually moved to Blender. While most in-game models have been created using Blender, a few of the oldest meshes are still in the 3DS Max format. You can see where this is going - Hammerocerros is one of these models. To modify this creature, we had to open the old source file.
After cutting down on the horns a little - at least the ones on the back - we put this model next to the Ultra strain to see how they compared. We liked the results, so we moved on to texturing.
In theory, Blender should be able to open a Max file and convert it to the new format, but there is no guarantee that everything will work right out of the box. At first, things seemed promising - the model and its materials were imported successfully. However, one crucial part was missing - the animation rig. No matter what we did, we could not make Blender read the rig from the Max file. This would force us to recreate the model’s skeleton and create all the animations once more, which was far more work than we were willing to accept. We had to come up with an alternative solution.
We still wanted to retain the color palette of the original creature. However, we used the colors in a more structured way, which allows you to see shapes and details with much more clarity.
Our first instinct was to fire up 3DS Max and export the model in a more compatible format. Luckily, we bought a perpetual license all those years ago (remember when perpetual licenses were a thing?), and the CD was somewhere in our storage space. We went treasure hunting, found the box, plugged in an external CD drive, and began the installation process. As you can imagine, things did not go smoothly. As it turns out, the version of 3DS Max we had access to was so archaic that it refused to work on newer systems… Windows 8.1.
Here's a high-detail render of the "regular", physical damage Hammeroceros Omega...
...and here's the fire damage elemental variant. This model receives additional particles to emphasize the 'elemental' aspect.
Up until a couple of months ago, this wouldn’t be a problem. We try to keep at least a couple of machines in our office on older hardware and software versions to test for compatibility issues, so we had a PC with that system in our office. However, when Microsoft stopped issuing security updates for Windows 8.1, it was no longer safe for us to keep it online. The machine got a slight hardware upgrade, and we switched it to Windows 10. That meant we had to find a workaround and try to run 3DS Max elsewhere. Our first idea was to set up a virtual machine with Windows 8.1 and run Max there. It was relatively quick to set up but failed just as fast - the software refused to install on a VM. We had to bring out the heavy guns.
We liked the new version so much that we decided to use a slightly more 'polite' version to replace the base strains of the creature.
We dove into our storage space once more, grabbing all the PC components that bordered on being classified as “electro-junk,” and put together a period-accurate PC to give it the best shot at working right out of the box. We constructed the grandpa-PC, installed Windows 8.1 again, and attempted to get 3DS Max running. We entered our perpetual license software key, hit enter, and… nothing happened. We tried several more times but to no avail. When we called support, they were shocked that somebody was even trying to use software this old. Upon investigating our issue, it turned out that validation servers for this program version were turned off several years ago.
Here's the full Hammeroceros family with a bit of foliage to see how they blend in with the environment. We're quite happy with the results!
All hope seemed lost. After all, it felt like we couldn’t run away from remaking the animation rig for Hammerocerros. Then, we had one last idea. What if we didn’t have to authenticate the software after all? Was it possible to use the program's trial version and export our model that way? Turns out that it was! The trial version of Max had a time limit but no functionality limit, meaning we had bought ourselves a couple of days to open all our old models, reexport them, and save ourselves from all this trouble in the future. Our saga has finally ended, and you can enjoy updated Hammeroceros family models in upcoming Riftbreaker updates.
Obligatory xkcd. The original work can be found here. Shared under the Creative Commons Attribution-NonCommercial 2.5 License.
If there's one lesson we've learned from this misadventure, it's this: never let any part of your project be entirely dependent on external software. We often hear about the importance of backups and the best practice of having redundant copies. However, backups won't save you if the crucial software needed to open the files is missing. That's why we've decided that if there's a software switch in the future, we'll re-export all our work ahead of time. It's a small step that could save us from a lot of trouble in the future.
Now the other "old" creatures are asking for a rework... Should we? We've got the tools, after all.
That’s all for the first Riftbreaker blog of 2025. We hope puzzles like this won’t happen too often this year and that we will be able to focus on delivering all the promised content updates as soon as possible. If you want to receive daily updates on our progress, join our Discord server at www.discord.gg/exorstudios. You will get to see what we are currently working on and influence what the game looks like in the future.
See you next time!
EXOR Studios