[Development] Guide to content contributing

  1. Gthub repository and Pull Requests
  2. Important info
  3. How to change and store values
  4. NPC tables
  5. Existing buildings
  6. Static planetary spawns
  7. Loot tables
  8. Lair tables
  9. Patrol routes

=====================================================================================================================


1. Github repository and Pull Requests (PR)

- register at Github and create an account

- log into your account and visit Github repository. Create a fork of the Holocore - Quality Assurance branch.

- [optional] in case you have SourceTree installed you can download your repo to your local PC and run it afterwards as a local server.

- via menu option "Source" you can browse through the file system of the repo and open folders/files in it. In your own repo you have admin rights and can change files and their content as you want but remember that you can only change 1 file at a time and each one will be a commit then.

- we are using "quality_assurance" branch as our main working place !

- nearly all content related data is stored in the "serverdata" folder.

- after you have changed a file(s) you can upload them to PSWG holocore's repo simply select the files you want to add to your commit.

- please try to use similar naming style like we did in the past: Added ... / Changed ... / Removed ... / Fixed ...

- you can put in more information by using the description text window in the Pull Request window

- as soon as your PR is sent our team and other contributors will be auto informed about it

- after being reviewed by leading content contributors and our developers the PR will be merged or rejected or put on hold in case you have to fix/edit some entries in it.


2. Important info

- when you copy/paste the content of our google tables or the existing .sdb tables into your own google table or excel file please remember to set ALL cells before to "text" format. This is important to avoid digits getting converted into time dates ! All our .sdb files can be opened with the standard Windows Editor.


3. How to change and store values (in case you dont have write access to our google tables)

- to avoid merge conflicts/problems or interference of other ppls work you should concentrate on a planet that is not assigned to someone else if possible

- in case you dont have write access to our google drive tables ... it is best if you use google tables too. check your google drive account for it

- create a new table in your drive account and copy/paste the content of our table to yours

- now you can add/edit values like you want

- once your work is done copy/paste your google table content to your holocore fork in your bitbucket account

- therefore click "Source" top left side and move into the folder and file you want to change

- once you have opened the file click "Edit" on right hand side and copy/paste your new content into the file

- when done press "Commit" and enter a commit description like posted in #1 here


4. NPC tables

To be able to place a NPC into our galaxy you need to know 2 things about it:

- NPC name

- Location (indoor or outdoor)


There are 4 types of NPCs in this game. Creatures / Droids / Humanoids and Vehicles. The files are located in /serverdata/nge/npc

Examples:

  • creature_kimogila_dune
  • droid_protocol_3po
  • humanoid_bothan_diplomat
  • vehicle_imperial_gcw_city_atst


5. Existing buildings

To determine the location of the NPC you need to know if it will be inside or outside a building/cave. Press ctrl + shift + G to open a special window that gives you additional information. Now you are able to see your current location. It is important that you ONLY use the info shown in the "Player Cell" line !


Y0DtWVj.jpg


If you already know the building you can check out its ID in our building database and/or the /serverdata/building/buildings.sdb file. Most buildings and their building_id are pretty self explanatory


Heading: goes from -179 to 179

XYZ: coordinates of the NPC or your location. Outside cells/buildings you get the world coordinates. Inside buildings you get relative coordinates to the 0 0 0 of the building

Cell: in the screenshot the cell is tagged as "r2". Once you have access to admin commands on the TC or on your local repository/server you can use the command /dumpz to show you information about your current cell

6qOweQi.jpg


Output of command /dumpz all_cells

Lists up all cells of current building you are in with their names


bMrsO8z.jpg


When the NPC is located outside of cells/buildings you simply use the term like "cor_world" (Corellia world). The terms for the other planets can be found in the buildings database.


6. Static planetary spawns

Every ingame NPC is written down in the related planetary spawn tables


Corellia /// Dantooine /// Dathomir /// Endor /// Kashyyyk /// Lok /// Naboo /// Rori /// Talus /// Tatooine /// Yavin 4


the tables contain following data:

spawn_id: ongoing number. automated

terrain: planet/terrain name

building_id: this string/value is taken from our buildings datatable

spawner_type: AREA or PATROL

cell_id: on QA server you can use /dumpz to get the current cell number/value

x / y / z: the exact value should be taken from the special window you can call (left ctrl + left alt + G). read the values from "Player Cell" line. first 3 values are xyz. 4th value is for heading. between -179 and 179

heading: heading of your character. only values between -179 and 179 are allowed

active: determines if a spawner is active at server start or not. standard is 1

npc_name: name of the npc. check "#3 NPC tables" to get more info about it. use the search function in google table if needed to find a specific npc.

npc_id: number of the npc. "#3 NPC tables" to get more info about it.

spawn_category: city / dungeon / poi / outback

spawn_area: describe the location as best as possible unless it is inside a town. then just the town name

amount: amount of npcs spawned from this spot

behaviour: IDLE / PATROL / GUARD / TURN

loiter_radius: radius NPCs are allowed to move around spawner location (meter)

patrol_id: unused atm. later on we can put in the linked string/value for patrol routes

patrol_formation: unused atm

mood: sitting, drinking, and other animations (loop) => list here. standard value is "idle"

equipment_id: unused atm. this will define which non-weapon-item(s) the NPC will hold in its hand

loot_id: unused atm

quest_id: unused atm

max_spawn_time: maximum spawning time in seconds (standard 300)

min_spawn_time: minimum spawning time in seconds (standard 120)


Patrol:

- If you want to to setup a spawner for a patrol you have to select PATROL as spawner_type and set the behaviour to PATROL too. Once the patrol service is implemented we can add the patrol waypoints so the NPC can run along the route.

- patrol_id should be set to 999 for now until we have patrol service implemented.

- patrol_formation should be set to "column" for now. other formations will be: column, wedge, line, box


Behaviour:

- IDLE: NPC stands still facing the set direction. This means you HAVE to set a heading between -179 and 179 otherwise he will look straight to north (0)

- PATROL: NPC will start from here and follow a given patrol route (to be implemented)

- GUARD: NPC will wander around the spawn spot within loiter_radius range

- TURN: NPC will turn to a random direction every 15 secs about. No need to set a heading.


7. Loot tables

Under construction


8. Lair tables

Under construction


9. Patrol routes

Additionally to the spawn information stored in the planetary files like Tatooine you can assign a patrol route to it.


SlMTMcj.jpg

Planetary spawn file for Tatooine


S06IEgR.jpg

Patrol database for Tatooine


You can find the patrol routes and waypoints in the linked sdb file


Corellia /// Dantooine /// Dathomir /// Endor /// Kashyyyk /// Lok /// Naboo /// Rori /// Talus /// Tatooine /// Yavin 4


So if you want to add a new patrol route you simply have to set up an ingame spawner type as PATROL. Also set the behaviour to PATROL. Assign a correct "patrol_id" and set the standard formation to column for now until we have the other formations implemented.

Go into the patrol_planet.sdb file/table and add a new group at the end. The patrol_ids for each planet have a specific value range



Check with what value the last block started and add 100 to it. as example the next group/patrols would be tat_18000 / tat_18100 / tat_18200 / tat_18300 and so on. the waypoints in the groups add +1 for each point. You need to know if your route is a LOOP or FLIP.

LOOP => NPC will walk along the waypoints and then start at beginning again (1... 2 ... 3 ... 4 ... 5 ... 1 ... 2 ... 3 ... )

FLIP => NPC will move the route backwards again after it reached the end ( 1 ... 2 ... 3 ... 4 ... 5 ... 4 ... 3 ... 2 ... 1 ... )


At the moment you have to avoid obstacles between 2 waypoints! From the spot of your current waypoint you need to be able to see the next waypoint otherwise the NPC will warp to it (we are working on a fix for that). Try to place the waypoints at edges of berms/hills so the bottom of those markers are visible to each other.


Z7BZylN.jpg

In this example the small hill in front is blocking the LOS (Line Of Sight)


=====================================================================================================================


If you have any questions about any topic of this article/guide feel free to contact me via PM or post on forums


We hope that with the current system and tools you are able to add/edit content easily so we can improve our own galaxy!



Undercova

    Comments 1

    • Updated
      Added "3. How to change and store values"