diff --git a/.editorconfig b/.editorconfig index a3735d6..443676b 100644 --- a/.editorconfig +++ b/.editorconfig @@ -39,7 +39,7 @@ space_between_attribute_sections = false # CA1002: Do not expose generic lists dotnet_diagnostic.CA1002.severity = none # CA1008: Enums should have zero value -# - The enums in this case are modeling Steam enums, so I have to match them exactly. +# - The enums in this case are modeling enums, so I have to match them exactly. dotnet_diagnostic.CA1008.severity = none # CA1014: Mark assemblies with CLSCompliant dotnet_diagnostic.CA1014.severity = none diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 2a4a739..ef65735 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -8,12 +8,12 @@ assignees: '' --- **Describe the bug** -- A clear and detailed description of what the bug is. +- A clear and detailed description of what the bug is. - Describe what steps you've taken to troubleshoot the issue. - Explain what your expected behavior of the app is. What is the difference between what it is currently doing, and what you think it should be doing. **Additional Details** - - Platform you are running SteamPrefill on: [e.g Windows, Linux, Docker, Ich777's Unraid App] + - Platform you are running EpicPrefill on: [e.g Windows, Linux, Docker, Ich777's Unraid App] - Discord Username (if you are part of the Lancache Discord Server) : [e.g username#0000] **Screenshots** diff --git a/.gitignore b/.gitignore index 9e255ad..13c62aa 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ lockfile *.user EpicPrefill/Properties/PublishProfiles/FolderProfile.pubxml /Benchmarks/BenchmarkDotNet.Artifacts/results +/docs/RenderAnsiToSvg/__pycache__/*.pyc diff --git a/docs/RenderSvgs.py b/docs/RenderSvgs.py index 4e9cc58..73f27fc 100644 --- a/docs/RenderSvgs.py +++ b/docs/RenderSvgs.py @@ -29,4 +29,4 @@ a2svg.renderAnsiToSVG(inputDirectory) # Opens the specified file in the browser automatically after each run, to display the changes immediately. Helpful for debugging or updating a .ansi file -os.system(f'start {inputDirectory}/svg/overview.svg') \ No newline at end of file +# os.system(f'start {inputDirectory}/svg/overview.svg') \ No newline at end of file diff --git a/docs/ReplaceUnicodeEscapeChar.ps1 b/docs/ReplaceUnicodeEscapeChar.ps1 index 1163a8c..1fc5ce5 100644 --- a/docs/ReplaceUnicodeEscapeChar.ps1 +++ b/docs/ReplaceUnicodeEscapeChar.ps1 @@ -1,5 +1,5 @@ #TODO this needs to be run once prior to running RenderSvgs.py, otherwise python will choke on the unicode characters -$directoryPath = "C:\Users\Tim\Dropbox\Programming\Lancache-Prefills\SteamPrefill\docs\img\" +$directoryPath = "C:\Users\Tim\Dropbox\Programming\Lancache-Prefills\EpicPrefill\docs\img\" # Get all .ansi files in the directory $files = Get-ChildItem -Path $directoryPath -Filter "*.ansi" diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index d42bc30..6f05c09 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -58,8 +58,6 @@ plugins: # validate_external_urls: True # raise_error: True # ignore_urls: - # - https://steamdb.info/* - # - https://steamstat.us/* # - https://waveform.com/tools/bufferbloat/* # https://github.com/lukasgeiter/mkdocs-awesome-pages-plugin @@ -89,5 +87,5 @@ nav: - ... | flat | detailed-command-usage/*.md - Dev Guides: - ... | flat | dev-guides/*.md - - Miscellaneous: - - ... | flat | miscellaneous/*.md \ No newline at end of file + - Miscellaneous: + - ... | flat | miscellaneous/*.md diff --git a/docs/mkdocs/faq.md b/docs/mkdocs/faq.md new file mode 100644 index 0000000..aa1d46b --- /dev/null +++ b/docs/mkdocs/faq.md @@ -0,0 +1,91 @@ +# Frequently Asked Questions + +## Can I run {{prefill_name}} on the Lancache server? + +You certainly can! All you need to do is install **{{prefill_name}}** onto the server, and run it as you regularly would! + +If everything works as expected, you should see a message saying it found the server at `127.0.0.1` + +Prefill running on Lancache Server + +Running from a Docker container on the Lancache server is also supported! You should instead see a message saying the server was found at `172.17.0.1` + +Prefill running on Lancache Server in Docker + +Running on the Lancache server itself can give you some advantages over running **{{prefill_name}}** on a client machine, primarily the speed at which you can prefill apps. +Since there is no network transfer happening, the `prefill` should only be limited by disk I/O and CPU throughput. +For example, using a **SK hynix Gold P31 2TB NVME** and running `prefill --force` on previously cached game yields the following performance: +Prefill running on Lancache Server in Docker + +--- + +## Can {{prefill_name}} be run on a schedule? + +Yes it can! Scheduled jobs can be easily setup on Linux using `systemd` services, and can be flexibly configured to run on any schedule that you desire. +See [Configuring a Nightly Job](https://tpill90.github.io/{{repo_name}}/install-guides/Scheduled-Job/) for a guide on how to get setup with a schedule. + +--- + +## Can I fill my cache using previously installed {{gaming_service_name}} games? + +Unfortunately it is not possible to fill a Lancache using games that have been installed with {{gaming_service_name}}. The installed games are in a different format than what Lancache caches, as they are decrypted and unzipped from the raw request. The decryption/unzip process is not reversible. Thus, the only way to get games properly cached is to redownload them using either **{{prefill_name}}** or **{{gaming_service_name}}** + +--- + +## Where does {{prefill_name}} store downloads? + +**{{prefill_name}}** actually doesn't save anything at all! It will simply download data from the Lancache as quickly as it can, without saving the data to disk. The Lancache instance will be what is writing game downloads to disk as something is being downloaded through it, whether by using **{{gaming_service_name}}** or **{{prefill_name}}**. + +--- + +## How do I pause my running downloads? + +You can pause your downloads at any time by simply pressing `CTRL + C`, which will immediately terminate the application. This won't hurt anything at all, and **{{prefill_name}}** will pickup where it left off during the next `prefill` run. + +--- + +## Is it possible to prefill apps I don't own? + +While it would certainly be helpful (and cheaper!) to prefill apps that you don't own, it is unfortunately not possible. In order to download from the {{gaming_service_name}} network, {{gaming_service_name}} requires you to authenticate with your username and password. {{gaming_service_name}} keeps track of which apps you own, which is how **{{prefill_name}}** displays the list of available apps in `select-apps`. When **{{prefill_name}}** attempts to download any app (owned or unowned) the {{gaming_service_name}} network will validate that you do indeed own that app. If you do not own it, then the {{gaming_service_name}} network will simply refuse to let you download it. + +--- + +## How can I limit download speeds? + +You may want to limit the download speed of **{{prefill_name}}** to prevent it from potentially saturating your entire connection, causing other devices to suffer from massive latency and poor speeds. This issue is known as bufferbloat, and more detailed information on the issue can be found here: [What is bufferbloat?](https://waveform.com/tools/bufferbloat) + +**{{prefill_name}}** does not currently contain any functionality to limit its own download speed, and due to the way that downloads are implemented will likely never be able to throttle its own download speed. Additionally, even if **{{prefill_name}}** was able to throttle itself, the same issue would persist with downloads through **{{gaming_service_name}}**. + +One method to limit bandwidth would be to configure _Quality of Service (QOS)_ on your router, limiting bandwidth to the Lancache server, or by prioritizing other network traffic. A general overview of QOS can be found here : [Beginners guide to QOS](https://www.howtogeek.com/75660/the-beginners-guide-to-qos-on-your-router/) + +For more brand specific guides (non-exhaustive), see : + +- [Asus](https://asus.com/support/FAQ/1013333/) +- [Netgear](https://kb.netgear.com/25613/How-do-I-enable-Dynamic-QoS-on-my-Nighthawk-router) +- [Linksys](https://linksys.com/support-article?articleNum=50216) +- [TP-Link](https://tp-link.com/us/support/faq/557/) + +--- + +## My logs have weird characters that make it hard to read. Is there any way to remove them? + +Depending on the terminal that you are using, and what colors your system supports, you may see output similar to the following: + +```text +[6:20:46 PM] Starting Fortnite +[6:20:46 PM] Downloading 42.91 GiB +``` + +One of the reasons you may be seeing this is that your terminal is misreporting what capabilities it supports, thus receiving output that it can't handle. To remove these characters from the log, simply use the flag `--no-ansi` which will remove all unsupported characters from the application's output. + +--- + +## Can I use more than one {{gaming_service_name}} account at the same time? + +Unfortunately {{prefill_name}} doesn't directly support multiple accounts as it was written to be a single user application. Fortunately there is however a fairly simple workaround. {{prefill_name}} is designed as a "self-contained" application, meaning that it keeps all of its configuration inside of the folder where it is installed. + +In order to use two (or more) accounts at the same time, you should create a separate instance of {{prefill_name}} for each account. Suppose that you have two accounts that you would like to use, when correctly setup the folder structure should look similar to this: + +Structure required for two {{gaming_service_name}} accounts + +After the multiple instances have been created, they can both be used as usual by logging in and running the prefill. diff --git a/docs/mkdocs/images/AutoDns-Docker.ansi b/docs/mkdocs/images/AutoDns-Docker.ansi new file mode 100644 index 0000000..a9fa45d --- /dev/null +++ b/docs/mkdocs/images/AutoDns-Docker.ansi @@ -0,0 +1 @@ +[6:20:46 PM] Detected Lancache server at 172.17.0.1 [172.17.0.1] diff --git a/docs/mkdocs/images/AutoDns-Server.ansi b/docs/mkdocs/images/AutoDns-Server.ansi new file mode 100644 index 0000000..e41ee54 --- /dev/null +++ b/docs/mkdocs/images/AutoDns-Server.ansi @@ -0,0 +1 @@ +[6:20:46 PM] Detected Lancache server at localhost [127.0.0.1] diff --git a/docs/mkdocs/images/AutoDns-ServerPerf.ansi b/docs/mkdocs/images/AutoDns-ServerPerf.ansi new file mode 100644 index 0000000..177c1b0 --- /dev/null +++ b/docs/mkdocs/images/AutoDns-ServerPerf.ansi @@ -0,0 +1 @@ +Downloading.. ━━━━━━━━━━━━━━━━━━━━━━━━━━ 18% 00:00:09 8.0/48.2 GiB 24.7 Gbit/s diff --git a/docs/mkdocs/images/Multi-User-File-Structure.ansi b/docs/mkdocs/images/Multi-User-File-Structure.ansi new file mode 100644 index 0000000..ab665b5 --- /dev/null +++ b/docs/mkdocs/images/Multi-User-File-Structure.ansi @@ -0,0 +1,11 @@ +. +├── EpicPrefill-Account1 +│ ├── Config +│   │   └── account.config +│   ├── EpicPrefill +│   └── update.sh +└── EpicPrefill-Account2 + ├── Config + │   └── account.config + ├── EpicPrefill + └── update.sh diff --git a/docs/mkdocs/images/svg/AutoDns-Docker.svg b/docs/mkdocs/images/svg/AutoDns-Docker.svg new file mode 100644 index 0000000..99409a2 --- /dev/null +++ b/docs/mkdocs/images/svg/AutoDns-Docker.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + +[6:20:46 PM] Detected Lancache server at 172.17.0.1 [172.17.0.1] + + + + \ No newline at end of file diff --git a/docs/mkdocs/images/svg/AutoDns-Server.svg b/docs/mkdocs/images/svg/AutoDns-Server.svg new file mode 100644 index 0000000..8ed34eb --- /dev/null +++ b/docs/mkdocs/images/svg/AutoDns-Server.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + +[6:20:46 PM] Detected Lancache server at localhost [127.0.0.1] + + + + \ No newline at end of file diff --git a/docs/mkdocs/images/svg/AutoDns-ServerPerf.svg b/docs/mkdocs/images/svg/AutoDns-ServerPerf.svg new file mode 100644 index 0000000..78c74ce --- /dev/null +++ b/docs/mkdocs/images/svg/AutoDns-ServerPerf.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + +Downloading.. ━━━━━━━━━━━━━━━━━━━━━━━━━━  18% 00:00:09 8.0/48.2 GiB 24.7 Gbit/s + + + + \ No newline at end of file diff --git a/docs/mkdocs/images/svg/Multi-User-File-Structure.svg b/docs/mkdocs/images/svg/Multi-User-File-Structure.svg new file mode 100644 index 0000000..761a4a5 --- /dev/null +++ b/docs/mkdocs/images/svg/Multi-User-File-Structure.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +. +├── EpicPrefill-Account1 +│   ├── Config +│   │   └── account.config +│   ├── EpicPrefill +│   └── update.sh +└── EpicPrefill-Account2 +    ├── Config +    │   └── account.config +    ├── EpicPrefill +    └── update.sh + + + + \ No newline at end of file