digraph G {
compound=true;
rankdir=LR;
gs [label="Game State"];
client [label="Client"];
server [label="Server"];
interpolation [label="Interpolation"];
physics [label="Physics"];
graphics [label="Graphics"];
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;
}