Peeps might have guessed already but for those who are unaware:
Ninja Gaiden 2 Black (NG2B) is running a modified version of Ninja Gaiden Sigma 2 (NGS2) under the hood.
It only uses Unreal Engine to render visuals.
here's a tiny thread on how this works 🧵
Imagine NGS2 running with no visuals.
What NG2B is doing is taking all the gameplay info from this state and displaying it in UE5.
Doing this is quite a bit of work but a handful of games have already done this in Unreal Engine (Tekken, Soulcalibur, Crisis Core Reunion FF7)
A large part of this process is making it so that NG2B can understand the data coming in from NGS2
NG2B handles this with a Unreal Engine C++ Actor called CommonWorkBase.
It seems like every NG2B Actor knows its NGS2 Data equivalent in Real-time (Referred to as "Act").
What's weird is how they run these animations onto the new models...
For some reason, all the original models from NGS2 are just in the game?????
In every character blueprint, the Sigma 2 model is present and hooked up to an Anim Blueprint called:
"ABP_CopyBoneFromSigma2" LMAO
Then, they use Unreal Engine 5's IK Retargeter to retarget the Sigma 2 animations to the new models...
And then they hide the original model LMAO
This is one of the funniest shit I've seen in a UE game and bloats the game by like 5GBs
but it works I guess?????????
Anyway, these player actors parent from an actor class called CharacterBase which parents off of the CommonWorkBase actor.
If we use Debugging tools, we can see information on the Current Sigma 2 Act animation that's running with the character.
CharacterBase doesn't just do Sigma 2 conversion stuff but it seems to handle a lot of NG2B's character visuals.
The Designers probably run unreal code for the blood and gore, and other visual elements in tandem with the Sigma 2 Gameplay Events that the actors are reading from.
The way how this game handles Levels is also quite interesting...
The maps themselves seem to be put together in Unreal, and then they're streamed in when needed with Unreal's Level Instance system.
The collision data also seems to be read from an Unreal map.
Additionally, the main persistent level is called "GameModuleTestLevel" lmao
I'm assuming this is servicing NGS2's game state in the background
When levels are selected this level never gets swapped out, but additional level data gets pre-loaded underneath, even for cutscenes.
Speaking of cutscenes, the original animation data seems to not only be used for gameplay but even for cutscenes.
Other than minor differences in head movement, this seems to be the same animation data from Sigma 2, which was ported from the original game.
Anyway, that's mostly it for this thread, if I find any other interesting stuff I'll report back.
Modding this game as well should be relatively easy, so hopefully a community can be formed around it!
Peeps might have guessed already but for those who are unaware:
Ninja Gaiden 2 Black (NG2B) is running a modified version of Ninja Gaiden Sigma 2 (NGS2) under the hood.
It only uses Unreal Engine to render visuals.
here's a tiny thread on how this works 🧵 Imagine NGS2 running with no visuals.
What NG2B is doing is taking all the gameplay info from this state and displaying it in UE5.
Doing this is quite a bit of work but a handful of games have already done this in Unreal Engine (Tekken, Soulcalibur, Crisis Core Reunion FF7) A large part of this process is making it so that NG2B can understand the data coming in from NGS2
NG2B handles this with a Unreal Engine C++ Actor called CommonWorkBase.
It seems like every NG2B Actor knows its NGS2 Data equivalent in Real-time (Referred to as "Act"). What's weird is how they run these animations onto the new models...
For some reason, all the original models from NGS2 are just in the game?????
In every character blueprint, the Sigma 2 model is present and hooked up to an Anim Blueprint called:
"ABP_CopyBoneFromSigma2" LMAO Then, they use Unreal Engine 5's IK Retargeter to retarget the Sigma 2 animations to the new models...
And then they hide the original model LMAO
This is one of the funniest shit I've seen in a UE game and bloats the game by like 5GBs
but it works I guess????????? Anyway, these player actors parent from an actor class called CharacterBase which parents off of the CommonWorkBase actor.
If we use Debugging tools, we can see information on the Current Sigma 2 Act animation that's running with the character. CharacterBase doesn't just do Sigma 2 conversion stuff but it seems to handle a lot of NG2B's character visuals.
The Designers probably run unreal code for the blood and gore, and other visual elements in tandem with the Sigma 2 Gameplay Events that the actors are reading from. The way how this game handles Levels is also quite interesting...
The maps themselves seem to be put together in Unreal, and then they're streamed in when needed with Unreal's Level Instance system.
The collision data also seems to be read from an Unreal map. Additionally, the main persistent level is called "GameModuleTestLevel" lmao
I'm assuming this is servicing NGS2's game state in the background
When levels are selected this level never gets swapped out, but additional level data gets pre-loaded underneath, even for cutscenes. Speaking of cutscenes, the original animation data seems to not only be used for gameplay but even for cutscenes.
Other than minor differences in head movement, this seems to be the same animation data from Sigma 2, which was ported from the original game. Anyway, that's mostly it for this thread, if I find any other interesting stuff I'll report back.
Modding this game as well should be relatively easy, so hopefully a community can be formed around it!
yes