I’m new to Godot and game dev and I’ve decided to make my first project (having already finished some tutorials) to implement the Diplomacy board game in Godot.
Creating the logic of the game will be the easier part for me as I’ve been a professional systems programmer (C++/Python) for several years now.
What I’m struggling with right now is how to create the map and the tiles that represent that game board (online example: https://imgur.com/bfnEMup). Since I will want the game to react to a click anywhere in a particular region, I assume I need to have some Area2D that matches the region’s shape. The problem is that it’s irregularly shaped and I don’t know what the best way to accomplish my goal would be.
The options I’ve thought of so far:
- Import the entire map. Then in Godot, create the areas to approximate the regions.
- Import the map into some graphics program. Split the map into a sprite for each region. Somehow save the offsets. And import the regions into Godot, each as its own asset. I assume generating a shape from an imported asset is pretty easy.
Any advice or recommendations?
Maybe bucket fill each region with a unique color value then place it as a second [interaction] image under the display image[no interaction]? Then the cast result from the interaction image can direct a switch from a lookup based on the color?
Are you actually asking for how to do this tiles?
If you just want a map with clickable countries, use the full map and add collision with areas and make simple polygon shapes by hand. After that, maybe cut separate country graphics for hover effect.
I haven’t done this myself yet but I think the AStar class lets you define a custom grid (for pathing) that exists between specific nodes you specify. If you’re making a regular grid then AStarGrid is a bit better because it assumes a normal grid relationship between elements. But if Britain is adjacent to Portugal and Spain in your map but not Germany (for whatever reason) then you need to build and map those relationships individually, I think AStar is the way.
I am a novice, so if someone else is going to give different advice, consider disregarding mine.
If you want precise collisions you could manually add 2D Areas and align them with your map. Otherwise if you are happy enough with an approximation you could add a tilemap (collision only, no sprites) and use a different tile for each region.
I would go for the first option, considering that you don’t have too many regions. You don’t need any external program, as far as I remember, you can create polygonal shapes directly in Godot.