Introduction
Vampire the Masquerade Redemption runs on a proprietary engine called "NOD". Created by the developer Nihilistic studios. They released an SDK for the game shortly after its release, allowing players to create their own adventures. The way the developers imported models and animations into the game was via Maya 2.5 using a custom exporter they wrote. In the early 2000s a programmer wrote a model plugin for Milkshape, however it was incomplete. It supported the model format .nod but did not support the animation format .nad. So for 24 years nobody has been really able to make custom animations.
That is until now. Recently I have worked with a programmer to create a Noesis plugin for Vampire the Masquerade Redemption. This allows you to import animations from your preferred 3D editor (Blender, 3dsmax, Maya etc) into Vampire the Masquerade Redemption using Noesis as a middleman.
This tutorial goes over how to import .NAD models into Blender 3.6, and subsequently import custom animations of your own creation back into the game. This tutorial is a sequel to my previous tutorial on importing/exporting .nod. So I recommend reading that one before this one.
What you will need
- The Nod SDK
- Blender (You can substitute this with your own 3D editor but you'll have to rig/export it yourself into Noesis)
- Noesis
- The Nod Noesis plugin
- Blender's Unreal PSK/PSA import/export plugin.
- (optional) Blender's Source tools
Importing models from Vampire the Masquerade Redemption into Blender
This is a somewhat optional task as I've uploaded Blend files containing all the main skeletons of the game. However it's worth documenting this step as you'll likely want to do this at some point.
Vampire the Masquerade Redemption's animation files are located in the Resource.nob file in the game's folder. .nob files are essentially renamed .zip files. So you can open it with 7zip very easily.
Animation files are located within \3d\Anims\
After extracting the one that we want. We'll also need a copy of the character in question from his \3d\Models\ folder. In this case I'm going to use Christof's running animation ChrisRunSword.nad and Christof.nod respectively.
Next we'll need to open Noesis. The nod/nad plugin has been upgraded since my last tutorial. It now asks you for an animation.
Select the nod animation file to use. In this case we're using ChrisRunSword.nad.
There he is. Now we can export this as .smd similar to how we did in the previous tutorial. This time hit file->Export from preview.
It will generate two files. Christof's .smd and base_anim_mainsequence.smd. If we import both of those into Blender it'll show up.
There he is. You now have Christof's running animation. This should also work with every skeleton in the game.
Exporting custom animations
That's all well and good but what if you want to do something really exciting? Like a custom animation and have it display in-game?
To do that we'll first have to make a custom animation. There's one major thing we need to pay attention to though. Christof's root bone needs to be at the world center.
This is very important as the game determines positioning in relation to Christof's torso. This may take some futzing with as he may be floating off the ground. If he is, just move his body to the center of the world, hit apply->all transforms and try again.
Next we'll make our animation. For the purpose of this tutorial it'll be something simple.
Next we'll need to export it. Go back to object mode and select his skeleton. Then export as .PSA.
There's one very important thing we need to check here. Right next to Christofout_skeletonAction check that box.
Now open Noesis and open our .psa we exported.
There it is. Next we'll need to go up to export.
Since we're not exporting any models select "no geometry". The easiest way to test a new animation is to just replace Christof's standing pose. This'll let us test it in multiplayer to see if it's working. Now hit export. You should see your .nad in the folder.
Testing in-game
Next let's test in-game. Open multiplayer and select LAN. Then create a character.
There it is. And it'll also show up in-game too.
I encourage you to pose Christof and his friends in funny animations. I know I did.
Tags
One other thing the plugin supports are tags. In the NOD engine tags are events that play during certain animations. A good example is when footsteps play or when the muzzle flash of a gun will appear.
The NAD documentation in the sdk goes into much more detail about how tags work but I'll summarize briefly how to use them. In the Noesis plugin's exporter window there's a field called advanced options.
We can input the following heading to get tags to work. -nadtaglist
Next after that are a series of numbers. For example -nadtaglist 0,1
This tells the engine "on frame 0, play tag 1". Tag 1 in the engine is defined as Rwalk. Which plays the right footstep sound. We can also stack these tags together too. For example
-nadtaglist 0,1,2,4
This tells the engine "on frame 0, play tag 1, on frame 2, play tag 4". Tag 4 in this case is defined as the fire command for displaying a weapon firing animation.
For a list of tags check bellow. This list is from the SDK's documentation on the .nad format. So you can find it there too.
Troubleshooting
Because .nad was such an early skeletal format it's not particularly robust. It's heavily reliant on Christof's world origin to work. If you don't move Christof's mesh to the world origin (0,0,0) you'll see funny things like this.
One other thing you might run into is Christof being turned 180 degrees in the wrong direction.
While you can fix this by just rotating his mesh in Blender, another fix for it is to use the -rotate command in Noesis.
-rotate x,y,z
Conclusion
That's about it. I will update the NOD Noesis plugin shortly before this tutorial goes up. If you have any questions feel free to join the Planet Vampire forums. I also recommend joining the Discord. Please let us know what fun animations you're creating for Christof and the gang there.
Beautiful 🤩
Thanks so much 4 your work ^^
Time to reinstall vtmr and try some meshing
I recommend joining the Planet Vampire discord and sharing your work there.
Discord link is not working or expired. Can you share new one?
Updated