====== Creation of a new continent ======
This tutorial is one in making, always written/tested/finalized/formatted...
The whole tutorial(as of now) is based in an translation of: http://dev.ryzom.com/projects/ryzom/wiki/CreatingNewLand
\\ Some links that may be useful:
* http://dev.ryzom.com/boards/17/topics/5620
* http://web.archive.org/web/20130404162951/http://www.opennel.org/confluence/display/~mattr/Home (Building teleports).
* http://dev.ryzom.com/boards/17/topics/5661?r=5662#message-5662 (Access zones indoors).
Prerequisites is Windows(indicated only with "Windows references", because the complete process is only possible under this OS at this time).
We assume that you already:
* have downloaded and installed the [[http://dl.kaetemi.be/ryzom/assets/ryzom_assets_rev4.7z] Ryzom graphics]] in drive ''W:\database''(assest's directorys).
* have downloaded and installed the [[https://ryzomcore.atlassian.net/wiki/display/RC/Getting+Source | Ryzom Core source code]], in drive ''R:''.
* have mounted the directory: ''R:\code\ryzom\common\data_leveldesign'' to drive ''L:''.
* have downloaded the graphic assets of Newbieland and added them to those of the Ryzom assets(database).
* have copied the contents of the leveldesign tools package to: ''R:\code\ryzom\tools\leveldesign\install''
* have copied(from khanat-ressources) all the directories to: ''R:\code\ryzom\common\data_leveldesign''
* have applied the Python scripts from ''R:\code\nel\tools\build_gamedata'' **ON** Ryzom's graphical assets(database).
===== Creating a landscape using the World Editor =====
==== Setting things up ====
- Now.. let's name our new territory, let's call it(as guide example): "dispensaire01".
- Create a subdirectory in: ''R:\code\ryzom\tools\leveldesign\install\continents'' with this given name.
- Copy all the contents of the directory: ''L:\continents\newbieland'' into this new directory, __EXCEPT__ the directory "pacs" and the file "newbieland.land"!!
- Open: ''L:\leveldesign\world_editor_files\world_editor_classes.xml'' with your choosen text editor and find the section that starts with:
Now find this line and add **after it**:
**THE FOLLOWING LINES:**
Save the file and close it.
The links in this file are absolute, and also coded according to a Windows hierarchy(for ex: letter ''L:'' as in a Windows partition).
\\ This should be followed because of compatibility with the relative data hierarchy, which "should" work in any system.
Now launch the World Editor in: ''R:\code\ryzom\tools\leveldesign\install''.
When the program is loaded, do the following:
- Left click Project > New landscape
- Left click File > Save
- Enter your continent file name("dispensaire01") and press .(This save's the file in folder: ''R:\code\ryzom\tools\leveldesign\install\world_editor_continents'') in the form of ".worldedit".
- In next window, save the land file name as ("dispensaire01") and press .(This save's the file in folder: ''R:\code\ryzom\tools\leveldesign\install\continents\'') in the form of ".land".
- Left click on Project > Settings, and:
- indicate the directory specified earlier, namely: ''R:\code\ryzom\tools\leveldesign\install\continents\dispensaire01''
- Indicate the "context" TO "default".
- Click to confirm, wait until World Editor loads all the found data.
- IMPORTANT: Back up the project!! <-- TO DO: What files exactly??
==== Painting ====
- Left click View > Zone
- Select "passable" and "no" as the first category filter, which will display all the __LIGO bricks__ available under this(the selected) type(OBS: In the Newbieland set, no bricks are "passable").{{ https://khaganat.net/wikhan/_media/fr:01.jpg |(image01.jpg)}}
- Left click Edit> Goto Position. Select "O, O" and click , this will bring you to the center of your screen. At the value "0.0 1_AA", position a brick(named "crevasse_1") to mark the spot.
- Position this brick at the top left corner by pressing the "middle mouse button", by doing this only valid areas are shown.
- Paint your territory with your chosen "LIGO bricks".
- Save the project.
It is "NOT" a must to place the card at the top left(which will therefore be counted as to the northwest). Valid areas for land placement range from "1_AA __TO__ 255_JV". **BUT**.. positioning them correctly from the start will make it possible to have the right distances between them later on, or even to be able to connect them in the future.
\\ This also means that all the cards must fit in a square of "256x160m" aside, or about 41km.
==== Finalize ====
- Copy the .land file from: ''R:\code\ryzom\tools\leveldesign\install\continents\dispensaire01'' .. __TO__ .. ''W:\ Database\Landscape\ligo\jungle\''
- Left click File > Export snapshot, then .
- Save the .tga file as "dispensaire01".
This will be the ingame map, we will work with this a bit later!
===== Create datasets with Georges Editor =====
==== Setting up ====
- Go to: ''L:\leveldesign\World''
- Create a new subdirectory with the same name as your new territory(this should be "dispensaire01" following the guide).
- Copy the .continent file from: ''L:\leveldesign\World\newbieland'' to this new subdirectory.
- Rename "newbieland.continent" to ".continent" where "" is the name of your continent("dispensaire01" in this guide example).
- Open continent.cfg with a chosen text editor.
- Change(in this file) the "LandFile setting", making it point **TO** "dispensaire01.land"(the one you copied previously: ''W:\Database\Landscape\ligo\jungle\'')
Again, all this done in mind of the Windows partition hierarchy!
==== Editing World DataSheets ====
- Open: ''L:\leveldesign\World\Ryzom.world'' with Georges editor.
- Right click on the last entry in the "continents list" and choose "insert".{{ https://khaganat.net/wikhan/_media/fr:02.jpg |(image02.jpg)}}
- Name this new entry with the name of your territory( "dispensaire01").{{ https://khaganat.net/wikhan/_media/fr:03.jpg |(image03.jpg)}}
- Go back to the World Editor window.
- Move your mouse pointer first to the upper left and then to the lower right corner of your land(red dots on the picture).
- Write down the data highlighted on the picture with blue outline. One of them is a zone identifier( 1_AA), the other is the x,y coordinate pair ( 0,0 ).{{ https://khaganat.net/wikhan/_media/fr:04.jpg |(image04.jpg)}}
- Return to Georges editor with your land's "sheet" open.
- Fill in the "selection name" and "continent name" fields with the name of your land ("dispensiare01" in our case).{{ https://khaganat.net/wikhan/_media/fr:05.jpg |(image05.jpg)}}
- Fill minx, maxx, miny and maxy using the data noted above.
- Once again, right click on the last entry in the "maps list" and choose "insert".
- Rename the new sheet to your land's name **BUT** with the prefix "cont_"( "cont_dispensaire01").{{ https://khaganat.net/wikhan/_media/fr:06.jpg |(image06.jpg)}}
- Fill in the same minx, maxx, miny and maxy using the same data noted above.
- Enter the DataSheet name in the field "name(cont_dispensaire01)", and the name of your territory in "contname("dispensaire01")".
- Fill in the "bitmap" field in the format "_Map.tga" where is the name of your territory ("dispensaire01")... (see below).{{ https://khaganat.net/wikhan/_media/fr:07.jpg |(image07.jpg)}}
- Save it all with Georges Editor.
==== Editing Territory DataSheets ====
- Go to the directory: ''L:\leveldesign\World\("dispensaire01")''
- Open the file .continent with the Georges editor in order to modify it accordingly to our needs(these are for the moment the "Newbieland" data).{{ https://khaganat.net/wikhan/_media/fr:08.jpg |(image08.jpg)}}
- Change the tables: "Name", "PacsRBank", "PacsGR", "LandscapeIG", "WorldMap" to that of your own territory("dispensaire01 in this guide").
- Change the table values of ZoneMin AND ZoneMax to report the data previously noted(ZoneMin = 1_AA and ZoneMax = 17_BK in our case).
- Find the "villages" section in the list and delete all **EXCEPT** the "start_village_newbieland".{{ https://khaganat.net/wikhan/_media/fr:09.jpg |(image09.jpg)}}
- In "start_village_newbieland", delete the content of the "igList" section(we're only making a simplistic landscape, in other words.. no buildings etc). The guide will perhaps be updated with information about the "ig formats" in the future.
- Now search through the section "ZCs" and delete all "ZCs" you find.
- Find the "Landmarks" section and even here delete all.
- Save everything
===== Create primitives of the region =====
==== Setting up ====
- Go to: ''L:\primitives'' and create a subdirectory with the name of your territory( "dispensaire01").
- Open the World Editor.
- Left click Project > New primitive.
- Save the project in the directory: ''L:\primitives\''("dispensaire01") in the name and form of "region_"(in other words: "region_dispensaire01").
- Go to: ''L:\primitives'' and open file file_index.cfg with your chosen text editor.
- Add the name of the "primitive file" at the end of this list, following the formatting conventions. Remember that the specified number must be a unique one. In our case you add: "region_dispensaire01.primitive", "768",
- Now open the ''primitives.cfg'' file, then again add the primitives file(still following the formatting conventions). This will in our case(added after the final "MAPEND",) be like this:
/////////////////////////
// DISPENSARY 01 //
/////////////////////////
"CONTINENT dispensaire01",
"MAP dispensaire01",
"MAP dispensaire01_all",
"FILE region_dispensaire01.primitive",
"MAPEND",
"MAPEND",
==== Creating the region and it's starting point... ====
- Go back to World Editor.
- Right click on the primitive and choose "Add continent".
- Then right click on the new continent and choose "properties", indicate the territory name in the name field( "dispensaire01"), this also goes for fields "id" and "sheet".{{ https://khaganat.net/wikhan/_media/fr:10.jpg |(image10.jpg)}}
Then validate!
- Right click again on the new continent which now has the territory name, choose "Add place".
- Right click on place, rename it to "starting_place".
- Right click on starting_place, choose "Add teleport_spawn_zone".
- Right click on the teleportation arrival area, select "properties" and change it's name to "player_spawn_point".
- Click again on the "zone arrival of teleportation", a gray rectangle will illuminate in zone 10_AQ, right click on it and select "move".
- Click on the rectangle and "drag it" to the appropriate place(14_BH in our example).{{ https://khaganat.net/wikhan/_media/fr:11.jpg |(image11.jpg)}}
- Click on the place "starting_place", press to enter the editing mode, then press F11 to enter the right mode, enabling us to add points.
- Create a zone by adding points to the rectangle. This must be done in a counter-clockwise direction.{{ https://khaganat.net/wikhan/_media/fr:13.jpg |(image13.jpg)}}
- When finished, click on F5 to return to the selection mode.
- Now, right click on "start_villages", select "Add start_village", right click on it and rename it to your taste("in this case: dispensaire01_start_village").
- Right click on the village, choose "Add start_point".
- Right click, select "properties" and rename it to your choice(in this case: "dispensaire01_start_point").
- Fill in the "spawn zone" field with the name of the teleportation arrival area created earlier("player_spawn_point").
- Click on the continent(dispensaire01) and again enter the "point edit mode"(by clicking on ), then add a few points around the whole continent. This must be done in a counter-clockwise direction.{{ https://khaganat.net/wikhan/_media/fr:15.jpg |(image15.jpg)}}
- Save!!
==== Add primitive information to DataSheets ====
- Return to the DataSheet under Georges editor: ''L:\leveldesign\World\dispensaire01\dispensaire01.continent") .
- Select the only village that is left under the village section("start_village_newbieland" in our example).
- Rename it accordingly to the "starting village name" we added earlier in the World Editor(in our case: "dispensaire01_start_village").
- Edit the field "zone" to correspond to the zone where this village is placed(where starting_place and player_spawn_point were placed, in our case it is "14_BH").
- Now save!!
===== Fix the AIS server =====
Lastly, you must edit the ai_service_default.cfg file and make it look like the following lines:
StartCommandsWhenMirrorReadyNewbieland =
{
//"loadContinent newbieland",
//"createStaticAIInstance newbieland",
//"loadMapsFromCommon newbieland_all",
};
End of guide!
{{tag>Data Card Server}}