Somekind of a diagram, still unfinished, but I'm too tired now ...
digraph G {
compound=true;
rankdir=LR;
subgraph cluster0 {
label = "Network";
{rank=source; client; server;}
client;
server;
color = black;
}
subgraph cluster1 {
label = "Game Engine";
{rank=min; gs; physics; interpolation; }
gs;
physics;
interpolation;
color = black;
}
{rank=sink; input; graphics;}
client->server;
server->client;
gs->physics;
physics->interpolation;
input->interpolation;
input->client;
interpolation->graphics;
server->gs;
gs->client;
}