Vampire: The Masquerade – Redemption is a role-playing video game released for personal computers on June 7, 2000, by Activision. The game follows the adventures of a French crusader, Christof Romuald, through Prague and Vienna in the Dark Ages and modern-day London and New York City. The game is based on the tabletop role-playing game Vampire: The Masquerade. The game's graphics were highly advanced for its time, including then-novel effects such as multiple shadows rendered dynamically from in-game light sources. Vampire: The Masquerade – Redemption also includes a multiplayer game mode in which one player takes the role of the storyteller. The game itself is divided into two parts, one medieval and one modern, each of which play differently.

Post tutorial Report RSS How to import animations from Blender into Vampire the Masquerade Redemption

This is a tutorial on how to import animations from Blender into Vampire the Masquerade Redemption using Noesis.

Posted by on - Advanced Animation

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

  1. The Nod SDK
  2. Blender (You can substitute this with your own 3D editor but you'll have to rig/export it yourself into Noesis)
  3. Noesis
  4. The Nod Noesis plugin
  5. Blender's Unreal PSK/PSA import/export plugin.
  6. (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.

1 1


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.

2 1


Select the nod animation file to use. In this case we're using ChrisRunSword.nad.

3 1

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.

4 1

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.

5 1

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.

ChristofHands

Next we'll need to export it. Go back to object mode and select his skeleton. Then export as .PSA.

6 1


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.

6 2

There it is. Next we'll need to go up to export.

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.

7

There it is. And it'll also show up in-game too.

Christofhands2

I encourage you to pose Christof and his friends in funny animations. I know I did.

image 1

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.

Screenshot 2024 04 04 173622


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.

Untitled


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.

image 1 2

image 3

One other thing you might run into is Christof being turned 180 degrees in the wrong direction.

image 2

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.

Post comment Comments
Guest
Guest - - 690,298 comments

Beautiful 🤩
Thanks so much 4 your work ^^
Time to reinstall vtmr and try some meshing

Reply Good karma Bad karma0 votes
LithTechGuru Author
LithTechGuru - - 408 comments

I recommend joining the Planet Vampire discord and sharing your work there.

Reply Good karma+1 vote
Guest
Guest - - 690,298 comments

Discord link is not working or expired. Can you share new one?

Reply Good karma Bad karma0 votes
LithTechGuru Author
LithTechGuru - - 408 comments

Updated

Reply Good karma+1 vote
Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: