とりあえず、サーバとクライアントは別になります。


// サーバ側
1P = new ServerSend();
2P = new ClientRecv();

// クライアント側
1P = new ClientSend();
2P = new ServerRecv();


サーバ側はクライアントからの入力を受け付け、コリジョン判定などの後に自分の入力と一緒に返します。
クライアント側はサーバに入力を送り、帰ってきた情報でぷよを移動します。(2フレームかかる)
サーバ側はフレーム毎にぷよ位置を送信し、クライアントとの同期を図ります。


フレームスキップを考慮する為、情報はフレームを表す数値と共に送ります。
ラグがあるとクライアント側は一気にぷよが瞬間移動することになりますが、それはしょうがないです。
フレーム処理も少し改造しなきゃだめそうですね。