ルールエディターの基本:変数
次に頭に入れておきたいものは「変数(Variables)」。数学でいう「x」や「y」といった概念と同じですが、プログラミングの変数は数字だけでなく、文字やプレイヤーID、あるいは配列など、様々な種類の情報を格納しておくことができます。
ルールエディターの変数はその上で、以下の3種類(スコープ)それぞれ別で作ることができます:
- グローバル:ゲーム全体で管理している変数
- チーム:チームごとに管理している変数(「チーム1の変数x」と「チーム2の変数x」は別)
- プレイヤー:プレイヤーごとに管理している変数(「プレイヤー1の変数x」から「プレイヤー128の変数x」まで全部別)
作りたいものやコードの書き方によって使用する変数は違ってきますが、私たちが作るVIPモードの雛形では、4つの変数を使うことになります。例のごとく名前は何をつけてもいいので、自分にとってわかりやすい名前に変更しても大丈夫です:
- グローバル変数「VIPKillTeam」:1番最近VIPをキルしたチームの情報を記録するための変数
- チーム変数「VIPDeathCount」:チーム毎のVIPがデスした回数を記録するための変数
- チーム変数「VIP」:チーム毎のVIPプレイヤーを指名するための変数
- チーム変数「VIPCheck」:そのチームに現在VIPが居ることを確認するための変数
また、万が一のバグを回避するために、ゲーム開始時に変数の初期値を一通り指定しておくと良いでしょう。
では「VIPプレイヤー」を指名するための変数を作ったところで、さっそくチームのランダムなメンバーをVIPにするためのプログラムを組んで行きましょう。ここで使うことになるのが「配列(Array)」です。
ルールエディターの基本:配列
配列とはズバリ、「縦は1列しかないけど、横はいくらでも伸びている表」のことで、複数のデータを1セットとして扱う時に使われます。ここではチームのメンバーのリストを作るために、一旦配列としてデータを揃えなくてはいけないわけですね。
ちなみに本職のプログラマーなら配列に配列を仕込むことで縦列を増やしたり(2次元配列)、立体的な表を作ることもできる(3次元配列)のですが、複雑になってくるので今回は扱わないのと、Portalのルールエディタは3次元配列を作れないという噂もありますので、本記事では割愛していきます。
では早速、実際のコードを処理の順番に見ていきましょう。
- フィルター済み配列:普通に「プレイヤーの配列」を作ってしまうと、両チームの全プレイヤーをリスト化してしまうので、フィルターを使って片方のチームに絞る必要があります。
- プレイヤーを取得:フィルターの要素は「プレイヤー」です。
- =/チームIDを取得/現在の配列要素:図のようにはめ込むと、「フィルターの要素(プレイヤー)」の「チーム番号」が「チーム1」と同じ場合だけ、というフィルターになります。
- 配列内のランダムな値:フィルターされて作られた配列(チーム1のプレイヤーリスト)の中から、ランダムに1つ選択します。
- 変数を設定:上で選んだランダムなプレイヤーを「チーム1」の「VIP」として登録します。
これで「チーム1のランダムなプレイヤーがVIPになる」というプログラムが完成しました。あとはチーム2用に同じ物を作っておいて、ゲーム開始時のルールに組み込んでいきましょう。
コメント
コメント一覧 (13件)
こういう風にルールに処理書きまくると、可読性悪すぎて、後で見たときに、何やってるかわからなくなるから、処理ごとにサブルーチン作ったほうがいいぞ。
動けばいいって思想でコード書くのは危険。
可読性が悪かったり、処理の分離ができてないと、バグが発生したときにどこでバグが起きてるのか追うのが大変になる。
こういうコードはアンチパターンって覚えておいたほうがいいよ、いわゆるスパゲッティコードだから。
クリスマスにすら必死にアンチコメしてるの悲しすぎだろ
オワコンにしがみついてるアホに効いてて草
効きすぎて反論しちゃったねぇw
聖夜に批判してることについて言ってるだけの人に噛みついてて草
哀れすぎる
ブーメラン刺さってんねぇw
と寂しいやつが申しております
コメ主に対してブーメランって言いたいんやろか
BF擁護もしてないのにキレ散らかしてるのはよっぽど悔しかったんかな
機能は凝ってるのに本体が機能してないのもったいないよな
なおアンロックは進まん模様
作っても人が来ないぞ
カスタムマッチ以前にこんなゴミゲーやらんて笑
どうやらApexでも弱いみたいですね。