From 043cb7929afb191a2d46e857e42f9ecdc86188dd Mon Sep 17 00:00:00 2001 From: Jan Krassnigg Date: Sun, 25 Aug 2024 12:41:11 +0200 Subject: [PATCH] Added Fileserve documentation --- pages/docs/projects/data-directories.md | 4 +- pages/docs/runtime/filesystem.md | 3 +- pages/docs/toc.md | 2 +- pages/docs/tools/fileserve.md | 130 ++++++++++++++++++++++- pages/docs/tools/media/fileserve-app.png | Bin 0 -> 51641 bytes 5 files changed, 132 insertions(+), 7 deletions(-) create mode 100644 pages/docs/tools/media/fileserve-app.png diff --git a/pages/docs/projects/data-directories.md b/pages/docs/projects/data-directories.md index c840b29..30b946d 100644 --- a/pages/docs/projects/data-directories.md +++ b/pages/docs/projects/data-directories.md @@ -16,7 +16,7 @@ Typically you should use the editor to configure which folders will be accessibl Here you can add, remove and reorder them. Setting up the data directories of a project should be one of the very first steps after creating a new project. -You may notice the `>sdk` and `>project` prefixes. These are *special directory* indicators, meaning those paths are relative to the *SDK directory* (where the engine is installed) or the *project directory* (where your project is located). These indicators are automatically inserted when you browse for a folder. They enable the engine to find the same folder again, even if you move the project, or you need to stream the data using [FileServe (TODO)](../tools/fileserve.md). +You may notice the `>sdk` and `>project` prefixes. These are *special directory* indicators, meaning those paths are relative to the *SDK directory* (where the engine is installed) or the *project directory* (where your project is located). These indicators are automatically inserted when you browse for a folder. They enable the engine to find the same folder again, even if you move the project, or you need to stream the data using [FileServe](../tools/fileserve.md). ### From Custom Code @@ -26,7 +26,7 @@ You can also mount data directories from code. Usually you would do this either * [FileSystem](../runtime/filesystem.md) -* [FileServe (TODO)](../tools/fileserve.md) +* [FileServe](../tools/fileserve.md) * [Projects](projects-overview.md) * [Application (TODO)](../runtime/application/application.md) * [Game States](../runtime/application/game-state.md) diff --git a/pages/docs/runtime/filesystem.md b/pages/docs/runtime/filesystem.md index c1e6467..c15ad06 100644 --- a/pages/docs/runtime/filesystem.md +++ b/pages/docs/runtime/filesystem.md @@ -174,4 +174,5 @@ Basically you give it some path, and it will return under which absolute path an ## See Also - +* [Resource Management (TODO)](resource-management.md) +* [FileServe](../tools/fileserve.md) diff --git a/pages/docs/toc.md b/pages/docs/toc.md index 1acac59..d1aa3c8 100644 --- a/pages/docs/toc.md +++ b/pages/docs/toc.md @@ -339,7 +339,7 @@ ## [Project Export](Shipping/project-export.md) # Tools ## [ArchiveTool](tools/archivetool.md) -## [FileServe (TODO)](tools/fileserve.md) +## [FileServe](tools/fileserve.md) ## [HeaderCheck Tool](tools/headercheck.md) ## [ezInspector](tools/inspector.md) ## [MiniDump Tool](tools/minidumptool.md) diff --git a/pages/docs/tools/fileserve.md b/pages/docs/tools/fileserve.md index 8659129..9f00d7e 100644 --- a/pages/docs/tools/fileserve.md +++ b/pages/docs/tools/fileserve.md @@ -1,11 +1,135 @@ # FileServe - - This is the GUI front-end and the server of the file-serving functionality. It is used to stream project data over a network to a connected (mobile) device. -This feature is fully functional, but currently undocumented. +![FileServe application](media/fileserve-app.png) + +## Introduction + +On PCs there are no restrictions for file access and there is no deployment step required when you modify data or your application, which is why it is the most convenient platform to work with. + +However, many other platforms have very strict rules how to *deploy* an application and which files they can access. Often you need to build a package that contains all the data, that your app may need to access. If you want to iterate on things, such as shaders, particle effects or level design, you have to repeat this lengthy process every single time, even though you only touch a few files. + +Additionally, you may only work with a small test level, but if you also want to test with larger amounts of data every once in a while, your package needs to include all of this data, which can make the deployment step quite slow. + +To solve this issue, the EZ [fileSystem](../runtime/filesystem.md) makes it possible to get its files not from the device itself, but instead streamed over a network connection, from a development PC. You then deploy a much smaller package, that contains nearly no data files, and have all files sent over on demand. Files are cached on the device, such that repeated accesses don't need to re-send unchanged files. + +This means creating and deploying app packages becomes much faster. Additionally, you can now utilize the [resource manager's (TODO)](../runtime/resource-management.md) functionality to *reload modified resources*. Therefore, you can modify any file on the development PC, and then hot-reload that data onto the device, without even restarting the app. And even in situations where you need to restart the app on the device, this is still much faster than having to do a full re-deployment. + +Note that there is also [ezInspector](inspector.md), that you can also connect to your remote app, so that you can get additional insights, such as the log output. + +## How to Enable Fileserve Functionality + +Generally the fileserve functionality is added to the engine through the `ezFileservePlugin`. Enabling it is thus just a matter of loading that plugin during engine initialization. If your game is built on top of `ezGameApplication` (such as [ezPlayer](player.md)), it is automatically enabled in development builds for platforms that have file access restrictions (see `ezGameApplication::Init_LoadRequiredPlugins()` for details). This is also true for [ezInspector](inspector.md) support. + +If your game is [using a custom application class (TODO)](../runtime/application/application.md), make sure this is set up in your code. The [Shader Explorer Sample](../../samples/shader-explorer.md) is such an application and should be used as reference. + +If you want more control over the fileserve connection in your application, have a look at `ezFileserveClient`. + +## Shader Explorer Sample + +The [Shader Explorer Sample](../../samples/shader-explorer.md) is great to try out the fileserve functionality. In `ShaderExplorer.h` you can find the `#define USE_FILESERVE`, which is `OFF` by default, but can be easily forced to `ON` even when running on a PC. This is useful to try out fileserve on the same machine, and verify that it works in general. + +## The ezFileServe Application + +*ezFileServe* is the GUI application that provides the *server* functionality. It has to run on the PC that has access to the game's data. + +> **IMPORTANT** +> +> ezFileServe needs to know where the *project specific* data for your game is, ie where the main project folder is. Thus it can only serve data for one specific project at a time. If this path is not provided through a command line argument, it will ask for it right at startup. If you cancel this, or select the wrong folder, clients can connect, but will fail to find their files. + +### ezFileserve UI + +At the very top it displays the detected network adaptors. This may be important to know, if you need to configure firewalls to let traffic through to this device. + +Below that, it lists the *special directories*. Some of these are automatically set. The **project** special directory is the most important one for the client to find its files. If you try different apps on a device, be certain that you restart ezFileserve and set the correct project path each time. Special directories are typically provided through the command line `-specialdirs`. If you launch ezFileserve from the editor (*Tools > Launch Fileserve...*) it automatically sets this. If it is not provided, ezFileserve will ask for a project folder at startup. + +Further down there are three tabs: + +* **Activity**: This is a log of all activity. Some entries have tooltips with explanations. +* **Files**: A list of all the files that were accessed and how often. +* **Clients**: Information about clients and which data directories they mounted. It is possible to connect with multiple clients to a single file server at the same time. + +### Shader Compilation + +ezFileserve loads the [shader compiler plugins](shadercompiler.md). This enables shader compilation on the host PC, for platforms that do not support shader compilation on device. + +### Reloading Resources + +In the *Activity* tab there is a button **Trigger Reload Resources**. This instructs the connected clients to reload all changed resources. Use this, if you modified a file on the PC, such as a shader, and want to see the change on device without restarting the app. + +### Connect To Client + +The button at the bottom shows a dialog that asks you for the IP address of a device that you want to connect to. Try this out, if you have issues getting a network connection between your devices. Often devices have multiple different IP addresses, depending through which network adapters they are reachable. If in doubt, try all of them. + +For more information, see [Connecting to ezFileServe](#connecting-to-ezfileserve). + +### ezFileserve Command Line Arguments + +* `-fs_port XYZ`: By default ezFileserve uses **port 1042**. This command line argument overrides this value. In this case, the client has to be adjusted to know about the different port. use `ezFileserveClient::AddServerAddressToTry("ip:port")` to do so. + +* `-specialdirs Name Path Name Path ...` Adds special directories. Each one has to be a pair of a "name" and a "path". The path should be an absolute path to an existing folder on disk. This is used for when clients need to mount data directories. They can use *special directories* to have them redirected to the correct path on different devices. The most common use case is that games mount the `>project` folder and the `>sdk/Data/Base` folder, using `>project` and `>sdk` as the respective *special directories*. + +* `-fs_close_timeout seconds`: If given, the application automatically shuts down when no client is connected anymore and a certain timeout is reached. Once a client connects, the timeout is reset. This timeout has no effect as long as no client has connected. + +* `-fs_wait_timeout seconds`: If given, the server waits for a limited time for any client to connect and closes automatically, if no connection is established. Once a client connects, this timeout becomes irrelevant. + +## Connecting to ezFileServe + +Connecting from a device to the host PC isn't always straight forward, for several reasons. + +1. The client doesn't know the IP of the server. +1. Firewalls may block communication between devices. + +Unfortunately it isn't possible to solve these issues fully automatically, but there are different approaches. + +### ezFileserve.txt + +To tell the client (your game) the IP to connect to, create a file called `ezFileserve.txt` and put it into the folder next to the game's binary. This file should contain only a single line, with IP and port information: + +```cmd +192.168.0.11:1042 +``` + +This needs to be deployed to your device and you must redeploy your app if you change the file. If this doesn't work, check that you put in the correct IP of your development PC, often PCs have multiple network adapters and thus multiple different IPs. + +> **IMPORTANT** +> +> Make sure you get the casing of `ezFileserve.txt` right, otherwise it may simply not get found. + +### Injected Command Line + +You can get the same data into the system using the `-fs_server` command line (see below). If you have a way to start your app with custom command line arguments, this may be quicker to do, than to redeploy with a different ezFileserve.txt file. + +### Attempt to Reach from ezFileserve + +Instead of the above methods, you can also try to connect from the host PC to the client device using the **Connect To Client** button. Launch the app on the device, then enter the IP of the device on the host PC. If all goes well, the PC will then send its own connection information to the device, which then in turn uses that information to connect to the file server. In case of success, the device stores this information, such that the next time it starts, it can already connect without further help. + +### Troubleshooting + +If you attempt to connect from a device to a PC for the first time, you may need to try different methods, before one of them succeeds. This is often due to + +1. not knowing which IP of server and client to use and +1. the firewall actively blocking communication. + +The former is basically trial and error. For the server, ezFileserve displays its own IPs at the top. Only one of them will work, though. Put the different IPs into `ezFileserve.txt`, redeploy and see if that works. + +However, due to firewalls, you may *also* try to connect from ezFileserve using the **Connect To Client** feature, if you know the IP of your device. This can also help to tell the firewall that you indeed want to talk to that device, and that it should not block incoming connection attempts from that device. + +Try these methods in different orders and do repeat failed methods. Also check your firewall settings and logs, it may show you blocked activities. Once you manage to get through *once*, it's usually going to work without problems from then on, since that means the firewall now accepts this network traffic, and the EZ application caches the IP that it successfully connected with. + +## Client Command Line Arguments + +Be aware that command line arguments don't need to be set on the command line. You can hard code arguments in your application using `ezCommandLineUtils::InjectCustomArgument()` at application startup. + +* `-fs_off`: Overrides the use of fileserving to be off, even if the plugin is loaded. + +* `-fs_server ip:port` The address to the server to connect to. The default is `localhost:1042`, which means connections only work on the same PC. For more information, see [Connecting to ezFileServe](#connecting-to-ezfileserve). + +* `-fs_timeout seconds`: How long the client will wait for a connection. A zero timeout means the application will wait indefinitely. ## See Also * [FileSystem](../runtime/filesystem.md) +* [ezInspector](inspector.md) +* [Supported Platforms](../build/supported-platforms.md) diff --git a/pages/docs/tools/media/fileserve-app.png b/pages/docs/tools/media/fileserve-app.png new file mode 100644 index 0000000000000000000000000000000000000000..550314b04481464ba4647b0c96d9a757bf18e609 GIT binary patch literal 51641 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 literal 0 HcmV?d00001