アクションゲームをつくってみっか
やっぱりロボゲーが作りたいのでラキオンのパクリを作るのはまた今度にする。んで、あれだけ大言こいてたのにヤッパやめましたでは流石に申し訳が無いので、単純なネットワークFPSのサンプルを作る事にした。
世の中には「ネットワークFPSをつくるお^^」というチルドレンが多いわけだが、頑張れば作れなくも無いという事を証明して、少しは頑張っていただこうではないか、というのがこの企画の趣旨だ。
予定表
- 計画を練る ←いまここ
- スクリプトを書くための予備知識をおべんきょする
- 実際にゲームを作り始める
となる。従って今回は、ゲームに必要ないろいろな事を計画し、決めていく
ゲームの計画
概要
最大6人程度のプレイヤーが、狭い部屋で銃を持ち戦う。敵味方の識別はなく、ひたすら殺しあう。
一応Easy3Dを用いて3Dゲームとして仕上げてやる。
接続形式
サーバー・クライアント型の形式を取る。
各プレイヤーはホストに情報を送り、ホストがそれに送り主コードなどをつけて送信者以外の全員に送信する。
マッチングサーバー
作るのがめんどくさいので実装しない。
ゲームルール
プレイヤーはゲームに参加する際に、3種類の銃から一つを選び装備する。
- 3種類の銃
- 3種類の格闘武器
- 2種類の対集団用の手榴弾
からそれぞれ1種ずつ選択し装備して戦う。敵のHPをゼロにすると+3ポイント、敵に倒されると-1ポイント。ホストが決めた時間内に一番多くの点数を稼いだプレイヤーが勝者である。
武器
射撃武器
性能の違う3種類の中から一つを選択できる。
なお筆者は銃器に全然詳しくないので、銃の名前や性能、形などに一切の保証は無い。
- アサルトライフル
- 連射が可能。精度は若干劣る。連射すると照準がぶれる。威力は普通。
- ライフル
- リロードが必要なため連射できない。最も精度が良く、威力も高い。
- ショットガン
- リロードが必要なため連射できない。最も精度が悪く威力も弱いが、一度に10発の散弾を発射する。
まとめ
名前 | 装弾数/所持弾数 | 威力 | 精度 | 連射 |
アサルトライフル | 30/120 | 35 | ○ | ○ |
ライフル | 6/30 | 80 | ◎ | × |
ショットガン | 7/35 | 15 | × | △ |
格闘用ナイフ
近接戦闘において高い殺傷能力を誇るナイフ。
左クリックと右クリックで挙動が異なる。左は連射が効く。右は強力だが、モーションが大きく連射できない。
名前 | 威力 | 連射 | リーチ |
コンバットナイフ | 25 | ○ | 短い |
ナタ | 40 | × | 長い |
セガールキッチンナイフ | 80 | ○ | 極めて短い |
手榴弾
自分を含めた範囲内のプレイヤーを爆発によって殺傷する投擲兵器。
- パイナップル
- 投げてから4秒後に爆発する。壁に当たると反射する。
- ポテトマッシャー
- 投げた後何かにぶつかると爆発する。
当たり判定など
射撃およびナイフアタックは、マウスクリックによって攻撃判定を発生させる。攻撃判定は、自分の武器の銃口の向き等を元にベクトルを定め、そこから射程距離に相当する長さを持つレイを飛ばしてプレイヤーやマップとの当たり判定を行う。プレイヤーに当たっていた場合、プレイヤーのどのオブジェクトに当たっていたかを調べる。コレによって、頭に当たった場合はダメージを増量、足に当たった場合はダメージを減少、といった事を実現する。
頭に玉が当たった場合は3倍のダメージとなる。このようにダメージの分布を定めたので、それに従ってプレイヤーモデルの方もオブジェクト分けをしておく。
手榴弾の場合はそういうわけにもいかないので、オブジェクトとして発生させる。爆発した瞬間の爆弾の座標と、各プレイヤーの座標との距離によって与えるダメージが変化する。
用意したモデル
今回は主に
- 人物モデル
- 1人称視点の時のモデル
の2体を用意した。
人物モデル
まあなんか適当にこうなった。こいつを歩かせたりする。
決して某マクレーンに喧嘩を売っているわけではない。適当に服を着せたらこうなった。ホントだヨ
手のモデル
自分のカメラの前にこのモデルを表示して、一人称視点を表現する。本来はこのモデルに対してポリゴンを沢山裂いた(近くで見ても見ごたえのアル)武器を持たせ、人物モデルはテケトーなモデルを持たせるべきなのだが、めんどくさいので両方一緒の武器を持っている。