【特別編#16】軽量版 & オンラインマルチプレイヤー対応 & モバイル対応する方法

【特別編#16】軽量版 & オンラインマルチプレイヤー対応 & モバイル対応する方法
グリフパッチ(動画)
ok-scratch(執筆)

和訳解説は動画作者のグリフパッチさんご本人から許可をいただいて掲載しております。
チャンネルはYOUTUBE ( by griffpatch )からどうぞ。

バックパックを経由してモバイル化とオンライン化をしていこう!これで3Dチュートリアルは完成だよ。(そう思っている時期が僕にもありました)
スターター
プロジェクト
リミックス用プロジェクトへ
難しさ

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

LOADING...

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

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

今回の目標「モバイル&オンライン対応」

前回までで3Dチュートリアルは完成したと言っても過言ではない。今回はプラスアルファの仕組みを整えてチュートリアルの締めにしたい。

といってもちょっとした追加じゃない。モバイル対応とオンライン対応というゴリゴリにゲーム品質に関わる改修作業になるぞ!

作業としては次の通り!

  • テクスチャを使うモードと、使わない軽量化モードを切り替えられるようにする
  • バックパックを経由してモバイル対応を行う
  • バックパックを経由してオンライン対応を行う

さぁ、行こう!

今回で一応の最終回とするため、いつもみたいなワンステップのスクリーンショットではなく、ある程度のまとまったスクリーンショットになってます。ちょっと分かりづらい?むしろ分かりやすい?あらかじめご了承ください〜。

軽量モードを作る

せっかくテクスチャを利用して画像を壁に貼り付けることができたけど、元々の色で塗りつぶす壁のほうが軽量であることは確かだ。ユーザーのパソコンのスペックによっては、テクスチャだと重たいという人もいるかもしれない。そこで、軽量モードを用意してユーザーが選べるようにしておこうと思う。

ステージを開こう。

いくつか変数を作るよ。

変数「★軽量モード」「■はい」「■いいえ」を作る

初期化しよう。■は定数として扱うので、ゲーム開始後は値を変えないよ。

そしてlエルキーが押されたとき、★軽量モードを「■はい - ★軽量モード」にしよう。

これはトグル処理というんだ。

  • 軽量モードがはい(=1)なら「1 - 1 = 0」になる
  • 軽量モードがいいえ(=0)なら「1 = 0 = 1」になる

電気のスイッチみたいにオンとオフを切り替えるような動きになる計算方法だよ。

ok-scratch ok-scratch

ちなみにlエルキーにしたのは、Lightライト(軽い)のLだよ。明かりのライトが有名だけど、ボクシングとかでライト級とかヘビー級とかっていうのも同じ軽いっていう意味のライト。システム開発やゲーム制作でも(処理が)軽いっていう表現はライトが使わられることが一般的なんだ。

スプライト「レイキャスター」を開こう

定義「_シングル・レイ」を見つけて。

↓コレみたいに、変数「★軽量モード」が「■はい」のときは、(以前実装してあった)色で壁を塗り塗りする処理を作って最後に「このスクリプトを止める」を置いておこう。

スプライト「ペン」を開こう

定義「_行を描画する」を見つけて。

さっきみたいに、軽量モードならペンの明るさや色を変更する処理を書いて最後に「このスクリプトを止める」ブロックを置こう。

ok-scratch ok-scratch

ごめん、この↑スクショだと1つ大切なブロックが抜けてます。最初に「ペンの色を◯にする」ブロックを設置してください。こんな感じ↓

軽くなったかテストしよう

さっそく緑の旗を押してlエルキーでモードをトグルしてみようか。

軽量モードにしたらFPSが30とかになってる様子が分かるね!これでカクカクし始めちゃっても一瞬で軽量モードを選択できるから低スペックのデバイスで遊んでる人でも安心だね。

ok-scratch ok-scratch

モバイル勢のことも考えるべきだった!軽量ボタンを作ってそれをタップしたら切り替わるという仕様のほうが優しかった……。せっかくこのあとモバイル用のジョイスティックも実装するし。

モバイルに対応する

モバイル対応していく!ここは別チュートリアルで作ったジョイスティックを利用する。

バックパックを経由してスティックを借りよう!

まだ作ったことがない人も完成プロジェクトから借りてくることができるから安心してほしい。

借りる!

  1. このプロジェクトを開こう!
  2. 中を見るを開くよ。
  3. 画面下部の「バックパック」をクリックして開いておこう
  4. スプライト「スティック」をバックパックにドラッグアンドドロップしよう。

使う!

よし、じゃあ今作ってる3Dのプロジェクトに戻ってみよう。

バックパックを閉じたり開いたりすると更新されて、今追加した「スティック」が表示されるぞ。それおスプライトのところにドラッグアンドドロップしよう!

おーけい!

スプライト「プレイヤー」を開こう

さてスティックを動くように少し調整しようか。

定義「_プレイヤーティック」の「もし」ブロックを置換するよ。

左がAFTERで、右がBEFOREになってるので、参考にして置換作業を進めてほしい。

ok-scratch ok-scratch

ちなみにこれだと横にカニ歩きすることはできなくなる。今回はモバイルだとカニ歩きさせることはできないから、パソコンでもできないようにした。でもゲームによってはパソコンではカニ歩き機能を残すこともアリだ。そのあたりは自分で考えてどっちがいいか決めてOK!

スティックで動けるようになったかテストしよう

おおぉ!カンタンにモバイル対応できたね。これでパソコンでもモバイルでも楽しめるスクラッチゲームが完成した。

モバイル対応しておけばベッドでゴロゴロしながらでも電車に乗りながらでもデバッグできる♪

お次はシメだ。

オンライン化する

オンライン化してマルチプレイでゲームを楽しめる地盤を作ろう。

バックパックから借りてくる

これもバックパックを利用して作っていくぞ。

借りる!

このプロジェクトを開いて、スプライト「クラウドプレイヤー」をバックパック化しよう。

さっきと同じように3Dのプロジェクトのスプライト一覧に追加しておいてね。

クラウドプレイヤーに対応する

プレイヤーを開こう!

緑の旗が押されたとき

緑の旗が押されたときに、「クラウド - セットアップを送って待つ」を置こう。

定義「_プレイヤーティック」

定義「_プレイヤーティック」にも3つブロックを追加しよう。

クラウドプレイヤーを開く

クラウドプレイヤーにいくつか処理を追加していくぞ。

マップ表示を切り替えるを受け取ったとき

新たにメッセージを受け取ったときブロックを追加するよ。これは単にマップ表示の処理だけだね。

ok-scratch ok-scratch

スプライト「エンティティ」からコピーしてきてもOK

エンティティの計算をするを受け取ったとき

さらにクラウドプレイヤーの位置を調整するための処理を追加しよう。

ok-scratch ok-scratch

スプライト「エンティティ」からコピーしてきてもOK

定義「_画面を回転させる」

クラウドプレイヤーの位置を調整する処理の続きだね。

ok-scratch ok-scratch

スプライト「エンティティ」からコピーしてきてもOK

定義「_描画する」

さらに続き。クラウドプレイヤーの描画処理だ。

ok-scratch ok-scratch

スプライト「エンティティ」からコピーしてきてもOK

クローンされたとき

緑の旗が押されたとき

タイプには4を指定しておく。これはクラウドプレイヤーのコスチューム番号を意味しているぞ。だから人によっては4じゃないかも。

スプライト「ペン」を開こう

コスチュームを追加する

コスチュームにはとりあえずスクラッチキャットを採用するぞ。コス名はなんでもOK。ここではCloudPlayerクラウドプレイヤーにしておいた。

ナノとか他のエンティティと同じように枠に合わせてずらしておこう。影も付けておくといいよ。

マルチプレイができるかテストしよう

画面をいくつか並べて同期が取れているか確認してみよう。

いーーーやっほーーー!(マリオっぽく叫ぼう)

まとめ

どうだった?ここまで来れたかな?!

軽量化、モバイル化、オンライン化、さまざまな山を乗り越えて3Dゲームのエンジンができあがった。コレを使って自分なりの3Dゲームを作れることを願っている!

ちなみに僕もこれを利用して3D逃走中を作ったから見てみてほしい♪

3D逃走中

3D逃走中

by ok-scratch
[my-voice title="ok-scratchさんの作品"]

ハンターのロジックは実は改造してあって、単純にプレイヤーに向かってくるだけじゃないんだ。プレイヤーがハンターの視野に入ったら襲ってくるようになっているし、間に壁があれば気づかれないような実装にもなっている。「プレイヤーがハンターの視界に入ったら」というロジックを考えるのが楽しかった。けっこう応力の効く実装だと思うので興味があったら中を見てみてね。

[/my-voice]

グリフパッチさんの動画

このチュートリアルは世界No.1スクラッチャーとして名高いグリフパッチさんの動画を参考にしているよ。ただし手順を一部変えているところもあるんだ。

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

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

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

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

MORIHARUPON MORIHARUPON 2025-01-25
何度もすいません。 https://scratch.mit.edu/projects/1054560651/ のプロジェクトなんですが何度やっても軽量化モードを作ろうとすると失敗してしまいます。どこが悪いのかわかりますか?時間が空いていれば見ていただけないですか?
ok-scratch ok-scratch 2025-01-25
@MORIHARUPON 軽量化モードはむしろ成功しているのかな?テクスチャモード が出てない感じでしょうか。
MORIHARUPON MORIHARUPON 2025-01-26
@ok-scratch そうなんです。軽量化モードを使おうとするとテクスチャが消えてしまいます。
MORIHARUPON MORIHARUPON 2025-01-26
@ok-scratch どうにかしてどっちも使えるようにしたことがあったんですが、そのときは軽量化モードを使っているとき描画がうまくいきませんでした。
ok-scratch ok-scratch 2025-01-26
@MORIHARUPON 見てみますね。
MORIHARUPON MORIHARUPON 2025-01-26
@ok-scratch ありがとうございます。
ok-scratch ok-scratch 2025-01-26
@MORIHARUPON 原因は、テクスチャモードのときにリスト「描画タイプ」に値が入ってないからだと思いました。スプライト「レイキャスター」の定義「_シングル・レイ」の最後の部分をサンプル作品と見比べてみてください。サンプル作品 https://scratch.mit.edu/projects/985141510/
MORIHARUPON MORIHARUPON 2025-01-26
@ok-scratch https://scratch.mit.edu/projects/1054560651/ 最後のほう修正してみましたがすごく重いです
ok-scratch ok-scratch 2025-01-26
@MORIHARUPON 追加してくれたところの変数名が、どうも違うようです。たとえば「距離(個)」となるべきところが「距離」っていう変数になってます。これらを直してみてもらえますか?
MORIHARUPON MORIHARUPON 2025-01-29
@ok-scratch 返事遅れましたすいません。そこは直してみましたがテクスチャー付きの壁が表示されません。
ok-scratch ok-scratch 2025-01-29
@MORIHARUPON 謎のバグが起きてますね。まず明確なバグですが、まだ変数が直ってません。「画像スキャンリストの調整値」「テクスチャのズレ」「X座標」も直してください。そして謎のバグですが、定義「_描画する」の引数がすべて「空文字」になってしまっています。うーん、特殊な置き方をしたのか、覚えがありますか?これを直すのは簡単です。この定義をブロックパレット(左のサイドバー)から新しく持ってきて置き換えてください。これで描画できると思います。
MORIHARUPON MORIHARUPON 2025-01-30
@ok-scratch わかりました。やってみます。
MORIHARUPON MORIHARUPON 2025-01-30
@ok-scratch 直りました!ありがとうございます。
greeenstar greeenstar 2024-12-14
3dの作り方の16を作ってみたんですけどなんか違う気がするんですけど。見てくれませんか https://scratch.mit.edu/projects/1101619142/
greeenstar greeenstar 2024-12-14
@greeenstar どうか教えてください
ok-scratch ok-scratch 2024-12-14
@greeenstar 明日見てみますね
ok-scratch ok-scratch 2024-12-15
@greeenstar プレイしてみましたが、とくに変なところは見つからなかったのですが、具体的にどんな現象が気になりますか?
greeenstar greeenstar 2024-12-15
@ok-scratch なんか動きが速かったです
ok-scratch ok-scratch 2024-12-15
@greeenstar スプライト「プレイヤー」の、定義「プレイヤーティック」をチェックしてください。使ってる定義「移動する」の引数で、デルタを2回掛けてるところあります
greeenstar greeenstar 2024-12-15
@ok-scratch しかし作り方のサイトも二回掛けてありますよ
ok-scratch ok-scratch 2024-12-15
@greeenstar あれ?もしそうなら間違いですね。
greeenstar greeenstar 2024-12-16
@ok-scratch どの状態ですか
ok-scratch ok-scratch 2024-12-16
@greeenstar 「_移動する)距離 ( 2 * デルタ ) 」こういう状態です。
greeenstar greeenstar 2024-12-16
@ok-scratch なっている状態に見えるんですけど
ok-scratch ok-scratch 2024-12-16
@greeenstar もともとデルタの掛け算が2つあったかと思うのですが、気のせいでしたら問題ありません。
greeenstar greeenstar 2024-12-16
@greeenstar だけどなんかモバイルの時とキーボードの時の速度が違うんですけど
ok-scratch ok-scratch 2024-12-17
@greeenstar 定義「_プレイヤーティック」の上から2つ目の「もしブロック」で使われている「_移動する」を見てください。こちらの引数でデルタの掛け算が2つになっているのが一因かもしれません(PCでもモバイルでも通る処理かもしれないので確実ではないです)。また、モバイルのときはキーボードの↑が確実にゼロ度なのと違って、上方向にスティックを倒してもゼロ度とは限らないこともスピードが違う原因かもしれません。
ok-scratch ok-scratch 2024-12-19
@ok-scratch どうかな?
MORIHARUPON MORIHARUPON 2024-09-06
⑯の「エンティティの計算を受け取ったとき」のなかのタイプという変数がないんですが、作るんですか?
MORIHARUPON MORIHARUPON 2024-09-06
@MORIHARUPON というかいろいろ変数がない…
ok-scratch ok-scratch 2024-09-06
@MORIHARUPON かなり前のチュートリアル回で作ったような気がします
MORIHARUPON MORIHARUPON 2024-09-06
@ok-scratch えぇ…まじか…
MORIHARUPON MORIHARUPON 2024-09-06
@ok-scratch 今から作っても大丈夫何でしょうか
ok-scratch ok-scratch 2024-09-06
@MORIHARUPON 前後するけどがんばれば大丈夫かなと思います。ちなみにチュートリアル⑨で作ってました。そこらへんを見直してみるといいかもしれません。
MORIHARUPON MORIHARUPON 2024-09-06
@ok-scratch ありがとうございます。見直してみます。
fireflyhotaru fireflyhotaru 2024-08-17
https://scratch.mit.edu/projects/1056606937/ 見てもらえると嬉しいです
fireflyhotaru fireflyhotaru 2024-08-17
@fireflyhotaru 八番出口風3Dゲームですね
ok-scratch ok-scratch 2024-08-17
@fireflyhotaru ナイスなアイデアですね!いまスマホで見てるから動かせなかったため、また明日以降に触ってみますね。ぱっと見だと3Dもうまく描画できてて素晴らしいです。
ok-scratch ok-scratch 2024-08-18
@ok-scratch やってみました。3Dの歩行もちゃんとできてていいですね!異変見つけるゲームは面白いから好きです。
kuripa-kun kuripa-kun 2024-07-06
すいません軽量化モードを追加したら壁が描画されなくなってしまったのですけどなぜでしょうか https://scratch.mit.edu/projects/1030569072/editor
ok-scratch ok-scratch 2024-07-06
@kuripa-kun 見てみますねー
ok-scratch ok-scratch 2024-07-06
@ok-scratch 説明が少し難しいから、ちょっと注意深く読んでね。まず今回の作戦としては軽量化する前の状態に戻すことをゴールにしよう。①まずは作業前にプロジェクトをコピーしてバックアップを取っておいてほしい。 ②スプライト「レイキャスター」の定義「_シングル・レイ」の一番下「★軽量モード = ■はい」っていう条件式を持つ「もし〜なら」ブロックがあるよね。この「もし〜なら」ブロックだけ消すか外してほしい。その際、中身は消さないようにして、そのまま使う。あくまで「もし〜なら」だけ消す。 ③スプライト「ペン」の定義「_行を描画する」にある「★軽量モード = ■はい」という「もし〜なら」ブロックもだけ消すか、外すかする。これも中身は消さないでそのまま使う。 ④同じく定義「_行を描画する」の一番下にある「ペンを上げる」ブロック以降の3個(「このスクリプトを止める」ブロック以外)を、直前の◯回繰り返すブロックの中に戻そう。  ⑤これでテクスチャの壁が描画される状態に戻るから、いったんプロジェクトのコピーしてバックアップしておこう。それでまた軽量化モードのチュートリアルをやってみてほしい。どうだろうか。
ok-scratch ok-scratch 2024-07-06
@ok-scratch ↑誤字)「もし〜なら」ブロックもだけ消すか  →  「もし〜なら」ブロックも消すか
kuripa-kun kuripa-kun 2024-07-06
@ok-scratch やってみたんですが壁はlキーを押さなければ出てこないということになってしまいました あとlキーを押されたらマップ透明度を■はい-★軽量化モードにするになっていたようです
ok-scratch ok-scratch 2024-07-06
@kuripa-kun なるほど。ナイストライ。おそらく微妙にもしブロックで囲う範囲が違うかも。こちらのプロジェクトでレイキャスターとペンのスプライトを見てチェックできますか? https://scratch.mit.edu/projects/985141510/
kuripa-kun kuripa-kun 2024-07-06
@ok-scratch 内容が全然違かったのでバックパックパックから移しちゃいました 緑の旗を押したら壁が描画されたのですがlキーを押すと壁が描画されなくなってしまいました
kuripa-kun kuripa-kun 2024-07-06
@kuripa-kun バックパックパックになっちゃってる すいません
matsumotoryoukotyann matsumotoryoukotyann 2024-07-06
これって三人称視点(マイクラみたいなやつ)にできるんですか?
ok-scratch ok-scratch 2024-07-06
@matsumotoryoukotyann 頑張ればできると思うけど、考えたことないので具体的な実装はパッと思いつかないです。ただスクラッチで実現しているゲームはあるので、不可能ではないです。 https://scratch.mit.edu/projects/463553665/
unagiRocket unagiRocket 2024-04-19
(ベンキョ-ノ、アイマニ、scratch、ヒライテイマス。 シュクダイ、メチャクチャムズイデス...) 3Dのチュートリアル、すっごく面白いし、分かりやすいです!!  自分は、チュートリアルの作品が完成したら、3D青鬼とか作ろうかな、と思ってますw コメントや、タクテとか、できてないですけど、scratchcoachは見ていますし、チュートリアルとかも見ながら作ってます!! サイト運営は大変だと思いますが、これからも頑張って下さい!! 応援しています!! 長文失礼いたしました。(ヤベ- ソロソロ PC トジナイト、カアチャンニオシリペンペンサレチマウ...)
unagiRocket unagiRocket 2024-04-19
@unagiRocket 後、「好き」とか、「編集がすごい」というyoutubeの動画はありますか?あったらぜひ教えてほしいです!!
unagiRocket unagiRocket 2024-04-20
@unagiRocket PS. もちろんスクラッチコーチtv見てますよ~ 編集とかすごいなって思ってます!!
ok-scratch ok-scratch 2024-04-20
@unagiRocket わ、コメントありがとう!こっそり。YouTubeも観てくれてありがとう!ちょっとお休みしてるけど再開したいなぁ。。。動画って本当に大変だよね。YouTuberがどれだけ大変なお仕事なのか分かった(^_^;) 個人的に好きなのはスプラトゥーン動画で有名なRさんかな。ホロライブの星街すいせいもカッコいいと思ってる。人狼にハマってたときはkunさんのチャンネルも見てた。トークが強いチャンネルでは中田敦彦さんも好き。普通にヒカキンさんも好き。おっと、もちろんグリルパッチさんのスクラッチチャンネルも好き。 勉強がんばっ、、、りすぎないように息抜きしつつがんばれ〜。オーバーヒートしないように。僕ももっともっとチュートリアル書けるように仕事とか頑張っていく所存です(`・ω・´)ゞ
unagiRocket unagiRocket 2024-04-20
@ok-scratch 質問に答えてくれてありがとうございます!! まだ、全ては見れていないですけど、KUNさんの動画は面白かったです!!(自分はキヨさんと、ぜんいちさんのゲーム実況を時々見ています!!) そして、大人ではない僕が言えないですけど、 @ok-scratch さんも、オーバーヒートしないように仕事を頑張って下さい!!
ok-scratch ok-scratch 2024-04-20
@unagiRocket うい、ありがとう〜!(←思ってるより10倍は喜んでます)いつも一喜一憂、いや一喜三憂くらいだけどぎゃんばります( ´∀`)bグッ!
ブクマよろしくお願いします! ブクマよろしくお願いします!
どんどん追記・更新していくので、ブックマークやシェアよろしくお願いします!

スクラッチゲーム攻略

スクラッチゲーム

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