As a French person I feel like it's my duty to explain strikes to you. - AdrienIer

Create an account  

 
Civ6 with Custom World Builder Map

For Cornflakes or Trasson or anyone else who was better able to follow these details than me: I have a Worldbuilder map ready for the PBEM4 game, but I need help turning that into something the players can actually use for their game. Details in the PBEM4 Spoiler thread. Thanks!
Follow Sullla: Website | YouTube | Livestream | Twitter | Discord
Reply

Steam has a Play Your Custom Map mod. I have not had time to try it but you just copy your map over the one in the mod folder.
Reply

An update based on the PBEM which is currently being set up for 8 players ... the workaround swapping the 6-arm Snowflake map with the custom map only works for a maximum of 8 players. The core game setup is hard-coded for maximum of 6 players when setting up a game. Upon further investigation I found that the Earth "script" uses the same principle as the 6-arm Snowflake "script", namely a pre-made map that is used every time rather than actually generating a map using a script, but the Earth map has a maximum of 8 players.

Therefore going forward it makes sense to use Earth as the new workaround. Player slots can always be closed, and the Earth "script" will will work when the underlying pre-made map is swapped out with Small/Tiny/Duel sized maps and player count less than or equal to 8.

Follow the steps in the above posts, except replace the pre-made Earth map located C:\Program Files (x86)\Steam\SteamApps\common\Sid Meier's Civilization VI\Base\Assets\Maps\EarthMaps. The file is called EarthStandard.Civ6Map

Based on this new workaround, the maximum number of players for a custom map is now 8.
Reply

Due to the number of times I'm making maps, I've decided to create a more streamlined tool to make the necessary SQLite table edits rather than the clunky AutoHotkey script which I've been using. I wrote a simple program in Python and compiled it using pyinstaller.

The tool can be downloaded from the link at the bottom. 

What it does:

1. Accepts a Civ 6 map file as a drag-and-drop onto the .exe (doesn't check file type, for that matter there is no error checking/catching whatsoever built in)
2. Copies the drag-and-dropped map to the appropriate folder and re-names as EarthStandard.Civ6Map (NOTE: only works for Steam Civ6 installed in default location) EDIT: GATHERING STORM changed the earth map location so you will need to copy the output file to the appropriate location, CLICK HERE for details.
3. Check for the number of starting positions in the map, distinguishing between city state start locations and player start locations
4. Populates the Players and PlayerAttributes with the number of start locations found in the map file
5. Generates pop-up confirming successfully initiating map file, and provides an opportunity to override the number of players and city states. Pop-up has 2 options:
>>A) Clicking "OK" closes the program
>>B) Clicking "Revise" prompts for the correct number of players and city states, then ends with a final confirmation warning that the the number of start locations found in the file does not match the number of start locations that were input.

*Then, from within Civ6, start a game using the Earth map.


Program code:
Code:
import sys
import sqlite3
import shutil
import easygui

droppedFile = sys.argv[1]
src = droppedFile
dst = "/Program Files (x86)/Steam/steamapps/common/Sid Meier's Civilization VI/Base/Assets/Maps/EarthMaps/EarthStandard.Civ6Map"
shutil.copy(src,dst)
con = sqlite3.connect(dst)
totalPlayersStarts = 0
numCSstarts = 0
for row in con.execute("select * from StartPositions"):
   totalPlayersStarts+=1
   if row[1] == 'RANDOM_MINOR': numCSstarts +=1

numPlayersStarts = totalPlayersStarts - numCSstarts
numPlayers = numPlayersStarts
numCS = numCSstarts
totalPlayers = totalPlayersStarts
insertPlayersRow = 'INSERT INTO players(ID,CivilizationType,LeaderType,CivilizationLevelType,AgendaType,Status,Handicap,StartingPosition,Color,Initialized) VALUES(?,?,?,?,?,?,?,?,?,?)'
insertPlayerAttributesRow = 'INSERT INTO playerAttributes(ID,Type,Name,Value) VALUES(?,?,?,?)'
success = 0
attempts = 0
while success == 0:
   con.execute("delete from players")
   con.execute("delete from playerAttributes")
   for i in range(totalPlayers):
       if i < numPlayers:
           player = [i, 'UNDEFINED', 'UNDEFINED', 'CIVILIZATION_LEVEL_FULL_CIV', '', 'Human', 'DIFFICULTY_PRINCE', 'INVALID', 'PLAYERCOLOR_LIGHT_ORANGE', 0]
           con.execute(insertPlayersRow, player)
       else:
           cityState = [i, 'RANDOM', 'RANDOM', 'CIVILIZATION_LEVEL_CITY_STATE', '', 'AI', 'DIFFICULTY_PRINCE', 'INVALID', 'CIVILIZATION_KUMASI', 1]
           CSAttribute = [i, 'Era', 'ERA_ANCIENT', '0']
           con.execute(insertPlayersRow, cityState)
           con.execute(insertPlayerAttributesRow, CSAttribute)
   barbarian = [63, 'CIVILIZATION_BARBARIAN', 'UNDEFINED', 'CIVILIZATION_LEVEL_TRIBE', '', 'AI', 'DIFFICULTY_PRINCE', 'INVALID', 'CIVILIZATION_BARBARIAN', 1]
   barbarianAttribute = [63, 'Era', 'ERA_ANCIENT', '0']
   con.execute(insertPlayersRow, barbarian)
   con.execute(insertPlayerAttributesRow, barbarianAttribute)
   con.commit()
   
#Pop-up confirming map was initialized correctly
   message = 'Map initialized with '+str(numPlayers)+' Players and '+str(numCS)+' City States'
   title = 'Confirm success'
   if attempts == 0:
       if easygui.boolbox(message,title,['OK! Success!', 'Revise Num Players/CS']):
           success = 1
       else:
           attempts +=1
           numPlayers = easygui.integerbox('Enter number of players:')
           numCS = easygui.integerbox('Enter number of city states:')
           totalPlayers = numPlayers + numCS
   else:
       message = 'WARNING: MIS-MATCH BETWEEN NUMBER OF PLAYERS AND NUMBER OF STARTING LOCATIONS\nTHERE WERE '+str(numPlayersStarts)+' Player and '+str(numCSstarts)+' City State STARTING LOCATIONS FOUND\n' +message
       easygui.msgbox(message)
       success = 1

Screenshots of the tool in action:
   

   

   

   

   

Link to the download the tool MapInitializer.exe (about 10 MB file): https://www.dropbox.com/s/bza67ursjit2gk...r.exe?dl=1
Reply

Has anybody downloaded and/or used the map initializer tool posted above? I tested it on my other machine but wanted to confirm if someone else had success or issues.
Reply

Cornflakes,
I downloaded and tried out your program. Work just fine for me once I read that it changed it to an Earth map.
Reply

@Woden,

how difficult is it for a layman like me to edit a map? I would like to edit maps sometimes for testing purposes.
Reply

(December 12th, 2017, 19:48)Singaboy Wrote: @Woden,

how difficult is it for a layman like me to edit a map? I would like to edit maps sometimes for testing purposes.

It is real easy but you have to make changes 1 tile at a time. I would suggest turn off resources when you are looking for starting locations, makes it much easier to find them.

Edit: Should clarify and state that I think Cornflakes and everybody else in this thread has made it pretty easy to do! Big thanks to you all!
Reply

Bump
Reply

How to create a custom map with custom starts using World Builder.

Firaxis has a basic WorldBuilder stream that has some useful information on the basic mode and it is good to watch if you are new to WorldBuilder
Link: https://www.youtube.com/watch?v=n4g3n0O3aRQ

Problem with the basic mode is that it doesn't let you set starting locations for players or city states. This guide tries to show you how to use the Advanced Mode in WorldBuidler. 

Step 1: Enable WorldBuilder
A. Go to the "AppOptions" file
B. Find "EnableWorldBuilder"
C. Change "0" to "1"
Step 2: Open WorldBuilder
A. WorldBuilder is located under the "Additional Content" menu of the game
   

B. If you are starting for scratch, you can pick a base map type...
   

Step 3: Enter Advanced Mode
A. Click ""Switch to Advanced Mode" button in the upper right corner
   

B. Confirm you want to enter Advanced Mode
   

Advanced Mode lets you change a few more things on the tiles individually.

Step 4: Initialize Players
A. Open the "Palace Icon" menu in the upper left corner and bring up this screen...
   

B. Remove all the AI civilizations (not the Barbarians)
C. Add the number of human players for the game
   

D. Change the civilization for each human player to random...
   

I don't think this is necessary when using Cornflakes MapInitializer tool but it is good to do if you want to set specific starts to specific players. You can skip this step if you are using random starting locations.

Step 5: The Place Menu
There are 2 menus in the lower right corner of the window, "Place" and "Plot". The "Place" menu is where you can place basic map elements, such as terrain, features, and rivers... 
   

To place a river, select the river option...



And click the tile, like show in the center of the map where 2 river reaches were added...



Don't create circle rivers, the game doesn't like them.

Step 6: The Plot Menu
The "Plot" menu is where the Advanced Mode differs from the Basic mode. It lets you set all sorts of things for the tile, such as resources, starting locations, and features...

Step 7: Setting a starting location
A. Pick the tile where you want a player or city state to be located. Click the Start position dropdown menu...
   

You have multiple option. If you want a random player or citystate start, select the corresponding option. If you want to assign a certain player to a spot, select the "Player" option. An additional menu will appear below the Start position menu...
   

This menu is where you can assign the player you want to start at this location.

Step 8: Tribal Villages
If you are like me and forgot to turn off tribal villages when initially creating the map, you can remove them. click on the tribal village and go to the Improvement menu and slect the "No Improvement" option on each tile...



You will have to do this for each village becuae if they are in your WorldBuidler map, they will be in the save, even if you select the "No Tribal Villages" option when creating the game.

Step 9: Resources and Features
Using the  "Plot" menu, you can add resources or features as you see fit. Look around the various menus, it is fairly easy to see whant changes what. One thing of note, resources do have tile requirements, so not all resources are available on all tiles. They will be greyed out if you chose an invalid tile. 



Step 10: Save the map

Step 11: Create the save. If you use just the Basic mode and follow the above video, you can create a game directly. But if you set starts in the Advanced mode, it will not work (as of writing this). The game will erase all you specified starting locations when you try and create a game the way Firaxis wants. To start a custom game with custom starts, you will have to use Cornflakes MapInitializer:
https://www.realmsbeyond.net/forums/show...#pid654202

This tool replaces the Earth map with your custom map and you need to create the game as an Earth map. 

If you created a Gathering Storm map, you will need to copy the regular Earth map (i.e. the custom map you created) and move it to the Expansion maps in folder: 
C:\Program Files (x86)\Steam\steamapps\common\Sid Meier's Civilization VI\DLC\Expansion2\Maps\EarthMaps

And change the name to "EarthStandard_XP2". Then you can create your custom Gathering Storm game using the Earth map.

Please let me know if anything is unclear or wrong, or if you need additional information.
Reply



Forum Jump: