30時間でアイデアからGoogle Playへ



こんにちは、ハラジテリ!



今日は、プロジェクトを始めから終わりまで小さなおもちゃを作成するために、私が多くの正しいことをどのように行ったかについての話をあなたと共有したいと思います。 これらは、分析、計画、設計、TDD開発およびテストでした。 そして、これはすべてスクラムに沿って行われました。 はい、はい、その構成と順序で。 一般に、これはすべてプロジェクトの理想的なルートであるルールである必要がありますが、すべてではなく、常にこれを理解しているわけではありません。 少なくとも、私はしばしば怠け者になり、残りのことを忘れてコードに身を投じます。 これの結果を推測することは難しくありません。 しかし、今回はそうではなく、私は自分に言って、キーボードを下ろして、シートとペンを取りました。



免責事項 :この記事は純粋に動機付けです。 技術的な詳細は別途提供されます。



動機


このプロジェクトに私を駆り立てた主な理由は、このような小さなプロジェクトのコンテキストでさえ、真空の中でさえ、ゲームの開発にずっと行きたいという願望でした。 しかし、最終的には、ゲーム開発のあらゆる側面に浸透したかったのです。 私自身は、過去にホームプロジェクトで既に十分なミスを犯しており、今回はすべてが大人のようになるはずだと判断しました。



アイデア


今後のソフトウェアの種類はすでに事前に決められていました-ゲーム(何とか考えることは何もありませんでした、無意識のうちにすべてがずっと前に決定されました)。 最初のバージョンのターゲットプラットフォームはAndroidを想定していましたが、それは精神が近く、追加の知識を必要としないためです。 次に、ジャンルについて考えました。 私の想像力に現れたシューターとリアルタイム戦略にもかかわらず、私は自分の強さに悲観的で、クイックウィンの原則に従うことを決め、シンプルなパズルを目指しました。 豊富なパズルの中で、最初のフィラーは私の記憶、さまざまな色のひし形のフィールド、そして唯一の目標、すべての細胞の半分以上をキャプチャすることから生まれました。 これで停止しました。 もちろん、予想どおり、検索では同様の結果が得られましたが、それでもそれほどではなく、選択が承認されました。



タスクとその計画の内訳


人件費を計算し、カレンダーに従ってタスクを配布する前に、すべての側面から最終製品を検討し、基本タスクのレベルに分解し、ツール、ライブラリを選択し、テストプロセスと生産を推定する必要がありました。



まず、予備のモックアップが1枚の紙(または数十個のA4)で作成されました。 その後、それらをPhotoshopで完全に描写することが決定されたため、設計中の視覚的な不正確さを防ぐ機会がありました。 私からのアーティストはいないので、最終的にはインターネットでのレッスン(どれだけ成功したかを判断する必要がありました)を探す必要がありました。 しかし、リソースの最終バージョンからスケッチを作成することが決定されたため、1石で2羽の鳥を殺そうとしました。プロジェクトの終わりに、この決定は成功したと言えます。



次に、AからZのビジネスロジックを考え出しました(この段階で小さなアルゴリズムを考え出さなくても、開発段階で急いでそれらを起動する必要があるため、これを無視しないことを強くお勧めします)。機能要件を作成しました。 この情報に基づいて、フレームワークの選択に移りました。



実験者の精神は、何か新しいことを試してみるべきだと示唆しました。 だから私はcocos2d-xに会った。 利点はリストしません。 好奇心itive盛なユーザーはすでにGoogleを利用しており、このプラットフォームに精通している人なら、私の選択で私を理解するでしょう。 機能とパフォーマンス、ライセンスの両方が要件に完全に適合していることに気づくでしょう。 フレームワークがわかったので、人件費の評価により簡単になりました。



また、コードはまだ記述するには早すぎますが、入手可能な情報に基づいて、UMLを実行できます。 現在収集されているすべての資料とbuild-build-buildクラス図で自分自身をカバーすることを強くお勧めします。 私はこのアクティビティに一晩中費やしました。 最初のオプションは、以前のように、タイプミスと管理でした。 ただし、クラス図により、開発者は外出先でアーキテクチャを設計する必要がありません。 そのため、すべての箱がゴミ箱に入れられ、第2ラウンドが始まりました。 その途中のどこかで、私は再び過度の単純化の誤りを犯しました。非常にまともな文書を作成することができたのは3回目でした。 将来的には、実際のコードと80%以上一致すると言います。



落書き全体をまとめて説明するために、リソースを操作するのに10時間(実際には方法がわからない音楽の準備の仕方で)、純粋なプログラミングを20時間、テストとバグ修正に10時間を決定しました。



さあ始めましょう!


そのため、タスクのリストがコンパイルされ、実装に進みます。 カレンダーには休暇の始まりがあり、仕事中にキーボードから手を離さずに、彼の手はすでにひっかいて戦いに突進していた。 しかし、ベストプラクティスに従うために、Photoshopに座った。 そして、見よ、私は自分で仕事を発明する必要はなかった。 すべてが明確に分解され、ペイントされました。

-合計で、5つの画面。

-1日目、メニュー画面、およびゲームモードの選択。 ...、...ボタン、...要素などを表します。

-2日目、...、...などを描いた競技場。

-3日目、ゲーム画面を一時停止して終了します。

スクラムを振り回しながら、私は自分のためにタスクを脇に置き、それらに優先順位を付け、制限を設定し、バックログを管理しました。要するに、王と神がいました。 すべてが私の仕事を非常にうまく体系化した。 私自身のために、私は小さなルールを作りました-2つ以上の交換可能なタスクを開発に取り入れないでください。 一方で停止し、もう一方に移動して、後で最初に戻ります。

リソースの準備には3晩、合計7時間かかりました。 このような進化するグラフィックは魂を温めました。



開発に移ります。 20時間あります。 どうすれば進捗状況を追跡でき、時間があれば間接的に理解できますか? 方法は次のとおりです。20時間は、クラス図の各要素を実装するために必要な労力の合計で構成される、丸められた数値です。 現在、プログラムのどの部分の準備ができており、どのような全体的な進展があったかを理解するために、次の方法が発明されました。

-すべてのクラス/メソッドを実装しますが、ダミーを内部に配置します。コンパイルが成功するだけで十分です。

-各メソッドに対して、ユニットテスト(各3〜5個)をスローします。

-現在、アセンブリ中に、合格したテストの数を確認できます。これはプロジェクトの完了の割合であり、テストの数は減少しました。これはまだ実装されていない部分です。

したがって、プロジェクトの進捗状況の指標があります。



別のパラグラフでは、収益化に関する情報に値します。 もちろん、費やした時間と労力については、報酬が欲しいです。 したがって、いくつかの広告を固定することが決定されました。 Google AdMobにはさまざまな種類のプロモーションメッセージがあります。 しかし、私はこの戦略を選択しました。ゲーム中-広告はありませんが、ゲーム終了後はページ全体のバナーのみです。 ここでは、小さなアーキテクチャ上のフェイントについても説明します(これは、クラス図に対応しないコードの20%からのものです)。 ゲームの最後のCocos2dxは、アプリケーションをファイナライズする通常の方法ではなく、onDestroyなどを呼び出さず、アプリケーションで現在のスレッドを強制終了します。 同時に、ネイティブライブラリへの広告の詰め込みも簡単な作業ではありません。

解決策は次のとおりです。

1)ユーザーが([終了]をクリックして)ゲームを閉じた後、ゲームのメインフィールドが非表示になり、JNIが助けになります。これにより、新しいアクティビティの広告が表示されます。

2)ユーザーによって広告が閉じられたとき、または最小化されたとき、または他のオプション(戻る/ホーム/メニューボタンなど)が再びJNIであるが、反対方向でゲームを終了するための呼び出しを送信するとき閉じます。



テスト中


テストのために、2つの戦略を適用しました(この段階でも、すべてが私のために計画され、計画どおりに進みました)。

1)手動テスト。 幸いなことに、妻はQAエンジニアです。 ヘルプに感謝します。

2)自動テスト。 現在、インターネットは、開発されたアプリケーションをテストするために、実際の電話/タブレットへのリモートアクセスを提供するサービスを積極的に開発しています(以下はリンクです)。 そのようなサービスの良い特徴は、試用期間の利用可能性です。 私自身は、このようなサービスを3つ特定しました。 1つは、さまざまなデバイスで最終的なアプリケーションを実行できるようにするためです。 2番目は、パフォーマンスと負荷を測定するためのものです。 そして第三-多数のデバイスでの大量の表面テスト用。



合計すると、両方の戦略で約12の明らかな問題が発生し、計画された労働量が十分に活用されていませんでした。



生産


7回聞くよりも1回見る方が良い。





まとめ


-貴重な体験!

-18時間の開発+ 7時間のリソース準備+ 5時間のテスト= 30時間の実作業。これは恥ずべきことではありません。

-終わりを迎えたプロジェクトに対する誇り! そして、その成果を共有したいという強い欲求(だから、十分な睡眠をとっていないので、私はこの記事をドレスアップします)。

-これから何かが生まれるという希望(空になっている可能性があります。これは、ミニ商用ゲーム開発での経験がなかったためです)。

-読者のための動機/ヒント。



まだやるべきこと (プロジェクトが人気の兆候を見せ始めた場合):

1)iOSおよびWindows Phone 8向けのゲームをリリースするには、おそらくWindows向けのデスクトップバージョンをリリースします。

2)Googleアナリティクスを固定して、プレーヤーの行動を分析します。

3)機能の拡張:難易度、フィールド/セルサイズ、一般的なトップ(クラウド内のどこか)。



興味のある詳細をカバーしなかった場合は、コメントを書いて、間違いなく答えます。



便利なリンク:

1) play.google.com/store/apps/details?id=com.xlab.ice.HexFiller-実際には私の「傑作」

2) appthwack.com-大量検査サービス

3) cloud.testdroid.com/web/home-アプリケーションパフォーマンステストサービス

4) testobject.com-複数のデバイスでアプリケーションを実行し、その後の対話を実行する機能

5) developers.google.com/mobile-ads-sdk/docs/admob/advanced-インタースティシャル広告



舞台裏には、グラフィックスの準備、さまざまなディスプレイの操作、組み立て、エミュレーター上での実行、AIゲーム戦略アルゴリズム、あらゆる種類のささいなことのニュアンスがありました。 しかし、この記事は本質的にもっとや​​る気を起こさせるものです。 それでも、誰もが言うことを聞かないことに興味がある場合は-投票、記事の2番目の部分を書きます。


読んでくれてありがとう!

ご覧のとおり、小規模なプロジェクトに対しても真剣なアプローチが功を奏しています。 時間の節約と最終結果の両方において、これらはすべて、プリコーディング/ポストコーディングの段階を無視するという否定的な側面を指します。 今、私はそれを学びました。



PSグラフィックとリソースに関するヒントをreenboogに、収益化のヒントをcoder1cv8に感謝します。



All Articles