Agones: Documented assumed prerequisite knowledge for the project

Created on 18 Aug 2020  路  10Comments  路  Source: googleforgames/agones

Is your feature request related to a problem? Please describe.

Be clear and concise on what prerequisite knowledge is required / highly useful when learning Agones

We currently have the This all sounds great, but can you explain Docker and/or Kubernetes to me? section, but it neither says (a) that this is required knowledge, and (b) how deep is required in either areas.

Describe the solution you'd like

A section in the documentation before "Overview" entitled "Prerequisite Knowledge" (or similar), that lists requisite assumed knowledge of the project, with links pointing to resources to learning these aspects.

This should include:

  • Docker

    • Containers as a concept

    • Running Docker containers

    • Building your own container

    • Registries as a concept

    • Pushing and pulling containers from a registry

  • Kubernetes

    • Kubernetes as a concept

    • Pods

    • Deployments

    • Services

    • Deploying a Deployment with a Service

(I think this covers the basic skillset, but would love to hear opinions on if anything else was required, or extremely useful)

Describe alternatives you've considered

Leave things as is - but we're seeing an increase of people coming to the project that do not have prior Kubernetes experience, so having a scalable solution (chat is not a scalable solution unfortunately) that can help onboard people would be ideal.

Additional context
N/A

kinfeature kindocumentation

Most helpful comment

When I was a complete beginner, I liked interactive tutorials! Actually doing and seeing how it works after reading some docs and without own k8s infra was great and quick!

We could reference those Kubernetes courses and maybe even make an interactive Agones course? :)

KataCoda + :100: it was really useful on the Thanos project to be able to run through a scenario with people, explaining the concepts etc.

I would add to the list that people need to know the engine they are running also eg. if you dont know unity or unreal yet you are going to have a fair bit of trouble containerising and running it in kubernetes.

Only other thing that I think often trips people up is firewall setting for the port range exposing host ports is something that I only started doing when looking at Agones (after running k8s for a number of years).

All 10 comments

Also, of people have learning resources that they found super useful, please link in this issue :+1:

This looks like it covers the minimum amount of stuff that you really would be lost without in consideration of using Agones.

In other words, if you understood these things, you are _probably_ equipped enough to get your actual game server (not GameServer) running in a container on k8s.

At that point (my game server runs on k8s) you could _come back_ to Agones to then try an actual GameServer (eg: adding the SDK, etc)....

?

Chiming in with my experience as a new user to both K8s and Agones, as requested by Mark.

I started with Docker ~4 weeks ago, K8s 2 weeks ago with the intention of learning Agones afterwards, and then Agones ~4 days after starting with K8s. This was very natural progression, as each step builds on the previous. I always spend time experimenting with things so I can truly learn them, which I felt helped a lot for me. Each transition was very smooth, both with the docs and with help on Slack. But I generally did not go back to the docs of the lower layer, as I had a good enough understanding of each.

I had experimented a lot with Docker, learning how to build, push, and run images with ports, envvars, networks. I created Dockerfiles and shell scripts that ran my software. I also used Dockerhub quite extensively.

This made the transition to Kubernetes very easy, where I then first learned to setup a cluster via gcloud, used kubectl to apply yaml, list my resources and debug them with describe and logs. The main resources I learned were pods, deployments, and services. I read through all the documentation for those.

Once I felt I thoroughly understood those, I moved onto Agones, which was quite a breeze to understand. I very quickly got a GameServer up, and then a Fleet (before running into missing features which I'm in the process of adding myself already).

So with this progression, I've had a very easy entrance into Agones within a month without knowing anything about any of the technologies beforehand. To me, this seems to be optimal, although I maybe could have used a bit less time on Docker as I was also experimenting with my app during that time. And I think your list matches my list pretty much one to one, so I support it.

@Bmandk did you use any specific resources to do that learning? Anything in particular stand out?

@markmandel Pretty much only the official docs, https://docs.docker.com/get-started/overview/ and https://kubernetes.io/docs/home/. If I had some specific issues, I would first look at the docs, then google, and finally go to the respective Slack if I could not find anything else.

When I was a complete beginner, I liked interactive tutorials! Actually doing and seeing how it works after reading some docs and without own k8s infra was great and quick!

We could reference those Kubernetes courses and maybe even make an interactive Agones course? :)

When I was a complete beginner, I liked interactive tutorials! Actually doing and seeing how it works after reading some docs and without own k8s infra was great and quick!

We could reference those Kubernetes courses and maybe even make an interactive Agones course? :)

KataCoda + :100: it was really useful on the Thanos project to be able to run through a scenario with people, explaining the concepts etc.

I would add to the list that people need to know the engine they are running also eg. if you dont know unity or unreal yet you are going to have a fair bit of trouble containerising and running it in kubernetes.

Only other thing that I think often trips people up is firewall setting for the port range exposing host ports is something that I only started doing when looking at Agones (after running k8s for a number of years).

I would add to the list that people need to know the engine they are running also eg. if you dont know unity or unreal yet you are going to have a fair bit of trouble containerising and running it in kubernetes.

Oh that is a really good point. People should know about Dedicated Game Servers, and probably some kind of Engine as well (likely point at some option there as well, Unreal, Unity, Godot?)

Explaining DGS as a concept - I've never found the perfect resource, so I did a short video on it, there is also a wikipedia article that is not bad. Would love to hear if people have other resources in this area.

+1 to katacoda for learning k8s-- I use this as a teaching aid in my DevSecOps class for the k8s portion and it makes my life way easier
+1 to info about containerizing unreal or unity servers-- I still have this research on my to-do list because I've never deployed a game server

Also UDP vs TCP for multiplayer was something I took a minute to wrap my head around recently. This article helped me close the knowledge gap as it touches on when to use each.

Another resource that was really helpful for me was this video where he goes through a variety of components to help portray the design of a robust system for multiplayer games.

I would add to the list that people need to know the engine they are running also eg. if you dont know unity or unreal yet you are going to have a fair bit of trouble containerising and running it in kubernetes.

From @domgreen We should add resources to the SDK sections for this.

A section in the documentation before "Overview" entitled "Prerequisite Knowledge" (or similar), that lists requisite assumed knowledge of the project, with links pointing to resources to learning these aspects.

From @roberthbailey - instead make this after Overview (ideally as a next step), so that users can go from Overview > Prerequisite Knowledge > Install, so that users can pass through as they need to (@markmandel says this makes sense)

Was this page helpful?
0 / 5 - 0 ratings

Related issues

jmaeso picture jmaeso  路  5Comments

adamhosier picture adamhosier  路  5Comments

roberthbailey picture roberthbailey  路  4Comments

lazeratops picture lazeratops  路  4Comments

AngryDeveloper picture AngryDeveloper  路  4Comments