Skip to content

Commit

Permalink
Release 3.3.0
Browse files Browse the repository at this point in the history
  • Loading branch information
paulhazen committed Jul 16, 2024
1 parent f30a908 commit b9de667
Show file tree
Hide file tree
Showing 422 changed files with 34,596 additions and 1,377 deletions.
49 changes: 49 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,55 @@
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

# Changelog

## [3.3.0] - 2024-07-03

### Fixed
- Resolved various issues with the `eos_package_description.json` file:
- Moved script files to utilize the recursive feature.
- Removed duplicate gradle file entries.
- Corrected directory paths and naming conventions.
- Improved handling of subdirectories within `EOS_SDK/Generated`.
- Enhanced package creation:
- Further refinements to the package description file.
- Added additional entries and log warnings.
- Corrected function signatures and async implementation.
- Fixed UI issues with the progress bar update.
- Addressed merge conflicts and discrepancies in `CHANGELOG.md`.
- Corrected usage of conditional compilation (`#if EOS_DISABLE`).
- Fixed handling of missing scripts and unreferenced prefabs.

### Merged
- Integrated changes from various branches:
- `fix/create-package-fix`
- `fix/duplicate-gradle-file`
- `fix/unity-project-tools`
- `development`
- `release-3.2.1`
- Updated the `EOSManager` to handle new functionalities and interfaces.

### Chore
- Updated version numbers and dependencies:
- Upgraded to Android API Level 33.
- Resolved merge conflicts and improved documentation.
- Restored `gitattributes` with `eol=lf` instructions.
- Removed errant files and redundant code.

### Documentation
- Updated the `NamingConventionReadme.txt` and `CHANGELOG.md` to reflect recent changes.
- Added documentation for new features and fixes.

### Performance
- Improved performance of file copy operations by multi-threading.
- Optimized logging and debugging processes.

### New Features
- Introduced support for `StatsManager` and async operations.
- Implemented deployment overrides with `-epicdeploymentid` argument.

**Full Changelog**: https://github.com/PlayEveryWare/eos_plugin_for_unity/compare/v3.2.1...v3.3.0

# [3.2.1] - 2024-06-24

- ### Fixes
Expand Down
8 changes: 8 additions & 0 deletions Documentation~/.editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[*.md]
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
charset = "utf-8"
# markdown files sometimes use trailing whitespace for formatting
trim_trailing_whitespace = false
77 changes: 77 additions & 0 deletions Documentation~/Walkthrough.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
<a href="/README.md"><img src="/docs/images/PlayEveryWareLogo.gif" alt="README.md" width="5%"/></a>

# EOS Plugin for Unity Walkthrough

This document is meant to serve as a guide to our EOS Plugin for Unity demo scenes. Each scene is meant to showcase the implementation of a specific feature such as peer 2 peer communication, lobbies, or custom invites.
Each scene has a few things in common: the login page, side bar, scene selection, and debug log.

## Sidebar
The sidebar shows the current version, logged in account, framerate, readme, log copy button and exit button.
- The ``README`` button will display the readme for the current scene
- The ``Copy Log`` button copies the log from the log window
- The ``Exit`` button closes the application


## Debug Log
The Debug log provides a filterable on screen debug output
- The gear icon hides/shows the debug log buttons
- The ``'Enter filter text...'`` field allows for text filters
- The filter icon allows for filtering by specific levels for each type channel
- The two arrows icon expands the log to fill the window
- The eye icon hides/shows the log


## Scene selection
The yellow dropdown in the top of the window allows the user to select which demo scene they would like to log into

There is a standard sample pack, and several extra packs in the EOS Unity Plugin. If a scene doesn't load, remember to import the wanted extra pack, and [add them in the build settings](/README.md#importing-samples)


## Login Page
The login menu allows the user to select which login method they would like to use through the dropdown in the center of the window. After logging in the user will be put into the selected demo scene.
The login options are as follows:
- ``Dev Auth``: Uses Epic Games’ [Developer Authentication Tool](https://dev.epicgames.com/docs/epic-account-services/developer-authentication-tool).
1. Launch the [Developer Authentication Tool](https://dev.epicgames.com/docs/services/en-US/EpicAccountServices/DeveloperAuthenticationTool/index.html).

![Dev Auth Tool](/docs/images/dev_auth_tool.gif)

2. Pick a port to use on the computer. 8888 is a good quick to type number that isn't usually used by a process.
3. Log in with one's user credentials that are registered with Epic.
4. Pick a username. This username will be used in the sample to log in.

- ``Account Portal``: Uses the Epic Games overlay and any of the connected account types.
- An Epic Games Account
- A Facebook account
- A Xbox Live account
- A PlayStation Network Account
- A Nintendo Account
- A Steam Account
- An Apple ID
- ``Persistent Auth``: Uses Epic Game's [Persisting User Login](https://dev.epicgames.com/docs/epic-account-services/auth/auth-interface#persisting-user-login-to-epic-account-outside-epic-games-launcher).
- ``External Auth``: Uses a web browser to login through an online account portal similar to the Account Portal option.
- ``Connect``: Uses the [Connect Interface](https://dev.epicgames.com/docs/game-services/eos-connect-interface) to login through one of the supported options.
- Device Access Token: Uses a persistent access token based on the device, unattached to an account.
- Steam Session Ticket
- Steam App Ticket
- Discord Access Token
- Openid Access Token

For information about login methods per platform, see our documentation: [Login Type by Platform](/docs/login_type_by_platform.md).

## Individual Scene Walkthroughs
- [Achievements](/docs/scene_walkthrough/achievements_walkthrough.md)
- [Auth & Friends](/docs/scene_walkthrough/auth&friends_walkthrough.md)
- [Custom Invites](/docs/scene_walkthrough/customInvites_walkthrough.md)
- [Leaderboards](/docs/scene_walkthrough/leaderboards_walkthrough.md)
- [Lobbies](/docs/scene_walkthrough/lobbies_walkthrough.md)
- [Metrics](/docs/scene_walkthrough/metrics_walkthrough.md)
- [Peer 2 Peer](/docs/scene_walkthrough/P2P_walkthrough.md)
- [Performance Stress Test](/docs/scene_walkthrough/performance_stress_test_walkthrough.md)
- [Player Data Storage](/docs/scene_walkthrough/player_data_storage_walkthrough.md)
- [Player Reports and Sanctions](/docs/scene_walkthrough/player_reports_and_sanctions_walkthrough.md)
- [Sessions and Matchmaking](/docs/scene_walkthrough/sessions_and_matchmaking_walkthrough.md)
- [Store](/docs/scene_walkthrough/store_walkthrough.md)
- [P2PNetcode](/docs/scene_walkthrough/P2P_netcode_walkthrough.md)

> [!NOTE]
> For more information about Epic Online Services (and information about other resources) checkout the [Epic Developer Resources Documentation](https://dev.epicgames.com/docs).
50 changes: 50 additions & 0 deletions Documentation~/add_plugin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<a href="/README.md"><img src="/docs/images/PlayEveryWareLogo.gif" alt="Readme" width="5%"/></a>

# Adding via Package Manager

The following document outlines the two methods with which you can add the plugin release via the package manager.

## Adding the package from a git URL

1. Install [git](https://docs.unity3d.com/2021.3/Documentation/Manual/upm-git.html#req) and [git-lfs](https://docs.unity3d.com/2021.3/Documentation/Manual/upm-git.html#req).
2. From the Unity Editor, open the Package Manager. `Window -> Package Manager`.

![unity tools package manager](/docs/images/unity_tools_package_manager.gif)

3. Click the `+` button in the top left of the window.

![Unity Add Git Package](/docs/images/unity_package_git.gif)

4. Select `Add Package from Git URL`.
6. Paste in `git@github.com:PlayEveryWare/eos_plugin_for_unity_upm.git`.
7. After the package has finished installing, [import the samples](/docs/samples.md).
8. Finally, [Configure the Plugin](/docs/configure_plugin.md).

> [!NOTE]
> For additional details, see the [Unity Documentation for adding a UPM via Git URL](https://docs.unity3d.com/2021.3/Documentation/Manual/upm-ui-giturl.html).
## Adding the package from a tarball

1. Download the latest release UPM tarball, `"com.playeveryware.eos-[version].tgz"` ([Releases](https://github.com/PlayEveryWare/eos_plugin_for_unity/releases)).

> [!WARNING]
> Do *not* attempt to create a tarball yourself from the source, unless you know what you are doing with respect to [Git LFS](https://docs.github.com/en/repositories/working-with-files/managing-large-files/configuring-git-large-file-storage).
2. Move the downloaded tarball into your project folder, but outside of the `Assets` folder.

3. From the Unity Editor, open the Package Manager via `Window -> Package Manager`.

![unity tools package manager](/docs/images/unity_tools_package_manager.gif)

4. Click the `+` button in the top left of the window.

![Unity Add Tarball Package](/docs/images/unity_package_tarball.gif)

5. Select `Add package from tarball`.
6. Navigate to the directory containing the tarball, select and `Open` the tarball.
7. After the package has finished installing, [import the samples](/docs/samples.md).
8. Finally, <a href="#configuring-the-plugin">configure the plugin</a>.

> [!NOTE]
> For additional details, see the [Unity Documentation for adding a UPM via Tarball](https://docs.unity3d.com/2021.3/Documentation/Manual/upm-ui-tarball.html).
62 changes: 62 additions & 0 deletions Documentation~/android/README_Android.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<a href="/README.md"><img src="/docs/images/PlayEveryWareLogo.gif" alt="Lobby Screenshot" width="5%"/></a>

<div align="center"> <img src="/docs/images/EOSPluginLogo.png" alt="PlayEveryWare EOS Plugin for Unity" /> </div>

# <div align="center">Android</div>
---

## Prerequisites

* The standard <a href="/README.md#prerequisites">Prerequisites</a> for all platforms.
* Check out this <a href="environment_setup_android.md#environment-setup-for-android">Environment Setup</a> doc for a quick setup guide.
* More detailed instructions can be found in the links below.
* <a href="https://docs.unity3d.com/2021.3/Documentation/Manual/android-sdksetup.html">Android environment setup</a> for Unity.
* The Android Build Support <a href="https://docs.unity3d.com/hub/manual/AddModules.html">module</a>.

## Importing the Plugin


You can follow the standard <a href="/README.md#importing-the-plugin">Importing the Plugin</a> process. With a few changes here when <a href="#running-the-samples">running the samples</a> and <a href="#configuring-the-plugin">configuring the plugin</a>.
> [!WARNING]
> If you choose the tarball method, when downloading the release on mac it may convert the `.tgz` into a `.tar` which is not compatible with unity. Changing the file extension back to a `.tgz` should fix this.
## Samples

You can follow the standard <a href="/README.md#samples">Samples</a> process.
Please note the details in the <a href="#running-the-samples">Running the samples</a> section when running the samples from a build for Android.

> [!WARNING]
> The EOS Overlay is not implemented yet. When it is (due to the limitations of phones) the EOS Overlay will not be set to be openable by a physical button.
## Running the samples

When following the steps to <a href="/README.md#running-the-samples">run a sample</a> from a build for Android, follow the Unity doc for <a href="https://docs.unity3d.com/2021.3/Documentation/Manual/android-sdksetup.html">Debugging on an Android device</a>, to connect your device to the engine.
This will allow the smoother ```Build And Run``` option to work instead of just using the ```Build``` button.

When running on a device you may need to <a href="https://developer.android.com/studio/debug/dev-options#enable">enable developer mode</a> on the device, then <a href="https://developer.android.com/studio/debug/dev-options#Enable-debugging">Enable USB debugging on your device</a>, as well as accepting any popups that appear on the phone during the process.

## Configuring the Plugin

You can follow the standard <a href="/README.md#configuring-the-plugin">Configuring the Plugin</a> process. With the additional steps after saving the Main EOS Config.

## Additional Configuration Steps <a name="configuration-steps" />

1. Select the ```Android``` button.

![EOS Config UI](/docs/images/eosconfig_ui_android.gif)

2. Press ```Save All Changes```.

>[!WARNING]
>This is required, even if you leave every field blank.
3. Update the <a href="https://docs.unity3d.com/2021.3/Documentation/Manual/class-PlayerSettingsAndroid.html">Minimum API Level</a> to be at least ```Android 6.0 'Marshmallow' (API Level 23)```.

4. Optionally, set the plugin to <a href="/docs/android/link_eos_library_settings.md">link the EOS Library dynamically</a>.


# FAQ



See [frequently_asked_questions.md](/docs/frequently_asked_questions.md).
69 changes: 69 additions & 0 deletions Documentation~/android/environment_setup_android.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
<a href="/README.md"><img src="/docs/images/PlayEveryWareLogo.gif" alt="Lobby Screenshot" width="5%"/></a>

# <div align="center">Environment Setup for Android</div>
---

## Unity and Modules

1. Install Unity (minimum version 2020.1.11), preferably on Unity Hub

2. Open the "Add modules" window.

<img src="/docs/images/unity_add_modules.png" width="500" />

2. Select and install the following modules:

* Windows Build Support (Il2CPP)
* Android SDK & NDK Tools
* OpenJDK

## Manage Android SDK

It is possible that the SDK modules installed through Unity Hub would be missing components to build your game.

For example, Unity 2020.1.11 requires build-tool 30.0.3 to build the game but the tool is not included in the Unity Hub module installation.

The following methods will show how to install the missing build-tool 30.0.3, and give an idea how to manage SDKs.

### Manage SDK with Android Studio (Recommended for better emulator support).

1. [Install Android Studio](https://developer.android.com/studio)
2. Run the SDK Manager

<img src="/docs/images/android_studio_sdk_manager.png" width="500" />

### Manage SDK through command prompt

1. (On Windows) If you don't already have the environment variable `JAVA_HOME` as a System Variable, add a new one with the value set to `C:\Program Files\Unity\Hub\Editor\2021.3.8f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK`.

2. Run the command prompt and navigate to the `SDK\tools\bin` folder.

On Windows:

```bash
cd 'C:\Program Files\Unity\Hub\Editor\2021.3.8f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\tools\bin'
```

For most *nix:

```bash
../Unity/Hub/Editor/2020.1.11f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/tools/bin
```

3. Run

On Windows:

```bash
.\sdkmanager.bat "platform-tools" "platforms;android-30" "build-tools;30.0.3"
```

For most *nix:

```bash
sdkmanager "platform-tools" "platforms;android-30" "build-tools;30.0.3"
```

## External Module Setup

Modules can be shared across multiple versions of Unity on the same device by specifying the shared install path in `Edit -> Preference -> External Tools`
26 changes: 26 additions & 0 deletions Documentation~/android/link_eos_library_settings.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<a href="/README.md"><img src="/docs/images/PlayEveryWareLogo.gif" alt="Lobby Screenshot" width="5%"/></a>

# <div align="center">Linking EOS Library on Android Settings</div>
---

## What is the Difference Between Linking the EOS Library Dynamically and Statically?

Static linking packs libraries into the executable, whereas dynamic linking links the function symbols to the corresponding entry point in the dynamic libraries at runtime.

The full expression of this setting is to determine how the EOS Library links `against the C++ Library`.

If the game is using other libraries that also links to the C++ Library, the EOS Library should use the version that matches the linking type of the others, or else duplicate symbols would occur.

## Steps to Swap Dynamically and Statically

1. Open Preferences, `Edit -> Preferences...`.

![EOS Config UI](/docs/images/preferences_menu.gif)

2. Select `EOS Plugin` from the categories menu on the left.

![EOS Config UI](/docs/images/link_eos_lib_instructions.gif)

3. Under the `Android Build Settings` section, check the box next to `Link EOS Library Dynamically` to link the EOS library dynamically, and uncheck it link the EOS library statically.

4. Press `Save All Changes`.
Loading

0 comments on commit b9de667

Please sign in to comment.