This is the currently hosted version of Mario Kart 8 on Samtendo Network.
git clone --recursive https://www.github.com/SamtendoNetwork/mario-kart-8-python.gitYou need:
- S3 instance
- MongoDB server 6.0+
- Redis server 7.0+
Install Python3 and these libs:
- NintendoClients
python -m pip install aioconsole requests pymongo redis grpcio-tools minio
python -m grpc_tools.protoc --proto_path=grpc --python_out=. --grpc_python_out=. grpc/amkj_service.protoThe server is configured entirely through environment variables, all prefixed
with PN_MK8_. Variables without a default are required - the server
exits on startup if one is missing.
| Variable | Default | Description |
|---|---|---|
PN_MK8_NEX_HOST |
0.0.0.0 |
Address the NEX auth/secure servers bind to |
PN_MK8_NEX_AUTH_PORT |
1223 |
NEX authentication server port |
PN_MK8_NEX_SECURE_PORT |
1224 |
NEX secure server port |
PN_MK8_NEX_SECURE_USER_PASSWORD |
required | Password for the NEX guest/secure user |
PN_MK8_NEX_EXTERNAL_ADDRESS |
required | External IP address clients connect to |
PN_MK8_FRIENDS_GRPC_HOST |
required | Hostname of the friends gRPC service |
PN_MK8_FRIENDS_GRPC_PORT |
required | Port of the friends gRPC service |
PN_MK8_FRIENDS_GRPC_API_KEY |
required | API key for the friends gRPC service |
PN_MK8_ACCOUNT_GRPC_HOST |
required | Hostname of the account gRPC service |
PN_MK8_ACCOUNT_GRPC_PORT |
required | Port of the account gRPC service |
PN_MK8_ACCOUNT_GRPC_API_KEY |
required | API key for the account gRPC service |
PN_MK8_MARIO_KART_8_GRPC_HOST |
0.0.0.0 |
Address this server's own gRPC service binds to |
PN_MK8_MARIO_KART_8_GRPC_PORT |
50051 |
Port for this server's own gRPC service |
PN_MK8_MARIO_KART_8_GRPC_API_KEY |
required | API key required to call this server's gRPC service |
PN_MK8_MONGO_DB_CONNECTION_STRING |
required | MongoDB connection string (e.g. mongodb://user:pass@host:27017) |
PN_MK8_MONGO_DB_NAME |
mariokart8 |
MongoDB database name |
PN_MK8_S3_ENDPOINT_DOMAIN |
s3.pretendo.cc |
S3 endpoint domain (scheme is always https) |
PN_MK8_S3_ACCESS_KEY |
required | S3 access key |
PN_MK8_S3_SECRET_KEY |
required | S3 secret key |
PN_MK8_S3_REGION |
us-east-1 |
S3 region |
PN_MK8_S3_BUCKET_NAME |
pn-amkj-d1 |
S3 bucket used for DataStore objects |
PN_MK8_REDIS_URI |
redis://127.0.0.1:6379 |
Redis connection URI |
PN_MK8_REBUILD_RANKINGS_ON_START |
false |
Rebuild the Redis ranking leaderboards from MongoDB on startup (see below) |
PN_MK8_HEALTH_HTTP_HOST |
0.0.0.0 |
Address the HTTP health check binds to |
PN_MK8_HEALTH_HTTP_PORT |
8080 |
HTTP health check port (any request returns 200 {"status":"ok"}) |
PN_MK8_HEALTH_UDP_HOST |
0.0.0.0 |
Address the UDP echo health check binds to |
PN_MK8_HEALTH_UDP_PORT |
8081 |
UDP health check port (echoes received datagrams back to the sender) |
Redis holds the leaderboards as a cache of MongoDB's rankings collection and is
never rehydrated on its own, so a fresh or flushed Redis leaves them empty.
Set PN_MK8_REBUILD_RANKINGS_ON_START=true for one startup to rebuild them from
MongoDB, then unset it. The rebuild is read-only on MongoDB and safe to re-run.
Credits to Pretendo for original repo.