Skip to content

Commit 2e1bda2

Browse files
committed
release: Changes for release 3.3.5
1 parent 73c3923 commit 2e1bda2

File tree

527 files changed

+54681
-46734
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

527 files changed

+54681
-46734
lines changed

.editorconfig

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
[*.md]
2+
end_of_line = lf
3+
insert_final_newline = true
4+
indent_style = space
5+
indent_size = 4
6+
charset = "utf-8"
7+
# markdown files sometimes use trailing whitespace for formatting
8+
trim_trailing_whitespace = false

.gitattributes

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,3 @@
1-
*.cs diff=csharp text eol=lf
2-
*.cginc text
3-
*.shader text
4-
*.mat merge=unityyamlmerge eol=lf
5-
*.anim merge=unityyamlmerge eol=lf
6-
*.unity merge=unityyamlmerge eol=lf
7-
*.prefab merge=unityyamlmerge eol=lf
8-
*.physicsMaterial2D merge=unityyamlmerge eol=lf
9-
*.physicMaterial merge=unityyamlmerge eol=lf
10-
*.asset merge=unityyamlmerge eol=lf
11-
*.meta merge=unityyamlmerge eol=lf
12-
*.controller merge=unityyamlmerge eol=lf
13-
*.dll filter=lfs diff=lfs merge=lfs -text
14-
*.lib filter=lfs diff=lfs merge=lfs -text
15-
*.jpeg filter=lfs diff=lfs merge=lfs -text
16-
*.png filter=lfs diff=lfs merge=lfs -text
17-
Runtime/iOS/EOSSDK.framework/EOSSDK filter=lfs diff=lfs merge=lfs -text
18-
*.dylib filter=lfs diff=lfs merge=lfs -text
19-
*.exe filter=lfs diff=lfs merge=lfs -text
1+
*.md text eol=lf
2+
*.json text eol=lf
3+
*.meta text eol=lf

CHANGELOG.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,52 @@
22
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
33
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
44

5+
## [3.3.5] - 2025-01-27
6+
7+
## Changelog
8+
9+
### Changed
10+
- **Configuration System Overhaul**
11+
- The plugin now uses a new configuration system, moving away from the older `EOSConfig` in favor of `ProductConfig` and multiple `PlatformConfig` files.
12+
- Marked `EOSConfig` as obsolete and introduced better default and migration paths for platform-specific settings.
13+
- Refactored large portions of the native code into clearer modules (`Config`, `PlatformManager`, `SteamConfig`, etc.), reducing duplication and improving maintainability.
14+
- Upgraded to Visual Studio 2022 for building native binaries.
15+
16+
- **Editor & Build Process Improvements**
17+
- Refined editor windows and build scripts to better handle new config files and to auto-select defaults for newly defined platforms.
18+
- Moved many internal extension/helper classes into a “Common” area to simplify namespace usage and reduce redundancy.
19+
- Improved logging structure and behavior (including concurrency handling) in native and managed code.
20+
- Updated Unity package definitions and reorganized project files for more consistent UPM compatibility.
21+
22+
### Added
23+
- **Managed & Native Bridge Utilities**
24+
- New `ManagedToUnmanagedBridge` library to facilitate deeper integration between managed C# code and native C++ components.
25+
- Introduced a `ConsoleApplication` project in the native solution, used for testing or demonstrating plugin behavior outside of Unity.
26+
27+
- **Configuration Lifecycle Hooks & Auto-Selection**
28+
- Added a `BeforeWrite` hook in `ProductConfig` (and corresponding override logic) so the first sandbox and deployments can be automatically associated.
29+
- New “auto selection” features for client credentials, deployments, and platform defaults, improving the “first time user” experience for new projects.
30+
- Implemented `OnWriteCompleted` overrides in `ProductConfig` to reflect platform config changes immediately in the editor UI.
31+
32+
- **Quality-of-Life Features**
33+
- Added support for additional platforms (e.g., `StandaloneOSX`) and integrated missing platform checks in the plugin’s internal platform manager.
34+
- Included new null-safe logic and fallback calls for Steam integration (e.g., retry with `SteamAPI_Init` if `SteamAPI_InitSafe` fails).
35+
- Enhanced doc tooling, including link-checking scripts and improved project documentation.
36+
37+
### Fixed
38+
- **Command-Line & Credential Handling**
39+
- Corrected the implementation of command-line arguments passed from the Epic Games Launcher to ensure proper usage in native code.
40+
- Fixed null-check logic in client credential handling—particularly around newly introduced auto-selection paths and default deployments.
41+
42+
- **Concurrency & Race Condition Bugs**
43+
- Addressed competing file read/write issues in editor windows by consolidating asynchronous calls and removing race conditions.
44+
- Removed or tightened up redundant `using` statements, compile conditionals, and shared references that led to sporadic compile or runtime warnings.
45+
46+
- **Various Stability & Compatibility Issues**
47+
- Resolved lingering null-safety bugs (thread affinity, achievements, presence checks) throughout the plugin.
48+
- Fixed or removed outdated references to older configuration files (`EpicOnlineServicesConfig.json`), ensuring the new configuration paths are used cleanly.
49+
- Eliminated memory-leak and dangling-pointer issues in native code related to steam integration and the new config approach.
50+
551
## [3.3.4] - 2024-11-26
652

753
### Changed

Documentation~/command_line_export.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ This document outlines how to export the plugin from source using a command line
77

88
## BuildPackage
99

10-
The following command generates a new `com.playeveryware.eos-[VERSION].tgz` file at the indicated output directory, the same exact way it would if you created a package via Unity Editor `Tools -> EOS Plugin -> Create Package` (and subsequently pressed "Create UPM Package"):
10+
The following command generates a new `com.playeveryware.eos-[VERSION].tgz` file at the indicated output directory, the same exact way it would if you created a package via Unity Editor `EOS Plugin -> Advanced -> Create Package` (and subsequently pressed "Create UPM Package"):
1111

1212
```
1313
Unity.exe -batchMode \

Documentation~/configure_plugin.md

Lines changed: 33 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,50 @@
11
<a href="/com.playeveryware.eos/README.md"><img src="/com.playeveryware.eos/Documentation~/images/PlayEveryWareLogo.gif" alt="Readme" width="5%"/></a>
22

3-
# Configuring the Plugin
3+
# Getting Started - Configuring the Plugin
44

55
To function, the plugin needs some information from your EOS project. Be sure to read the Epic Documentation on [getting started](https://dev.epicgames.com/docs/epic-account-services/getting-started?sessionInvalidated=true) with Epic Online Services.
66

7-
1) Open your Unity project with the integrated EOS Unity Plugin.
8-
2) In the Unity editor, Open ```Tools -> EOS Plugin -> Dev Portal Configuration```.
7+
## In the Unity editor, Open ```EOS Plugin -> EOS Configuration```.
98

10-
![EOS Config Menu](/com.playeveryware.eos/Documentation~/images/dev-portal-configuration-editor-menu.png)
9+
![EOS Config Menu](/com.playeveryware.eos/Documentation~/images/eos-configuration-menu.png)
1110

12-
![EOS Config UI](/com.playeveryware.eos/Documentation~/images/eosconfig_ui.gif)
11+
![EOS Configuration](/com.playeveryware.eos/Documentation~/images/eos_configuration.png)
1312

14-
3) From the [Developer Portal](https://dev.epicgames.com/portal/), copy the configuration values listed below, and paste them into the similarly named fields in the editor tool window pictured above:
13+
## Set product settings from Epic Developer Portal
1514

16-
> [!NOTE]
17-
> For more detailed information, check out Epic's Documentation on [Creating the Platform Interface](https://dev.epicgames.com/docs/game-services/eos-platform-interface#creating-the-platform-interface).
15+
From the [Developer Portal](https://dev.epicgames.com/portal/), inside your game's `Product Settings` page, copy the configuration values listed below, and paste them into the similarly named fields in the editor tool window pictured above:
1816

19-
* ProductName
20-
* ProductVersion
21-
* [ProductID](https://dev.epicgames.com/docs/services/en-US/Glossary/index.html#D?term=ProductId)
22-
* [SandboxID](https://dev.epicgames.com/docs/services/en-US/Glossary/index.html#D?term=SandboxId)
23-
* [DeploymentID](https://dev.epicgames.com/docs/services/en-US/Glossary/index.html#D?term=DeploymentId)
24-
* [ClientSecret](https://dev.epicgames.com/docs/services/en-US/Glossary/index.html#D?term=ClientSecret)
25-
* [ClientID](https://dev.epicgames.com/docs/services/en-US/Glossary/index.html#D?term=ClientId)
26-
* EncryptionKey
27-
28-
<br />
17+
> [!NOTE]
18+
> For more detailed information, check out Epic's Documentation on [Creating the Platform Interface](https://dev.epicgames.com/docs/game-services/eos-platform-interface#creating-the-platform-interface).
2919
30-
> [!NOTE]
31-
> Click the "Generate" button to create a random key, if you haven't already configured an encryption key in the EOS portal. You can then add the generated key to the [Developer Portal](https://dev.epicgames.com/portal/).
32-
> The Encryption Key is Used for Player Data Storage and Title Storage, if you do not plan to use these features in your project or the samples (and don't want to create an Encryption Key) then the field can be left blank.
20+
* ProductName
21+
* [ProductID](https://dev.epicgames.com/docs/services/en-US/Glossary/index.html#D?term=ProductId)
22+
* [SandboxID](https://dev.epicgames.com/docs/services/en-US/Glossary/index.html#D?term=SandboxId)
23+
* [DeploymentID](https://dev.epicgames.com/docs/services/en-US/Glossary/index.html#D?term=DeploymentId)
24+
* [ClientSecret](https://dev.epicgames.com/docs/services/en-US/Glossary/index.html#D?term=ClientSecret)
25+
* [ClientID](https://dev.epicgames.com/docs/services/en-US/Glossary/index.html#D?term=ClientId)
3326

34-
4) Click `Save All Changes`.
27+
There are two other fields in the configuration editor.
3528

36-
5) Navigate to `Packages/Epic Online Services for Unity/Runtime` via the `Project` window.
29+
`ProductVersion` is a free-form numeric field, and can use any number.
3730

38-
6) Either:
39-
- Add the `Singletons.prefab`, to each of your game's scenes.
40-
- Attach `EOSManager.cs (Script)` to a Unity object, and it will initialize the plugin with the specified configuration in `OnAwake()` (this is what `Singletons.prefab` does).
31+
> [!WARNING]
32+
> The `ProductVersion` field needs to have some value inside it; it cannot be left empty.
33+
34+
`EncryptionKey` is used to encrypt uploads to the `Player Data Storage` and `Title Data Storage` EOS features. This value should be consistently used whenever uploading or downloading files from these Data Storages.
4135

4236
> [!NOTE]
43-
The included [samples](http://github.com/PlayEveryWare/eos_plugin_for_unity/blob/development/com.playeveryware.eos/com.playeveryware.eos/README.md#samples) already have configuration values set for you to experiment with!
37+
> The Encryption Key is generated automatically for you when you create a set of Client Credentials. To view the key, generate a new one - or set it to a specific value, click on the "Key" button next to the client credentials.
38+
> The Encryption Key is used for Player Data Storage and Title Storage.
39+
**Click `Save All Changes`.**
40+
41+
## Add EOS functionality to your game scene
4442

45-
If you would like to see specific examples of various EOS features in action, import the sample Unity scenes that are described below.
43+
Navigate to `Packages/Epic Online Services for Unity/Runtime` via the `Project` window.
44+
45+
Either:
46+
- Add the `Singletons.prefab`, to each of your game's scenes.
47+
- Attach `EOSManager.cs (Script)` to a Unity object, and it will initialize the plugin with the specified configuration in `OnAwake()` (this is what `Singletons.prefab` does).
48+
49+
> [!NOTE]
50+
> The included [samples](http://github.com/PlayEveryWare/eos_plugin_for_unity/blob/development/com.playeveryware.eos/README.md#samples) already have configuration values set for you to experiment with!

Documentation~/contributions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ To setup your environment on windows, follow these steps (or you can run the scr
2020
1. Install the following:
2121
- [git](https://git-scm.com/downloads)
2222
- [Unity Hub](https://unity.com/download)
23-
- [Visual Studio 2019 Community Edition](https://visualstudio.microsoft.com/vs/older-downloads/)
23+
- [Visual Studio 2022 Community Edition](https://visualstudio.microsoft.com/vs/community/)
2424

2525
2. Clone this repository and be sure to also run `git lfs pull` from the root of the repository.
2626

Documentation~/creating_the_upm_package.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ This tool (while a bit rough around the edges) allows for the generation of cust
88

99
## Steps to generate a UPM package
1010

11-
1. Go to `Tools -> EOS Plugin -> Create Package`.
11+
1. Go to `EOS Plugin -> Advanced -> Create Package`.
1212

1313
<img src="images/create-package-menu.png" width="300" />
1414

Documentation~/dev_env/Ubuntu_Development_Environment.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ Once Unity is open:
9595
1. Go to File ➝ Build Settings
9696
2. Switch the platform to "Dedicated Server."
9797
3. Click on the button labeled "Player Settings..." at the bottom left.
98-
4. Go to Tools ➝ EOS Automated Test Settings
98+
4. Go to EOS Plugin ➝ Advanced ➝ EOS Automated Test Settings
9999
5. Select the previously created `Builds/Server` directory for the "Test Server Directory" field.
100100

101101
## Help! I ran out of disk space!

Documentation~/easy_anticheat_configuration.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ The EOS plugin provides a method of automating EAC installation as part of the b
1212

1313
## Steps
1414
1) Open your Unity project with the plugin installed.
15-
2) Open the editor preferences settings for the plugin, which is avaiable in `Tools -> EOS Plugin -> Configuration`. All EAC options are located under the Tools subheader.
15+
2) Open the editor preferences settings for the plugin, which is avaiable in `EOS Plugin -> Configuration`. All EAC options are located under the EOS Plugin subheader.
1616
3) Enable EAC build steps by checking the `Use EAC` toggle.
1717
4) Set `Path to EAC private key` and `Path to EAC Certificate` to the private and public keys you previously downloaded, respectively.
1818
5) (Recommended) Set `Path to EAC splash image` to a 800x450 PNG that will display in the EAC bootstrapper.

Documentation~/eos_features.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ There are many EOS features that do not require your player to have an Epic Game
1515
|[Authentication](https://dev.epicgames.com/docs/epic-account-services/auth-interface) || ["Auth & Friends"](/com.playeveryware.eos/Documentation~/scene_walkthrough/auth&friends_walkthrough.md), [Information](/com.playeveryware.eos/Documentation~/player_authentication.md) | ✔️ |
1616
|[Custom Invites](https://dev.epicgames.com/docs/game-services/custom-invites-interface) || ["Custom Invites"](/com.playeveryware.eos/Documentation~/scene_walkthrough/customInvites_walkthrough.md) | |
1717
|[Connect Interface](https://dev.epicgames.com/docs/game-services/eos-connect-interface) || ["Auth & Friends"](/com.playeveryware.eos/Documentation~/scene_walkthrough/auth&friends_walkthrough.md) | |
18-
|[Ecommerce](https://dev.epicgames.com/docs/epic-games-store/tech-features-config/ecom) || ["Store"](/com.playeveryware.eos/Documentation~/scene_walkthrough/store_walkthrough.md), [Information](/com.playeveryware.eos/Documentation~/ecom.md) | ✔️ |
18+
|[Ecommerce](https://dev.epicgames.com/docs/epic-games-store/tech-features-config/ecom)[^2] || ["Store"](/com.playeveryware.eos/Documentation~/scene_walkthrough/store_walkthrough.md), [Information](/com.playeveryware.eos/Documentation~/ecom.md) | ✔️ |
1919
|[Friends](https://dev.epicgames.com/docs/epic-account-services/eos-friends-interface) || ["Auth & Friends"](/com.playeveryware.eos/Documentation~/scene_walkthrough/auth&friends_walkthrough.md) | ✔️ |
2020
|[Leaderboards](https://dev.epicgames.com/docs/game-services/leaderboards) || ["Leaderboards"](/com.playeveryware.eos/Documentation~/scene_walkthrough/leaderboards_walkthrough.md) | |
2121
|[Lobby](https://dev.epicgames.com/docs/game-services/lobbies) || ["Lobbies"](/com.playeveryware.eos/Documentation~/scene_walkthrough/lobbies_walkthrough.md) | |
@@ -31,11 +31,13 @@ There are many EOS features that do not require your player to have an Epic Game
3131
|[Reports](https://dev.epicgames.com/docs/game-services/reports-interface) || ["Player Reports & Sanctions"](/com.playeveryware.eos/Documentation~/scene_walkthrough/player_reports_and_sanctions_walkthrough.md) | |
3232
|[Sanctions](https://dev.epicgames.com/docs/game-services/sanctions-interface) || ["Player Reports & Sanctions"](/com.playeveryware.eos/Documentation~/scene_walkthrough/player_reports_and_sanctions_walkthrough.md) | |
3333
|[Sessions](https://dev.epicgames.com/docs/game-services/sessions) || ["Sessions & Matchmaking"](/com.playeveryware.eos/Documentation~/scene_walkthrough/sessions_and_matchmaking_walkthrough.md) | |
34-
|[Social Overlay](https://dev.epicgames.com/docs/epic-account-services/social-overlay-overview) / [UI Interface](https://dev.epicgames.com/docs/epic-account-services/eosui-interface) || [Information](/com.playeveryware.eos/Documentation~/overlay.md) | ✔️ |
34+
|[Social Overlay](https://dev.epicgames.com/docs/epic-account-services/social-overlay-overview)[^2] / [UI Interface](https://dev.epicgames.com/docs/epic-account-services/eosui-interface) || [Information](/com.playeveryware.eos/Documentation~/overlay.md) | ✔️ |
3535
|[Stats](https://dev.epicgames.com/docs/game-services/eos-stats-interface) || ["Leaderboards"](/com.playeveryware.eos/Documentation~/scene_walkthrough/leaderboards_walkthrough.md) | |
3636
|[Title Storage](https://dev.epicgames.com/docs/game-services/title-storage) || ["Title Storage"](/com.playeveryware.eos/Documentation~/scene_walkthrough/title_storage_walkthrough.md) | |
3737
|[User Info Interface](https://dev.epicgames.com/docs/epic-account-services/eos-user-info-interface) || NA | ✔️ |
3838
|[Voice Trusted Server](https://dev.epicgames.com/docs/game-services/voice#voicewithatrustedserverapplication) || NA | |
3939

4040

4141
Efforts will be made to add corresponding support to features as they are added to the Epic Online Services SDK. The table above reflects the features as of November 2023.
42+
43+
[^2]: Overlay Features aren't supported yet on Mobile devices as of EOSSDK 1.16.4. That includes Social Overlay and Store Overlay.

0 commit comments

Comments
 (0)