aws / amazon-gamelift-plugin-unity

The Amazon GameLift Plugin for Unity contains libraries and native UI that makes it easier to access GameLift resources and integrate GameLift into your Unity game. You can use the GameLift Unity Plugin to access GameLift APIs and deploy AWS CloudFormation templates for common gaming scenarios.
https://aws.amazon.com/gamelift/getting-started/
Apache License 2.0
80 stars 16 forks source link

Automate anywhere config #127

Closed Kyle-CW closed 10 months ago

Kyle-CW commented 11 months ago

This change will automatically generate yaml config files that the sample game will use to read settings and connect to GameLift Anywhere.

This setup expects the plugin settings file GameLiftSettings.yaml to have been generated.

Using the menu buttons "Apply [Windows/MacOS] Sample [Client/Server] Build Settings" will automatically generate the files and place them in the project root. This will allow you to connect to Anywhere using the plugin settings within Unity Editor. image

I have also added AnywhereFleetSettingsBuildProcessor which will run after a build is complete annd will generate the config file in that build folder.

I also identified that while server settings keys were defined within the sample game project, client settings keys were defined within Runtime, so I have changed it so the sample game has the definitions and passes the values through to Runtime inside the existing configuration object

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

AWSJackson commented 11 months ago

Summary from discussion during our sync today:

Kyle-CW commented 11 months ago

When clicking Launch Server from the Anywhere plugin UI, it should update to the server pre-processor (probably a one-liner to call the same method used by the dropdown).

I have added functionality to the button to swap into server configuration and enter play mode

We should investigate if it's possible to update the server vs client pre-processor property as part of switching between Dedicated Server and clients build targets in the Unity Build Manager.

I have added BuildTargetChangedHandler.cs which will receive a callback when the build target is changed, and add/remove the UNITY_SERVER symbol as appropriate.

We should update the SampleGame server code to pull settings directly from StateManager with the editor pre-processor so that a config file is not needed when running in the editor.

So its a bit awkward with StateManager being in assembly AmazonGameLiftPlugin.Editor so we don't want to tie SampleGame assembly to an Editor assembly. I'll catch up with you later to decide on solutions to this.