I’m in the very early phases on working on a new game project which uses 2D characters and a 3D world using a fixed isometric camera. Think Final Fantasy Tactics.
I’m new to MonoGame and am currently just moving through a series of proof of concept tests to make sure I have all the tech needed to do everything the design calls for. So far I’ve been able to figure out most of the issues I’ve come across, but I haven’t been able to find a complete answer on how I want to achieve our desired look.
In a nutshell, I’m wondering what the best way to get 2D Characters drawn in my 3D environment while still supporting a few requirements:
- We’re planning on using Spine for our animation.
- We’'re going to need to support lighting that affects both our 2D characters and 3D environment. I’m currently planning on doing something as described here: http://www.gamasutra.com/blogs/OliverFranzke/20140828/224326/Dynamic_2D_Character_Lighting.php though I don’t think it should affect this particular discussion much.
- The 2D characters need to be able to properly depth test against the 3D world.
My idea right now is just using billboarded quads to achieve my effect. Lighting would be done with custom shaders, and the depth testing would just work since they’re actually 3D objects. However I have one major concern with this approach: whether it plays nicely with Spine.
While I have not delved too deeply into Spine as of yet, it does look like it ultimately renders using SpriteBatch Draw. I’m unsure how this would couple with my idea of using 3D quads with textures on them. Off the top of my head this could probably be solved by doing all the SpriteBatch calls to a render target and using that as the texture for the quad, I’m just concerned about performance issues if I have a lot of characters on screen.
I’m curious if anyone has had success using Spine with billboards? Or even if anyone has used the SpriteBatch draw to render out to a large number of billboarded quads? I’m also open to suggestions of other ways to approach this problem if anyone has done anything similar.
Worth noting that I’m fine with higher level ideas at this point (though if you happen to have details or examples of having done this they are very greatly appreciated). Primarily I just want to avoid going down this billboarded quad road if it turns out it isn’t going to work for me and someone could have pointed it out.
I appreciate any feedback!