Table of Contents
Overview
The PlayEveryWare EOS Plugin for Unity is a software development kit (SDK) used for integrating EOS into a Unity project. Bringing the free services that connect players across all platforms and all stores, to Unity in an easy to use package. Find more information on EOS here and Epic docs here.
The eos_plugin_for_unity repository contains the source code for development, samples and support for the PlayEveryWare EOS Plugin for Unity (UPM Package).
Plugin Features: (In Depth Details)
- Social Overlay support across platforms.
- Feature specific sample scenes, that include manager classes for common uses of EOS SDK API.
- Custom Unity Tool for configuring EOS settings and saving to a JSON file.
- Unity editor playback support, handled by reloading EOS SDK.
- Most EOS features are accessible by players without an Epic Games Account.
Repo Contents:
- Additional plugin Documentation can be found in the docs/ directory.
- A Unity Project for development of feature managers and samples.
- Native Source for
DynamicLibraryLoaderHelperandGfxPluginNativeRender. - A Tool to build a Unity Package Manager compatible UPM.
Plugin Details:
- Targets Unity 2021.3.8f1, for best results a version of Unity 2021 is preferred.
- Targets EOS SDK 1.15.4 (bundled with plugin).
Supported Platforms
The support level of each target platform in Unity as of the current release of the plugin.
| Supported | Preview | Unsupported at Present |
|---|---|---|
| Unity Editor (No Social Overlay) | Linux | WebGL |
| Windows Standalone x64 | MacOS | Universal Windows Platform x86 |
| Windows Standalone x86 | Console Platforms | Unity Web Player |
| Universal Windows Platform x64 | ||
| Android (No Social Overlay Yet) | ||
| iOS (No Social Overlay Yet) |
❗ Enable
EOS_PREVIEW_PLATFORMto access Preview platforms.
Supported EOS SDK Features
The EOS Plugin for Unity will be updated over time to support the new content as the EOS SDK continues to release new features and functionality.
The support level of each EOS SDK features as of the current release of the plugin.
| Unsupported at Present | ||
|---|---|---|
| EOS Mod SDK | Voice Trusted Server | Progression Snapshot Interface |
The EOS Features Shown by Sample
| Sample Name | EOS Features |
|---|---|
| - All Samples - | Authentication, Social Overlay, User Info Interface, Connect Interface, Logging Interface, Platform Interface |
| Achievements | Achievements |
| Auth & Friends | Friends, Presence |
| Custom Invites | Custom Invites |
| Leaderboards | Leaderboards, Stats |
| Lobbies | Anti-Cheat, Lobby, Lobby with Voice |
| Metrics | Metrics |
| Peer 2 Peer | NAT P2P |
| Performance Stress Test | |
| Player Data Storage | Player Data Storage |
| Player Reports & Sanctions | Reports, Sanctions |
| Sessions & Matchmaking | Sessions |
| Store | Ecommerce |
| Title Storage | Title Storage |
| P2P Netcode | NAT P2P |
| - | - |
| None (Not Supported) | EOS Mod SDK, Voice Trusted Server, Progression Snapshot Interface |
The EOS Features Shown by Requirement of a Player Needing an Epic Games Account
EOS Game Services can be set up in your game without any requirement for your players to have an Epic Games account. As opposed to EOS Epic Account Services, Which will require your players to have an Epic Games account.
| Not Required | Required |
|---|---|
| Achievements | Authentication |
| Leaderboards | Ecommerce |
| Lobby | Friends |
| Lobby with Voice | Presence |
| NAT P2P | Social Overlay |
| Player Data Storage | User Info Interface |
| Sessions | EOS Mod SDK (Unsupported) |
| Stats | Progression Snapshot Interface (Unsupported) |
| Title Storage | |
| Reports | |
| Sanctions | |
| Anti-Cheat | |
| Custom Invites | |
| Metrics | |
| Connect Interface | |
| Logging Interface | |
| Platform Interface | |
| Voice Trusted Server (Unsupported) |
Getting Started
Prerequisites
- An Epic Games Account, you can sign up for here.
❗ An Epic Games Account is not required by players for most EOS features.
- A product configured on the Epic Games Developer Portal.
- A Unity project to integrate the plugin into, it can be a blank project.
❗ Find the plugin's targeted Unity version here.
- Minimum Unity system requirements.
- Minimum EOS system requirements.
Importing the Plugin
There are two options to install the package, from a tarball [Quickest to start], or from a GIT URL [Quickest for updates].
Adding the package from a tarball
-
Download the latest release tarball,
"com.playeveryware.eos-[version].tgz"here.❗ If one uses the source download it will be missing all the git-lfs files (i.e. binaries, dynamic libraries).
-
Move the downloaded tarball into your project folder, but outside of the
Assetsfolder. -
From the Unity Editor, open the Package Manager.
-
Click the
+button in the top left of the window. -
Select
Add package from tarball. -
Navigate to the directory containing the tarball, select and
Openthe tarball. -
After the package has finished installing, import the samples.
-
Finally, configure the plugin.
❗ The Unity doc for adding a tarball can be found here.
Adding the package from a git URL
-
Setup Unity for Git Dependency.
-
From the Unity Editor, open the Package Manager.
-
Click the
+button in the top left of the window. -
Select
Add Package from Git URL. -
Paste in
git@github.com:PlayEveryWare/eos_plugin_for_unity_upm.gitorhttps://github.com/PlayEveryWare/eos_plugin_for_unity_upm.git. -
After the package has finished installing, import the samples.
-
Finally, configure the plugin.
❗ The Unity doc for adding a git url can be found here.
Samples
The included samples show examples of fully functional feature implementation to validate client and dev portal configuration as well as help with EOS integration into your own project. The samples are a collection of scenes that are imported from the UPM package, and include a series of scripts that function as generalized managers for each supported EOS SDK feature and platform.
❗ The generalized managers are a great starting point for feature integration into your own project. They are named as
EOS[Feature/Platform name]Manager.cs.
Importing the samples
-
Select the
PlayEveryWare EOS Plugin for Unityin the Package Manager window. -
Open the
Samplesdropdown. -
Select
Importfor each of the sample packs, to bring in the Sample scenes.❗ The samples are placed in
Assets/Samplesfor personal modification. -
In the Unity editor menu bar, open
File->Build Settings. -
In the
Projectwindow, navigate to the scenes folders containing their respective sample scenes.\Assets\Samples\PlayEveryWare EOS Plugin for Unity\[Version #]\[Pack Name]\Scenes. -
Add the scenes to the
Scenes In Buildsection of theBuild Settingswindow. This can be done quickly by using theShiftkey to select each scene at the same time, then dragging them into the proper area. Repeating for each sample pack folder.❗ If you have other scenes already, and plan to look at the samples in a build, drag a sample scene to be the 0th scene in Build Settings before you build.
Running the samples
❗ The plugin must be configured for samples to be functional.
❗ Some Samples may not be accessible if the extra packs were not imported, or the scenes weren't added in the build settings.
Sample walkthroughs can be found here.
Steps to run a sample in editor
❗ The Social Overlay Feature is not supported in editor.
-
In the Unity editor, open the desired sample scene from the imported Scenes folder.
-
Press the play button at the top of the editor.
-
Login with a selected authentication type.
Account Portaland thenPersistentAuthis easiest for the first time.Dev Authcan be used for quicker iteration, among other options described here, to explore features that don't require an Epic Games Account, or the options to choose for closer representation to the user experience on specific platform releases.
Steps to run a sample from a build
❗ Check the Prerequisites as there may be specific requirements for a player's computer. Windows, for instance, requires the players to have
The latest Microsoft Visual C++ Redistributableinstalled on their computer in order to play any distributed builds.
-
In the Unity editor menu bar, open
File->Build Settings.❗ If you have non-sample scenes, drag a sample scene to be the 0th scene in Build Settings before you build.
-
Choose your desired platform, and settings, hitting
Buildas you normally would. -
Run your build.
❗ A Windows build, is started by running the
EOSBootstrapperapplication in the resulting build, and not the game application itself. it is for this and similar reasons that theBuild And Runbutton may not always function as it usually would. -
Login with a selected authentication type.
Account Portaland thenPersistentAuthis easiest for the first time.Dev Authcan be used for quicker iteration, among other options described here, to explore features that don't require an Epic Games Account, or the options to choose for closer representation to the user experience on specific platform releases.
❗ Additional info on login type options, implementation, and use cases can be found here.
Configuring the Plugin
To function, the plugin needs some information from your EOS project. Epic Docs on how to set up your project can be found here.
Configuration Steps
-
In the Unity editor menu bar, open
Tools -> EpicOnlineServicesConfigEditor. -
From the developer portal, copy the configuration values listed below, and paste them into the similarly named fields in the
EOS Config Editorwindow, under theMainportion of the config:❗ Addtional information about configuration settings can be found here.
- ProductName
- ProductVersion
- ProductID
- SandboxID
- DeploymentID
- ClientSecret
- ClientID
- Encryption Key
❗ Click the Generate button to create a random key, if you haven't already configured an encryption key in the EOS portal.
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 must be left blank.
-
Press
Save All Changes. -
Navigate to
Packages/Epic Online Services for Unity/Runtimevia theProjectwindow. -
Add the
EOSManager.prefab, to each of your game's scenes. -
Simply attach
EOSManager.cs (Script)to a Unity object and it will initialize the plugin with the specified configuration inOnAwake().❗ The samples already have this done!
Disable on selected platforms
See docs/disable_plugin_per_platform.md for this feature.
Plugin Support
PlayEveryWare EOS Plugin for Unity API Documentation can be found at https://eospluginforunity.playeveryware.com.
For issues related to integration or usage of the Unity plugin, please create a New Issue under the Issues tab in the github repo.
For issues related to Epic Online Services SDK, Epic Dev Portal or general EOS SDK information, please go to Epic Online Services Community Support.
Detailed descriptions and usage for EOS SDK Interfaces, can be found at EOS Developer Documentation: Game Services.
Source Code Contributor Notes
The following are guidelines for helping contribute to this open source project.
Contributor Prerequisites
- Ensure At least Visual Studio 2017 is installed.
- Ensure At least Unity 2020.1.11f1 is installed.
- Ensure required Platform SDKs are installed (Windows, Linux, macOS, Android, iOS, Consoles).
- The repository cloned locally https://github.com/PlayEveryWare/eos_plugin_for_unity.
Build steps For Native Libraries
Build the Visual Studio solutions for the native DLLs, extra platform specific instructions may be located in the docs for that platform.
-
In your local repository, navigate to the
DynamicLibraryLoaderHelperfolder of your platform choice in NativeCode.❗ These files are not included with the package imported via tarball or git url.
-
Open and build the
DynamicLibraryLoaderHelper.slnin Visual Studio.❗ A successful build will place the correct binaries in the proper locations for Unity to initialize EOS SDK.
Coding Standards
See standards.md.
Class description
See docs/class_description.md.










