How to make new map graphic from scratch

classic Classic list List threaded Threaded
19 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

How to make new map graphic from scratch

BeornTheBold
I have completed my xml map, using the map graphics from an existing game.  However I would really like to design an entirely new map graphic from scratch, but I don't know how to go about it.  Is there a step by step guide to doing this?  I've looked at various files that show coordinates (centers.txt, capitols.txt, name_place.txt, place.txt, polygons.txt) however I am not sure how these are made.  I'm guessing every territory has a series of coordinates defined that tells how to draw the boundary lines?  Then coordinates are specified to define where the capitols, names, unit placements, etc. go?  Is there any easy way to define these?
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: How to make new map graphic from scratch

Frostion
This post was updated on .
One way of doing it requires photoshop or other graphic program skills. Draw your won map. I would imagine that most maps are created this way.

I don't have that good drawing skills, so I have used existing maps (big high resolution non-TripleA related picture files) as basis for creating a map. For eksampel, look at Caribbean Trade War (based on a 1700-hundreds cartographic map), look at Dragon War (based on a fantasy map that an artist did for fun and posted on the net ... I asked him permission to use it and got it) and aslo Age of Tribes (based on a satellite photo of Europe).

My procedure has been:
1. Get hands on a high resolution map. Enlarge or shrink the picture so it fits what ingame size you want to use on your map. (Look at other maps' map properties files to see how large those maps actuality are. Save a backup image.
2. Make a copy. Ajust brightness / grayness so it becomes dark or light, but not too dark or to light to see details.
3. Draw all borders of land and sea territories on this map with a graphical program. If the map is light, draw black line borders. If the map picture is dark, draw white. I have used a combination of paint, photofiltre and photoshop. Draw the borders 1-3 pixels wide and don't use antialias.
4. When done  (after many days) you will have a light/dark grid drawing of the map. Turn up contrast so it becomes totaly black and white. Maybe "invert" so sea becomes white. There is no room for tiny mistakes like holes in the 1 or more pixel wide borders. And there is no room for tiny spots / 1 or 2 pixel territories where borders meet. (common mistakes) These will be recognized as small territories by the engine, even though they are only a single or more pixels in seize. So avoid them.

Now you have two big map files; a basis for working with the relief (graphics) plus a base grid map that fits it (black-white). To test out how well it fits, make the white transparent and place it over the graphical picture.

If you understand what I wrote, I can try to explain what I did further. If you have no graphic program skills whatsoever, then this is hard.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: How to make new map graphic from scratch

BeornTheBold
Yes, I understand what you wrote.  Thanks.  Please continue.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: How to make new map graphic from scratch

Frostion
This post was updated on .
OK. Just keep in mind that there are many ways of working with map artwork, and that’s why the TripleA maps are as different looking as they are. Actually I think that is a good thing as it leads to variation in the maps. I have worked with my maps differently as I got more experienced and have played around with different options, but at the same my maps might have some common characteristics that make them look similar. I can only give you MY version of how you could work with maps. I think a lot of other people could help out with totally different hints and tricks.

PS: When you have read and understood what I write here, then you might get more enlightened by studying this link (even though it is old and may has some outdated descriptions, I think much of it is still usable): http://tripleamaps.sourceforge.net/old/doc/map_and_map_skin_making_overview.html

PPS: 1. Rule of working with big pictures and maps that you have put hours of work into: Save backups constantly! When I work I have my work organized in directories, and since I save the map picture after most edits, then I end up with like a hundreds of map (takes a good deal of MB space). I can then always “redo” stuff by going a few steps back.

So we got two categories of map work to do:
• The “Territory Border Outline Map” / simple black and white map / base tiles map / map for polygon grabber map (Polygon grabber? Will explain later.)
• The decorative relief map.

Territory Border Outline Map:
Let’s say you did what I wrote before, or you just free draw the borders and make a map without any pre-existing art (you can do this if you got the graphic editing skills), then you now have a black and white map. The first thing you can do now is to make a “polygon grabber ready” version of this map and save it for later use. If you zoom in on a section of the map, it could look like this:



Note the small thin lines going from islands into the mainland. I call them island-lines.

The above image is ready for the “polygon grabber” map making step. Find the map making tool in TripleA->Engine Preferences->Run map creator->Run the polygon grabber. This program will make your map’s polygons.txt (containing a million or so XY coordinates that defines your territory borders)

BUT first, the same image must be used with the “center picker” (also a map tool), the program that makes the centers.txt. In this program you can look at your image, click at the center of each territory and give the territories names. When you save, it will generate the centers.txt. Note that sea zone names have to include sea zone in the name, but I am not 100% on what the exact rule of naming sea zones are. Anyone reading this please enlighten us.

When done, proceed with the polygon grabbing. That program can load the already made centers.txt file and thereby it knows what the territories are to be called before it gives the territories border info. This program is always difficult to work with IF you got islands on your map (territories within territories), hence the island lines. They prevent the islands being seen as islands by the program, making it easier to work with. It is not optimal, but I have not been able to do it any other way.

After that centers and polygon grabbing, you can now make the place.txt. This is the file that contains all the map spots where a unit can be located. You start out by telling the program how large you unit pictures are in general, then you click on a territory to select it, and click again every where you want a unit to be able to stand. Remember to let every territory’s last placement spot be located to the far right of the territory. This is because the last spot also acts as the point where any excess units that that cannot find room in the territory will be placed to the right of. Meaning, standing on a black line to the right of the final placement spot. (You can manually edit the place.txt to move every single territories placement spot order around.

The “Territory Border Outline Map” image can also be used to make the BaseTiles. This is the graphics shown while playing if you uncheck “Show map detail” while playing. You can take the above used image (a copy!) and edit the thin island lines out. Then add some water color to the map, unless you want people playing without detail/relief to have white sea zones. It could look like this:


If you want the base tiles to be a little aesthetic, even though the player chose to play without map details, then you can spice up the picture by making some antialias/blurred borders out of your border picture and place it as a layer on top of your blue/black/white map:



Decorative “Relief Tiles” map:
As I said, if you got the skills you could make artwork yourself, using the basetiles / border maps as basis. I will show how you can use a picture that has been used as basis for the border drawing. Here is an example of how the original art can have looked like:


Here is the same picture after some editing. Note that the land is much lighter (and uglier), but this is because I want to have this map’s territories to be colored by the player colors when owned by players. Then the land’s base color needs to be white-like. If it was green, then a red player would have his red mixed with green and therefore have orange (I think) colored territories. Also, I was not happy with the sea coloring, so I filled the area with some wave like pattern. I ended up not using this new sea color, but that’s another story:


Here is the final map image I used. I took the above image, made it transparent / set the opacity to 70% (I think) and on top of it I placed an image made of a modified borders file with seas filled with a new pattern and 100% white-made-transparent land territories. When/if you do this step, then make several versions with different transparency/opacity %, so you got something to choose from when testing the map and what looks good: (PS: Try to rightclick-download this image. Maybe your graphical program will let you see that the land territories are transparent. On this forum you can't see it because of the only white background)


The final image looks like this in game (It is a work in progress map, so don’t mind the details):




When you have the BaseTiles picture and the ReliefTiles picture made, then go to the map tool again and use the “Run the Tile Image Breaker” and make your tiles.

That’s it
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: How to make new map graphic from scratch

Frostion
In reply to this post by BeornTheBold
Something extra:
If you want to create a map that uses Napoleonic style borders, then I made this visual mockup/collage explaining how it can be done. (I actually made it for myself so I could remember ). I used this procedure when making the Dragon War and Age of Tribes maps.

I think if one has a better understanding of Photoshop, then the transparency and colored borders might be done in a “smoother” way, maybe with a more fluid change between 100% opacity and 0% opacity. On my map it goes from land with no opacity -> a border with 60% opacity -> The black borders. But, still my way of doing it turned out OK.

Note that I have “rivers” on the map. So don’t be confused about that. (It is just blue line graphics that tells the player that it is not a normal border and can’t be crossed). Also, I used 5 px thick borders, but looking back on it

Also, I used 5 px thick borders, but looking back on it, it was probably too thick. I tried using 2-3 px on my later maps. Some might prefer 1 px thick borders.


Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: How to make new map graphic from scratch

BeornTheBold
Thanks, Frostion.  This gives me a lot to work with.  I'll be using Gimp, so I'll try to keep a record of how I do it to provide a guide later on what works with that program.  At least now I have a general idea of how to begin.  I'm sure it will take a lot of experimentation.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: How to make new map graphic from scratch

Navalland
In reply to this post by Frostion
Is there any easy way to adapt a relief tiles to another map?
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: How to make new map graphic from scratch

Frostion
I think it is hard because of all the borders that have to fit. But I think maybe you can make new relief tiles graphics out of an already existing map's simple base tiles. With simple I mean black and white tiles with thin borders and no decorations. You could "reconstruct" the base image in the TripleA map tools, and then fill the land territories and sea with graphics, and in other ways edit the simple black and white image to become reliefTile.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: How to make new map graphic from scratch

BeornTheBold
Okay, I think I have done everything correctly up to the point of making the relief tiles.  I didn't use any pre-existing picture or map but just free hand drew the continents, islands, sea zones, etc. in Gimp, then ran the center picker, the polygon grabber, the automatic placement finder, and then adjusted using the placement picker.  After running the tile image breaker I have the base tiles and I think all is good to this point.

But I'm a little vague as to how to proceed with the relief map/tiles.  My understanding is that when the map is presented to the players, the base tiles are overlayed with the relief tiles, and then nation colors, units, etc. are imposed on top of that?  What would you recommend for making the relief map considering at this point all I have is blue water and white land?  Just color/texture the water and land to some fairly light color?
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: How to make new map graphic from scratch

Frostion
I am no expert in when it comes to making art from scratch in like Gimp or Photoshop, but I have figured out how to "fill" monotone colored spaces with textures of sea, land, old map paper and so on. You can google some nice textures on the net. I would look for "seamless" textures and try out some different options. Some filling pictures out there are maybe in need adjustments in seize before/during filling.

Also, like I mentioned before, use layers. If you want som additional decoratice pictures on top of your over all background of grass, sea or whatever, then these can be made semi-transparent and placed on the map also. Maybe big and spanding several territories or small and only meant to be in one territory.

When done, try out setting the map to 70% opacity or plus minus a bit  (maybe some programs call the same 30%) (if no opacity the colors will not show - so the colors are not as you described on top but actually behind the relief I think).

When the opacity is ok. And you tested it out in TripleA, you can take the same image and place layers of the same seize ontop of the image; layers that have everything but your borders transparent, and your borders drawn in black, with some diffusion/blurring and with no opacity. If you do this the borders will be nice and black on the map and not mixed with player colors, also have a less shap and pixelated look.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: How to make new map graphic from scratch

BeornTheBold
Frostion, you have been super helpful.  Thanks much.
I have everything working but need to refine the relief map.  I didn't use any opacity on my relief map so your explanation helps me to understand why I had country colors when I turned off map details but didn't have them when I turned it back on.

A couple of questions:
1. My sea zone names do not show up either with map details on or off.  They are in the name_place.txt file.  Land territory names are showing, though in some cases (small islands) the leading characters are cut off.
2. My mini-map does not match the large map.  It is showing a WW1 map that I was using before trying to make my own.  The unit and country colors are overlaying where they should, but the underlying map isn't correct.  I don't know where the mini-map comes from.
3. On the large map, when I turn off map details, the island lines show.  However, when I made the base tiles I had already removed them, and when I look at the base tiles they aren't there.  So I don't know where it is getting them.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: How to make new map graphic from scratch

BeornTheBold
I solved the mini-map problem (#2 above).  For those with the same problem, it is simply the file names smallMap.jpeg in the main folder of your game.  I saw where there is an item in the map creator area to generate one but it didn't work, so I just loaded my map in Gimp and resized it to 300x145 pixels.  That worked.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: How to make new map graphic from scratch

Frostion
In reply to this post by BeornTheBold
If you want to see sea zone names you can edit the map.properties file. Here are some of the commands you can past in and edit. I don’t know the complete command list. I just see the commands in other map’s map.properties files and use them in the files I have made:

map.showCapitolMarkers=true
map.showTerritoryNames=true
map.showResources=true
map.showComments=true
map.showSeaZoneNames=true
map.drawNamesFromTopLeft=false

I don’t know how to avoid text being cut, but you can try moving the x y coordinate place where the engine puts the name on screen. (The name_place.txt)

The same cutting problem happens with pictures. I know that pictures (decoration, unit pictures, names etc.) sometimes have problems being shown if they are so large that they span over territory borders. If the problem happens, and the picture somehow is cut, it looks like it is cut where the relief tiles meet.

In my Star Trek map I have 50+ pictures of planet-units, big globes. I thought I could make tiny fake 3x3 pixel large territories for them to be placed (in the top left corner and sticking out to the right and down), but it resulted in many half and quarter planets that looked like a knife had cut the picture.

The solution I figured out was to make larger territories with full height and width. But I did not have to make them square. I made large thin L shape territories that was still 3 pixel wide at the top. Like this picture tells with the relief tiles turned off:


The large pictures of the planets and colored dots are placed in the territory's top left pixel (Yes!, with 1 pixel accuracy! ) but sticking out. This seems to let even large pictures be displayed without cutting. Maybe it will work for long text also?

Nice to hear that your work is coming along. I hope to see it when it is nice and playable!
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: How to make new map graphic from scratch

BeornTheBold
The land territory names were showing without any specification in the map.properties file.  However, when I added:
map.showTerritoryNames=true
They STOPPED showing up.  Removing that line made them show up again.

Adding map.showSeaZoneNames=true did NOT have any effect; the sea zone names still did not display.  When I changed it to false (thinking maybe there was some backwards hocus pocus ) they still didn't show.  Apparently the setting has no effect.  Yes, I restarted TripleA completely between every change.

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: How to make new map graphic from scratch

Frostion
I dont know what's wrong. Try to edit some other and downloaded maps on your PC, and see if chaning true/false works on them. If you can change the displaying on othermaps, study them closely. Are your sea zone names all ending with sea zone? Are the sea zone territories marked as sea zones in the territory list in the XML?
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: How to make new map graphic from scratch

BeornTheBold
I thought I had it all done, but on testing I have the following problem:

I have 18 nations playable and 16 of them function just fine whether human run or AI run.  However, 2 of them error out when run by the AI.  They don't have any problems when run by a human.  The point of error is placing units that have been purchased.

Here is the text of the error:
Exception in thread "Triplea start thread" java.lang.NullPointerException
        at games.strategy.triplea.delegate.AbstractPlaceDelegate.getAllProducers(AbstractPlaceDelegate.java:722)
        at games.strategy.triplea.delegate.AbstractPlaceDelegate.canProduce(AbstractPlaceDelegate.java:577)
        at games.strategy.triplea.delegate.AbstractPlaceDelegate.getPlaceableUnits(AbstractPlaceDelegate.java:195)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at games.strategy.engine.delegate.DelegateExecutionManager$2.invoke(DelegateExecutionManager.java:147)
        at com.sun.proxy.$Proxy10.getPlaceableUnits(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at games.strategy.engine.message.EndPoint.invokeSingle(UnifiedMessenger.java:537)
        at games.strategy.engine.message.EndPoint.invokeMultiple(UnifiedMessenger.java:512)
        at games.strategy.engine.message.EndPoint.invokeLocal(UnifiedMessenger.java:494)
        at games.strategy.engine.message.UnifiedMessenger.invokeAndWait(UnifiedMessenger.java:101)
        at games.strategy.engine.message.UnifiedInvocationHandler.invoke(UnifiedInvocationHandler.java:49)
        at com.sun.proxy.$Proxy10.getPlaceableUnits(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at games.strategy.engine.gamePlayer.GameOverInvocationHandler.invoke(DefaultPlayerBridge.java:163)
        at com.sun.proxy.$Proxy10.getPlaceableUnits(Unknown Source)
        at games.strategy.triplea.ai.weakAI.WeakAI.placeAllWeCanOn(WeakAI.java:1088)
        at games.strategy.triplea.ai.weakAI.WeakAI.place(WeakAI.java:1076)
        at games.strategy.triplea.ai.AbstractAI.start(AbstractAI.java:444)
        at games.strategy.engine.framework.ServerGame.waitForPlayerToFinishStep(ServerGame.java:564)
        at games.strategy.engine.framework.ServerGame.runStep(ServerGame.java:458)
        at games.strategy.engine.framework.ServerGame.startGame(ServerGame.java:281)
        at games.strategy.engine.framework.startup.launcher.LocalLauncher.launchInNewThread(LocalLauncher.java:74)
        at games.strategy.engine.framework.startup.launcher.AbstractLauncher$1.run(AbstractLauncher.java:47)
        at java.lang.Thread.run(Unknown Source)
        at games.strategy.engine.message.UnifiedInvocationHandler.invoke(UnifiedInvocationHandler.java:59)
        at com.sun.proxy.$Proxy10.getPlaceableUnits(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at games.strategy.engine.gamePlayer.GameOverInvocationHandler.invoke(DefaultPlayerBridge.java:163)
        at com.sun.proxy.$Proxy10.getPlaceableUnits(Unknown Source)
        at games.strategy.triplea.ai.weakAI.WeakAI.placeAllWeCanOn(WeakAI.java:1088)
        at games.strategy.triplea.ai.weakAI.WeakAI.place(WeakAI.java:1076)
        at games.strategy.triplea.ai.AbstractAI.start(AbstractAI.java:444)
        at games.strategy.engine.framework.ServerGame.waitForPlayerToFinishStep(ServerGame.java:564)
        at games.strategy.engine.framework.ServerGame.runStep(ServerGame.java:458)
        at games.strategy.engine.framework.ServerGame.startGame(ServerGame.java:281)
        at games.strategy.engine.framework.startup.launcher.LocalLauncher.launchInNewThread(LocalLauncher.java:74)
        at games.strategy.engine.framework.startup.launcher.AbstractLauncher$1.run(AbstractLauncher.java:47)
        at java.lang.Thread.run(Unknown Source)

At first I thought there weren't enough placement spots in the capitals of those 2 countries, but after creating more it didn't resolve the problem.  Plus I noticed on some working maps that sometimes the capital only had ONE placement spot but the AI still worked just fine.  I tried duplicating the units purchased when playing under human control, and had no problem placing the units.  

I don't know where to look next.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: How to make new map graphic from scratch

Frostion
Placement spots donthave anything to do with this, at least not if there is at least one spot.

I really don’t have any clues about how to decipher error codes. Maybe you should ask in a new thread.
 
But you could and should start out by testing if the same error occurs both if you are using only hard AIs and if you use only easy AIs. I know that these two AIs are so different that many of my maps can’t handle the Easy AI.
My guess is that the AI, while wanting to place the units it has in the bank, tries to figure out where to best put them, taking some situations into account, then it looks for some specific factor that your XML just don’t have and the game breaks down.

PS: Do all your players have capitals? I had errors on my maps because of this, but the newest version 1.9.0.0 TripleA should not make this error. Is your TripleA of an older version? Version 1.9.0.0.3183 and later fixed some similar problem.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: How to make new map graphic from scratch

BeornTheBold
An update to my map making project.

Frostion, I still don't know what caused the problem of AI not working on some positions, but I went back and did all of the steps over again for my map and the problem went away, so somewhere in there a problem crept in from some kind of confusion over land vs water territories, or pixels not being exactly correct, or something like that.

I really have only two issues left:
1. Land territory names show up but not sea zones.  I'm thinking I'll have to go back and add them as part of the map, but it sure would be easier if they would simply behave like the land territory names.  I tried using various forms of map.showSeaZoneNames=true in the map.properties file but to no avail.
2. The island lines are showing up even though the maps I used to make the base tiles and relief tiles do not have them, nor do the map pieces in the base tile and relief tile folders.  I can only suppose they are appearing because when the polygon grabber was run they were there (as required, evidently) and so somehow that is affecting the end result.

I still can't seem to make a decent looking land territory using relief tiles.  Mine are just plain beige color no matter what I do.  But they work.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: How to make new map graphic from scratch

Frostion
This post was updated on .
Well, to number 2: I have this issue on all my maps. I also posted about it when I noticed it. And it is probably because of the polygongrabber and the txt file made with it. I actually think many maps has this issue. I think it is something I have learned to live with even though it looks bad.

Maybe you should make some new threads concerning the other issues. If you describe the issues in details, then maybe someone has some good ideas about what's going on.
Loading...