Tutorial to create mod maps for Ski Region Simulator 2012
Last changes to this article:
February 12, 2013
- Release (October 25, 2011)
- Description of most important aspects (October 30, 2011)
- Description on how to add new ski station names (February 12, 2013)
This guide describes how you can create mod maps for Ski Region Simulator 2012.
Please post questions and feedback in this thread in the official GIANTS support forum.
- SkiResort XML/I3D
- SkiSlopes XML
- Hotels XML
- Gui Positions
- Info Layer
- New Ski Station Name
The slopes are defined by the Info Layer called 'slopeInfoLayer'. To edit this, please see the section Info Layer.
The values of this Info Layer define where which slope is. The channels define the binary value of the slope number.
Following is a list of the channels and its corresponding slope number. 1 means a checkmark, 0 means none:
10000 = 1
01000 = 2
11000 = 3
00100 = 4
10100 = 5
01100 = 6
11100 = 7
00010 = 8
10010 = 9
01010 = 10
11010 = 11
00110 = 12
10110 = 13
01110 = 14
11110 = 15
01111 = 30
11111 = 31
The Nav Mesh called 'skierNavMesh' defined where the skiers drive. It's easiest to use the 'Build Navigation Mesh Tool' in the GIANTS Editor. To do this, first select the existing 'skierNavMesh' object in the Scenegraph panel, if available, and then click in the menu 'Create->Navigation Mesh'. In the dialog you should set the following Values. The values which are written bold, are values which are different to the default values of the dialog. If the default settings have been changed before, these values must be reset manually.
Cell size = 0.3
Cell height = 0.2
Height = 2
Radius = 0.3
Max Climb = 0.9
Slope Limit = 80
Shape Build Mask = 0
Terrain Detail = 50
Enable Culling = On
Culling Info Layer = slopeInfoLayer
Culling Info Layer Channels = 1f
Min Region Size = 25
Merged Region Size = 20
Max Edge Length = 12
Max Edge Error = 1.5
Once you set all the settings, press 'Recreate' if the object 'skierNavMesh' was selected before, otherwise press 'Create' and then rename the newly created Nav Mesh to 'skierNavMesh'.
The creation might take several seconds to minutes, depending on your computer and the scene complexity.
Hint: If the Nav Meshes are not shown in the viewport, you can let them show by selecting in the menu 'View->Show->Navigation Meshes'.
The pedestrian areas are defined with Nav Meshes. You can use as many Nav Mesh as you want, however for performance reasons, as less as possible should be used. In fact, usually only one is needed.
The easiest way to create this Nav Mesh, is by using the Info Layer 'pedestrianInfoLayer'. Once you painted all your pedestrian areas, you should select the existing 'pedestrianNavMesh' object in the Scengegraph panel, if available, and then open the build dialog in the menu 'Create->Navigation Mesh'. In this dialog you should set the following Values. The values which are written bold, are values which are different to the default values of the dialog. If the default settings have been changed before, these values must be reset manually.
Cell size = 0.3
Cell height = 0.2
Height = 2
Radius = 0.3
Max Climb = 0.9
Slope Limit = 45
Shape Build Mask = ff
Terrain Detail = 100
Enable Culling = On
Culling Info Layer = pedestrianInfoLayer
Culling Info Layer Channels = 1
Min Region Size = 15
Merged Region Size = 20
Max Edge Length = 10
Max Edge Error = 1.3
Once you set all the settings, press 'Recreate' if the object 'pedestriansNavMesh' was selected before, otherwise press 'Create' and then rename the newly created Nav Mesh to 'pedestriansNavMesh'. Further the User Attribute 'onCreate' with the type 'script callback' and the value 'NavMeshPedestrians.onCreate' must be added.
The creation might take several seconds to minutes, depending on your computer and the scene complexity
The SkiResort XML (in the SampleModMap skiResort_map01.xm) defines the ski stations and the buildings that belong to it. Each 'skiStation' node defines a ski station. Following is a list with its attributes:
|id||Unique integer id of the station|
|name||Unique name of the station. To use new names, look at New Ski Station Name|
|stationType||Type of the station ('valley' = Only a ski lift leaving, 'mountain' = Only a ski lift arriving, 'middle' = Both an arriving and a leaving ski lift)|
|dailyCapacity||The amount of guests this ski station can handle per day|
|price||The price to buy this station|
|dailyUpkeep||Daily cost to run this station|
|stationBelow (optional)||Name of the station that is a ski lift is coming from|
|stationAbove (optional)||Name of the station that is a ski lift is going to|
|guiPosition||Position of the station icon in the overview map. Also see Gui Positions|
|guiSlotsPosition||Position of the slot icons belonging to this station in the overview map. Also see Gui Positions|
The filename of the image used as the icon for the station. If you use your own name for the station, this is required.|
Sample image: stationIcon_sampleStation.png
The filename of the image for the station. If you use your own name for the station, this is required.|
Sample image: image_sampleStation.png
The id attribute of the ski stations in the XML are one-based child indices of the nodes in the I3D, which are under the node 'skiStations'. 1 means the 1st child.
Each ski station may habe multiple extra facilities. There is a distinguishion between extensions and common facilities.
Extensions define for each station an exact list of the facilities the player can chos from, while die common facilities have the same list for each station.
In the XML the extensions are defined using the nodes 'extension' as childs of the according ski stations. A list of the attributes of an extension follows:
|type||Type of the extension. Each station can only have one extension of each type. (small, large, facade, platform, parkingLot)|
|price||Price of the extension. This is only the price of the base building, but not of the furnishings.|
|node||Zero-based child index of the extension node in the i3d. 2 means the 3rd child of the ski station I3d node.|
Each extension contain a list of facilities, where one of them can be active. The following list shows the facilities and its according extension types:
The common facilities all have the same possiblie facilities, accordingly you don't need to precise the list of facilities in the XML. Further all nodes in the I3D must have the same objects.
With the node 'commonFacilities' you can specify the properties of the common facilities available at a station. The following list shows its attributes:
|number||The number of common facility slots at this station.|
|price||Price of each common facility slot. This is only the price of the base building, but not of the furnishings.|
Zero-based child index of the common facilities node in the I3d which contains |
The SkiSlopes XML (in the SampleModMap skiSlopes_map01.xm) defines the slopes. The XML contains a list of 'skiSlope' nodes, which each defines a slope. The following list shows its attributes:
|id||The id of the slope. The area of the slope is defined by the pixels in the 'slopeInfoLayer' with the same number.|
|startStationName||Name of the ski station where the slope starts.|
|endStationName||Name of the ski station where the slope ends.|
|difficulty||Difficulty of the slope (1, 2, 3). Each guest prefers only one difficulty, thus the ski region should have approx. the same number of slopes for each of the difficulties.|
|guiPosition||Position of the slope icon in the overview map. Also see Gui Positions|
Note: The 'chalet' nodes in the SampleModMap SkiSlopes XML are not used, and can be ignored or deleted.
The Hotels XML (in the SampleModMap hotels_map01.xml) defines the available hotels. It contains a list of 'hotel' nodes with the following attributes:
|id||The id of the hotel. This is the one-based child index of the hotel node in the hotels node. 1 is the 1st child.|
|price||Price of the hotel.|
|guiPosition||Position of the hotel icon in the overview map. Also see Gui Positions|
Gui positions in the XML define the positions of the gui elements. These are X and Y coordinates between 0 and 1, where 0 0 is the left bottom and 1 1 is right top corner. The values define the left bottom corner of the gui elements.
This position for example can be determined with the console command gsDrawGuiHelper. To do this, enter 'gsDrawGuiHelper 0.1' in teh console (0.1 can also be replace with a different value as you like), and then move the mouse cursor to the requested position. The two values around the mouse cursor are the X and Y values which you can enter in the XML.
To remove the displayed grid again, you can enter 'gsDrawGuiHelper' in the console.
Hint: Console supports auto completion. E.g. enter gsDraw in the console and press 'tab'. It will automatically extend to gsDrawGuiHelper. To toggle between different suggestions, press 'tab' multiple times.
The Info Layers allow you to draw various information directly in the GIANTS Editor. Currently this is used for the slopes, the pedestrian areas and to define the snowed areas.
To draw this Info Layers, you click on the Info Layer icon in the toolbar. Open the Terrain Editing panel in the menu 'Window->Terrain Editing'. In this panel, select the according Info Layer in the drop down list, then select the channels you like and paint directly in the viewport.
The functions 'Add' and 'Sub' are supported, which by default are mapped to the left and right mouse button. The radius of the brush can be changed in the gui or with the keys 'v' and 'b'. The drawn is shown as white areas on the terrain. Only the areas which match the selected channel combination exactly are shown.
E.g. if only channel 1 is selected, areas were both channel 1 and 2 is painted are not shown.
The option 'Erase Unmasked' just below the Info Layer Channels, defined whether the the channels that are not selected are deleted from the areas you paint, or only the selected channels are added to the existing.
Normally you should have the checkmark checked und should only be changed for rare situations.
New Ski Station Name
To specify your own ski station names, you need to select a unique identifier for the station. In the following example we want to add the station Zurich. For this we select "zurich" as the unique identifier.
We need to specify this in the "name" attribute of the node "skiStation" in the SkiResort XML.
<skiStation id="1" name="zurich" ....> .... </skiStation>The next step is to specify the texts (name and description) of the station that are displayed in the GUI. These texts need to be added in the "l10n" section of the modDesc.xml. The name is specified in the l10n text with the name station_<uniqueName> and the description in stationDescription_<uniqueName>. I.e. for this example it is "station_zurich" and "stationDescription_zurich".
<l10n> ..... <text name="station_zurich"> <en>Zurich</en> <de>Zürich</de> </text> <text name="stationDescription_zurich"> <en>This is lovely Zurich</en> <de>Dies ist Zürich</de> </text> </l10n>When changing the identifier of a station, don't forget to also adjust the "stationAbove" and "stationBelow" attributes of the ski stations which refer to the changed station. Also the "startStationName" and "endStationName" attributes of the slopes in the SkiSlopes XML possibly need to be changed.
Finally, you need to specify the icon and the image of the station. This need to be done with the attribute "guiIcon" and "stationImage". See SkiResort XML.
- SampleModMap.zip: Contains the Sample Mod Map