
こんにちは この記事は、新年の6日前にゲームを書くことにした方法、その方法、遭遇した問題、解決方法の物語です。
7日前(執筆時点)に、ゲームを開発する必要がありました。そのため、新年の前に締め切りに間に合わせることができました(残り6日ありました)。 計画どおり、ゲームは新年テーマの2Dプラットフォーマーであると想定されていました。1画面に2枚、PC用、1つのシングルですが長いレベルで、その間プレイヤーはプラットフォーマーとパズルを適切に通過する必要がありました。 「プラットフォーマー固有」とはどういう意味ですか? 説明しましょう。ゲームは20個のパーツで構成されていなければならず、10個はプラットフォーム、敵、スパイクなどの「セット」、「プラットフォーマー」、その他10個はプレイヤーがしなければならないパズルプラットフォーマーでした。次の図のように、レベルをさらに進めるために問題を解決します。

ツール
「むき出しの」ゲームを最初から作成する時間がありませんでした。さらに、2Dで考えられていたので、 ゲームメーカー:Studioを選択しました。 。 私はすでにこの素晴らしいツールの経験があったので、少し時代遅れの無料のスタンダートバージョンをダウンロードすることをheせず、さらなるトレーニングを続けました。

私のコンピューターにはダブルブートがあります-UbuntuとWindows、私は
もちろん、私は作曲家ではなく、自分でサウンドをゲームの一部にしようとはしませんでしたが、ロイヤリティフリーの音楽を使用することにしました。 いくつかのトラックをダウンロードして、次のパートに進みました。
ゲームデザイン
プラットフォーマーは開発が容易なジャンルであると多くの人が信じています。 私の個人的な意見:簡単に開発できるジャンルはありません。 そして、あなたがまだそれを持っているなら-確かにプラットフォーマーではない。 しかし、なぜ私は? ゲームを開発する作業のかなりの部分は、レベルを通して考える
また、次の問題にも多くの注意を払いました。10種類のプラットフォームゲームすべてで新しいものを何も見なかった場合、プレイヤーがプレーするのは退屈です。 したがって、プラットフォーマーの各部分について、新しい敵、レーザー、動くプラットフォーム、消えてから現れるプラットフォーム、ミニボス、メインボスなど、1つの新しいゲーム要素を思いつきました。
上で言ったように、ゲームは1つの大きなレベルになるはずでしたが、いつものように、最初の2-3パートを作成した後、急速に低下するFPSを見る幸運があったため、ゲームを5つの4レベルに分割することにしました各パーツ(2つのプラットフォーマーと2つのパズル)。 その結果、すべてのレベルの合計の長さは約30,000ピクセルで、文字サイズは36x58でした。 また、レベル0を作成することも決定しました。これは、基本的なゲームの仕組みをデモンストレーションすることで、プレイヤーを訓練するレベルです。
そして今、私が実装および実装したかったもののリスト:
- スパイク-キャラクターの死と最後のチェックポイントでの再生が発生する接触オブジェクト
- チェックポイント-プレイヤーが自分の位置を維持し、レベルの完成した部分を修正する場所
- 移動プラットフォーム-水平/垂直に移動でき、その上に立っているプレーヤーを運ぶプラットフォーム
- ボタン-ドアを開くためなど
- レバーはボタンと同じですが、オン/オフの状態があります。
- ドア-閉じたとき、プレーヤーを通過させません
- レーザー-特定の周波数で動作します:状態がオンになり、接触すると、キャラクターが消えます
- ボックス-プレーヤーはそれを移動できます。ボタンに移動すると、アクティブになります
- 不安定なプラットフォーム-特定の頻度で消える/現れるプラットフォーム。
- テレポート-テレポートAはプレイヤーをテレポートBの位置にテレポートします
- 花火-空飛ぶ敵を倒す
- 雪玉-ミニボスとボスを破壊する
- 数種類の敵
私も次のことをしたかったが、その後拒否した。
- 飛び込めないプラットフォーム
- 長く耐えられないプラットフォーム
- 階段
- 気流
私はこれのほとんどをトレーニングレベルと同時に実装しました。 そして今、コードについて少し。
プログラミング
ゲームの相対的な多様性にもかかわらず、多くのコードは含まれていませんでした:私の控えめな見積もりによると、〜1400行です。 基本的には、敵の行動パターンを定義するコードであり、キャラクター制御に関連するコードでもありました。
管理について少し。 最初のプレイヤーはキーボードでプレイし、2番目はゲームパッドでプレイすることを想定していました(ゲームは友人へのプレゼントとして開発されたため、そうでした)。 GM:Studioには素晴らしいゲームパッド_ *機能があり、これはデバイスでの動作を完全に拒否したため、古き良きジョイスティック*機能を使用する必要がありました。 そしてすべてがうまくいきますが、レバーの動作、つまりゲームパッドのボタンによるこの動作のアクティブ化をプログラミングする段階に達したとき、ボタンが押されたかどうかをチェックするだけの機能であるため、ボタンが押されたかどうかをチェックする機能(joystick_check_button())は十分ではないことがわかりましたボタンが今かどうか。 また、ユーザーは1/30秒(デフォルトではGMの1つのゲームクロック:スタジオ)しか押すことができないため、ボタンを何度も押したため、レバーが非常に不便になりました(ほとんど不可能です)。特定の位置に。 したがって、ボタンのクリックをチェックすることに加えて、最後の0.8秒間押されたかどうかもチェックする独自の関数を作成する必要がありました。
プレーヤーの直接制御には、左/右への移動、ジャンプ、ボタン/テレポーター/レバーの有効化、雪玉の投げ、花火の発射のみが含まれていました。
開発の開始時(0、1、および部分的に2番目のレベル)に、クエストと一部のゲーム要素の初期化に問題がありました。 特定のオブジェクトの特定の変数を特定の値に設定するコードを含む初期化オブジェクトを作成する必要がありました。たとえば、位置(7256; 564)にあるボタンを初期化して位置(7661; 520)にドアを開くコードのように見えました:
with (instance_position(7265, 564, obj_button)) { // task_x = 7661; //, X task_y = 520; //, Y }
その後、
task_x = 7661; task_y = 520;
また、オブジェクトを初期化するアプローチのマイナス点は、初期化したすべてのオブジェクトの後に部屋に表示されることになっていたことです。 これが私に起こったのは、4行のコードを覗き見、そこにないエラーを探すのに30分かかりました。
初期化に関する別の問題は、たとえば22x11のサイズのスプライトをロードし、画像の上の行に影付きピクセルがなかった後、GM:Studio

グラフィックス
先ほど言ったように、私はPaint.NETでペイントしましたが、すべてにもかかわらず、これはそれほど悪くはありません。 はい、私にとっては珍しいため、いくつかのツールで作業する面倒な側面がありますが、一般的に、すべてが非常に便利です。
Pixel-Artのスタイルで描きましたが、控えめに言って、私はアーティストからは程遠いので、次のようなものを得ました:

最終日にすべてのグラフィックを描きました。 ルームにタイルを配置するとき、複数の追加機能は、タイル編集モードでShiftキーを押しながらルームエディターでLMBを同時にクリックすることでアクティブになります。
また、すべての落書き(パズル用)もタイルで作られていることに言及する価値があります。
最初に彼は自分で背景を描き、それからアーティストの友人にそれを再描画するように頼みました。 なった/なった:

サウンドトラック
ロイヤリティフリーの音楽を使用することに決め、好きないくつかのトラックをダウンロードすることを上記で述べましたが、GM:Studioには、いくつかのトラックの「プレイリスト」を円で再生できる機能がないため、すべてを自分で書く必要がありました。 その後、どこかで「わずかに」同期がとれていたことが判明しました。したがって、最初のトラックを再生した後、同時に複数のトラックが同時に再生されましたが、これらはすべて時間が不足した結果です。
また、ゲームにサウンドを追加したかった(ボタンを押す、ドアを開閉する、敵)が、「締め切り」の1〜2日前に、時間がないことに気付きました-拒否しなければなりませんでした。 問題は、ゲームにサウンドを挿入するのに時間がかかったということではなく、それらを見つけるのに時間が必要でした。
管理しましたか?
私はコードの記述を終了し、時計の20分前の最後のクエストを完了しました。 しかし、私にはまだ時間がありませんでした:
- 私は第4レベルを捨てなければなりませんでした。時間がありませんでした
- レベル5を少し下げる必要がありました:2番目のクエストを投げました
- 私が参加したゲームの通過中に、2
人の2人が捕まった、カール!クエストでクラッシュ:すべてを再テストする時間がありませんでした - アニメーション-キャラクターと敵は静的です(ただし、ゲームを適応させた解像度はあまり目立ちません)
- キャラクターの人生を示すハートのスプライトを描く時間はありませんでした-彼らは正方形のままでした
- タイルタイル、間違ったレイヤー上のタイル、見えない移動プラットフォームの形の小さな欠陥。ここで、sprite_indexと可視変数を初期化するのを忘れていました。
おわりに
もちろん、6日間で本格的なゲームは開発されていませんが、実際に試してみると、このように短時間で
ゲームをダウンロードします(これは広告ではなく、自分の手でゲームを感じたかった人もいます)。次のリンクを使用できます: Googleドライブ
これは実際、私が6日間で書いたゲームではありません。 このバージョンでは、さらに数時間(7〜8時間)費やさなければなりませんでした。 管理:WASD、残りは内部にあります。 (矢印+スペースも制御しますが、使用しない方が良いです)。