(WIP!!) command-line interface based mmorpg (derives spell from mmorpg spells, text because it's, well, text-based). uses tview as the graphical interface. started as a bachelor's thesis/project of mine, relying on the Kubernetes orchestration & containerization concepts, as well as high-availability and consistency-related prerequisites.
demo_compressed.mp4
to get up and running with spelltext with kubernetes, simply run:
# rebuild proto (if necessary):
$ cd proto
$ protoc -I. -I$(dirname "$(which protoc)")/../include --go_out=paths=source_relative:. --go-grpc_out=paths=source_relative:. $(cat ./files)
$ cd ..
# deploy cluster:
$ minikube start
$ helm install spelltext k8s/ -f k8s/values.yaml -n spelltext --create-namespace
$ kubectl config set-context --current --namespace=spelltext
$ minikube tunnel # occupies terminal
$ kubectl port-forward pods/spelltext-nats 4222:4222 # also occupies terminal, todo: implement serviceip & loadbalancer (helps with nats quorum impl)
# run client:
$ cd client
$ go run client.goor with docker via docker-compose:
$ docker compose up --build --force-recreate --no-attach pgadminfor further usage, refer to the docs/USAGE.md doc, where everything from setting up, configuring services, maintaining and cleaning up is explained.
chatserver: uses fanout MQ (built upon NATS JetStream durable streams)charserver: servers as a central characters' hubbuildserver: allows players to upgrade their characters via a build system (TODO)storeserver: a vendor-based marketplace servicecombatserver: instances a isolated '1v1' environment for two entities (players, NPCs)gambaserver: lets players open chests of various tiers by spending currencyauthserver: responsible for authenticationinventoryserver: sole purpose of organising (CRUD) items into the character inventories (backpack)progserver: progressserver is a bit too much, no? keeps track of player story progression (TODO)
