Hi, I’m new to 3D (but have done my fair share of 2d stuff) and this is my first post to this board
I am in the planning and evaluation phase on how to create my board environment and would like to get some feedback about my choices. I picked this subform as my thoughts mainly care about graphics.
What do I want to achieve?
- Something like this in real time 3d for a turn based game:
- Such a game board would be randomly generated and have dimensions of up to 50x50 tiles with ~15 different terrains (this should simply be not a technical limit)
- Elevation shall be represented in elevated hex prisms. (I’ve seen Maker’s Tale and am deeply impressed with it!) and will be watched from a standard “top down at an angle” perspective (probably rotatable and titable for the heck of it)
- I need good/pleasing highlighting of selected tiles, a group of tiles and whole regions.
- solid fps on my Intel HD Graphics 4000
What did I learn already?
- I learned about custom meshes and created my own Hexagon and Hexagon-Prism meshes
- Of course I went the dumbest route first and learned that creating 50x50 distinct geometries having 15 different textures puts my reference spec clearly under 60fps because of the object bottleneck I now know of
- I then learned about GeometryBatchFactory.optimize, which greatly improves performance but undid my simple picking detection (I just took the first geometry from the collision results). Frame rate is mostly stable at 60 with pssm shadows, 2 directional lights and everything at CastAndReceive.
What am I about to do?
- I should create the whole board as a single mesh and assign texture coordinates in a way that will use a plain color for the vertical faces and a corresponding part of the texture map for the hexagonal faces (as my hex map is still a 2d grid this allows for easy coordinate translations)
- On world creation I should pregenerate the texture from 1), probably blending additional terrain features like roads on top of the basic terrain tile from a set of basic, singular tile images.
- For picking I should read the coordinates from my collision result and transform the xy coordinates to my hex grid (I have done similar things in 2d already) to get the clicked hex by simply dropping the 3rd coordinate?
- Highlighting:
4a) For active tile highlighting I guess it would be ok to use a simple hex in the mesh line mode. How to make them fancy (aka glow) can be figured out at a later time
4b) For borders I would need to highlight only certain edges of a group of hexes -> I would create a custom mesh and make it look like 4a)?
4c) For allowable tiles I would like to alpha-blend a color on top, should I spawn hexes slightly on top that are semi transparent?
4d) I may want to show the whole board with simple color fills (again only for the hexagonal faces) to indicate world stats (think the info overlays from sim city), for this I would create further textures like in 2), probably regenerated for every turn if it takes too much time to do it on the fly.
X) I may want fog of war, but have yet not done research on that topic
Thank you for taking the time to read all this and for your possible input on my thoughts and issues