趣味としてのGameDev

ゲームに関係のない分野でプログラマーとして働いていたとき、私は突然モバイルゲームを書くことにしました。 ツールも、開発のテクノロジーと仕様も知らない。 彼女は何を得ましたか? 私は自分自身のためにどのような結論を導き出しましたか、gamedevは趣味になることができるかどうか-すべてがカットされています。





簡単な背景



少し前に、「コンピューターゲームを書くことはできませんか?」というアイデアがありました。ほとんどのプログラマーがこのアイデアを思いついたと思います。 私たち全員が職業を学び始めたばかりのとき、私たちは皆、新しいWorld Of Warcraft、Counter Strike、または少なくともMerry Farmsを作成することを夢見ています。 しかし、その後、学校の学生の年が終わり、私たちは支払うものを書き始めます。



私はプログラミングを学んでいた10年前に、Delphiで最初で唯一のゲームを書きました。 それは非常にバグが多く、速度が低下した、垂直スライダー-シューティングゲームの悲惨なクローンでした。 価値のある何かを開発するには、グラフィックスを扱う分野での欲求だけでなく、かなりの知識も必要であり、「興味深いプログラミング」を開発するときは10%の時間がかかり、残りは完全に非ロマンチックな技術的な問題を解決することに気づきました。 そのため、大学に入る前にゲームを書くという考えを捨て、今日では5年間、企業システムの統合の分野で楽しく働いています。

しかし、数か月前、私は「魂のために」何かを書きたかったのです。 さらに、モバイルアプリケーションの急速な開発により、近くで非常に興味深いことが起こっているように感じますが、私はいません。 「注文しない!」-私は、モバイル玩具の開発に向けて掘ることに決め、急いで行きました。



そしてここから楽しみが始まります...



まず、さまざまな既製エンジンの豊富さは非常に楽しいです。 さらに、無料で簡単に習得できます。

第二に、あなたの仕事を正直に共有できるアプリケーションを備えた多くの市場とサイトです。

第三に-多くの記事、レッスン、チュートリアルなど。 など Habréに関するいくつかの記事は、テクノロジーとツールのアイデアを得るのに十分です。



そのため、決定は明確でした-それを行う!



どうする?



最初の4つまたは5つのプロトタイプのアイデアは、容赦なく捨てられるか、より良い時期まで延期されました。

理由は非常に異なります。開発するには複雑すぎるものもあれば、既存の製品の不適切なクローンであることが判明したもの、コンテンツを作成するために多くの作業を必要とするものもありました。



それから私は座って、将来のゲームの要件を策定することにしました。

  1. 明るく快適なインターフェースが必要です。 トレースが不十分なフラッシュゲームの時代は、過去にあったとしても長い間過ぎ去っています。
  2. ゲームにはシンプルなゲームプレイが必要です。 これは限られたリソースによって決定されました-深刻な何かを書くことは強さでも時間でもありませんでした。 さらに、ゲームの複雑さとその人気の間の相関関係は非常に疑わしいです。 怒っている鳥たちにこんにちは!
  3. 管理はできるだけシンプルにする必要があります。 これは私の個人的なモバイルゲームの見方です。 私は、あなたが指で十数個の小さな画面のボタンを突くか、ハンドルのように電話を回す必要がある人々に我慢できません。 ただ個人的な好み。


その結果、彼は次のコンセプトに落ち着きました。ボールはプラットフォーム上でジャンプします。 タスクはフィニッシュラインに「ジャンプ」し、落ちないことです。 管理-1本の指で。 彼は触れて、引っ張って、手放した。 メニュー以外のボタンやコントロールはありません。

Unity3dがエンジンとして選択されました。 第一に、それに関する多くの情報があり、第二に、私は2dよりも3dの方がずっと良い友達です。 気取らないモデルを作成し、そこからレベルを収集することは、曲がった手で美しいスプライトを描画するよりもはるかに簡単に思えました。



だから、目標は明確です、行きましょう!

開始レベル



最初の問題



最初に欠けていたのはコンテンツでした。 最も単純なゲームでさえ、関数とクラスだけでなく、モデル、テクスチャ、サウンドでもあります。 プログラマーはめったにアーティストではありません。 ミュージシャン-さらに少ない。 そして、それ、そして他の人、そして3番目-ほとんど決してありません。



コンテンツは、在庫で検索するか、専門家に注文するか、自分で行う必要がありました。 有料株と個々の注文はすぐに姿を消しました-それは商用アプリケーションに関するものではなく、それにお金を投資する意味はありませんでした。 無料の株式で価値のあるものを見つけることは不可能でした-検索プロセスは、手元にあるすべてのものが投げられた大きなurで掘りに似ていました。



残っている最後のオプションは、すべて自分で行うことです。 その結果、バックグラウンドミュージックなど、何かをあきらめなければなりませんでした。 しかし、3Dツールを学ぶことで多くの喜びを得ました。 最もクールなのは3d Studio Maxです。 テストの使用期間が1か月に制限されているのは残念です。 突然この分野に専門的に従事する場合、私は間違いなくそれを購入します。 そのため、無料のBlenderが非常に役立ちます。

音についても難しいことではないことが判明しました。ボールの落下、星の「集め」、レベルの完了に対するいくつかの短い効果音が無料のAudacityを使用して行われました。 より多くのことを行うことができますが、ここでは、問題はツールではなくスキルにあります。



2番目の問題は、アプリケーションアーキテクチャでした。 クラスとその目的を記述することは問題ではありませんが、開発の最初に私が初めて開いたUnityでクラスを一緒に貼り付けることははるかに困難です。 開発中にツールの機能を学習するときに、この動物園全体をヒープに入れる方法は? 最初からすべてを書き直し、開発の数時間ごとに人間が望んでいました。 常に新しいものと古いものを学んでいたため、解決策はばかげているように見えました。



コードの品質を追いかけた場合、ゲームは作成されないということがすぐにわかりました。 その結果、開発に実際に影響を与え、多くの場所で使用されたそれらの瞬間だけが考え出されました-スクリプトコントローラーが停止している多数のプレハブ。 残りはハードコードと無秩序です。



ハードコード、コピー&ペーストなど、そこにあるすべてのアンチパターンを使用したようです。 決してこれを行うことを強くお勧めしませんが、これにより開発時間が3分の1に短縮されたという事実に注意を向けざるを得ません。 出力は動作するゲームであり、誰も見ることのない嫌なコードです。



私が考えもしなかったゲームのもう一つの不幸はバランスでした。 私のミニゲームでも、レベルの難易度は徐々に高くなるはずです。 そして、サイズだけでなく、複雑さも。 合格すると発生するポイントは比例して増加します。



ゲームの最初のバージョンはメガハードコアであることが判明しましたが、私は何の問題もなくそれを試し、すべてが正常であると考えました。 しかし、愛する人の助けを借りた「アルファテスト」は、あなたが自分で書いたのでなければゲームは通行できないことを示しました。

私は、フィニッシュラインからの1回のジャンプでレベルに失敗することを許可しない「安全」要素を単純化し、最適化し、追加する必要がありました。



変更後、「オッズ」が得点しました。 なぜなら 通過時間を考慮して計算され、最初のレベルでは最後のレベルよりも多く請求されます。

バランスを修正するために、私は何十回もゲームを経験しなければなりませんでした。 それでも、複雑さを直線的に増加させることはできませんでした。



そして最後に、多くの感情がアイコンの作成をもたらしました。 すべては、描くことができず、彼らがどうあるべきかの無知にかかっていました。 その結果、Photoshopの「アーティファクト」にあふれた奇跡が起こりました。 最良の選択肢ではありませんが、それ以上では不十分です。 私は、これが重要な作業であるとは思っていませんでした。

アイコン



ファイルのファイナライズ



最初のステップが実行され、最初のレベルが開始された後、リリースする前にゲームに追加する必要があるもののリストを作成しました。 リストは長いです。



最初のポイントは、あなたがすべてをすれば、ゲームは3、4ヶ月でリリースされることを示しました。 すべてが熱意で行われたことを考えると、オプションではありません。 開発期間が長くなればなるほど、より多くの「プラグ」が発生し、何もする可能性が低くなることを完全に理解しました。 開発は1つのヒューズで迅速に行わなければなりませんでした。 実際-スクラムに関するものである場合、1回のスプリントで。



その結果、ゲームを縮小することが決定されました。

拒否したもの:

  1. バックグラウンドミュージック。 良いものと無料のものを見つけることができませんでした。自分で書く方法がわかりません。他の人を買うことは選択肢ではありません。 そして盗むことは良くなく不道徳ではありません。
  2. レベルの数は25から15に減少しました。
  3. 遠近効果のあるマルチレイヤーの背景の代わりに、抽象的な雲が挿入されました。
  4. ソーシャルネットワークとの統合は実装されていません。 Facebookでページを作成し、少なくともアプリケーション自体に[いいね!]ボタンを作成したかったのですが、時間が足りませんでした。
  5. グローバルランキング。 彼はプレーヤー自身の功績だけでなく、すべての中で最高の、そして彼の友人の中で最高のものをFacebookに表示することを計画しました。 同様に、十分な時間がありませんでした。
  6. アプリでの広告。 費やした時間をわずかに補償したかったのです。 しかし、admobに問題があり、疑問が生じました-何も稼がないか、リリースを厳しくしました。 無料でリリースし、得られた経験で自分に報酬を与える方が良いと判断しました。


これらは記録された点だけであり、本当に後悔しています。 未実現の「ウィッシュリスト」の総数はカウントされません。



まとめ



  1. ゲームはリリースされ、Google Playで公開されます。
  2. アイデアからリリースまでの開発期間は2か月強です。
  3. 開発に費やされる時間は約60時間です。 以来おおよそ ほとんどの時間は、これまで知られていなかったテクノロジーの研究に費やされました。 また、テストおよびバランス調整用。
  4. 開発コストは、Google Playの開発者アカウントあたり25ドルです。


勝つ!

レベル獲得



結論



私自身、いくつかの結論を出しました。喜んで共有します。

  1. モバイルミニゲームの現代的な開発は、プログラマというよりもアーティストの仕事です。 ソフトウェアの実装については、開発に関する最も基本的なアイデアで十分です。 もちろん、大型で高品質の製品が商業目的で作られている場合、すべてが完全に異なります。 しかし、カジュアルなシューター、ウォーカー、フライ、フライ、ジャンプを書くことは今では問題ありません。 それは欲望でしょう。
  2. 理想は達成不可能です。 最初のゲームにあなたが望むものに投資しようと努力するなら、それは決して行われません。 何もしないよりも、シンプルで楽しい何かをする方が良いです。
  3. 開発のルールを破るのを恐れる必要はありません。 汚いコードはもちろん悪いです。 しかし、ユーザーは彼を見ることはありません。 あなたもあなたのゲームを開発するつもりがないなら。 そして、初めて何かをすること、そして開発への希望は素朴です。 小さなゲームのコードは覚えておくのが簡単であり、これが終了をスピードアップする場合、その純度は無視することができます。
  4. 一番の動機は早期リリースです。 何らかの問題のためにそれが無期限に延期される場合、何かをしたいという欲求は私たちの目の前で溶けています。 したがって、すべての「抑制」問題はできるだけ早く解決する必要があります。 自己動機付けのための理想的なツールは、リリースのために行う必要があるすべてが書かれた紙です。 何かが複雑すぎてオプションであることが判明した場合-それは取り消し線で戻されてはなりません。
  5. 最初のゲームは私がプレイしたいものでなければなりません。 アプリケーションストアの評価を「撃ち」、爆破することはほとんどありません。 しかし、それを開発するのは楽しいことであり、他の人と共有したいと思います。 そして趣味にとって、これは最も重要なことです。




そして最後の、非常に個人的な経験。



ゲームを作るのは面白いです。 プレイするよりも面白いこともあります。 大規模なプロジェクトでのチームワークとは異なり、これは個人的な勝利に少しの喜びを与えます。 職場での製品のリリースは標準であり、すべてが明確になっています。これは珍しいことではありません。 しかし、そのようなミニゲームを使用すると、最初のプログラムを開始したときに経験した喜びを体験できます。 未知の技術が山ほどあるとき、すべてが新しく、理解不能で、ここにあります:O-pa! 稼いだ!



開発からの印象は最も快適でした。 だから-ゲームをプレイ!

メインメニュー、ゲームの開始



「プロではない」ゲーム開発の経験を誰かが共有してくれたら嬉しいです。



All Articles