this post was submitted on 20 Apr 2025
23 points (96.0% liked)

Godot

6570 readers
49 users here now

Welcome to the programming.dev Godot community!

This is a place where you can discuss about anything relating to the Godot game engine. Feel free to ask questions, post tutorials, show off your godot game, etc.

Make sure to follow the Godot CoC while chatting

We have a matrix room that can be used for chatting with other members of the community here

Links

Other Communities

Rules

We have a four strike system in this community where you get warned the first time you break a rule, then given a week ban, then given a year ban, then a permanent ban. Certain actions may bypass this and go straight to permanent ban if severe enough and done with malicious intent

Wormhole

!roguelikedev@programming.dev

Credits

founded 2 years ago
MODERATORS
 

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:

  1. Import the entire map. Then in Godot, create the areas to approximate the regions.
  2. 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?

top 4 comments
sorted by: hot top controversial new old
[–] untorquer@lemmy.world 5 points 4 days ago

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?

[–] Bezier@suppo.fi 5 points 4 days ago

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.

[–] rebelsimile@sh.itjust.works 2 points 4 days ago

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.

[–] bruce965@lemmy.ml 2 points 4 days ago* (last edited 4 days ago)

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.