スクラッチコーチキャンプ ゲームクリエイターに、オレはなる!そんなキミを応援(子供も大人も)
  • ALL
  • はじめての方へ
  • スクラッチゲームの作り方

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

    【特別編#16】軽量版 & オンラインマルチプレイヤー対応 & モバイル対応する方法
    この記事は スクラッチコーチで掲載されているオリジナル記事 のバックアップです。
    スターター作品
    なし
    今回の完成サンプル
    なし

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

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

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

    作業としては次の通り!

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

    さぁ、行こう!

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

    軽量モードを作る

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

    ステージを開こう。

    いくつか変数を作るよ。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    u003cpu003eごめん、この↑スクショだと1つ大切なブロックが抜けてます。最初に「ペンの色を◯にする」ブロックを設置してください。こんな感じ↓u003c/pu003eu003cpu003eu003cimg src=u0022https://scratch.coach/wp-content/uploads/2024/03/e1ec3c75cfe20fae280d2ea9831ca365-1024x897.pngu0022 alt=u0022u0022u003eu003c/pu003e

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

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

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

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

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

    モバイルに対応する

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

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

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

    借りる!

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

    使う!

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

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

    おーけい!

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

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

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

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

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

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

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

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

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

    お次はシメだ。

    オンライン化する

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

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

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

    借りる!

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

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

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

    プレイヤーを開こう!

    緑の旗が押されたとき

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    定義「_描画する」

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

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

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

    クローンされたとき

    緑の旗が押されたとき

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

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

    コスチュームを追加する

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

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

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

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

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

    まとめ

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

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

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

    3D逃走中

    3D逃走中

    by ok-scratch
    ok-scratchさんの作品という口コミを寄せてくれた方 ok-scratchさんの作品

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

    グリフパッチさんの動画

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

    この記事への質問やコメントをどうぞ

    ただいま実験的に質問を受け付けています。

    コメントは受け付けていません。

    スパム防止のため、 質問をするにはログインが必要 です。ログインはスクラッチのアカウントがあれば誰でもできます。

    ブクマよろしくお願いします!という口コミを寄せてくれた方 ブクマよろしくお願いします!
    どんどん追記・更新していくので、ブックマークやシェアよろしくお願いします!