スクラッチプログラミングに挑戦している皆さん、どうも!スクラッチコーチです。
前回は
自作ゲームのサンプルとしてシンプルな
鬼ごっこを
作った!これをオンラインゲームエンジンを
使ってMMO
化していく
手順をやっていこうと
思う。
ここで手順を押さえておけば、次はキミ自身のゲームをMMO化することも可能だ。そんな
大いなる一
歩を
一緒に
行こう!
今回の目標「オンライン鬼ごっこを作る」
前回作った
鬼ごっこの
仕様を
改めて
確認しておくね。
- プレイヤーは緑
- エネミーは赤
- プレイヤーはエネミーから逃げれば逃げるほどポイントが貯まり、体のサイズが大きくなっていく。
- プレイヤーはエネミーに触れるとポイントがリセットされて、体のサイズが元に戻る。
- エネミーは不規則に動きつつも、ときどきプレイヤーめがけて急襲してくる。
こういう
一人用の
鬼ごっこゲームを
作った。これをMMO
化していくにあたって、
以下の
要件を
加えていこうと
思う。
- 別プレイヤー用のフレンドというスプライトを作る(オンラインゲームエンジンを使う)
- フレンドは水色
- エネミーは各プレイヤーごとにローカル表示される。つまり今回はエネミーはオンライン化の対象外。
- フレンドも逃げる時間が長いほど体のサイズが大きくなる。
ゲーム
内容自体はシンプルさを
重視しているから、まぁこんなところかな。
オンラインゲームエンジンをバックパック化する
いきなり
本題だよ。さっそくMMO
化を
進めていく。まずは、
鬼ごっこではなくて、オンラインゲームエンジンの作品を開こう。
ok-scratch
u003cpu003eオンラインゲームエンジンを作ってない!という人はu003c/pu003eu003cpu003e- このシリーズの①から一緒に作ってからここに戻ってくるかu003c/pu003eu003cpu003e- シリーズの⑩番目の記事を開いて、そのサンプルプロジェクトをリミックするかu003c/pu003eu003cpu003eどちらかの方法でオンラインゲームエンジンをゲットしよう。u003c/pu003e
プロジェクトをいじるので、プロジェクトのコピーを
作っておくことをおすすめする。
自プレイヤーを選ぶ
そしてスプライト「
自プレイヤー」を
選ぼう。
不要なブロックを削除する
めっちゃ
消すw
最終的には↓こんな
感じ。
クラウドプレイヤーにコピペする
このブロック
群をスプライト「クラウドプレイヤー」にまるっとコピーする。ドラッグアンドドロップでスプライトにまるっと
持っていこう。
スプライト「クラウドプレイヤー」
側にブロック
群がコピーできたか
確認しておこう!
バックパック化する
こんどはスプライト「クラウドプレイヤー」をまるごとバックパックに
追加するぞ。エディター
下部の「バックパック」という
部分をクリックして
開けてから、スプライトをドラッグアンドドロップだ。
これで
一区切り!オンランゲームエンジンをバックパック
化することに
成功したぞ!
オンラインゲームエンジンを移植する
さぁ、いよいよ
鬼ごっこのオンラインゲーム
化に
挑戦だ!オラ、ワクワクすっぞ!まずは
鬼ごっこプロジェクトを
開こう!
中を
見るでエディタを
表示しておく。
バックパックからクラウドプレイヤーを追加する
さっきバックパック
化したクラウドプレイヤーを
取り
出して、スプライトのところにドラッグアンドドロップしよう。
よし、いい
調子だ!
ニセモノのクラウド変数を消す
変数のところを
見てみよう。おお、クラウド
変数がバシッと
追加されてる!と
思いきや、
実はこれニセモノなんです……。(でも、まだ
消さないでね)
ニセモノだという
証拠もあります。この
作品のプロジェクトページを
見てみると……あるはずの「クラウド
変数」
宣言がないんです。
これは
由々しき
事態ですな。
消しましょう。
あ!待って!消さないで!w実は
消し方にもコツがある。そのままサクッと
消すと
変数を
使っている
場所も
消えてしまって
大変なことになってしまうのだ。
恐怖しかない!もはや
作り
直しといっても
過言ではないレベルで
手間だね。
ステージ「背景」を選ぶ
こんなときはいったん
落ち
着いてステージをクリックしよう。
ステージ内でクラウド変数を消す
ステージが
選択された
状態で、さっきのニセ
変数たちを
一掃しよう。
最終的には↓こんな
感じでスッキリする。
あ!まだクラウドプレイヤーは
開かないでね。ステージのままだよ。いま
クラウドプレイヤーを開くと、またニセ変数が復活しちゃうからね。
クラウド変数を作り直す
いま
消したクラウド
変数を1から8まで
作り
直そう。
クラウド
変数にチェックを
入れ
忘れないでね!8
回も
繰り
返してると1
回くらい
忘れちゃうこともある。
ok-scratch
u003cpu003e僕は2回忘れてたwu003c/pu003e
クラウドプレイヤーを確認する
よし、あらためてクラウド
変数を8
個作り
直したあとなら、クラウドプレイヤーを
確認してもニセ
変数は
復活しないぞ。
見てみよう。
おっけい!
ok-scratch
u003cpu003eクラウド変数の中身はチェックしないから、変数を表示するチェックマークは外しておいてOKだよ。u003c/pu003e
バックパックからメイン処理を取り出す
スプライト「クラウドプレイヤー」には
使われてないブロック
群を
追加しておいたよね。あれを
鬼ごっこのメインループ
内に
追加しようと
思う。ドラッグアンドドロップで
追加しよう。
ok-scratch
u003cpu003eちなみにどのスプライトに追加するかという判断基準は、位置情報を共有したいスプライトはどれか、って考えるといいと思う。u003c/pu003e
クラウドプレイヤー側ではこのブロック群は使わないから削除しちゃっていいよ。
鬼ごっこ独自のデータをクラウド変数に追加する
おし、ここから
本番だ!いまのクラウドプレイヤーは(プレイヤーUID
以外に)X
座標とY
座標という
位置情報だけを
共有するシンプルな
作りになっているよね。でも
鬼ごっこには
位置情報以外にも
ポイントという独自のデータもあって、これもクラウド変数で共有しなくてはならない。
ok-scratch
\u003cp\u003e今回の鬼ごっこではポイントというデータだけだけど、みんなの作品の中にはもっと所持アイテムとかレベルとか装備とか、他にもスキルとかとか、いろんな情報があるかもしれないね。でも全部ここから学ぶ方法で同じように追加すればクラウド共有できるから引き続き一緒に見ていこう。\u003c/p\u003e
プレイヤーのメインループにクラウド処理を追加する
まずは
今しがたコピーしたブロック
群を、プレイヤーのメインループ
内に
組み
込もう。すでに「ずっと」ループはあるから、それ
以外のブロックをバラバラに
追加していくよ。
「クラウド - セットアップ」を追加する
メッセージ「クラウド - セットアップ を
送って
待つ」は、
最初のところに
追加するぞ。
↓こんな
感じになる。
座標情報を追加する
X
座標とY
座標を
送信用データに
追加するブロックも
追加する~。
↓こんな
感じになる。
X
座標とY
座標に
変数「スピードX」と「スピードY」が
加えられた
後に
追加すればOKだよ。
「クラウド - ティック」を追加する
このメッセージも
続けて
追加してしまってOK。
今回は
続けて
追加するけど、
追加場所の
判断基準としてはリスト「★
送信用データ」に
追加予定のデータをすべて
追加した
後に、このメッセージを
送る
感じだよ。だからもしキミの
自作ゲームでは
複雑な
計算をしてから
送信用データを
作り
込むなら、その
処理が
全て
終わって
送信用データが
整ってからメッセージ「クラウド - ティック」を
送るようにしよう。
独自データ「ポイント」を共有する
さぁ、これだよね。ポイント。ポイントも
送らないとね。
鬼ごっこ
独自データを
送信用データに
追加するぞ。これが
成功すれば
自作ゲームのMMO
化が
近づくぞ。
送信する
そのままスプライト「プレイヤー」にて
送信用データにポイントを
追加しよう。
ゆーてもコレだけかい!wまぁポイントの
計算はすでに
終わってるしね。
追加するだけならこれだけだわな。
受信する
ただ
送信も
重要だけど、
受信も
大切だよね。
クラウドプレイヤーを選ぶ
クローンティックを見つける
だいぶブロックが
多いから
見つけにくいけど、ブロック
定義「クローンティック」を
見つけよう。
↑こういうブロック
群。
デコード処理を追加する
XとY
以外にもポイントが
送信されてくるので、
最後尾にデコード
処理を
追加する。
大きさを変える処理を追加する
変数「
値」にはポイントが
入っている
手はずなので、コレを
使ってクラウドプレイヤーの
大きさも
変えよう。
いえす、これでデータ
的なことは
整った!ためしに2つ
並べて
動かしてみよう。
あとは
見た
目を
変えたい!
フレンドに変える
クラウドプレイヤーのスプライト
名をフレンドに
変えようか。
コスチューム
めちゃカンタンに
四角い
水色作るwせめて
目もつけるか……。
描くのが
苦手な
人はここからダウンロードしてファイルをコスチュームにアップロードしてくれ。
フレンドのコスチュームもともといるスクラッチキャットのコスチュームは
削除してOK。
テスト
よし、これでテストぉ!うん、
動きは
問題ない。けどフレンドと
自分の
重なり
方が
微妙。
自分を
前に
出すようにしようかな。
自分を最前面にする
プレイヤーを
選択してから
最前面になるようにブロックを
追加するよ。
これでオーケー!
フレンドも
時間が
経つと
大きくなるようになってるね!やったぜ!
まとめ
今回はソロプレイ
用の
鬼ごっこを、
途中からMMO
化するというチャレンジに
挑戦したぜ。ココまで
作り
上げてきたオンラインゲームエンジンを
実践的にカスタマイズする
方法のキホンがわかったと
思う。
大切なのは
結局のところ
以下のようになるかな!
- バックパック化したクラウドプレイヤーを自作品に追加する
- メインループに
- メッセージ「クラウド - セットアップ」を加える
- メッセージ「クラウド - ティック」を加える
- 自作品特有のデータをリスト「★送信用データ」に追加する
- クラウドプレイヤーのブロック定義「クローンティック」にて、自作品特有のデータをデコードして処理する
大まかなカスタマイズの
流れはこんな
感じだね。バックパック
化は
今回やったから
次からはすでにバックパック
化してあるクラウドプレイヤーを
使えばいいだけだから、そこは
楽だね!
複雑なプロジェクトのオンライン
化手順を
知りたい
人はグリフパッチさんの
動画をチェックしてみてくれ!