mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
2f5d88341c
110
docs/Pipfile.lock
generated
110
docs/Pipfile.lock
generated
@ -74,11 +74,11 @@
|
||||
},
|
||||
"elementpath": {
|
||||
"hashes": [
|
||||
"sha256:1f41f1160aaae66bc25a8cb9451e5b31ca4553b6dccd9b57045205b005e5406e",
|
||||
"sha256:c556a9b9dde47fdf05bb3ad525dfb43fc6becb95532a053f6a73024e586ead37"
|
||||
"sha256:07f2a34bac7a2a909d745da1cb3c7b8cd43ca1d7d1134546db41ffb997bcb11c",
|
||||
"sha256:25368810a76a5d9e464c0e721a12645409fc8c113ffde9e01d88557b4a7663d3"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==2.5.1"
|
||||
"version": "==2.5.2"
|
||||
},
|
||||
"htmlmin": {
|
||||
"hashes": [
|
||||
@ -111,11 +111,11 @@
|
||||
},
|
||||
"json-schema-for-humans": {
|
||||
"hashes": [
|
||||
"sha256:88202f7422311d889f8b845b96dabc2c27766a4eed6253137e6d25006c9faa10",
|
||||
"sha256:b7dc11eb6982224249b9f6ba5c9c0f47893e202f5c24c2e26b920eb956f18133"
|
||||
"sha256:a96f7bb1175bf979ac6360a0dbea81a82443abdb376696dc33f5a6fb8705f25e",
|
||||
"sha256:e05f0d52d6ac211eceecd5201bcefb91538c9b75ecb56a1950b47090ac3ab8b6"
|
||||
],
|
||||
"markers": "python_version >= '3.7' and python_version < '4.0'",
|
||||
"version": "==0.40.3"
|
||||
"markers": "python_version >= '3.7' and python_version < '4'",
|
||||
"version": "==0.40.5"
|
||||
},
|
||||
"jsonschema": {
|
||||
"hashes": [
|
||||
@ -138,7 +138,7 @@
|
||||
"sha256:412520c7b6bba540c2c2067d6be3a523ab885703bf6a81d93963f848b55dfb9a",
|
||||
"sha256:f344d4adfba5d1de821f7850b36e3507f583468a7eb47e6fa191765ed0b9c66b"
|
||||
],
|
||||
"markers": "python_version >= '3.5' and python_version < '4.0'",
|
||||
"markers": "python_version >= '3.5' and python_version < '4'",
|
||||
"version": "==2.4.3"
|
||||
},
|
||||
"markupsafe": {
|
||||
@ -204,11 +204,11 @@
|
||||
},
|
||||
"menagerie-docs": {
|
||||
"hashes": [
|
||||
"sha256:6e02af2e4750e66fbeb8eef51d6a26454f735fe98f4d9b941fc371ee827d67b6",
|
||||
"sha256:9410e416cc9e88a29e4e43e850901afdd4567a9552e40b1b6e48926742cd9379"
|
||||
"sha256:6edf3371d1b4c0ac42dc1bde72b46dbfef7d96b1065d1d605fcd07af1d6c8e9a",
|
||||
"sha256:fc8da001ff050859d74c6b5cdcdf887c5aa47e2b263271ab20554010fd72337d"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.1.3"
|
||||
"version": "==0.1.5"
|
||||
},
|
||||
"mypy-extensions": {
|
||||
"hashes": [
|
||||
@ -222,7 +222,7 @@
|
||||
"sha256:5053fc5ca7b8a281081274702ebf1584e341f40a68e6ab8f6b4b79f4b3fdf18e",
|
||||
"sha256:8e8226f15c0b25565aa391797963b78c95930e12efc40e905153130783e766be"
|
||||
],
|
||||
"markers": "python_version >= '3.8' and python_version < '4.0'",
|
||||
"markers": "python_version >= '3.8' and python_version < '4'",
|
||||
"version": "==0.1.0"
|
||||
},
|
||||
"packaging": {
|
||||
@ -235,47 +235,47 @@
|
||||
},
|
||||
"pillow": {
|
||||
"hashes": [
|
||||
"sha256:01ce45deec9df310cbbee11104bae1a2a43308dd9c317f99235b6d3080ddd66e",
|
||||
"sha256:0c51cb9edac8a5abd069fd0758ac0a8bfe52c261ee0e330f363548aca6893595",
|
||||
"sha256:17869489de2fce6c36690a0c721bd3db176194af5f39249c1ac56d0bb0fcc512",
|
||||
"sha256:21dee8466b42912335151d24c1665fcf44dc2ee47e021d233a40c3ca5adae59c",
|
||||
"sha256:25023a6209a4d7c42154073144608c9a71d3512b648a2f5d4465182cb93d3477",
|
||||
"sha256:255c9d69754a4c90b0ee484967fc8818c7ff8311c6dddcc43a4340e10cd1636a",
|
||||
"sha256:35be4a9f65441d9982240e6966c1eaa1c654c4e5e931eaf580130409e31804d4",
|
||||
"sha256:3f42364485bfdab19c1373b5cd62f7c5ab7cc052e19644862ec8f15bb8af289e",
|
||||
"sha256:3fddcdb619ba04491e8f771636583a7cc5a5051cd193ff1aa1ee8616d2a692c5",
|
||||
"sha256:463acf531f5d0925ca55904fa668bb3461c3ef6bc779e1d6d8a488092bdee378",
|
||||
"sha256:4fe29a070de394e449fd88ebe1624d1e2d7ddeed4c12e0b31624561b58948d9a",
|
||||
"sha256:55dd1cf09a1fd7c7b78425967aacae9b0d70125f7d3ab973fadc7b5abc3de652",
|
||||
"sha256:5a3ecc026ea0e14d0ad7cd990ea7f48bfcb3eb4271034657dc9d06933c6629a7",
|
||||
"sha256:5cfca31ab4c13552a0f354c87fbd7f162a4fafd25e6b521bba93a57fe6a3700a",
|
||||
"sha256:66822d01e82506a19407d1afc104c3fcea3b81d5eb11485e593ad6b8492f995a",
|
||||
"sha256:69e5ddc609230d4408277af135c5b5c8fe7a54b2bdb8ad7c5100b86b3aab04c6",
|
||||
"sha256:6b6d4050b208c8ff886fd3db6690bf04f9a48749d78b41b7a5bf24c236ab0165",
|
||||
"sha256:7a053bd4d65a3294b153bdd7724dce864a1d548416a5ef61f6d03bf149205160",
|
||||
"sha256:82283af99c1c3a5ba1da44c67296d5aad19f11c535b551a5ae55328a317ce331",
|
||||
"sha256:8782189c796eff29dbb37dd87afa4ad4d40fc90b2742704f94812851b725964b",
|
||||
"sha256:8d79c6f468215d1a8415aa53d9868a6b40c4682165b8cb62a221b1baa47db458",
|
||||
"sha256:97bda660702a856c2c9e12ec26fc6d187631ddfd896ff685814ab21ef0597033",
|
||||
"sha256:a325ac71914c5c043fa50441b36606e64a10cd262de12f7a179620f579752ff8",
|
||||
"sha256:a336a4f74baf67e26f3acc4d61c913e378e931817cd1e2ef4dfb79d3e051b481",
|
||||
"sha256:a598d8830f6ef5501002ae85c7dbfcd9c27cc4efc02a1989369303ba85573e58",
|
||||
"sha256:a5eaf3b42df2bcda61c53a742ee2c6e63f777d0e085bbc6b2ab7ed57deb13db7",
|
||||
"sha256:aea7ce61328e15943d7b9eaca87e81f7c62ff90f669116f857262e9da4057ba3",
|
||||
"sha256:af79d3fde1fc2e33561166d62e3b63f0cc3e47b5a3a2e5fea40d4917754734ea",
|
||||
"sha256:c24f718f9dd73bb2b31a6201e6db5ea4a61fdd1d1c200f43ee585fc6dcd21b34",
|
||||
"sha256:c5b0ff59785d93b3437c3703e3c64c178aabada51dea2a7f2c5eccf1bcf565a3",
|
||||
"sha256:c7110ec1701b0bf8df569a7592a196c9d07c764a0a74f65471ea56816f10e2c8",
|
||||
"sha256:c870193cce4b76713a2b29be5d8327c8ccbe0d4a49bc22968aa1e680930f5581",
|
||||
"sha256:c9efef876c21788366ea1f50ecb39d5d6f65febe25ad1d4c0b8dff98843ac244",
|
||||
"sha256:de344bcf6e2463bb25179d74d6e7989e375f906bcec8cb86edb8b12acbc7dfef",
|
||||
"sha256:eb1b89b11256b5b6cad5e7593f9061ac4624f7651f7a8eb4dfa37caa1dfaa4d0",
|
||||
"sha256:ed742214068efa95e9844c2d9129e209ed63f61baa4d54dbf4cf8b5e2d30ccf2",
|
||||
"sha256:f401ed2bbb155e1ade150ccc63db1a4f6c1909d3d378f7d1235a44e90d75fb97",
|
||||
"sha256:fb89397013cf302f282f0fc998bb7abf11d49dcff72c8ecb320f76ea6e2c5717"
|
||||
"sha256:088df396b047477dd1bbc7de6e22f58400dae2f21310d9e2ec2933b2ef7dfa4f",
|
||||
"sha256:09e67ef6e430f90caa093528bd758b0616f8165e57ed8d8ce014ae32df6a831d",
|
||||
"sha256:0b4d5ad2cd3a1f0d1df882d926b37dbb2ab6c823ae21d041b46910c8f8cd844b",
|
||||
"sha256:0b525a356680022b0af53385944026d3486fc8c013638cf9900eb87c866afb4c",
|
||||
"sha256:1d4331aeb12f6b3791911a6da82de72257a99ad99726ed6b63f481c0184b6fb9",
|
||||
"sha256:20d514c989fa28e73a5adbddd7a171afa5824710d0ab06d4e1234195d2a2e546",
|
||||
"sha256:2b291cab8a888658d72b575a03e340509b6b050b62db1f5539dd5cd18fd50578",
|
||||
"sha256:3f6c1716c473ebd1649663bf3b42702d0d53e27af8b64642be0dd3598c761fb1",
|
||||
"sha256:42dfefbef90eb67c10c45a73a9bc1599d4dac920f7dfcbf4ec6b80cb620757fe",
|
||||
"sha256:488f3383cf5159907d48d32957ac6f9ea85ccdcc296c14eca1a4e396ecc32098",
|
||||
"sha256:4d45dbe4b21a9679c3e8b3f7f4f42a45a7d3ddff8a4a16109dff0e1da30a35b2",
|
||||
"sha256:53c27bd452e0f1bc4bfed07ceb235663a1df7c74df08e37fd6b03eb89454946a",
|
||||
"sha256:55e74faf8359ddda43fee01bffbc5bd99d96ea508d8a08c527099e84eb708f45",
|
||||
"sha256:59789a7d06c742e9d13b883d5e3569188c16acb02eeed2510fd3bfdbc1bd1530",
|
||||
"sha256:5b650dbbc0969a4e226d98a0b440c2f07a850896aed9266b6fedc0f7e7834108",
|
||||
"sha256:66daa16952d5bf0c9d5389c5e9df562922a59bd16d77e2a276e575d32e38afd1",
|
||||
"sha256:6e760cf01259a1c0a50f3c845f9cad1af30577fd8b670339b1659c6d0e7a41dd",
|
||||
"sha256:7502539939b53d7565f3d11d87c78e7ec900d3c72945d4ee0e2f250d598309a0",
|
||||
"sha256:769a7f131a2f43752455cc72f9f7a093c3ff3856bf976c5fb53a59d0ccc704f6",
|
||||
"sha256:7c150dbbb4a94ea4825d1e5f2c5501af7141ea95825fadd7829f9b11c97aaf6c",
|
||||
"sha256:8844217cdf66eabe39567118f229e275f0727e9195635a15e0e4b9227458daaf",
|
||||
"sha256:8a66fe50386162df2da701b3722781cbe90ce043e7d53c1fd6bd801bca6b48d4",
|
||||
"sha256:9370d6744d379f2de5d7fa95cdbd3a4d92f0b0ef29609b4b1687f16bc197063d",
|
||||
"sha256:937a54e5694684f74dcbf6e24cc453bfc5b33940216ddd8f4cd8f0f79167f765",
|
||||
"sha256:9c857532c719fb30fafabd2371ce9b7031812ff3889d75273827633bca0c4602",
|
||||
"sha256:a4165205a13b16a29e1ac57efeee6be2dfd5b5408122d59ef2145bc3239fa340",
|
||||
"sha256:b3fe2ff1e1715d4475d7e2c3e8dabd7c025f4410f79513b4ff2de3d51ce0fa9c",
|
||||
"sha256:b6617221ff08fbd3b7a811950b5c3f9367f6e941b86259843eab77c8e3d2b56b",
|
||||
"sha256:b761727ed7d593e49671d1827044b942dd2f4caae6e51bab144d4accf8244a84",
|
||||
"sha256:baf3be0b9446a4083cc0c5bb9f9c964034be5374b5bc09757be89f5d2fa247b8",
|
||||
"sha256:c17770a62a71718a74b7548098a74cd6880be16bcfff5f937f900ead90ca8e92",
|
||||
"sha256:c67db410508b9de9c4694c57ed754b65a460e4812126e87f5052ecf23a011a54",
|
||||
"sha256:d78ca526a559fb84faaaf84da2dd4addef5edb109db8b81677c0bb1aad342601",
|
||||
"sha256:e9ed59d1b6ee837f4515b9584f3d26cf0388b742a11ecdae0d9237a94505d03a",
|
||||
"sha256:f054b020c4d7e9786ae0404278ea318768eb123403b18453e28e47cdb7a0a4bf",
|
||||
"sha256:f372d0f08eff1475ef426344efe42493f71f377ec52237bf153c5713de987251",
|
||||
"sha256:f3f6a6034140e9e17e9abc175fc7a266a6e63652028e157750bd98e804a8ed9a",
|
||||
"sha256:ffde4c6fabb52891d81606411cbfaf77756e3b561b566efd270b3ed3791fde4e"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==9.1.0"
|
||||
"version": "==9.1.1"
|
||||
},
|
||||
"pygments": {
|
||||
"hashes": [
|
||||
@ -453,16 +453,16 @@
|
||||
"sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14",
|
||||
"sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4.0'",
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'",
|
||||
"version": "==1.26.9"
|
||||
},
|
||||
"xmlschema": {
|
||||
"hashes": [
|
||||
"sha256:be1eedce6a4b911fd3a7f4060d0811951820a13410e61f0454b30e9f4e7cf197",
|
||||
"sha256:dbd68bded2fef00c19cf37110ca0565eca34cf0b6c9e1d3b62ad0de8cbb582ca"
|
||||
"sha256:319f5e3e77beb6ab3b4166f699d9dafd59141487bd1a07675fd01af6483211a4",
|
||||
"sha256:8ed246d97e7ab0393cf435ca98c8da6a0d2ab2f4e81949e149d8b2c97ec89357"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==1.10.0"
|
||||
"version": "==1.11.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,8 +5,6 @@ Sort_Priority: 40
|
||||
|
||||
## How to use the API
|
||||
|
||||
___
|
||||
|
||||
First create the following interface in your mod:
|
||||
|
||||
```cs
|
||||
|
||||
@ -5,8 +5,6 @@ Sort_Priority: 90
|
||||
|
||||
## Details/Scatterer
|
||||
|
||||
___
|
||||
|
||||
For physical objects there are currently two ways of setting them up: specify an asset bundle and path to load a custom asset you created, or specify the path to the item you want to copy from the game in the scene hierarchy. Use the [Unity Explorer](https://outerwildsmods.com/mods/unityexplorer){ target="_blank" } mod to find an object you want to copy onto your new body. Some objects work better than others for this. Good luck. Some pointers:
|
||||
|
||||
- Use "Object Explorer" to search
|
||||
@ -15,8 +13,6 @@ For physical objects there are currently two ways of setting them up: specify an
|
||||
|
||||
## Asset Bundles
|
||||
|
||||
___
|
||||
|
||||
Here is a template project: [Outer Wilds Unity Template](https://github.com/xen-42/outer-wilds-unity-template){ target="_blank" }
|
||||
|
||||
The template project contains ripped versions of all the game scripts, meaning you can put things like DirectionalForceVolumes in your Unity project to have artificial gravity volumes loaded right into the game.
|
||||
@ -55,14 +51,10 @@ public class CreateAssetBundles
|
||||
|
||||
## Importing a planet's surface from Unity
|
||||
|
||||
___
|
||||
|
||||
Making a planet's entire surface from a Unity prefab is the exact same thing as adding one single big detail at position (0, 0, 0).
|
||||
|
||||
## Examples
|
||||
|
||||
___
|
||||
|
||||
To add a Mars rover to the red planet in [RSS](https://github.com/xen-42/outer-wilds-real-solar-system), its model was put in an asset bundle as explained above, and then the following was put into the `Props` module:
|
||||
|
||||
```json
|
||||
|
||||
@ -6,55 +6,39 @@ Sort_Priority: 50
|
||||
|
||||
# Dialogue
|
||||
|
||||
___
|
||||
|
||||
This page goes over how to use dialogue in New Horizons.
|
||||
|
||||
# Understanding Dialogue
|
||||
|
||||
___
|
||||
|
||||
## Dialogue Tree
|
||||
|
||||
___
|
||||
|
||||
A dialogue tree is an entire conversation, it's made up of dialogue nodes.
|
||||
|
||||
## Dialogue Node
|
||||
|
||||
___
|
||||
|
||||
A node is a set of pages shown to the player followed by options the player can choose from to change the flow of the conversation.
|
||||
|
||||
## Condition
|
||||
|
||||
___
|
||||
|
||||
A condition is a yes/no value stored **for this loop and this loop only**. It can be used to show new dialogue options, stop someone from talking to you (looking at you Slate), and more.
|
||||
|
||||
## Persistent Condition
|
||||
|
||||
___
|
||||
|
||||
A persistent condition is similar to a condition, except it *persists* through loops, and is saved on the player's save file.
|
||||
|
||||
## Remote Trigger
|
||||
|
||||
___
|
||||
|
||||
A remote trigger is used to have an NPC talk to you from a distance; ex: Slate stopping you for the umpteenth time to tell you information you already knew.
|
||||
|
||||
# Example XML
|
||||
|
||||
___
|
||||
|
||||
Here's an example dialogue XML:
|
||||
|
||||
```xml
|
||||
<!-- Example Dialogue -->
|
||||
<!-- All files must have `DialogueTree` as the root element, the xmlns:xsi=... and xsi:noNamespaceSchemaLocation=... is optional but provides improved error checking if your editor supports it -->
|
||||
<DialogueTree xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/xen-42/outer-wilds-new-horizons/master/NewHorizons/dialogue_schema.xsd">
|
||||
xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/xen-42/outer-wilds-new-horizons/main/NewHorizons/Schemas/dialogue_schema.xsd">
|
||||
<NameField>EXAMPLE NPC</NameField> <!-- The name of this character -->
|
||||
|
||||
<DialogueNode> <!-- A dialogue node is a set of pages displayed to the player optionally followed by options -->
|
||||
@ -131,8 +115,6 @@ Here's an example dialogue XML:
|
||||
|
||||
# Using the XML
|
||||
|
||||
___
|
||||
|
||||
To use the dialogue XML you have created, you simply need to reference it in the `dialogue` prop
|
||||
|
||||
```json
|
||||
@ -150,14 +132,10 @@ To use the dialogue XML you have created, you simply need to reference it in the
|
||||
|
||||
# Dialogue Config
|
||||
|
||||
___
|
||||
|
||||
To view the options for the dialogue prop, check [the schema]({{ "Celestial Body Schema"|route }}#Props_dialogue)
|
||||
|
||||
# Controlling Conditions
|
||||
|
||||
___
|
||||
|
||||
You can set condition in dialogue with the `<SetCondition>` and `<SetPersistentCondition>` tags
|
||||
|
||||
```xml
|
||||
@ -171,24 +149,16 @@ You can set condition in dialogue with the `<SetCondition>` and `<SetPersistentC
|
||||
|
||||
# Dialogue Options
|
||||
|
||||
___
|
||||
|
||||
There are many control structures for dialogue options to hide/reveal them if conditions are met. Take a look at [the DialogueOption schema]({{ "Dialogue Schema"|route }}#DialogueTree-DialogueNode-DialogueOptionsList-DialogueOption-DialogueTarget) for more info.
|
||||
|
||||
# Controlling Flow
|
||||
|
||||
___
|
||||
|
||||
In addition to `<DialogueOptions>`, there are other ways to control the flow of the conversation.
|
||||
|
||||
## DialogueTarget
|
||||
|
||||
___
|
||||
|
||||
Defining `<DialogueTarget>` in the `<DialogueNode>` tag instead of a `<DialogueOption>` will make the conversation go directly to that target after the character is done talking.
|
||||
|
||||
## DialogueTargetShipLogCondition
|
||||
|
||||
___
|
||||
|
||||
Used in tandum with `DialogueTarget`, makes it so you must have a [ship log fact]({{ "Ship Log"|route }}#explore-facts) to go to the next node.
|
||||
|
||||
@ -7,19 +7,18 @@ Sort_Priority: 100
|
||||

|
||||
|
||||
# Outer Wilds New Horizons
|
||||
___
|
||||
|
||||
This is the official documentation for [New Horizons](https://github.com/xen-42/outer-wilds-new-horizons){ target="_blank" }
|
||||
|
||||
## Getting Started
|
||||
___
|
||||
|
||||
Before starting, go into your in-game mod settings for New Horizons and switch Debug mode on. This allows you to:
|
||||
|
||||
- Print the position of what you are looking at to the logs by pressing "P". This is useful for determining locations to place details.
|
||||
- Use the "Reload Configs" button in the pause menu. This will restart the current solar system and update all the planets. Much faster than quitting and relaunching the game.
|
||||
|
||||
Please get [VSCode](https://code.visualstudio.com/){ target="_blank" } or some other advanced text editor, as it will help highlight common errors.
|
||||
!!! alert-danger "Get VSCode"
|
||||
Please get [VSCode](https://code.visualstudio.com/){ target="_blank" } or some other advanced text editor, as it will help highlight common errors.
|
||||
|
||||
Planets are created using a JSON file format structure, and placed in a folder called planets (or in any subdirectory of it) in the location where New Horizons is installed (by default this folder doesn't exist, you have to create it within the xen.NewHorizons directory). You can learn how the configs work by picking apart the [Real Solar System](https://github.com/xen-42/outer-wilds-real-solar-system){ target="_blank" } mod or the [New Horizons Examples](https://github.com/xen-42/ow-new-horizons-examples){ target="_blank" } mod.
|
||||
|
||||
@ -38,7 +37,7 @@ look something like this:
|
||||
```json
|
||||
{
|
||||
"name": "Wetrock",
|
||||
"$schema": "https://raw.githubusercontent.com/xen-42/outer-wilds-new-horizons/master/NewHorizons/schema.json",
|
||||
"$schema": "https://raw.githubusercontent.com/xen-42/outer-wilds-new-horizons/main/NewHorizons/Schemas/schema.json",
|
||||
"starSystem": "SolarSystem",
|
||||
"Base": {
|
||||
"groundSize": 100,
|
||||
@ -118,12 +117,10 @@ To see all the different things you can put into a config file check out the [Ce
|
||||
Check out the rest of the site for how to format [star system]({{ 'Star System Schema'|route}}), [dialogue]({{ 'Dialogue Schema'|route}}), [ship log]({{ 'Shiplog Schema'|route}}), and [translation]({{ 'Translation Schema'|route}}) files!
|
||||
|
||||
## Publishing Your Mod
|
||||
___
|
||||
|
||||
Once your mod is complete, you can use the [planet creation template](https://github.com/xen-42/ow-new-horizons-config-template#readme){ target="_blank" } GitHub template.
|
||||
|
||||
## Helpful Resources
|
||||
___
|
||||
|
||||
The texturemap/heightmap feature was inspired by the Kerbal Space Program mod Kopernicus. A lot of the same techniques that apply to
|
||||
planet creation there apply to New Horizons. If you need help with planetary texturing, check out [The KSP texturing guide](https://forum.kerbalspaceprogram.com/index.php?/topic/165285-planetary-texturing-guide-repository/){ target="_blank" }.
|
||||
@ -132,7 +129,6 @@ planet creation there apply to New Horizons. If you need help with planetary tex
|
||||
rectangular-to-polar coordinate transformation, useful for fixing abnormalities at the poles of your planets.
|
||||
|
||||
### Helpful Mods
|
||||
___
|
||||
|
||||
These mods are useful when developing your addon
|
||||
|
||||
@ -141,7 +137,6 @@ These mods are useful when developing your addon
|
||||
- [Save Editor](https://outerwildsmods.com/mods/saveeditor){ target="_blank" } - Useful when creating a custom [ship log]({{ "Ship Log"|route }}), can be used to reveal all custom facts so you can see them in the ship's computer
|
||||
|
||||
### Helpful Tools
|
||||
___
|
||||
|
||||
These tools/references are highly recommended
|
||||
|
||||
|
||||
@ -5,7 +5,6 @@ Hide_In_Nav: True
|
||||
---
|
||||
|
||||
# Hello!!
|
||||
___
|
||||
|
||||
Uh idk what to put here thought it would be funny haha
|
||||
|
||||
|
||||
@ -6,19 +6,14 @@ Sort_Priority: 70
|
||||
|
||||
# Intro
|
||||
|
||||
___
|
||||
Welcome! this page outlines how to create a custom ship log.
|
||||
|
||||
# Understanding Ship Logs
|
||||
|
||||
___
|
||||
|
||||
First thing's first, I'll define some terminology regarding ship logs in the game, and how ship logs are structured.
|
||||
|
||||
## Entries
|
||||
|
||||
___
|
||||
|
||||
An entry is a card you see in rumor mode, it represents a specific area or concept in the game, such as Timber Hearth's
|
||||
village or the southern observatory on Brittle Hollow.
|
||||
An entry is split up into facts, a fact can either be a rumor fact or an explore fact.
|
||||
@ -44,8 +39,6 @@ Entries can be children of other entries, meaning they'll be smaller.
|
||||
|
||||
## Rumor Facts
|
||||
|
||||
___
|
||||
|
||||
A rumor fact represents the information you might hear about a specific area or concept, usually, you get these through
|
||||
dialogue or maybe by observing a faraway planet.
|
||||
|
||||
@ -53,29 +46,23 @@ dialogue or maybe by observing a faraway planet.
|
||||
|
||||
## Explore Facts
|
||||
|
||||
___
|
||||
|
||||
Explore facts represent the information you learn about a specific area or concept.
|
||||
|
||||

|
||||
|
||||
# The XML
|
||||
|
||||
___
|
||||
|
||||
Now that we know some terminology, let's get into how the XML works.
|
||||
Every planet in the ship log is represented by a single XML file, you can see this if you use the unity explorer mod and
|
||||
navigate to ShipLogManager.
|
||||
|
||||
## Example File
|
||||
|
||||
___
|
||||
|
||||
```xml
|
||||
<!-- Example File -->
|
||||
<!-- All files must have "AstroObjectEntry" as their root element, the xmlns:xsi=... and xsi:noNamespaceSchemaLocation=... is optional but heavily encouraged to reduce errors -->
|
||||
<AstroObjectEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/xen-42/outer-wilds-new-horizons/master/NewHorizons/shiplog_schema.xsd">
|
||||
xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/xen-42/outer-wilds-new-horizons/main/NewHorizons/Schemas/shiplog_schema.xsd">
|
||||
<ID>EXAMPLE_PLANET</ID> <!-- The ID of the planet this xml file is for -->
|
||||
|
||||
<Entry> <!-- An Entry For This Planet -->
|
||||
@ -149,8 +136,6 @@ ___
|
||||
|
||||
## Using The Schema
|
||||
|
||||
___
|
||||
|
||||
In the example XML, you may notice something like `xsi:noNamespaceSchemaLocation` at the top, this tells whatever editor
|
||||
you're using that the file at that link is the schema. The game simply ignores this though, so it won't be able to catch
|
||||
errors at runtime.
|
||||
@ -159,8 +144,6 @@ the schema file. Doing this varies per-editor, and you may also have to right-cl
|
||||
|
||||
## Loading The File
|
||||
|
||||
___
|
||||
|
||||
You can load your XML file to your planet by doing adding the following to your planet's config
|
||||
|
||||
```json
|
||||
@ -175,8 +158,6 @@ You can load your XML file to your planet by doing adding the following to your
|
||||
|
||||
## Entry Layout
|
||||
|
||||
___
|
||||
|
||||
By default, entries in rumor mode are laid out by rows, where each row is one planet. This will not make for a perfect
|
||||
layout, so you can use the `entryPositions` property to change them
|
||||
For example, if I want to change an entry with the ID of `EXAMPLE_ENTRY` and another with the ID of `EXAMPLE_ENTRY_2`:
|
||||
@ -210,8 +191,6 @@ For example, if I want to change an entry with the ID of `EXAMPLE_ENTRY` and ano
|
||||
|
||||
## Images
|
||||
|
||||
___
|
||||
|
||||
Custom entry images are a bit different from other custom images, instead of pointing to each file for each entry, you
|
||||
point to a folder:
|
||||
|
||||
@ -231,8 +210,6 @@ would be `EXAMPLE_ENTRY_ALT.png`.
|
||||
|
||||
## Curiosity Colors
|
||||
|
||||
___
|
||||
|
||||
Colors for each curiosity is given in a list, so if I wanted the curiosity `EXAMPLE_ENTRY` to have a color of blue:
|
||||
|
||||
```json
|
||||
@ -265,12 +242,8 @@ Colors for each curiosity is given in a list, so if I wanted the curiosity `EXAM
|
||||
|
||||
# Map Mode Options
|
||||
|
||||
___
|
||||
|
||||
## Layout
|
||||
|
||||
___
|
||||
|
||||
Layout in map mode can be handled in two different ways, either manual or automatic, if you try to mix them you'll get
|
||||
an error.
|
||||
Also, adding planets to the vanilla solar system requires you to use manual layout.
|
||||
@ -437,14 +410,10 @@ As you can see, they have similar properties to planets, with the addition of ro
|
||||
|
||||
# Revealing Facts
|
||||
|
||||
___
|
||||
|
||||
Of course, having a custom ship log is neat and all, but what use is it if the player can't unlock it?
|
||||
|
||||
## Initial Reveal
|
||||
|
||||
___
|
||||
|
||||
You can set facts to reveal as soon as the player enters the system by adding the `initialReveal` property
|
||||
|
||||
```json
|
||||
@ -460,8 +429,6 @@ You can set facts to reveal as soon as the player enters the system by adding th
|
||||
|
||||
## Signal Discovery
|
||||
|
||||
___
|
||||
|
||||
You can set a fact to reveal as soon as a signal is identified by editing the signal's `Reveals` attribute
|
||||
|
||||
```json
|
||||
@ -482,8 +449,6 @@ You can set a fact to reveal as soon as a signal is identified by editing the si
|
||||
|
||||
## Dialogue
|
||||
|
||||
___
|
||||
|
||||
You can set a fact to reveal in dialogue with the `<RevealFacts>` tag
|
||||
|
||||
```xml
|
||||
@ -505,8 +470,6 @@ You can set a fact to reveal in dialogue with the `<RevealFacts>` tag
|
||||
|
||||
## Reveal Volumes
|
||||
|
||||
___
|
||||
|
||||
Reveal volumes are triggers/colliders in the world that can unlock facts from a variety of actions.
|
||||
Reveal volumes are specified in the `Props` module, its key is `reveal`.
|
||||
|
||||
@ -574,8 +537,6 @@ trigger the reveal
|
||||
|
||||
# Setting Entry Locations
|
||||
|
||||
___
|
||||
|
||||
Entry locations are the "Mark On HUD" option you see when in map mode, this allows the player to go back to where they
|
||||
were in the event of the big funny.
|
||||
Adding an entry location is similar to adding a Reveal Volume:
|
||||
|
||||
@ -4,7 +4,6 @@ Sort_Priority: 60
|
||||
---
|
||||
|
||||
## Translations
|
||||
___
|
||||
|
||||
There are 12 supported languages in Outer Wilds: english, spanish_la, german, french, italian, polish, portuguese_br, japanese, russian, chinese_simple, korean, and turkish.
|
||||
|
||||
@ -16,6 +15,7 @@ Here's an example, for `russian.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"$schema": "https://raw.githubusercontent.com/xen-42/outer-wilds-new-horizons/main/NewHorizons/Schemas/translation_schema.json",
|
||||
"DialogueDictionary" :
|
||||
{
|
||||
"Fred" : "Фред",
|
||||
|
||||
@ -4,7 +4,6 @@ Sort_Priority: 80
|
||||
---
|
||||
|
||||
## Update Existing Planets
|
||||
___
|
||||
|
||||
Similar to above, make a config where "Name" is the name of the planet. The name should be able to just match their in-game english names, however if you encounter any issues with that here are the in-code names for planets that are guaranteed to work: `SUN`, `CAVE_TWIN` (Ember Twin), `TOWER_TWIN` (Ash Twin), `TIMBER_HEARTH`, `BRITTLE_HOLLOW`, `GIANTS_DEEP`, `DARK_BRAMBLE`, `COMET` (Interloper), `WHITE_HOLE`, `WHITE_HOLE_TARGET` (Whitehole station I believe), `QUANTUM_MOON`, `ORBITAL_PROBE_CANNON`, `TIMBER_MOON` (Attlerock), `VOLCANIC_MOON` (Hollow's Lantern), `DREAMWORLD`, `MapSatellite`, `RINGWORLD` (the Stranger).
|
||||
|
||||
@ -23,7 +22,6 @@ You can also delete parts of an existing planet. Here's part of an example confi
|
||||
In `childrenToDestroy` you list the relative paths for the children of the planet's gameObject that you want to delete.
|
||||
|
||||
## Destroy Existing Planets
|
||||
___
|
||||
|
||||
You do this (but with the appropriate name) as its own config.
|
||||
```json
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user