スクラッチコーチキャンプ スクラッチで使える無料素材集
  • 素材
  • 修行
  • はじめての方へ
  • スクラッチゲームの作り方

    マイクラの「ゾンビお家に帰ろう」プラットフォーマーの作り方 #2

    マイクラの「ゾンビお家に帰ろう」プラットフォーマーの作り方 #2
    この記事は スクラッチコーチで掲載されているオリジナル記事 のバックアップです。
    スターター作品
    なし
    今回の完成サンプル
    なし
    [soy-series name="スクラッチでマインクラフト風ゾンビプラットフォーマーの作り方"]

    さぁ、スクラッチでナニ作る!?

    チュートリアルの元になった作品

    [prj-embed prj="719355918" mini="1" title="プレイしておこう"]今回の[prj-link prj="719355918"]スクラッチを作る参考作品[/prj-link]にさせていただきました、ありがとう![/prj-embed]

    マインクラフト風の横スクロールプラットフォーマーゲーム。ゾンビ親子を操作して溶岩や障害物を避けながらステージを進み、ゴールを目指す。griffpatch式の壁登り・壁ジャンプ、昼夜サイクルによるダメージゾーン、sin波による月の脈動アニメーション、ゴールセレブレーション演出など多彩な仕組みを持つ

    今回の目標

    タイミング計測を使ったターボモード(ズル)検出機能を追加して、ゲームの公平性を守る仕組みを完成させよう。

    スターター作品をリミックスしよう

    このチュートリアルにはスターター作品があります。使わなくても大丈夫だけど、最低限の素材などが用意されてるので便利です。
    スターター作品をダウンロード

    このチュートリアルでは作者さんの実装方法を尊重して作ってますが、最低限の改善をしてます。(参考作品と同じものが完成するわけではない点はご注意)

    #1ターボ検出カウンター

    [talk class="m-l-n"]ターボモードというズルを検出するスプライトを作るよ。まずは高速カウンターの部分からだね。[/talk]

    準備

    スプライト「ターボ検出」を開く

    ターボ検出ターボ検出
    スプライトについて
    ターボモード(チート)を検出し、使用を検出した場合にゲームを全停止する
    どんな役割か
    ターボモードというチートを使っていないかチェックするスプライトだよ。タイミング計測でズルを見抜いて、ゲームを止める仕組みを作るよ。

    変数「★ターボ」を追加

    ターボモード検出用のカウンター。0.001秒間の増分で実行速度を判定

    変数「★ターボ」を追加

    実装

    step-56

    見た目 ( ) へ移動する で最前面に配置して、 動き x座標を ( ) 、y座標を ( ) にする で画面中央(0, 0)に置くよ。 制御 ずっと ループの中で 変数 ( ) を ( ) ずつ変える を使って「★ターボ」変数を1ずつ増やし続けるんだ。このカウンターがどれくらいの速さで増えるかが、ターボモード判定のカギになるよ。

    #2ターボモード判定

    [talk class="m-l-n"]別のスクリプトで、0.001秒の間にカウンターがどれだけ増えたかチェックするよ。[/talk] step-57

    制御 ずっと ループの中で、まず 変数 ( ) を ( ) にする で「★ターボ」を0にリセットするよ。次に 制御 ( ) 秒待つ で0.001秒だけ待つんだ。通常モードでは0.001秒の間に「★ターボ」が3を超えることはないけど、ターボモードでは処理速度が跳ね上がるから軽々と超えてしまうよ。

    制御 もし ( ) ならでなければ で「★ターボ」が3より大きいかチェックして、ターボモードかどうかを判定するよ。

    #3チート検出と停止

    [talk class="m-l-n"]ターボモードが検出されたら、警告を表示してゲームを全停止するよ。これですべての機能が完成だね。[/talk] step-58

    「★ターボ」が3を超えていたら 見た目 表示する で警告メッセージを表示して、 制御   ですべてを止めるんだ。通常モードの場合は 見た目 隠す で警告を非表示のままにしておくよ。

    [talk]この仕組みは「2つの並行ループの競争」で実行速度を測るテクニックだよ。片方がひたすらカウントして、もう片方が一定時間後にその値をチェックする。カウントが速すぎたら、通常より速く動いている証拠なんだ。こういうチート対策の考え方は、オンラインゲームの公平性を保つためにプロの開発者も使っている手法だよ。[/talk]

    まとめ

    これで完全に完成!ターボモード検出は「2つの並行ループの競争で実行速度を測る」というユニークなテクニックだよ。今回のゲームで学んだ物理演算、数学的アニメーション、チート対策のすべてを活かして、次のオリジナル作品にチャレンジしてみよう!

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