A dev/ops engineer builds a game

..and a session server

..and a cloudformation stack 🔌 Let’s connect! 🌐

In brief:

Online play now exists, but games go out of sync.

Will is now open source

I’ll work on WASM support in Amethyst for 6 weeks, then likely have a break from this project.

Overview

You can now play online.. ..kind of 😛!

The new version can be downloaded on itch.io.

A rough attempt at online play is available for up to 16 players in the same session. However, there is no synchronization between devices, so in this version they can be out of sync when receiving packets at different times.

The original plans for additional content were replaced with online play.

Online Play

Session Lobby Session lobby shows each computer in the session. Character Selection Up to 16 players may play in the same session. Online Play Game play with all players on the map.

Players can play with each other through the Network Game mode. One player chooses to host the session, and other players may join the session using the 4 letter code that the host receives.

⚠️ Warning: No synchronization is done between game clients, so games can go out of sync very quickly. For lower latency, you may wish to set up your own session server.

Session Server

Control input into the game is first sent to the server, then broadcasted to everyone in the same session. Each game client may receive the control input messages at different times, and the game doesn’t yet know to wait for everyone to be ready before continuing.

The game session server is in North Virginia – eastern US. If you live far from there, it will take longer to send your control input to the server, as well as receive it back.

You can check the latency of the connection using the ping command:

$ ping 52 .22.144.29 PING 52 .22.144.29 ( 52 .22.144.29) 56 ( 84 ) bytes of data. 64 bytes from 52 .22.144.29: icmp_seq = 1 ttl = 30 time = 282 ms 64 bytes from 52 .22.144.29: icmp_seq = 2 ttl = 30 time = 308 ms ^C --- 52 .22.144.29 ping statistics --- 2 packets transmitted, 2 received, 0 % packet loss, time 1000ms rtt min/avg/max/mdev = 282 .400/295.140/307.880/12.740 ms

Hint: Smaller round trip time (RTT) is better, ideally less than 50 ms.

ℹ️ Instructions on running your own session server will be posted at a later date.

Open Sourcing

This has been on my mind for a while, but I wanted a number of things done before opening it up:

Development guide to be written.

Contribution guidelines to be written.

Cross OS hosted CI with vulkan support (or, remove vulkan requirement from tests).

Figure out how to earn money.

I haven’t really done any of that, but remaining time for this project is short, so might as well 🦀.

There are two repositories to play with:

autexousious : Code for Will and the session server.

: Code for Will and the session server. will_assets : Default assets that are being shipped.

Feel free to open issues in the autexousious repository if you have a question.

What’s Next

In the next cycle, I’ll attempt to get the game to run in the browser as a Web Assembly application, then it may be time to put this dream aside 🙂.

If you would like to support me, you could:

Peace ✌️