A collection of Services (better project name pending) to manage Multi Player Games. Services will enable games to create a persistent multi player world. Unreal Engine 4 will be used as the Game Client / Game Server(s) in a Multi Player RPG.
Setting Up your Machine for Development / Test and Local Deployment
Generate Documentation
mix doc && open doc/index.html
- Unreal Engine 4 - https://github.com/Alezrik/game_services_client-UE4
Install Docker - Docker containers for local deployment build/release
Install Minikube - local Kubernetes - local deployment environment
Install kubectl - Kubernetes cli
Clone project
git clone https://github.com/Alezrik/game_services_umbrella.git
Install NPM packages
cd apps/game_services_web/assets
npm install
Startup minikube
mix kubernetes start_minikube
Verify Minikube services are up and running
mix kubernetes status
Switch to Minikube docker service
eval $(minikube docker-env)
NOTE Windows requires you to copy and paste the result of
E:\game_services_umbrella>minikube docker-env
SET DOCKER_TLS_VERIFY=1
SET DOCKER_HOST=tcp://192.168.99.100:2376
SET DOCKER_CERT_PATH=C:\Users\ex_ra\.minikube\certs
SET DOCKER_API_VERSION=1.35
REM Run this command to configure your shell:
REM @FOR /f "tokens=*" %i IN ('minikube docker-env') DO @%i
Build Services Umbrella
mix docker build_umbrella
Create Release
mix docker build_release
Create Service User for Kubernetes
mix kubernetes create_auth_user
Create Secrets for Services
mix kubernetes create_secrets
Create a Headless Service for Internal Cluster
mix kubernetes create_headless
Create an External Service for external http access
mix kubernetes create_service
Create GameServicesUmbrella cluster
mix kubernetes deploy
Verify Cluster / Kubernetes Deployment
minikube dashboard
NOTE: When running in development locally you will see some unintended messages from swarm (Issue)[#15]
mix phx.server
NOTE: When running unit tests locally you will see some unintended messages from swarm (Issue)[#15]
mix test
- authentication - Authentication Service
- cluster_manager - Cluster Manager Service
- game_services - Database Services
- game_services_web - Pheonixframework - HTTP Frontend Service
- mix_docker - mix tasks for interacting with docker
- mix_kubernetes - mix tasks for interacting with kubernetes/minikube
- user_manager - services for managing user accounts
Project Changelog
Reset Docker to Normal Docker Service
eval $(docker-machine env -u)
Connect to a Running Pod
kubectl get pods
kubectl exec -it POD_NAME -c SERVICENAME -- /bin/bash
./bin/SERVICENAME remote_console