6日間でゲームを作成した方法

新年プロジェクト








こんにちは この記事は、新年の6日前にゲームを書くことにした方法、その方法、遭遇した問題、解決方法の物語です。



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



レベルタイプ






ツール



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



ゲームメーカー:Studio Standart Edition






私のコンピューターにはダブルブートがあります-UbuntuとWindows、私はほとんど常にUbuntuで作業してますが、GM:Studio for Linuxが存在しないため、しばらくWindowsに移行する必要がありました。 そして、私はWindowsで仕事をしていないので、私のシステム(ソフトウェアに関して)はほとんどむき出しです。 Photoshopをダウンロードしたくないので、Paint.NETですべてのグラフィックを描画する必要がありました(トマトを配置します) 。 ここで重要なのは、私にとって最も不快な部分と同様に、グラフィックスの作業を開始することに決めたということです。 そして、ゲームのスプライトではなくスタブを使用してコードから始めることにしました-マルチカラーの正方形と長方形、そして最後に、コードとレベルの準備ができたら、グラフィックを描画してゲームに入れます。



もちろん、私は作曲家ではなく、自分でサウンドをゲームの一部にしようとはしませんでしたが、ロイヤリティフリーの音楽を使用することにしました。 いくつかのトラックをダウンロードして、次のパートに進みました。



ゲームデザイン



プラットフォーマーは開発が容易なジャンルであると多くの人が信じています。 私の個人的な意見:簡単に開発できるジャンルはありません。 そして、あなたがまだそれを持っているなら-確かにプラットフォーマーではない。 しかし、なぜ私は? ゲームを開発する作業のかなりの部分は、レベルを通して考える自分の肌に納得したものであり、これはまったく簡単ではありません。 これを行うには、鉛筆と少し時間のあるノートが必要でした。 最初の2日間は、プラファーダーパーツとパズルのピースに取り組み、いくつかのクエストを一緒に完成させなければならないように設計しました。



また、次の問題にも多くの注意を払いました。10種類のプラットフォームゲームすべてで新しいものを何も見なかった場合、プレイヤーがプレーするのは退屈です。 したがって、プラットフォーマーの各部分について、新しい敵、レーザー、動くプラットフォーム、消えてから現れるプラットフォーム、ミニボス、メインボスなど、1つの新しいゲーム要素を思いつきました。



上で言ったように、ゲームは1つの大きなレベルになるはずでしたが、いつものように、最初の2-3パートを作成した後、急速に低下するFPSを見る幸運があったため、ゲームを5つの4レベルに分割することにしました各パーツ(2つのプラットフォーマーと2つのパズル)。 その結果、すべてのレベルの合計の長さは約30,000ピクセルで、文字サイズは36x58でした。 また、レベル0を作成することも決定しました。これは、基本的なゲームの仕組みをデモンストレーションすることで、プレイヤーを訓練するレベルです。



そして今、私が実装および実装したかったもののリスト:





私も次のことをしたかったが、その後拒否した。





私はこれのほとんどをトレーニングレベルと同時に実装しました。 そして今、コードについて少し。



プログラミング



ゲームの相対的な多様性にもかかわらず、多くのコードは含まれていませんでした:私の控えめな見積もりによると、〜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  }
      
      





その後、 幸せな瞬間に 、GMの便利な機能、つまり作成コードを発見しました。 結局のところ、ルームエディターで、オブジェクトの特定のインスタンスのコードを指定できます。これは、ルームにインスタンスが表示された直後に実行され、同じ初期化は次のようになり始めました。



  task_x = 7661; task_y = 520;
      
      





また、オブジェクトを初期化するアプローチのマイナス点は、初期化したすべてのオブジェクトの後に部屋に表示されることになっていたことです。 これが私に起こったのは、4行のコードを覗き見、そこにないエラーを探すのに30分かかりました。



初期化に関する別の問題は、たとえば22x11のサイズのスプライトをロードし、画像の上の行に影付きピクセルがなかった後、GM:Studio がスマートにマスク(衝突をチェックするオブジェクトの「シルエット」)を最初の行にゼロ以外のピクセル。 そして、ターゲットの位置でオブジェクトを初期化したときに、オブジェクトの左上隅の座標を示したので、マスクがわずかに低かったため、そこにあるインスタンスを見つける試みは成功しませんでした! 必要なオブジェクトのマスクのタイプを自動からフルイメージに変更する必要がありました。



ゲームメーカーのマスクの問題:スタジオ






グラフィックス



先ほど言ったように、私はPaint.NETでペイントしましたが、すべてにもかかわらず、これはそれほど悪くはありません。 はい、私にとっては珍しいため、いくつかのツールで作業する面倒な側面がありますが、一般的に、すべてが非常に便利です。



Pixel-Artのスタイルで描きましたが、控えめに言って、私はアーティストからは程遠いので、次のようなものを得ました:



ピクセルアートドッグ






最終日にすべてのグラフィックを描きました。 ルームにタイルを配置するとき、複数の追加機能は、タイル編集モードでShiftキーを押しながらルームエディターでLMBを同時にクリックすることでアクティブになります。



また、すべての落書き(パズル用)もタイルで作られていることに言及する価値があります。



最初に彼は自分で背景を描き、それからアーティストの友人にそれを再描画するように頼みました。 なった/なった:



背景は/になりました






サウンドトラック



ロイヤリティフリーの音楽を使用することに決め、好きないくつかのトラックをダウンロードすることを上記で述べましたが、GM:Studioには、いくつかのトラックの「プレイリスト」を円で再生できる機能がないため、すべてを自分で書く必要がありました。 その後、どこかで「わずかに」同期がとれていたことが判明しました。したがって、最初のトラックを再生した後、同時に複数のトラックが同時に再生されましたが、これらはすべて時間が不足した結果です。 はい、すべて動作しました。おそらくクライアント側の問題です。



また、ゲームにサウンドを追加したかった(ボタンを押す、ドアを開閉する、敵)が、「締め切り」の1〜2日前に、時間がないことに気付きました-拒否しなければなりませんでした。 問題は、ゲームにサウンドを挿入するのに時間がかかったということではなく、それらを見つけるのに時間が必要でした。



管理しましたか?



私はコードの記述を終了し、時計の20分前の最後のクエストを完了しました。 しかし、私にはまだ時間がありませんでした:





おわりに



もちろん、6日間で本格的なゲームは開発されていませんが、実際に試してみると、このように短時間でほぼ機能する完全にプレイ可能なアルファを作成できます。



ゲームをダウンロードします(これは広告ではなく、自分の手でゲームを感じたかった人もいます)。次のリンクを使用できます: Googleドライブ

これは実際、私が6日間で書いたゲームではありません。 このバージョンでは、さらに数時間(7〜8時間)費やさなければなりませんでした。 管理:WASD、残りは内部にあります。 (矢印+スペースも制御しますが、使用しない方が良いです)。



All Articles