googleforgames / open-match

Flexible, extensible, and scalable video game matchmaking.
http://open-match.dev
Apache License 2.0
3.17k stars 335 forks source link

Open Match User Experience TODOs #857

Closed yfei1 closed 4 years ago

yfei1 commented 5 years ago

Open this issue to track the Eng and Doc efforts to improve Open Match's User Experience. I'll break down the overall user experience into several pieces with different prioritization levels.

: P0, need to be done in the next three weeks : P1, need to be done in six weeks : P2, need to be done before 1.0

Basic: How to do match making with Open Match?

This part covers why, what, and how to implement Open Match customized components.

  • Doc:
  • [x] *Have quick starts that explain why do we need the Director, MMF, and Evaluator.
  • [x] *Have quick starts that show users how to implement these components.
  • [x] *Have a brief README under the examples/ directory to explain which subdirectory users should look into.
  • Eng:
  • [x] *Refactor current examples to use public libraries.
  • [x] *Have a second-match demo installed in a different namespace

Basic: How to build and deploy Open Match?

It would be great if Open Match can provide some tools/scripts to build and deploy Open Match to a k8s cluster without having users writing the Dockerfiles, yamls for k8s resources.

  • Doc:
  • [ ] **Provide docs to show how to use the user Makefile or shell script.
  • [x] *Provide docs to show how to deploy mmf and evaluator with minimalistic settings.
  • [x] *Explain what were installed when users ran kubectl apply -f install.yaml
  • Eng:
  • [x] *Have the quick start only install open-match-core components - Jaeger, grafana, prometheus... are too much to cover for a quick start, perhaps we should have telemetry supports installed only in the advanced guide?
  • [ ] **Have a unified Dockerfile to build and push images for the customized components - we should also have a separate Makefile or shell script for the Open Match users - This would likely come after v0.8, current plan is to have all the example codes checked in and discuss where they should be placed in the end.
  • [x] *Have minimalistic pod definitions in the examples/resources directory to deploy the MMF and Evaluator using cat mmf.yaml | kubectl apply -n open-match -f -. Note that this would only deploy a pod, simply to show how to have the customized components up and running.

Basic: How to check if Open Match works as expected with the customized components?

Have a fake service that will generate tickets and fetch matches under both k8s and local environment.

  • Doc:
  • [ ] **Provide docs to show how to run the fake service with one line - e.g. ideally just do go run fake_service.go.
  • [x] **Provide docs to show the expected logs from Open Match and customized components after running the fake service.
  • Eng:
  • [x] *Have demo's director calling FetchMatches with a pool of no filters, and wrap demo's frontend and director as a service.
  • [ ] **Refactor minimatch into a service/Have a new CLI service without dependencies on local config files.

***Advanced: How to customize Open Match and deploy scalable MMF/Evaluators using helm?

Ideally P1, depends on the release date of helm3

  • [x] Push Open Match's helm chart to helm hub.
  • [x] Have a doc for how to customize Open Match with helm using its configurable parameters.
  • [x] Have a template for scalable deployments of MMF & Evaluator
  • [ ] Guide on how to install Linkerd/do gRPC client side load balancing

Advanced: How to customize and use Open Match's telemetry supports?

***Advanced: How to do real time scaling/rolling update with Open Match?

sawagh commented 4 years ago

Please revisit this to identify a similar todo list for v0.9

sawagh commented 4 years ago

@yfei1 - Please review the remaining tasks here. I would prefer having separate issues for pending tasks - than longer lived issues - easier to pin them to milestones.

sawagh commented 4 years ago

Closing this as we have reasonable UX tasks created. Please create separate tasks for new issues if any.