YesNoOk
avatar

Generating 2D GUILTY GEAR Xrd Sprites (Read 33815 times)

Started by Suzaku, December 14, 2015, 07:42:36 AM
Share this topic:
Generating 2D GUILTY GEAR Xrd Sprites
#1  December 14, 2015, 07:42:36 AM
  • Rise from Ashes
Haven't posted here in ages, but though I'd go ahead and share this idea. I'll start off with a proof of concept:



Concept

Put simply, with the PC release of GUILTY GEAR Xrd -SIGN-, it's possible to disable post-effects and, thereby, anti-aliasing. This, coupled with ASW's unique cel-shader and stop motion-style limited animation technique, effectively makes the 3D models appear as 2D sprites, to the extent that they almost have simple 32-color palettes. Full animations can then easily be "ripped" using traditional sprite ripping techniques.


Basic Rundown

Step 1: Backup and remove or rename "BaseSystemSettings.ini", located in the "Steam\SteamApps\common\GUILTY GEAR Xrd -SIGN-\Engine\Config\" directory. With this file removed, the game will not render certain stage elements, creating a pure black BG on Ramlethal's stage (Japan).
Step 2: Disable Post-Effects in the Display Options and set a desired window resolution.
Step 3: Enter Training Mode, select a desired character, and choose Ramlethal's stage (Japan).
Step 4: Use appropriate tools to capture animation frames, just as if it were a traditional 2D sprite-based game.

The resolution chosen will of course affect the size and quality of the sprites. The game natively supports up to 1080p, and with .ini modification can go up to at least 7k. At 720p the generated sprites would likely be about the same size as those in BlazBlue.

Since each character model has its own independant light source, and each frame of animation is hand-posed with no additional tweening, this means that the lightning and animations remain completely consistent at all times.

Additionally, the cel-shader being used creates pixel-perfect edges for shadows and outlines, making the resulting palettes easy to edit, apart from a few caveats listed below.


Unsolved Issues

There are a handful of issues I've identified with this technique that, thanks to the flexibility of Unreal Engine 3 and PC modding, can probably be overcome. Unfortunately I'm not that savvy, so someone else would probably have to take the lead if they want to solve them.

  • Black BG - Character models may use pure black (#000000), which can make it difficult to cleanly extract them from the black BG. This can be overcome by manually correcting transparency errors afterwards, but a way to change the BG color in-game would be most desirable. Editing the character textures could also be a valid solution.
  • Camera Position - The game's camera zooms in and out depending on character proximity. This can cause portions of animations to move offscreen or alter the size of a character relative to the screen. Additionally, the camera moves during certain special attacks, though I suspect those can actually be ripped in full with little issue, creating dynamic 2D full-screen animations. I suspect a camera mod could easily fix this.
  • VFX Textures - The various special effects used by characters would probably need to be disabled and extracted seperately from the character models to create a proper "full rip." It would probably be possible to modify the textures and models to make one or the other invisible.
  • Decal Textures - Text, logos, and a handful of other details are applied to the character models using "decal" textures with alpha transparency; this creates noticeable aliasing in-game which disrupts the otherwise perfect palettes. It might be possible to edit the decals to remove alpha transparency and thereby the aliasing, or it might be possible to simply disable them outright.
  • Lineart Vectors - Perhaps the biggest issue, ASW devised an extremely clever way to render scalable vector lineart on the character models using the mesh's vertices and simple texture maps. What this means is that all the "drawn-on" lineart (such as muscle definition and seams on clothing) are actually generated in real-time as aliased vectors that scale infinitely. I don't think there's a single simple solution to this issue unless the aliasing can be disabled. If that's not possible, I believe that the textures can be edited so that the vector lineart will be the same color as the underlying texture, making it invisible; however this would eliminate a lot of desirable detail.


Closing Thoughts

I might test things some more if some editing tools or mods develop around the game to make this stuff easier to do, but I don't really have the technical skill to create those tools or mods on my own, apart perhaps from simple texture editing.

This isn't a project or anything; I'm not planning on creating full character animation sets, MUGEN characters, or anything of the sort. I just had a feeling that this would probably be possible and thought I'd share the general concept and some of my ideas with this community, in case anyone more dedicated wants to take the idea and run with it.
Re: Generating 2D GUILTY GEAR Xrd Sprites
#2  December 14, 2015, 07:56:17 AM
  • *****
  • Fuck you.
    • Philippines
    • Skype - Markpachi
    • mugenguild.com/forum/topics/-opensource-mps-psds-stages-and-resources-please-put-them-good-use-172321.0.html
An interesting read, indeed! A huge thanks for sharing this info to the community, and I hope someone, if not you, uses this post to somehow generate Mugen-usable sprites using the game engine itself.


Just a quick question about the PC port's textures. I haven't really checked out the folder contents of the game, and I never really planned to, but were the texture files just simply image files (PNG, or some specific image format), or are they specific files that can only be used by the game engine? With that said, if the texture files were basic PNG files, is it possible to make the image saved as a transparent image? So that if that were to be done, characters, or basically any element in the game, can be turned invisible?

Sorry for the confusing statement. I tried my best to explain my curiosity. And again, than you for the nice read. :)

Rest in peace, Tamez. Thank you for everything.
Re: Generating 2D GUILTY GEAR Xrd Sprites
#3  December 14, 2015, 08:24:36 AM
  • Rise from Ashes
All of the models and textures are stored in .upk files which can apparantly be opened using the usual Unreal Engine tools like Gildor's UE Viewer. I haven't done any exploring yet, but I believe some Chinese players already created a nude Zato mod, so texture editing should be doable.

I don't think it'll be possible to texture edit to make a character's textures invisible, but they can probably be rendered completely black, causing them to blend in with the BG, which should make ripping FX possible. I imagine the FX textures have alpha transparency and can probably be made invisible by taking advantage of that.

This an example of one of the game's texture maps:



They're extremely odd looking because the only information really stored is the palette, and everything is aligned to an x/y axis. This is done so they can take advantage of the UV mapping to create vectored lineart on the character models in-engine, instead of having to store the lines as textures that would scale poorly.







Essentially, by dragging the vertices onto the black sections of the texture maps, they can generate vector lineart on top of the model. If you were to paint over the black portions of the texture maps with skintone, it would remove those vectors.



This is what a decal texture looks like. Shouldn't be an issue to make these invisible.


Pictures come from this two-part 4gamer article:

http://www.4gamer.net/games/216/G021678/20140703095/
http://www.4gamer.net/games/216/G021678/20140714079/

They also had a presentation at GDC if you're interested in their engine:

https://www.youtube.com/watch?v=yhGjCzxJV3E

lui

Re: Generating 2D GUILTY GEAR Xrd Sprites
#4  December 14, 2015, 08:31:36 AM
  • *****
    • USA
Re: Generating 2D GUILTY GEAR Xrd Sprites
#5  December 14, 2015, 09:10:54 AM
  • *****
  • A.K.A. NED
  • I got inspired for one more SF6 Chun-Li artwork...
Impressive!
Glad to see some sprites based on these 3D models

Trying Kinu Nishimura Style for custom portraits...

https://twitter.com/MomotaroComics/
https://www.instagram.com/momotarocomics/
Re: Generating 2D GUILTY GEAR Xrd Sprites
#6  December 14, 2015, 09:24:09 AM
  • **
  • The Forsaken Warrior
  • Let us grieve existence, together.
    • Mexico
interesting
Re: Generating 2D GUILTY GEAR Xrd Sprites
#7  December 14, 2015, 09:28:48 AM
  • *****
  • Fuck you.
    • Philippines
    • Skype - Markpachi
    • mugenguild.com/forum/topics/-opensource-mps-psds-stages-and-resources-please-put-them-good-use-172321.0.html
Essentially, by dragging the vertices onto the black sections of the texture maps, they can generate vector lineart on top of the model. If you were to paint over the black portions of the texture maps with skintone, it would remove those vectors.
So, hold on. If I were to paint the decal textures/ effect textures with a certain black color, the result would be the texture, specifically the black color, not appearing in-game? Does that also apply with the main character's texture build (skin, eyes, etc.)? The manner that the game developers used on these models look very odd, in my opinion, and is confusing me a little.

Rest in peace, Tamez. Thank you for everything.
Re: Generating 2D GUILTY GEAR Xrd Sprites
#8  December 14, 2015, 10:40:16 AM
  • Rise from Ashes
So, hold on. If I were to paint the decal textures/ effect textures with a certain black color, the result would be the texture, specifically the black color, not appearing in-game? Does that also apply with the main character's texture build (skin, eyes, etc.)? The manner that the game developers used on these models look very odd, in my opinion, and is confusing me a little.
It's hard to explain, but basically the character texture map (which is the ones with colors and black horizontal / vertical lines all over it) is mapped to the 3D character model (the mesh) with great care, allowing everything to be aligned on a vertical / horizontal axis.

This gives all the black parts of the texture a solid, straight edge, which means that by slightly aligning the model's vertices to the black sections of the texture map, they can create vector-style lines on the model, which will scale infinitely no matter how much the model is enlarged or how close the camera gets to it. Thus they don't have to store the lineart on textures and don't have to worry about upscaling artifacts if they need to enlarge the model or zoom in close.

Maybe this example will make it more clear:



The issue this has with regards to sprite ripping is that these lines have natural anti-aliasing property due to working like vectors.



As you can see, while the model's outlines, shadows, and highlights have solid colors and perfect edges with no anti-aliasing, basically looking like a traditional (if messy) 2D sprite, the details from the vector-style lines are scaled to the size of the model and aliased, which looks un-sprite-like and increases the palette dramatically.


If you got rid of the black lines, the model would look more like like this:

Last Edit: December 14, 2015, 10:43:16 AM by Suzaku
Re: Generating 2D GUILTY GEAR Xrd Sprites
#9  December 14, 2015, 11:50:48 AM
  • *****
  • Fuck you.
    • Philippines
    • Skype - Markpachi
    • mugenguild.com/forum/topics/-opensource-mps-psds-stages-and-resources-please-put-them-good-use-172321.0.html
Thanks for being patient with the explanation. I think I understand now. And the idea I had just isn't possible, from what I understand. Though kinda unrelated, I'll still ask since you look knowledgeable. Is there any way so far to turn off the the life bars, characters, and their effects, on the screen? What I'm trying to say is to sort of have an ability to have a "stage viewer" feature in-engine. I'm assuming there isn't, basing off what you said earlier about a camera mod for the game not yet existing, but you might know something that I don't.

Rest in peace, Tamez. Thank you for everything.
Re: Generating 2D GUILTY GEAR Xrd Sprites
#10  December 14, 2015, 12:42:32 PM
  • Rise from Ashes
It should be possible to hide the character models and HUD elements, though I'm not sure how one would go about it. Texture editing usually won't turn models invisible, from my experience, because their alpha layers are usually used to store other information like specularity instead of opacity.

Unreal Engine games can be tweaked in all kinds of ways and the game has about a dozen different ini configuration files, so it might just require some experimentation. If one can be tweaked to make the scenery invisible, I'm sure the opposite is possible.

It could also be possible to extract the models and textures and reconstruct the stages externally. I'm not really the guy to ask about that, though.
Last Edit: December 14, 2015, 12:44:53 PM by Suzaku
Re: Generating 2D GUILTY GEAR Xrd Sprites
#11  December 14, 2015, 04:11:40 PM
  • ******
  • Somewhere between Guilty Gear and real rap
  • ey b0ss
    • nass.yh95@gmail.com
Suzaku, this is amazing. Just to compare what you did with Guilty Gear XX versions of Sin and Bedman made by RieyTails (yes I'm aware of the huge size difference, but I think it's still worth a comparison, quality speaking that is):

Spoiler: Bedman Xrd v. Bedman XX by Riey Tails (click to see content)


Spoiler: Sin Xrd v. Sin XX by RieyTails (click to see content)

With editing and maybe a palette change (or resize, if you want to go further, but I don't think that's necessary), it could look truly XX official. So thanks for the share, Suzaku! :)
This is a generic forum signature.
Re: Generating 2D GUILTY GEAR Xrd Sprites
#12  December 14, 2015, 04:54:08 PM
  • *****
  • Fuck you.
    • Philippines
    • Skype - Markpachi
    • mugenguild.com/forum/topics/-opensource-mps-psds-stages-and-resources-please-put-them-good-use-172321.0.html
Unreal Engine games can be tweaked in all kinds of ways and the game has about a dozen different ini configuration files, so it might just require some experimentation. If one can be tweaked to make the scenery invisible, I'm sure the opposite is possible.
I agree! The question isn't IF, but HOW it can be done. I'll research further into .ini files, and see if anyone has discovered any mod or trick for that to work. Thanks for the inspiration out of nowhere, Suzaku. Your share won't come to a waste.

It could also be possible to extract the models and textures and reconstruct the stages externally. I'm not really the guy to ask about that, though.
That, I know. I just really want to somehow record the in-game scenery for a possible future project for Mugen. Again, thanks for the share!

Rest in peace, Tamez. Thank you for everything.
Re: Generating 2D GUILTY GEAR Xrd Sprites
#13  December 14, 2015, 05:21:11 PM
  • ****
  • stillRetired.
  • Formerly Known As Genesis
    • USA
    • www.mediafire.com/folder/7j1slkpa7lm0w/Public_Works
That was a pretty informative read and I gotta say thanks just for posting this info somewhere (and well, here).

I'd honestly give this a try, but I refuse to buy Xrd again :P
Re: Generating 2D GUILTY GEAR Xrd Sprites
#14  December 14, 2015, 11:14:41 PM
  • ***
  • Emotionally and Mentally Exhausted
  • Heheh, so that's the deal!
    • USA
    • nigelbkny@gmail.com
    • Skype - nega_ridley75
Seems a bit difficult since there's a camera angle and what not. But it could be possible. Some moves uses the camera and takes the screen, I'm not sure if it'll work in your favor. Neitherless, I think it can be done with enough patience and skill.
Re: Generating 2D GUILTY GEAR Xrd Sprites
#15  December 15, 2015, 12:42:08 AM
  • Rise from Ashes
Seems a bit difficult since there's a camera angle and what not. But it could be possible. Some moves uses the camera and takes the screen, I'm not sure if it'll work in your favor. Neitherless, I think it can be done with enough patience and skill.
There actually aren't any camera angle, apart from startup animations for some of the Overdrives, the intros, victory poses, and Dust -> Homing Jump.
Re: Generating 2D GUILTY GEAR Xrd Sprites
#16  December 15, 2015, 12:52:59 AM
  • ***
I will code a ramlethal if there are sprites and sounds for her! One can dream...
Re: Generating 2D GUILTY GEAR Xrd Sprites
#17  January 07, 2016, 01:11:48 AM
  • ******
  • Hedgehog Whisperer
  • Red Bull addict
    • Spain
    • xgargoyle.mgbr.net
you should be able to manipulate the camera with artmoney. I don't have the game but it's possible with ither 3D games so I don't see why this one should be different
XGargoyle: Battle posing since 1979
http://xgargoyle.mgbr.net
http://www.pandorabots.com/pandora/talk?botid=e71c0d43fe35093a  <-- Please click that link
http://paypal.me/XGargoyle  <-- Donations welcome!
Re: Generating 2D GUILTY GEAR Xrd Sprites
#18  January 07, 2016, 02:21:09 AM
  • **
    • USA
    • raptorkou@gmail.com
I might be able to achieve a camera lock with Cheat Engine. By selecting increasing and decreasing values and moving back and forth enough, isolating the camera zoom value shouldn't be too huge a task, I'd imagine.

I might give it a try. If I can get it to work, I'll report back here and share my process.