I'm working on a top-down 2D space RTS that features large tile-based ships.
Each ship has a complete functioning interior, with dozens of crewmen who man the various stations. The player can zoom in to manage the crewmen and zoom out to manage the fleet as a whole.
I'm having trouble coming up with a method of rendering these ships. There's a few stumbling blocks in my way:
1. Ships must be able to rotate.
This makes me think that trying to calculate tile positions and rotations wouldn't work and would result in a lot of visual artifacts.
2. Ships need detail when zooming in.
I would like ships to be fairly detailed when you zoom in to look at the interior. In my prototyping I had it rendering 16x16 tiles, but I'd like to render even higher (32x32, 64x64).
3. Ships need to be destructible.
Tiles will be removed when taking damage.
4. Some ship tiles should be animated.
I need a rendering method that can take into account the above 4 requirements. So far I have considered the following:
1. Rendering tiles individually every draw call and recalculating their positions/rotations based on the ships position/rotation.
2. Rendering the tiles flat to a RenderTarget2D and drawing that using the parents position/rotation.
I'm looking for any other advice or ideas about how to render multiple, large, tile-based ships without killing the performance or any of the requirements.
Example pics - zoomed out.
Ship Exterior:
Ship Interior: