Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update with changes from Dev #274

Merged
merged 16 commits into from
Jan 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion lychee.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ exclude = [
# Don't check license links at the bottom of pages, seems to frequently "Failed: Network error: unexpected EOF"
"https://www.gnu.org/",
# This is a valid page but still 404s for some reason
"https://www.audiokinetic.com/en/download/"
"https://www.audiokinetic.com/en/download/",
# unable to get local issuer certificate
"https://questions.satisfactorygame.com/"
]

# Exclude these filesystem paths from getting checked.
Expand Down
551 changes: 551 additions & 0 deletions modules/ROOT/attachments/Development/All_Vanilla_ADA_Voicelines.txt

Large diffs are not rendered by default.

Binary file added modules/ROOT/images/DedicatedServers/CLI_FTP.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added modules/ROOT/images/DedicatedServers/CLI_SFTP.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added modules/ROOT/images/DedicatedServers/CLI_SMB.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added modules/ROOT/images/DedicatedServers/SMM_FTP.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added modules/ROOT/images/DedicatedServers/SMM_SFTP.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion modules/ROOT/nav.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@
*** xref:Development/Satisfactory/OreScanner.adoc[Ore Scanner]
*** xref:Development/Satisfactory/ShoppingList.adoc[To-Do/Shopping List]
*** xref:Development/Satisfactory/ConveyorRendering.adoc[Conveyor Rendering (Outdated)]

// TODO ADA *** xref:Development/Satisfactory/AdaMessages.adoc[ADA Messages]
** xref:Development/ModLoader/index.adoc[Mod Loader]
*** xref:Development/ModLoader/ModModules.adoc[Mod Modules]
*** xref:Development/ModLoader/Logging.adoc[Logging]
Expand Down
71 changes: 71 additions & 0 deletions modules/ROOT/pages/Development/Satisfactory/AdaMessages.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
= Creating ADA and Ingame Inbox Messages

[NOTE]
====
You have found a hidden docs page!

This page is a work in progress.

Currently, it's just a rough write up that I (Robb) made while implementing ADA messages in my own mod.

It's quite out of date but will Eventually(TM) be updated.
====

Look at either
https://github.com/budak7273/ArmorModules[PowerSuit Modules]
or
~~Ficsit Networks~~ (FIN no longer has ADA messages)
for examples.

Messages are two parts - the voice line and the file that shows up in the inbox

You can just download the content folder and add it as a separate content folder
within your modding project to be able to poke around in the UAssets and see how things are set up.

Strongly suggested you try and keep with the writing style of the game for ADA messages
Speaking mannerisms, patterns in what she says across voice lines
link:{attachmentsdir}/Development/All_Vanilla_ADA_Voicelines.txt[reference file]
For more examples check PowerSuit modules

the sound wave goes in the Dialogue Sounds array of an FGAudioMessage, there are lots of other settings there as well

Need custom BP code inside of InitGameWorld to register them since SML doesn't by default

Need to add a new variable to your InitGameWorld for the the schematic-Message mapping.

Don't need to create a new sender unless you want. Can reuse ADA without issue.

You can reuse the same Audiokinetic event for all of your messages.

You can record ADA voicelines using either pacas01's github project (need google api key thingy + billing set up) or you can use audacity loopback to record them from your own computer audio. waveset C pitch -1.2 (a bit hard to select on the slider, try dragging it far away then guesstimating where it needs to be). if using audacity loopback use the best quality sound device you have and keep it set to a consistent volume when recording. DON'T use laptop speakers for example, they suck miserably
- https://github.com/pacas00/Simple-ADA-Like-Voice-Generator[pacas01's tool]
- https://cloud.google.com/text-to-speech[the demo website]

You may need to change the text of what the TTS is saying to not match what the captions are when saying certain words.
For example, to have it pronounce FICSIT correctly, use the word 'fixit'

It is strongly suggested that you keep the text you fed to the TTS on hand so you can re-record lines later if needed or figure out how you got it to say a specific word in the past.

Since this can be different from the text you want to display to the user in the inbox (ex. 'fixit' case) you should still keep a separate copy of this.


You can use the advanced format of telling the tts what to do to insert custom emphasis and pauses;
look at google's docs and example of this in the demo widget

Can't have newlines in messages - have to do separate AudioMessage AudioEvents

You can change the speaking rate if the boxes of multiple messages aren't really lining up with what is being said in the recording.
Usual is 0.065, I find 0.07 works well for these types

If you want to send more than one message event per schematic, for example one in Inbox and one in Tutorial, you will either have to modify the BP code, or set the schematic to grant a hidden schematic that is mapped to the other message, and grant the other one as an unlock reward
if you do this
the messages will queue up
the other (granted as a reward) schematic will play first
you must have a sound file associated with it still (see below section)
you can make a schematic hidden by giving it an impossible dependency - for example, make it depend on the schematic `FGSchematic`
this means that even if you grant the schematic as a reward this way it will still never actually show up in the terminal because the condition for showing up can't be fulfilled
Look at powersuit modules' `SchematicClass_HiddenSchematic` and `Schematic_Hidden_ModuleKeybindsTutorial` for an example

If you have a message incoming that does not have a Dialogue Sounds file set, none of the messages in that 'queued batch' will play, it will cancel them all!
to fix this, give it a sound file of just silence to play. Example of this in Powersuit Modules

157 changes: 129 additions & 28 deletions modules/ROOT/pages/ForUsers/DedicatedServerSetup.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,13 @@ Expect bugs and test carefully to determine if bugs are caused by the base game
before reporting them on the https://questions.satisfactorygame.com/[QA site] (base-game)
or the Discord (modded) respectively.

== Obtain a Server

You need access to a dedicated server before you can start installing mods on it.
Pick one of the options below to set one up.

[id="SelfHostedServer"]
== Option 1: Self Hosted Server
=== Option 1: Self Hosted Server

Hosting a server yourself is the best way to
ensure you can work with the files required to get modded a server working.
Expand All @@ -27,7 +32,7 @@ https://satisfactory.wiki.gg/wiki/Dedicated_servers[detailed guide covering how
Follow that guide, then continue to the link:#GetModManager[next section].

[id="ThirdPartyServer"]
== Option 2: Third Party Hosted Server
=== Option 2: Third Party Hosted Server

[WARNING]
====
Expand All @@ -46,39 +51,55 @@ the Mod Manager and ficsit-cli _should_ be able to interact with them normally.
With this in mind, continue to the link:#GetModManager[next section].

[id="GetModManager"]
== Install Satisfactory Mod Manager or ficsit-cli
== Install a Mod Manager

Both Satisfactory Mod Manager (version 3.0.0 and up) and ficsit-cli
can be used to manage mods on a remote server installation
as long as you have network filesystem or (s)ftp access to the server.
You could also install ficsit-cli on the server and interact with its file system directly via its terminal user interface.

[id="GetModManager_SMM"]
=== Mod Manager
=== Satisfactory Mod Manager

If using the Mod Manage to manage your server:
// cspell:ignore CIFS
[NOTE]
====
SMM cannot currently connect to servers by filesystem path, including SMB/CIFS or network mounts.
Use ficsit-cli for this in the mean time.
====

1. xref:ForUsers/SatisfactoryModManager.adoc[Download and install the Satisfactory Mod Manager].
2. Open the Mod Manager.
3. In the left panel, under Other, select "Manage Servers".
4. Enter server connection details in the popup window, for example, select `ftp://` and enter `user:password@host/path`.
NOTE: Entering servers by network filesystem path is not currently an option in SMM, use ficsit-cli in the mean time.
5. The server will now appear in your Game Version dropdown and can be managed like a local install.
6. Skim the below ficsit-cli section to stay informed, then continue reading.
If using the Mod Manager to manage your server:

. xref:ForUsers/SatisfactoryModManager.adoc[Download and install the Satisfactory Mod Manager].
. Open the Mod Manager.
. In the left panel, under Other, select "Manage Servers".
* If you don't see this option, ensure that you have installed the latest version of the Mod Manager,
as only versions 3.0.0 and up support this feature.
. Enter server connection details in the popup window.
* Decide what method to select and what to enter by reading the link:#FileTransferMethods[File Transfer Methods] section,
then return here.
. The server will now appear in your Game Version dropdown and can be managed like a local install.
. Skim the below ficsit-cli section to stay informed, then continue reading the link:#ServerClientConsistency[next setup step].

[id="GetModManager_CLI"]
=== ficsit-cli

If using ficsit-cli to manage your server:

1. Download https://github.com/satisfactorymodding/ficsit-cli[ficsit-cli]
. Download https://github.com/satisfactorymodding/ficsit-cli[ficsit-cli]
either to your computer or to the server itself
depending on which environment you are more comfortable working with.
2. Run the application in a terminal window.
3. Navigate to the "Installations" > "New Installation" screen.
4. Enter the server connection details, for example `//192.168.1.42/appdata/satisfactory` or `ftp://user:password@host/path`.
5. The server will now appear as an install you can select and manage as usual.
6. Read the below, then continue to the next article heading.
. Run the application in a terminal window.
. Navigate to the "Installations" > "New Installation" screen.
. Enter server connection details in the popup window.
a. If you are running ficsit-cli from your computer (not the server),
enter the server connection details.
* Decide what to enter here by reading the link:#FileTransferMethods[File Transfer Methods] section,
then return here.
b. If ficsit-cli is installed on the server,
enter the file system path, for example `D:\SatisfactoryDS` or `/opt/SatisfactoryDedicatedServer`.
. The server will now appear as an install you can select and manage as usual.
. Read the below, then continue reading the link:#ServerClientConsistency[next setup step].

Make sure to apply changes after installing mods or loading a profile,
otherwise all changes will be discarded on exit.
Expand All @@ -87,22 +108,102 @@ Note that applying changes in ficsit-cli is a global action -
all installations the program is aware of will have any staged changes they may have applied in parallel.
This does _not_ mean that all installs must be on the same profile.

[id="ImportProfile"]
=== Import a Profile Created in SMM
[id="FileTransferMethods"]
== File Transfer Methods

The Mod Manager and ficsit-cli support multiple methods of connecting to servers remotely to manage mod files.
Select a method below based on what your server (or 3rd party server host) provides.

[id="FileTransferMethods_SFTP"]
=== SFTP

Secure File Transfer Protocol (SFTP) is a common method to transfer files over the Internet/Network.
It's more modern and secure than FTP as you may have guessed from its name.
SFTP typically uses TCP port 22, but your server may differ.
The examples below are for a self-hosted dedicated server.

* The authenticating user requires Read/Write/Delete or Read/Modify permissions.
* The path should follow this format:
+
`sftp://username:password@ServerNameOrIP:Port/path/`

.Satisfactory Mod Manager SFTP Example
image::DedicatedServers/SMM_SFTP.png[Satisfactory Mod Manager Example]
.Ficsit-CLI SFTP Example
image::DedicatedServers/CLI_SFTP.png[Ficsit-CLI Example]

[id="FileTransferMethods_FTP"]
=== FTP

[WARNING]
====
You should use link:#FileTransferMethods_SFTP[SFTP] instead if it is available.
====

File transfer protocol (FTP) is a common but outdated method to transfer files over the Internet/Network.
FTP typically uses TCP port 21, but your server may differ.
The examples below are for a self-hosted dedicated server.

* The authenticating user requires Read/Write/Delete or Read/Modify permissions.
* The path should follow this format:
+
`ftp://username:password@ServerNameOrIP:Port/path/`

.Satisfactory Mod Manager FTP Example
image::DedicatedServers/SMM_FTP.png[Satisfactory Mod Manager Example]
.Ficsit-CLI FTP Example
image::DedicatedServers/CLI_FTP.png[Ficsit-CLI Example]

[id="FileTransferMethods_SMB"]
=== SMB/CIFS

Server Message Block (SMB), also known as CIFS (Common Internet File System) or Windows File Shares,
is a network file transfer method commonly used on Windows Systems and occasionally Linux/Unix systems.
SMB typically uses TCP port 445, but your server may differ.
The examples below are for a self-hosted dedicated server.

Although it is possible to use ficsit-cli or the Mod Manager to install mods one-by-one,
this is not recommended as you could end up with a mismatch between client and server mod versions,
* The authenticating user requires Read/Write/Delete or Read/Modify permissions.
* The path should follow this format:
** If using a Windows ficsit-cli install:
+
`\\ServerNameOrIP\ShareName\Path` or `//ServerNameOrIP/ShareName/Path`
** If using a Linux ficsit-cli install:
+
link:https://github.com/satisfactorymodding/ficsit-cli/issues/57[(A bug is currently preventing this from working)]

** Satisfactory Mod Manager does not currently support SMB connections.
A future release (soon(TM)) will add support for this.

.Ficsit-CLI Example
image::DedicatedServers/CLI_SMB.png[Ficsit-CLI Example]

[id="ServerClientConsistency"]
== Server-Client Consistency

Although it is possible to use ficsit-cli or the Mod Manager to install mods one-by-one on the server,
this is not recommended as you could easily end up with a mismatch between client and server mod versions,
preventing you from connecting.

The suggested approach is to create a xref:ForUsers/SatisfactoryModManager.adoc[Mod Manager] profile
on your own computer for your client
then xref:ForUsers/SatisfactoryModManager.adoc#_sharing_profiles[use the Import/Export Profile functionality]
to produce a file that can be imported into ficsit-cli (they are the same file format).
You can then send out this same profile file to the client players so they can configure their own installs accordingly.
It is not feasible to export a profile created in SMM for a client to be used on a server
because there are some mods that only exist client or server side.
In the future, the ability to create and share "modpacks" will resolve this problem,
as modpacks will be able to keep track of mods that may not apply for a game target.

In the mean time, we suggest using an installation of SMM or ficsit-cli on your client computer
so that you can use the same profile to manage both your client and remote server install.
You can then export the SMM or ficsit-cli profile
and send file to your server members so they can configure their own installs accordingly.

If you encounter any one-side-only mods
you will have to switch to using separate profiles for the server and client until the Modpacks feature is released.

== Configuring Mods on Servers

There is not currently an interface for adjusting mod configurations remotely on dedicated servers.
Although xref:ForUsers/ConfiguringMods.adoc#_mod_savegame_settings[Mod Savegame Settings]
can be configured using their usual interface,
there is not currently an interface for adjusting
xref:ForUsers/ConfiguringMods.adoc#_mod_configuration_options[Mod Configurations]
remotely on dedicated servers.
As a result, you should configure mods client side and copy the config files over to the server.

Note that some mods could stop working correctly or behave unexpectedly if client and server configs don't match.
Expand Down
7 changes: 3 additions & 4 deletions modules/ROOT/pages/ForUsers/SatisfactoryModManager.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,11 @@ https://github.com/satisfactorymodding/SatisfactoryModManager/releases[GitHub re

3. Depending on your browser, you may need to take some additional steps to convince it to download the file.
Check your browser's download queue to see if it claims the mod manager "is not commonly downloaded".
On Chrome, click the "Keep" button.
On Edge, click on the three-dots menu, select the "Keep" option,
click "Show More", then click "Keep anyway".
Optionally, learn more about why this message appears
xref:faq.adoc#_are_satisfactory_mods_safe[here].

- On Chrome, click the "Keep" button.
- On Edge, click on the three-dots menu, select the "Keep" option,
click "Show More", then click "Keep anyway".
4. Go to the heading that matches what operating system you're using and follow the steps below to install it.

** Windows
Expand Down
2 changes: 1 addition & 1 deletion modules/ROOT/pages/ManualInstallDirections.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ or send a PR via 'Edit This Page' in the top right.
====

You should use Satisfactory Mod Manager to install mods on Linux, where it works out of the box.
Information for downloading SMM can be found xref:index.adoc[on the docs homepage].
Information for downloading SMM can be found xref:ForUsers/SatisfactoryModManager.adoc[on the respective page].

== Installing Mods on Dedicated Servers

Expand Down
5 changes: 5 additions & 0 deletions modules/ROOT/pages/faq.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,11 @@ You can find various log files at different locations:
- `FactoryGame.log` is produced by running the game and includes both base-game and mod log messages.
It can be found at `%LOCALAPPDATA%/FactoryGame/Saved/logs`
- Satisfactory Mod Manager's internal log files can be found at `%LOCALAPPDATA%\SatisfactoryModManager\logs`
- (For mod developers) The Unreal Editor's crash logs can be found in one of the following locations
depending on when/how it crashed:
- `%appdata%\Unreal Engine\AutomationTool\Logs\`
- `%LOCALAPPDATA%\UnrealEngine\<the engine version here>\Saved\Logs`
- `<your modding project folder>\Saved\Logs`

[id="Files_SMMProfiles"]
=== Mod Manager Profiles
Expand Down
Loading