スクラッチでオンラインゲームを作る⑪ まず一人用の鬼ごっこゲームを用意しよう

スクラッチでオンラインゲームを作る⑪ まず一人用の鬼ごっこゲームを用意しよう
ok-scratch
すでに作った自作ゲームを、途中からMMO(オンラインゲーム)化したい!そんなことできる?え!?カンタンなの?!ってあたりをバシッと追求していく。今回は下準備。
難しさ

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

LOADING...

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

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

ここまでオンラインゲームのエンジン(=テンプレート)を作ってきたけど、いよいよこのオンラインゲームエンジンを使って自分の作品をマルチプレイ可能なオンラインゲームにしていこう!

ok-scratch ok-scratch

実は詳しい方法がグリフパッチさんの動画でも公開されているのだけど、動画に出てくるアスレチックゲームが複雑なためチュートリアルとしての難易度がいつもより更に高くなっているから、今回はオンライン化の手順を確認するためだけの超シンプルなゲームを用意しておいた。

追記)そのアスレチックゲームの作り方も別途チュートリアル連載はじめました

こんな感じ↓のオンラインゲームを作ってみるよ!

めっちゃシンプルなんだけど、赤いストップボタンが追いかけてくるから逃げまくる、っていう鬼ごっこゲームだ!

最低限のゲーム性として逃げれば逃げるほどポイントが貯まって、ポイントの量はプレイヤーの大きさに比例するようになってるんだ。つまり、大きいプレイヤーはそれだけ長い時間ストップボタンから逃げているっていうこと!

まぁそれだけなんだけど、今回は自作ゲームをオンライン化する手順を確認したいだけだからOKってことで!

今回の目標「自作の鬼ごっこゲームを作る」

とりあえずシンプルな鬼ごっこを作るよ。

ok-scratch ok-scratch

いちおうどんなゲームを作るのか、確認しておくね。自作ゲームを作るのはめんどいぜ、っていう人はこの記事の完成版か次回記事のスタータープロジェクトをリミックスしてくれ!

登場キャラ

  • プレイヤーは緑色の四角
  • フレンドは水色の四角
  • エネミーは赤いストップボタン

要件

  • プレイヤーは上下左右のキーを押すと動く
  • ゲームが始まるとどんどんポイントが貯まり、ポイントの数だけプレイヤーのサイズが大きくなる。
  • プレイヤーは赤いストップボタンに当たるとポイントがリセットされる
  • プレイヤーはフレンドに当たっても何も起こらない

こういうゲームを作っていく。シンプルだね。ちなみにオンラインの要件はココには書いてない。オンライン化するところで改めて追加するね。

っていうのも今回はすでにある自作ゲームを、オンラインゲームエンジンを使って途中からオンライン化する、っていう制作手順を経験したいからなんだ。みんなも自分で作ったゲームってあるかな?それをオンライン化する役に立つはずだから、一緒に見ていこう!

プロジェクトの用意

あらかじめコスチュームを用意したスタータープロジェクトを用意してあるから利用してね。

https://scratch.mit.edu/projects/880162691/

こいつをリミックスしてくれぃ!話はそれからだ!

スタータープロジェクトの中には2つのスプライトが用意されているぞー。

  • プレイヤー
  • エネミー

まぁただの四角だけどw

プレイヤーを作る

じゃあまずプレイヤーから作っていく!このへんは主題ではないので、いつもより駆け足で作っていくつもり。

メインループを用意する

緑の旗を押したら始まる「ずっと」ループを置こう。

よし、パーフェクトな幕開けだ。

右に移動する

まずは右からいこう。変数「スピードX」を使うよ。

右向き矢印キーが押されたら加速する

右が押されたらスピードXにプラスの値を入れるようにする。

スムーズに加速させる仕掛けを作る

右向き矢印キーが押されている間はずっと加速したいのでループも置く。

↑この2つを使って

↑こうすることで「右向き矢印キーが押されてない」状態を検知する。

さらに、

「まで繰り返す」の条件式に使うと「右向き矢印キーが押されている間はずっと」という意味になる。

このループでさっきの変数に追加した処理を囲ってみよう。

これで右キーが押されている間はずっと変数「スピードX」の値は10になってくれる。

X座標に反映する

これで右キーを押すと右に移動するようになった。でも試してみると、ずーーーっと右に移動しちゃって止まらないw

減速させる

しっかり減速するような処理も作っていこう。これもスムーズな減速をカンタンに作る方法でいく。

↑こんな感じでスピードXに0.8を掛けることで、少しずつ値を減らしてセットする。

これで右キーを押したら進んで、キーを離すとスムーズに止まるようになる!

左に移動する

つぎは左だ。同じことの繰り返しだから、まるっとコピーしよう。

これを貼り付けてから、各所を左用に変えていく。

3か所変えたので、合わせて作ってみてね!

それだけで左右に移動できるようになる。

上に移動する

続いて上ね!

変数「スピードY」を作る

今度はY座標だからスピードYを作る。

上向き矢印キーが押されたら加算する

右向きキーで使ったブロック群をまたコピペしよう。

これを貼り付けてから、各所を上向き用に変えていく。

よし!

Y座標に割り当てる

この変数をY座標に割り当てていこう。

減速もする

Xと同じように減速させるぞ。

ほい、これでテストすると〜……

はいナイスぅ!

下に移動する

上向き矢印キーが押されたら、のブロックをコピペして、以下のように調整するよ。

これで上下左右にグイングイン動くはずだ。

ポイントを作る

プレイヤーが赤いストップボタンに触れるまでは、ずっとポイントが加算されるようにしていきたい。そこで「タイマー」を使ったカンタンなポイント処理を作っていこうと思う。

って言っても今回は鬼ごっこゲームを本気で作りたいわけじゃないからカンタン。

変数「ポイント」を用意する

タイマーの値をセットする

ぶっちゃけタイマーを変数にセットするだけだ。小数点はいらないから切り上げるくらいかな、言及すべきは。

これをポイントにセットする。

エネミーに当たった処理を作る

エネミーに当たるとポイントがリセットされてしまう。これはタイマーのリセットを利用して実現しようと思う。めちゃカンタンすぎて……w

↑ここに追加していこうかな。

条件式は、

↑シンプル・イズ・ベスト!

タイマーリセット

タイマーがリセットされると、ポイントもリセットされるのでシンプルにタイマーをリセットする。

かんたーん。

大きさに反映する

ポイントを表示する、ってなるとカウンターの処理を実装しないといけなくてひと手間増えるので、早くオンラインゲーム化の手順に進むためにも単純にポイントが加算されるとプレイヤーの大きさが変わるようにしていきたい。なにげに赤いストップボタンに当たらないようにプレイする難易度も上がって、なんかゲームっぽいから一石二鳥w

これでどんどん大きくなるはず!

いよ〜し!プレイヤー完成!

エネミーを作る

こっちもサクッと作るよ。鬼の位置はクラウドデータで共有はしないで、ローカルでOK。つまりプレイヤーごとに鬼の位置は違う。

ok-scratch ok-scratch

鬼の位置もクラウドデータで共有してレイドみたいなことをしたい人は挑戦してみても面白いかも。

エネミーのスプライトに切り替える

メインループつくるぅ!

最高!

キホンの動き

ここにシンプルだけどトリッキーな動きを作っていくよ。

使うのはこちら↑

秒のところを乱数にしてみる。

これで不規則な動きが作れる。これをループにいれよう。

急襲の動き

さらにときどきプレイヤーめがけて突っ込んでくるようにしておこうかwサンプル作品だからこだわる必要ないんだけど、まぁちょっとエンタメ性があるほうが作りがいがあるよね。

動きから先に書いておくと、1秒でプレイヤーに向かっていくブロックを置くだけ。

条件式

条件もシンプル。0から2の乱数(小数点込み)がピッタリ2だったら突撃するようにしようかな。このへんはゲームの難易度によるから好きに調整してOK!

はめるとこんな↓

これで鬼も完成!ふぅ!

オンライン化する

いよいよオンライン化する!って思ったけど区切りがいいから記事分けておく〜。自作ゲーム作るところは飛ばしたい人も多いだろうから……。

でも一緒に今回のゲームを作ったほうがより一層の理解が得られると思うよ。

続きはすぐアップしまーす。

完成サンプルがあるよ
おつかれさま!今回のチュートリアルには完成サンプルがあるから、作ってて分からなくなったり、 動作確認をしたいときはチェックしてみてね。
このスクラッチゲームの作り方への質問もOK このスクラッチゲームの作り方への質問もOK
このスクラッチゲームの作り方に挑戦していて分からないことが発生したら質問してみてね。気づいたタイミングで回答するよ。 質問は 僕のスクラッチのプロフィール で受け付けているよ。

質問テンプレート(素早く3回クリックすると全選択できるのでコピーしよう)

・◯◯ ... 記事のどこまで実装が終わったのかを記入しよう。
・□□ ... どんな問題が起きているのか、どういうときに起きるのか、具体的に書こう。
・共有済みURL ... たまに共有してない作品URLを書いてる人がいるけど、共有しないとこちらから確認できないからよろしくね。

スクラッチャーからのコメント

SOCCER_MATH SOCCER_MATH 2024-10-11
あの、ゲーム開発の合間や完成してからでいいんですが、オンラインで1Pである動作をした時2Pの変数を変えるみたいなことってどうやったらできますかね?オンラインはスクラッチコーチさんのサイトを元に作ってます。どうか空き時間に検討お願いします。
ok-scratch ok-scratch 2024-10-12
@SOCCER_MATH たとえば1Pで爆発ボタンをクリックしたら、クラウド変数に1を送って、2P側でも1を受信したら爆発ボタンがクリックされたことが分かる、みたいな方法が一般的かなと思います。クラウド変数に送るタイミング(チュートリアルなら4ティックに1回)によって時差は生じます。知りたいことと合ってますか?どうでしょうか。
SOCCER_MATH SOCCER_MATH 2024-10-12
@ok-scratch その1を送るってゆうのは「もしも〇〇なら受信データに1を追加する」をメインループに追加し、「もしも〇〇なら1が入るはずの変数を値にする」をデコードに追加するみたいな感じですかね?
SOCCER_MATH SOCCER_MATH 2024-10-15
@ok-scratch 試してみます
pakupakupanda pakupakupanda 2024-10-06
リミックスします。サイトを見ながら、頑張ってオンラインを作ってみました。
ok-scratch ok-scratch 2024-10-06
@pakupakupanda おお!大変だったと思います。記事見ながらでもかなり上級なコーディングなので、きっと時間もかかったはず。ナイスです( ´∀`)bグッ!
pakupakupanda pakupakupanda 2024-10-06
@ok-scratch でもなんか、なめらかにうごかずに瞬間移動しているみたいになってしまっているのです。わかることがあったらおしえてくれるとうれしいです。https://scratch.mit.edu/projects/1073123838
ok-scratch ok-scratch 2024-10-06
@pakupakupanda デコードするっていう定義が「再描画無しで実行する」にチェックが入ってないようです。こちらにチェックしてテストしてみてください。
pakupakupanda pakupakupanda 2024-10-06
@ok-scratch ありがとうございます。でもまだ完璧にはなおっていないのであとは自分でやってみます。
ok-scratch ok-scratch 2024-10-06
@pakupakupanda ファイト(๑•̀ㅂ•́)و✧
pakupakupanda pakupakupanda 2024-10-06
@ok-scratch そのあととりあえず何回も見直しして、1ったん作り直してもまだなおらないので他になんか知遇所があったら教えてくれると嬉しいです。
pakupakupanda pakupakupanda 2024-10-06
@pakupakupanda 文字間違えてしっまってすみません。
pakupakupanda pakupakupanda 2024-10-06
@pakupakupanda できました。エンコード文字の順番が、「このスプライトのみ」になってなかった所が違ったようです。
pakupakupanda pakupakupanda 2024-10-06
@pakupakupanda できました↓ https://scratch.mit.edu/projects/1077086590
ok-scratch ok-scratch 2024-10-06
@pakupakupanda おお!すでに自力で解決していましたか、素晴らしい。オンライン対応はスクラッチプログラミングの大きな目標の1つです。やりましたね。デバッグの経験も今後の役に立つはず、ナイススクラッチです(^o^)
kaosu-kaosuuuuuuuuu kaosu-kaosuuuuuuuuu 2023-12-06
端にいれば最k・・・おっと、誰か来たようだ
ok-scratch ok-scratch 2023-12-06
@kaosu-kaosuuuuuuuuu どうやら知ってはいけないことを知ってしまったようですね……(笑)
RAU_scratch RAU_scratch 2023-12-06
@kaosu-kaosuuuuuuuuu 端に来たらsaikyouということがわかってしまったぁハッハッハ
ok-scratch ok-scratch 2023-12-06
@RAU_scratch く、、、見つかってしまいましたw
ok-scratch ok-scratch 2023-12-06
@ok-scratch なんとなく端っこ対策を追加しましたw
ブクマよろしくお願いします! ブクマよろしくお願いします!
どんどん追記・更新していくので、ブックマークやシェアよろしくお願いします!

スクラッチゲーム攻略

スクラッチゲーム

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