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 #295

Merged
merged 9 commits into from
May 8, 2024
3 changes: 2 additions & 1 deletion cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@
"reccomend",
"outselves",
"favortied",
"destory"
"destory",
"conveneint"
]
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
24 changes: 9 additions & 15 deletions modules/ROOT/pages/Development/Cpp/index.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -89,24 +89,18 @@ If you want to learn more about that, there are plenty of good resources availab
In order to write {cpp} mods, you will require both general {cpp} knowledge, and knowledge about how {cpp} applies to Unreal Engine systems.
You can find a quick guide to the Unreal portion in the https://docs.unrealengine.com/en-US/Programming/Introduction/index.html[Unreal Documentation].

== Warning
== Modding Capabilities

Due to technical limitations, there are some functions/features of Satisfactory and Unreal Engine that
we are not able to access or need to use a work around to call correctly. This is the world we live in right now, and we can't do much about it.
As Satisfactory is packaged as a modular build and the developers distribute the headers and `pdb`s for us,
and mods are loaded as Unreal plugins,
there is very little of the game that {cpp} mods _can't_ modify.
It usually just comes down to how much patience you have to figure out how to do it.

If you experience a crash or some undefined behavior while using a function from Unreal Engine or Satisfactory,
you should read the javadoc comment that has been added to the function. Sometimes the comment will tell you that it doesn't work
and suggest you use the workaround written in the comment.
you should read the doc comment that has been added to the function.
Sometimes the comment will tell you that it doesn't work
and suggest you use the workaround written in the comment,
or it may contain valuable context about how the function can be used.

If it still doesn't work, and you are **absolutely sure** that you are using it correctly,
contact the SML developers on the Discord for further advice.

If your mod requires calling a Satisfactory function that is not compiled into their binaries,
f.e. when the function is marked as `inline`, then it will create a log entry starting with
`[FATAL] Executable missing symbol with mangled name`.
This will you also tell you the mangled symbol name it was not able to find.
You can still run the game, but when your mod tries to call this function, the game will crash.
The crash may not cause the crash reporter to open, which is a signal that you should then checkout
FactoryGame.log since it will tell you which symbol got called.
This information will be very useful in fixing the bug, so keep it on hand if you plan to ask for help with your mod on the Discord.

26 changes: 26 additions & 0 deletions modules/ROOT/pages/Development/OpenSourceExamples.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -95,3 +95,29 @@ _Notable Mod Loader Features Used:_
** Tracking if the user has modified the config from the defaults
to know if future mod updates should automatically overwrite them with updated default data
** Programatically modifying config values and saving the changes

== Screw It

Meme mod, changes most things to be named and/or look like Screws.

_Source Code_: Linked on the https://ficsit.app/mod/ScrewIt[Mod Page]

_Mod Type_: Hybrid Blueprint/{cpp}

_Notable Techniques Used:_

* Using the Asset Registry to quickly discover subclasses (both vanilla and modded)
* Asynchronous asset loading to avoid stalling the game while waiting for disk I/O
* CDO edits in bulk (on the aforementioned loaded classes), implemented in {cpp}
* Hybrid Blueprint/{cpp} game instance module
** Root instance's final implementations is in Blueprint,
but it is backed by a custom {cpp} parent class to be
able to easily reference Blueprint-only assets

_Notable Satisfactory Features Used:_

* None

_Notable Mod Loader Features Used:_

* Access Transformers, to be able to change otherwise inaccessible member variables.
57 changes: 50 additions & 7 deletions modules/ROOT/pages/ForUsers/DedicatedServerSetup.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,19 @@ 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="UnsupportedHosting"]
==== Unsupported Hosts

We do not currently maintain a list of server hosts that support modded servers.

The following 3rd party hosting services are known to **NOT support mods**,
regardless of what their websites and marketing pages claim:

- low.ms

If you believe a site is listed here in error,
contact us about it on the https://discord.gg/xkVJ73E[Discord].

[id="GetModManager"]
== Use a Mod Manager to Connect to the Server

Expand All @@ -64,7 +77,7 @@ You could also install ficsit-cli on the server and interact with its file syste

[IMPORTANT]
====
Since dedicated Server support is still a work in progress,
Since dedicated server support is still a work in progress,
there are TWO different versions of Satisfactory Mod Manager available!

- SMM2 is the one automatically downloaded when you visit https://smm.ficsit.app/. It doesn't support dedicated servers.
Expand Down Expand Up @@ -209,20 +222,31 @@ Contact us on the https://discord.gg/xkVJ73E[Discord Server] if something is con
Once you have set up the mod manager of choice you can start installing mods on the server.
Read the below warning, then check out the set of directions specific to the mod manager you chose.

[NOTE]
====
[id="CheckModDedicatedServerSupport"]
=== Checking if a Mod Supports Dedicated Servers

Not all mods are compatible with dedicated servers.
They must be specially compiled and packaged for the alternative format.
A greater percentage of mods will support servers once Satisfactory 1.0 launches since
all developers will be forced to recompile their mods for that anyways.

As dedicated server support is still a work in progress,
there is not currently a conveneint way to filter mods for dedicated server support on the ficsit.app website.
there is not currently a convenient way to filter mods for dedicated server support on the ficsit.app website.

When viewing the webpage for a mod, check the "Latest Version" section -
if you see a table with a "Server" column, and a checkmark is present on your server type,
the mod is compatible with dedicated servers.
If you see an X or the table is absent, the mod does not yet support dedicated servers.
If you see an X, or the table is absent, the mod does not yet support dedicated servers.

.Example Mod that Supports Dedicated Servers
image::DedicatedServers/ExampleSupportsDedicatedServers.png[Supported Example]
.Example Mod that Does NOT Support Dedicated Servers
image::DedicatedServers/ExampleDoesNotSupportDedicatedServers.png[No Support Example]

Satisfactory Mod Manager offers a "compatible" filtering mode which,
while managing a server install, causes only server-compatible mods to be displayed.

Ficsit-cli does not currently have a way to filter mods for dedicated server support.
====

[id="ServerClientConsistency"]
=== Important: Server-Client Mod Consistency
Expand All @@ -233,7 +257,7 @@ preventing you from connecting.

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,
In the future, the ability to create and share "modpacks" will be introduced to 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
Expand Down Expand Up @@ -266,6 +290,25 @@ 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="JoiningModdedDedicatedServer"]
== Joining a Modded Dedicated Server

As described in the link:#ServerClientConsistency[Server-Client Mod Consistency] section,
client players must have the same mods installed as the server to be able to join.
In the case of a failed join due to a mod mismatch,
SML will attempt to provide a meaningful disconnect message, but this is not always possible.

If you're having trouble joining your server,
first verify that it is possible to connect to the server in its unmodified state
by removing all mods from the server and client.
Most connection issues people encounter also affect the unmodified server.
If that works, try adding mods back in small groups to see which one is causing the problem.

If you're still encountering problems,
join the https://discord.gg/xkVJ73E[Discord]
and upload logs from both your client and server in the `#help-using-mods` channel.

[id="ModdedServerConfiguration"]
== Configuring Mods on Servers

There is not currently an interface for adjusting
Expand Down
4 changes: 3 additions & 1 deletion modules/ROOT/pages/faq.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,9 @@ and we will investigate and update the info if necessary.

== Do mods work with dedicated servers?

In general, yes, but exact support will vary depending on the mod.
_Or: How do I tell if a mod works on Dedicated Servers?_

In general, mods do work on dedicated servers, but exact support will vary depending on the mod.
See xref:ForUsers/DedicatedServerSetup.adoc[Installing Mods on Dedicated Servers] for more details.
The xref:ForUsers/DedicatedServerSetup.adoc#InstallingMods[Installing Mods section]
describes how to tell if an individual mod supports Dedicated Servers.
Expand Down
Loading