スクラッチプログラミングに挑戦している皆さん、どうも!スクラッチコーチです。
前回は別プレイヤーを検知することに成功したぞ!これで
新しい
人が
同じプロジェクトをプレイしていることをプログラム
内で
知ることができたんだ。これはオンラインゲームにとって
最高にエキサイティングな
前進だよね!
今回はこれをもっと
進めていくぞ。
今回の目標「プレイヤーを管理する」
新しいプレイヤーを
検知できたので、このプレイヤー
情報を
格納するリストを
作りたい。そうすることでこのプレイヤーは
検知済みのプレイヤーとして
判定することも
出来る。それの
何が
嬉しいかというと、プレイヤーが
新しく
入場した
際に1
回だけ
行いたい
処理がある
場合に
役立つんだ。
全く
新しいプレイヤーなら処理Aと処理B、検知済みのプレイヤーなら処理Bだけ、みたいな分岐を作れるってことだよ。この
機構をプレイヤー
管理と
呼ぼうか。
今回はこの
管理システムを
構築することを
目標に
一緒にやっていこう!
カンタンなまとめ
今回の
流れをカンタンにまとめておくよ。
- 新しく2つのリスト「★プレイヤーUID一覧」と「★プレイヤーデータ一覧」を作りプレイヤー管理用のデータベースのように取り扱う
- 新しいプレイヤーのときは入場処理とデータ更新処理を行い、検知済みのプレイヤーのときはデータ更新処理のみを行うように、クラウド変数の受信処理を作り込む
こんな
感じ。ステップは
少なそうに
見えるけどリスト
同士の
関係性が
複雑になってくるので、じっくり
取り
組もう!
新プレイヤーを追加する
検知した
別プレイヤーが
新しくゲームをプレイし
始めた
人なのか、それともすでに
検知済みの
人なのかによって
処理が
異なるので、そこを
判断できるようにしよう。
作戦としては
前回クラウド
変数の
比較でやったように、リストを
使った
比較をしていく。ただし
今回は、デコードした
プレイヤーUIDがすでに検知済みのプレイヤーUID一覧にあるかどうかを調べて、なければ新規、あれば既知として判断するコーディングをしていきたい!
新しいリスト①「★プレイヤーUID一覧」を用意する
すでに
検知済みのプレイヤーなのか、それとも
新規プレイヤーなのかを
判断するために、プレイヤーUID
一覧をリストとして
用意しよう。
初期化する
使う
変数「エンコード
文字列」を1
度デコードしたから、
変数「値」の中にはプレイヤーUIDが入っているんだったね。★プレイヤーUID
一覧に
存在しているかどうか、ちょっと
変わったブロックを
使ってチェックしてみよう。
リストブロックの1つに、
リスト内の何番目に値が存在するかを教えてくれるものがあって、リスト
内になければゼロを
返してくれる。ゼロが
返ってきたら
新規プレイヤー、1
以上なら
検知済みのプレイヤーっていうことになるよう
作っていくよ。
新規プレイヤーの入場処理を行う
では
条件ブロックを
使って
判定していこう。プレイヤー
番号がゼロなら
新規プレイヤーだね。
プレイヤーUIDを
一覧に
追加して、
次回からは
検知済みのプレイヤーとして
扱われるようにしよう。
新しいリスト②「★プレイヤーデータ一覧」を用意する
ここで2つ
目の
新リストだ。★プレイヤーデータ
一覧を
用意しよう。
初期化する
使う
空白をリストに
追加して
長さを増やしておこう。
新しいプレイヤーのデータが
格納される
予定の
行だよ。
プレイヤー番号を更新する
新しいプレイヤーの
番号はゼロのままなので、このあとすぐ
追加するプレイヤーデータの
行の
番号を
割り
当てておこう。
プレイヤーデータを更新する
ここまでは
新規プレイヤーのみの
入場処理だったけど、
ここからは検知済みのプレイヤーとも共通の処理になるよ。★プレイヤーUID
一覧の
何番目にプレイヤーUIDが
存在するか、
新規プレイヤーも
検知済みプレイヤーもこの
段階では
明らかになっているね。そこで、★プレイヤーデータ
一覧の
同じ
位置に
更新データを
格納していきたい。
図にするとこんな
関係性だよ↓
プレイヤーデータリストを置換する
プレイヤー
番号の
位置にあるデータを2つ
目の
引数「
更新データ」で
置換しよう!
プレイヤー番号を空白にしておく
後片付けとしてプレイヤー
番号を
空白にしておこう。これは
次のチュートリアルで
重要になってくるよ。
テストぉ!
並べてテストしてみよう!
ナイスぅ!
完璧に
同期できてるね。これタブを3つ
並べても
上手くいくよ。やってみてね。プレイヤーUID
一覧とプレイヤーデータ
一覧が2
行ずつに
増えるから。その
瞬間ゾワッてなるかもよ、
自分すげーってw
次回へ
この
同期システムを
使えば、なんと
100人参加型のオンラインゲームを作ることも可能なんだよ……すごくない?
今はクラウド
変数を1つだけしか
使ってないっていうのも
信じられないよね。よくここまで
来たね。スクラッチのトップクラスのオンラインゲームを
作る、そう
豪語して
始まったこのシリーズもいよいよココまで
来た。
頂上はもう
視界に
捉えているぞ!もうちょっと
一緒に
頑張ろう!
次回は
別プレイヤーを
表示させるところを
実装しよう。もちろん
表示するだけじゃなくて
動きも
同期させるぞ!さらにその
後のチュートリアルではクラウド
変数を8つ
使ってスケールアップさせるよ。そしたら
同期のスムーズさが
圧倒的に
良くなるから
期待してて。また
近日中に
更新するので
待っててくれぃ。