-
Notifications
You must be signed in to change notification settings - Fork 816
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Propagating game server process events to Agones system #279
Comments
/cc @Kuqd @EricFortin @defat - for your input please. |
I would lean more to a callback being called when the server is |
Completing fleet allocation process with a callback from dedicated server looks more simple, but technical restriction to do this in 30s time interval seems to unable this option, map loading can take more time. |
@EricFortin I think that sort of use case should be manageable by the design in #277 - please let me know if it doesn't. |
Also I think this only within the GameServer scope (Not Fleet or Allocation). |
@Kuqd I think #277 should solve this problem too - the matchmaker could set labels/annotations on the gameserver prior to it being ready, this would fire the callback on data change on the GameServer - and then the game server process could read those annotations/labels and mark itself as As long as health checks are being sent, a game server process doesn't have to be Ready within any kind of timeframe. Does that work/make sense? |
yes it works. |
So @EricFortin and @Kuqd had a bit of a chat about this, and these are the conclusions we ended up drawing (lemme know if I got any of this wrong):
This will also propagate through to the This will allow developers to look for this change through the K8s watch API, and react accordingly. For example this could be used to know when a game specific state has been reached once players are allowed to connect to the game server (such as a map has been loaded)
This will allow the game server to pass back out, and edit more complex data than just I think this will handle the above requirements quite well, but if you have thought and/or feeling on the above - definitely please share. Feedback always appreciated. |
I could cover 1. with 2. by using my own state properties within annotations no ? |
That is a very good point. Sounds like we don't need #1 - the At the very least, we should build #2 first, and then see if there is extra need for anything else. |
SGTM
…On Thu, Jul 19, 2018 at 12:49 PM Mark Mandel ***@***.***> wrote:
That is a very good point. Sounds like we don't need #1
<#1> - the
GameServerState - just label and annotation editing from within the SDK.
At the very least, we should build #2
<#2> first, and then
see if there is extra need for anything else.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#279 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ABlWtdqaT3pQwMq-rB6r1CGfi832Mijeks5uILiggaJpZM4U99RE>
.
|
Work happening on SDK label + annotation editing via the SDK here: |
This implements new functions in the SDK: - SetLabel(key, value) - that lets you set a label on the backing `GameServer` - SetAnnotation(key, value) - that lets you set an annotation on the backing `GameServer` All keys are prefixed with "stable.agones.dev/sdk-" to maintain isolation. Closes googleforgames#279
This implements new functions in the SDK: - SetLabel(key, value) - that lets you set a label on the backing `GameServer` - SetAnnotation(key, value) - that lets you set an annotation on the backing `GameServer` All keys are prefixed with "stable.agones.dev/sdk-" to maintain isolation. Closes googleforgames#279
This implements new functions in the SDK: - SetLabel(key, value) - that lets you set a label on the backing `GameServer` - SetAnnotation(key, value) - that lets you set an annotation on the backing `GameServer` All keys are prefixed with "stable.agones.dev/sdk-" to maintain isolation. Closes googleforgames#279
This implements new functions in the SDK: - SetLabel(key, value) - that lets you set a label on the backing `GameServer` - SetAnnotation(key, value) - that lets you set an annotation on the backing `GameServer` All keys are prefixed with "stable.agones.dev/sdk-" to maintain isolation. Closes googleforgames#279
This implements new functions in the SDK: - SetLabel(key, value) - that lets you set a label on the backing `GameServer` - SetAnnotation(key, value) - that lets you set an annotation on the backing `GameServer` All keys are prefixed with "stable.agones.dev/sdk-" to maintain isolation. Closes googleforgames#279
This implements new functions in the SDK: - SetLabel(key, value) - that lets you set a label on the backing `GameServer` - SetAnnotation(key, value) - that lets you set an annotation on the backing `GameServer` All keys are prefixed with "stable.agones.dev/sdk-" to maintain isolation. Closes googleforgames#279
This implements new functions in the SDK: - SetLabel(key, value) - that lets you set a label on the backing `GameServer` - SetAnnotation(key, value) - that lets you set an annotation on the backing `GameServer` All keys are prefixed with "stable.agones.dev/sdk-" to maintain isolation. Closes googleforgames#279
This implements new functions in the SDK: - SetLabel(key, value) - that lets you set a label on the backing `GameServer` - SetAnnotation(key, value) - that lets you set an annotation on the backing `GameServer` All keys are prefixed with "stable.agones.dev/sdk-" to maintain isolation. Closes googleforgames#279
This implements new functions in the SDK: - SetLabel(key, value) - that lets you set a label on the backing `GameServer` - SetAnnotation(key, value) - that lets you set an annotation on the backing `GameServer` All keys are prefixed with "stable.agones.dev/sdk-" to maintain isolation. Closes #279
This implements new functions in the SDK: - SetLabel(key, value) - that lets you set a label on the backing `GameServer` - SetAnnotation(key, value) - that lets you set an annotation on the backing `GameServer` All keys are prefixed with "stable.agones.dev/sdk-" to maintain isolation. Closes googleforgames#279
This implements new functions in the SDK: - SetLabel(key, value) - that lets you set a label on the backing `GameServer` - SetAnnotation(key, value) - that lets you set an annotation on the backing `GameServer` All keys are prefixed with "stable.agones.dev/sdk-" to maintain isolation. Closes googleforgames#279
This implements new functions in the SDK: - SetLabel(key, value) - that lets you set a label on the backing `GameServer` - SetAnnotation(key, value) - that lets you set an annotation on the backing `GameServer` All keys are prefixed with "stable.agones.dev/sdk-" to maintain isolation. Closes googleforgames#279
This implements new functions in the SDK: - SetLabel(key, value) - that lets you set a label on the backing `GameServer` - SetAnnotation(key, value) - that lets you set an annotation on the backing `GameServer` All keys are prefixed with "stable.agones.dev/sdk-" to maintain isolation. Closes googleforgames#279
Moving relevant items from #277 so they can be tackled separately
I'm letting this peculate in my head a little before driving towards a opinion on a solution, but some initial thoughts and concerns:
Allocated
state), at least right now for this reason, but maybe I'm being overtly cautious. Entirely possible -- maybe a solution here is to work out a way to have an optional blocking callback on any status change, although actually not 100% on how to do this technologically. I also get scared of "what happens if the callback fails somewhere".Outside of "wait until a map is loaded before letting players join" - are there any other scenarios that you would want to wait for certain things to happen? Exploring this space a bit more may open up more flexible solutions.
The text was updated successfully, but these errors were encountered: