スクラッチでオンラインゲームを作る⑫ 一人用の鬼ごっこをMMO化してみよう!

スクラッチでオンラインゲームを作る⑫ 一人用の鬼ごっこをMMO化してみよう!
ok-scratch
一人用の鬼ごっこをMMO鬼ごっこに魔改造していく!
難しさ

任意)自分の作業中のスクラッチ作品URLを記録しておこう!再開するときに便利だよ。

LOADING...

※ この記録は今使ってるPCに保存されます。別のPCで作業するときは表示されません。

スクラッチプログラミングに挑戦している皆さん、どうも!スクラッチコーチです。

前回は自作ゲームのサンプルとしてシンプルな鬼ごっこを作った!これをオンラインゲームエンジンを使ってMMO化していく手順をやっていこうと思う。

ここで手順を押さえておけば、次はキミ自身のゲームをMMO化することも可能だ。そんな大いなる一歩を一緒に行こう!

今回の目標「オンライン鬼ごっこを作る」

前回作った鬼ごっこの仕様を改めて確認しておくね。

  • プレイヤーは緑
  • エネミーは赤
  • プレイヤーはエネミーから逃げれば逃げるほどポイントが貯まり、体のサイズが大きくなっていく。
  • プレイヤーはエネミーに触れるとポイントがリセットされて、体のサイズが元に戻る。
  • エネミーは不規則に動きつつも、ときどきプレイヤーめがけて急襲してくる。

こういう一人用の鬼ごっこゲームを作った。これをMMO化していくにあたって、以下の要件を加えていこうと思う。

  • 別プレイヤー用のフレンドというスプライトを作る(オンラインゲームエンジンを使う)
  • フレンドは水色
  • エネミーは各プレイヤーごとにローカル表示される。つまり今回はエネミーはオンライン化の対象外。
  • フレンドも逃げる時間が長いほど体のサイズが大きくなる。

ゲーム内容自体はシンプルさを重視しているから、まぁこんなところかな。

オンラインゲームエンジンをバックパック化する

いきなり本題だよ。さっそくMMO化を進めていく。

まずは、鬼ごっこではなくて、オンラインゲームエンジンの作品を開こう。

スクラッチでオンラインゲームを作る⑫ 一人用の鬼ごっこをMMO化してみよう!を語るok-scratch ok-scratch

オンラインゲームエンジンを作ってない!という人は

- このシリーズの①から一緒に作ってからここに戻ってくるか

- シリーズの⑩番目の記事を開いて、そのサンプルプロジェクトをリミックするか

どちらかの方法でオンラインゲームエンジンをゲットしよう。

プロジェクトをいじるので、プロジェクトのコピーを作っておくことをおすすめする。

自プレイヤーを選ぶ

そしてスプライト「自プレイヤー」を選ぼう。

不要なブロックを削除する

めっちゃ消すw

最終的には↓こんな感じ。

クラウドプレイヤーにコピペする

このブロック群をスプライト「クラウドプレイヤー」にまるっとコピーする。

ドラッグアンドドロップでスプライトにまるっと持っていこう。

スプライト「クラウドプレイヤー」側にブロック群がコピーできたか確認しておこう!

  • なぜ使われないブロック群を追加したの? なぜ使われないブロック群を追加したの?

    クラウドプレイヤーでは使わないのだけど、あとで鬼ごっこ側で使うんだよね。だけど2個バックパック作るとMMO化するのに必要なバックパックが増えて管理しづらい。そこで、必要なブロックは全部クラウドプレイヤーに詰め込んで、バックパックを1つにまとめておこうという発想なんだ。こういう一箇所で管理する方法は「一元いちげん管理」と呼ばれてて、システムやゲーム開発だけではなくビジネス全体で広く使われているぜぃ。

バックパック化する

こんどはスプライト「クラウドプレイヤー」をまるごとバックパックに追加するぞ。エディター下部の「バックパック」という部分をクリックして開けてから、スプライトをドラッグアンドドロップだ。

これで一区切り!オンランゲームエンジンをバックパック化することに成功したぞ!

オンラインゲームエンジンを移植する

さぁ、いよいよ鬼ごっこのオンラインゲーム化に挑戦だ!オラ、ワクワクすっぞ!

まずは鬼ごっこプロジェクトを開こう!中を見るでエディタを表示しておく。

バックパックからクラウドプレイヤーを追加する

さっきバックパック化したクラウドプレイヤーを取り出して、スプライトのところにドラッグアンドドロップしよう。

よし、いい調子だ!

ニセモノのクラウド変数を消す

変数のところを見てみよう。おお、クラウド変数がバシッと追加されてる!と思いきや、実はこれニセモノなんです……。(でも、まだ消さないでね)

ニセモノだという証拠もあります。この作品のプロジェクトページを見てみると……あるはずの「クラウド変数」宣言がないんです。

これは由々しき事態ですな。

消しましょう。あ!待って!消さないで!w

実は消し方にもコツがある。そのままサクッと消すと変数を使っている場所も消えてしまって大変なことになってしまうのだ。

恐怖しかない!もはや作り直しといっても過言ではないレベルで手間だね。

ステージ「背景」を選ぶ

こんなときはいったん落ち着いてステージをクリックしよう。

ステージ内でクラウド変数を消す

ステージが選択された状態で、さっきのニセ変数たちを一掃しよう。

最終的には↓こんな感じでスッキリする。

あ!まだクラウドプレイヤーは開かないでね。ステージのままだよ。いまクラウドプレイヤーを開くと、またニセ変数が復活しちゃうからね。

クラウド変数を作り直す

いま消したクラウド変数を1から8まで作り直そう。

クラウド変数にチェックを入れ忘れないでね!8回も繰り返してると1回くらい忘れちゃうこともある。

スクラッチでオンラインゲームを作る⑫ 一人用の鬼ごっこをMMO化してみよう!を語るok-scratch ok-scratch

僕は2回忘れてたw

クラウドプレイヤーを確認する

よし、あらためてクラウド変数を8個作り直したあとなら、クラウドプレイヤーを確認してもニセ変数は復活しないぞ。見てみよう。

おっけい!

スクラッチでオンラインゲームを作る⑫ 一人用の鬼ごっこをMMO化してみよう!を語るok-scratch ok-scratch

クラウド変数の中身はチェックしないから、変数を表示するチェックマークは外しておいてOKだよ。

バックパックからメイン処理を取り出す

スプライト「クラウドプレイヤー」には使われてないブロック群を追加しておいたよね。あれを鬼ごっこのメインループ内に追加しようと思う。ドラッグアンドドロップで追加しよう。

スクラッチでオンラインゲームを作る⑫ 一人用の鬼ごっこをMMO化してみよう!を語るok-scratch ok-scratch

ちなみにどのスプライトに追加するかという判断基準は、位置情報を共有したいスプライトはどれか、って考えるといいと思う。

クラウドプレイヤー側ではこのブロック群は使わないから削除しちゃっていいよ。

鬼ごっこ独自のデータをクラウド変数に追加する

おし、ここから本番だ!いまのクラウドプレイヤーは(プレイヤーUID以外に)X座標とY座標という位置情報だけを共有するシンプルな作りになっているよね。

でも鬼ごっこには位置情報以外にもポイントという独自のデータもあって、これもクラウド変数で共有しなくてはならない

スクラッチでオンラインゲームを作る⑫ 一人用の鬼ごっこをMMO化してみよう!を語るok-scratch ok-scratch

今回の鬼ごっこではポイントというデータだけだけど、みんなの作品の中にはもっと所持アイテムとかレベルとか装備とか、他にもスキルとかとか、いろんな情報があるかもしれないね。でも全部ここから学ぶ方法で同じように追加すればクラウド共有できるから引き続き一緒に見ていこう。

プレイヤーのメインループにクラウド処理を追加する

まずは今しがたコピーしたブロック群を、プレイヤーのメインループ内に組み込もう。すでに「ずっと」ループはあるから、それ以外のブロックをバラバラに追加していくよ。

「クラウド - セットアップ」を追加する

メッセージ「クラウド - セットアップ を送って待つ」は、最初のところに追加するぞ。

↓こんな感じになる。

座標情報を追加する

X座標とY座標を送信用データに追加するブロックも追加する〜。

↓こんな感じになる。

X座標とY座標に変数「スピードX」と「スピードY」が加えられた後に追加すればOKだよ。

「クラウド - ティック」を追加する

このメッセージも続けて追加してしまってOK。今回は続けて追加するけど、追加場所の判断基準としてはリスト「★送信用データ」に追加予定のデータをすべて追加した後に、このメッセージを送る感じだよ。

だからもしキミの自作ゲームでは複雑な計算をしてから送信用データを作り込むなら、その処理が全て終わって送信用データが整ってからメッセージ「クラウド - ティック」を送るようにしよう。

独自データ「ポイント」を共有する

さぁ、これだよね。ポイント。ポイントも送らないとね。鬼ごっこ独自データを送信用データに追加するぞ。これが成功すれば自作ゲームのMMO化が近づくぞ。

送信する

そのままスプライト「プレイヤー」にて送信用データにポイントを追加しよう。

ゆーてもコレだけかい!w

まぁポイントの計算はすでに終わってるしね。追加するだけならこれだけだわな。

受信する

ただ送信も重要だけど、受信も大切だよね。

クラウドプレイヤーを選ぶ
クローンティックを見つける

だいぶブロックが多いから見つけにくいけど、ブロック定義「クローンティック」を見つけよう。

↑こういうブロック群。

デコード処理を追加する

XとY以外にもポイントが送信されてくるので、最後尾にデコード処理を追加する。

大きさを変える処理を追加する

変数「値」にはポイントが入っている手はずなので、コレを使ってクラウドプレイヤーの大きさも変えよう。

いえす、これでデータ的なことは整った!ためしに2つ並べて動かしてみよう。

あとは見た目を変えたい!

フレンドに変える

クラウドプレイヤーのスプライト名をフレンドに変えようか。

コスチューム

めちゃカンタンに四角い水色作るwせめて目もつけるか……。

描くのが苦手な人はここからダウンロードしてファイルをコスチュームにアップロードしてくれ。

フレンドのコスチューム

もともといるスクラッチキャットのコスチュームは削除してOK。

テスト

よし、これでテストぉ!

うん、動きは問題ない。けどフレンドと自分の重なり方が微妙。

自分を前に出すようにしようかな。

自分を最前面にする

プレイヤーを選択してから最前面になるようにブロックを追加するよ。

これでオーケー!

フレンドも時間が経つと大きくなるようになってるね!やったぜ!

まとめ

今回はソロプレイ用の鬼ごっこを、途中からMMO化するというチャレンジに挑戦したぜ。

ココまで作り上げてきたオンラインゲームエンジンを実践的にカスタマイズする方法のキホンがわかったと思う。

大切なのは結局のところ以下のようになるかな!

  • バックパック化したクラウドプレイヤーを自作品に追加する
  • メインループに
    • メッセージ「クラウド - セットアップ」を加える
    • メッセージ「クラウド - ティック」を加える
    • 自作品特有のデータをリスト「★送信用データ」に追加する
  • クラウドプレイヤーのブロック定義「クローンティック」にて、自作品特有のデータをデコードして処理する

大まかなカスタマイズの流れはこんな感じだね。バックパック化は今回やったから次からはすでにバックパック化してあるクラウドプレイヤーを使えばいいだけだから、そこは楽だね!

複雑なプロジェクトのオンライン化手順を知りたい人はグリフパッチさんの動画をチェックしてみてくれ!

ブクマよろしくお願いします! ブクマよろしくお願いします!
どんどん追記・更新していくので、ブックマークやシェアよろしくお願いします!

スクラッチプログラミングのゲーム攻略

スクラッチプログラミングのゲーム

    • 厳選されたスクラッチ人気作品リストがレビュー付きで楽しめます
      趣味に関するスクラッチ作品例
      勉強になるスクラッチ作品