ゲームの話「Delta Force」

社会人になってからほんとにゲームをやらなくなり、最近流行のDSやWiiの話題にもまったくついていけない私です。

最近、バンド練習中にメンバーがオンラインゲームの話をしていて、これまたまったくわからなかったのだけど、そういえばまだWindows98かMEでISDNだったころ、Novalogic社というところの「Delta Force」というオンラインゲームにはまっていたことがあるのを思い出した。これはいわゆる戦場で打ち合いをするタイプの軍隊ゲームみたいなもの。各ステージでミッションをクリアするシングルプレイとネット対戦用のマルチプレイがある。

当時はオンラインで同時に多くのプレイヤーと一緒にゲームできること自体が珍しく感動し、おまけに(今でこそしょぼく見えるが)3Dで描かれた人物や建物、広大なマップを360度眺められ、縦横無尽に使える自由度の高さに時代は進化したと感じたものです。

回線やPCの非力さで、数秒のタイムラグ(今ではもうこれではゲームにならない!笑)が生じたり、描画が追いつかなかったりなどもあったけど楽しくて大学のころに高校の同級生をチームを組んで夜な夜な戦っていました。

回線がADSLになり、LinuxサーバをブロードバンドルータにするようになってからNATの設定がうまくできず、オンラインプレイをあきらめてからしまっていたのだけど、そのバンドメンバーの話を聞いたことで思い出し、改めて実家から引っ張り出してみた。
当時はipchainsというコマンドでルータを構成してたけど、そのときはどうやったらNATが作れるのかまったくわからなかった。現在のLinuxカーネルではiptableが主流となっている。改めて調べてみよう。Delta Forceシリーズはその後も出続けていて、第1作の情報はネット上にもほとんどなかったが、オンラインゲーム系をプレイするときのiptablesによるNAT(ポートフォワード)のやり方が書いてあったので、それを参考にやってみたところ・・・できました!

具体的には、natテーブルとにPREROUTINGを設定することと、filterテーブルでのFORWARDの設定が必要みたい。iptablesはパケットフィルタのことしかしらなかったけど、いろんな機能があるのですね^^;
/etc/sysconfig/iptablesに追加したのは、

*nat
(省略)
#Delta Force
[0:0] -A PREROUTING -i ppp0 -p udp –dport 3568 -j DNAT –to 192.168.0.10:3568

と、

*filter
(省略)
#Delta Force
[0:0] -A FORWARD -p udp –dport 3568 -i ppp0 -j ACCEPT

Delta ForceはUDPポート3568を利用する。昔はINPUTで3568を空けて、「できないできない」と騒いでいたけど、そもそもINPUTはサーバ自身が受け取るパケットに関する設定であって、やってることが全然違ったんだなあ。しかし、PREROUTINGの例はネット上でたくさん見つかったけど、それだけじゃだめでFORWARDの設定を追加する必要があるというのがわからなかった。

この設定に加えてDelta Force自体にパッチを適用し、10年前と同じように「NovaWorld」に接続してマルチプレイを堪能!・・・あれ、全然ユーザがいない^^;もう誰もやってないのか。。一応、自PCをマルチプレイのホストにして、シングルプレイを他ユーザと協力して行う「CORPORATIVE」をやったら3名ほど入ってきてくれたけど。それ以外のNovaによるホストの提供や他ユーザのホストは見つからなかった。。懐かしみながら細々とやってみるかな。

DeltaForce