To get to the point where I can easily write blackbox tests for the engine, I’ll first need to setup some interfaces so that my tests can communicate the test parameters and expectations in a straight-forward manner. I’ll also need to provide the client/server junction with an interface so that I can swap out the usual socket messaging with direct function calls so that my tests can run in a CLI environment without any complicated network setup.
From these requirements, here’s the list of interfaces that I’ll need to define:
- client input (player commands)
- client output (player feedback)
- client socket inlet/outlet
- server socket inlet/outlet
- server world bootstrapping
- server random seed
The world bootstrapping will provide a starting state for the server environment, which might vary from test suite to test suite. The random seed will provide deterministic values for the server to output, given certain inputs.