How do I name the countries on a map


^is what i want

is what i have

The names of the countries are displayed over in them in picture, the “ottomans” textlabel is even curved to go around purple. How did they make that?

Is this an image, mesh, or something else?

1 Like

its a bunch of union operations colored as their nation, each union operation is a province/state.

If you simply want to add text, you can create a surface gui on each of the unions, and then add your own text to the gui.

I get that, the problem is the surface guis would overlap eachother, thats why if you look at the top image, the surface guis curve around eachother.

I am not aware of a way to curve text in roblox studio, so if you want to avoid overlap, you can create invisible parts with surface guis and position them,

1 Like

I get that, but how would that be done? The individual parts would need to know they’re ontop of a different nation. and then everything would have to curve around it

That would require good mathmatics to pull off, not really much roblox studio could without costing uneeded resources. A billboard gui just above the nation should work fine, or non at all


(roblox)

1 Like

This script creates a label for a territory name and displays each letter in a separate label inside the main label. The rotation of each letter label is set manually to achieve a curved or slanted effect on the text. You can adjust the rotation value to change the shape of the text.

-- Create a TextLabel for the territory
local territoryLabel = Instance.new("TextLabel")
territoryLabel.Parent = <insert parent object here>
territoryLabel.TextColor3 = <insert desired text color here>
territoryLabel.TextStrokeTransparency = 0.75
territoryLabel.Font = Enum.Font.SourceSansBold
territoryLabel.TextScaled = true
territoryLabel.BackgroundTransparency = 1
territoryLabel.Size = UDim2.new(0, <insert desired label width here>, 0, <insert desired label height here>)
territoryLabel.Position = UDim2.new(<insert desired label X position here>, <insert desired label Y position here>)

-- Set the text to be curved
local text = <insert territory name here>
local textWidth = territoryLabel.TextBounds.X

for i = 1, #text do
    local letterLabel = Instance.new("TextLabel")
    letterLabel.Parent = territoryLabel
    letterLabel.TextColor3 = territoryLabel.TextColor3
    letterLabel.TextStrokeTransparency = territoryLabel.TextStrokeTransparency
    letterLabel.Font = territoryLabel.Font
    letterLabel.TextSize = territoryLabel.TextSize
    letterLabel.BackgroundTransparency = 1
    letterLabel.Text = text:sub(i, i)
    letterLabel.Position = UDim2.new((i-1)/#text, 0, 0, 0)
    letterLabel.Size = UDim2.new(0, textWidth/#text, 1, 0)
    letterLabel.Rotation = -90 + (180/#text) * (i - 1) -- adjust the angle as desired
end
1 Like

Open photoshop (or any other photo editing software that allows you to curve text), and enter your desired text in the desired font, with the required curve amount. Export it as a png, and upload it to roblox as an image. Place an image label on the billboard/surface gui, and make sure the image fits, and is the correct size.

1 Like

This would be useless when, in this game, I’m guessing the country’s borders change so unless you’re gonna create images for every concievable combination (which is practically impossible) would not work

The whole point is that the label is able to curve around borders which are very commonly not straight, he doesn’t want a system that creates one type of curve he wants some that can dynamically change.

Then I’m guessing you find the creator of the game and ask him for help, since unless there are other free sources online that can give you your answer this is a very hard ask to work out for yourself.
As mentioned by @markjac however you would have to use a seperate labels to create the curve since its impossible to replicate with one label.

What I would suggest (if you even want to begin scripting this) is find two opposite ends of a country or land (areas owned by a country that are not connected to each other) and then find the middle of the two points, then search for the part (province) in that region owned by that country that is closest to that middle position. Then use beizer curves to position the labels along that curve.

I could replicate a script if you really want

Your method is pretty interesting, how could it avoid overlapping other textlabels?

Thats the problem with scripting this, even with my given method there would still be bugs for borders that are very curvy.
I’m not too sure how but you could try and find all the parts inbetween the middle part and the two ends, then move the middle up, down accordingly