素朴な7つのイテレーション、または1年半デビューゲームを書いた方法

想像力 私の1年生でのDendyの出現により、私が誰になるかという質問は、ほんの数週間で消えました。もちろん、プログラマーです。 学校でコンピューターサイエンスが不足しているにもかかわらず、私はこれまで長い間一生懸命に取り組みました。私は研究所での勉強と並行して、有名なレジストラの技術サポートで働きましたが、完全な人生は、どこかでコードを書くようになった瞬間に始まりました。

すぐに、私はプログラマーとして電話から電話でお金を稼ぐだけでは不十分であることに気付きました。すべての楽しみは、建築家、テスター、チームリーダーなしで何かを書き、それを機能させることに決めたときから始まります。 楽しくて刺激的なものが望ましい。 たとえば、ゲーム。

カットの下には、7つの最も明白な(現在のように思える)レーキがありますが、これは思いがけず邪魔されたため、高価なゲーム開発を行っている人を邪魔する可能性がゼロではありません。

私は一生コンピュータゲームをしました。 数十台が1枚のフロッピーディスク1.44 Mbに収まった当時に遡ります。 ゲームは現実からの逸脱であり、現実には存在しない自分の想像力を過度に高める理由であると言う人を私は決して理解していませんでした。 私の意見では、ゲームは集中トレーニング、知識への渇望への扇動、リソース管理の実践、および決定シミュレーターです。 小学校1年生で、私が誰になるかを正確に知っていたのは驚くことではありません。プログラマーです。 そして私は一つになりました。

私が専門分野で働くことができた過去数年にわたって、私は多くの興味深い人々に会いました。 何らかの理由で、ほとんどの場合、互いに関係のない2人のプログラマーが私の魂に沈みました。 どちらもモバイルプラットフォームを探索し、アプリケーションを作成することを情熱的に夢見ていました。 彼らの各々が後で正直に認めたように、どちらもゲームをプレイしたことがなく、プレイしない、プレイするつもりはなく、一般的にこの職業は子供にとって愚かだと思う。 私の非常に理にかなった質問(ほぼ最初の会議で質問された)に対して、モバイルプラットフォーム用の独自のプロジェクトの開発を開始する準備ができたことを彼らが最終的に理解したときに、何を書くつもりですか?

また、自分のゲームをリリースすることも常に夢でした。 そして、20年前に誰かが将来、これを行うために全体を保持する必要はないだろうと私に言ったら、私はおそらくより少なくプレーし、より多くのことをするでしょう。

モバイルアプリケーション市場の出現以来、多くの時間が経過しました。 しかし、私は郊外に住んでいた間、これらの同じモバイルプラットフォームを探索し、少なくとも1つのプラットフォーム用のアプリケーションをリリースするよりも、常に優先クラスが多くありました。 最初に、 アンドロイド 'eの電話で長時間保存し、同時に研究を終了し、 Starcraft II 、そしてTropico 3でプレイすることを忘れませんでした。 その後、モバイルマーケットとは関係のないさまざまな企業の開発者の仕事にすべてが夢中になり、夕方にはいつもWorld Of Tanksに座っていました。 そしてある日、私が長い間夢見ていた奇跡が起こりました。私の生後6ヶ月の息子と母親は、モスクワ郊外から人口3000人のカレリア人の村に移り、遠隔地で働き始めました。 以前は道路で過ごした4時間前にリリースされましたが、今回は無駄にしないことが決定されました。

コンセプト


もちろん、私はもっと単純なものから始めることに決めたので、私はベンチャーのためにトランプを選びました-それらはほとんど理想的なOOPシミュレータです。 その頃にはJavaを知っていましたが、なんらかの理由でC言語を使用できなくなったため、 Android用アプリケーションをリリースすることにしました。 さらに、私はエミュレータを本当に信用していませんでした。私の唯一の物理デバイスは、Android 2.3.3と20 MBの空きメモリを搭載したHTC Explorerでした。

袖をまくり、市場に出て競合他社のアプリケーションを見て比較しました。 私が認めた最初の印象は、これらのゲームはすべて、私の同じ仲間、つまりゲームにあまり興味のない人によって作られているということでした。 まあ、またはディレクターが余分な収入を持ち、資本が回転するようになった小さなオフィスでは、彼は現在トレンドにあるため、アプリケーションをリリースすることを決めました-彼はプログラマーを雇い、それを考慮して、あなたは完了です。 まれな例外を除いて、すべてのゲームは双子の兄弟のスクリーンショットのようにさえ見えました-地図上の不変の緑の背景とハックされた写真は実際のものとまったく同じです。

誰かが彼らのデビューゲームを書いた方法について、何十もの記事を読んで、ほとんどの場合、初心者のイグロデラのシナリオは次のように見えることに気付きました:そのうち、市場で大量に(ええ、次のカードゲームを作ることにした人が)言った、他のみんなと同じことをして、色をオレンジとライムに変えて(誰も持っていない!)市場は突然誰も彼のゲームを必要としないことを発見します。 イグロデルは困惑しています-結局、彼は強さを費やし、夜寝ずに色を取り、寝る前に数回ひそかに自分自身を許可しました。違いますか?)、世界の支配権を主張することなく、よりシンプルな最初からリリースしたかったのを忘れていました。

その瞬間、急いで行く場所がまったくなかったので、落ち着いて仕事に取り組み、夜と週末にプロジェクトに取り組むことにしました。 プロトタイプを「もっと簡単に」書くことはしませんでしたが、恥ずかしくないゲームをすぐに作成し、将来的には第10回/第79回/第133回のゲームのファンによって掘り下げられても、私が最初から彼は何か特別なことをしようとしました。 私のカードゲームを他のものと区別するのに何が有益かを考えるのに、ほんの数週間かかりました。 私がそれを見つけたときの決定は、あなたが想像できるよりもはるかに簡単であることが判明しました-私は自分がプレイしたいゲームを作ることにしました(キャップ​​が承認します)。

私は自分自身にたくさんの「愚か者」をダウンロードし、それらをうまくプレイしました。 このように見えました:新しいゲームが始まります。 私たちはカードを置き、カードを取り、置き、取り、置き、取り、勝ち取るために最善を尽くします。 勝った-乾杯! 失われた-悲しいかな。 広告を無限に繰り返します。

誰がWoTをプレイしたかは、戦闘自体が非常に急速にバックグラウンドにフェードインし、軍事装備をポンピングするゲームに取って代わることを知っています。 喜びは、次の戦闘での勝利から(これは起こりますが)ではなく、新しい戦車の購入からもたらされます。 このゲームのすべての戦車が最初から利用可能であり、誰でも選択できることを少し想像してみてください。 プレイするのが面白い? そうは思いません

だからここで-勝利のために同じ「愚か者」で、最初の10試合だけをプレーしたい、それから-退屈する。 結論は明らかです。勝利のためにお金を与える必要があります。 しかし、このお金をどこで使うかは別の問題です。それは、いまだに私を苦しめ、新しい答えを見つけます。

このお金で、カードの新しいシャツとカードの小競り合いの新しい背景を購入できるようにすることができます。 プレイするのは面白いでしょうか? まあ、それは「ちょうどそのような」ほど退屈ではありませんが、それでもヒットに引っかかりません。
しかし、「フール」ではなく「キング」をプレイしたくない場合はどうすればよいですか? ここにある!
私は、勝利するたびにコインを獲得し、これらのコインの新しいカードゲームを開くことができるカードゲームのコレクションを思いつきました。 何かいい匂いがした。 さらに、カードゲームのトップコレクションはまさにそのように見えますが、実際のお金で新しいゲームを開く必要があるのはそこだけです。

次に、ゲームの数と構成を決定する必要がありました。 少なくとも初めて、アプリケーションを起動する前。

もちろん、「ばか」。 私の意見では、これは私たちの国で最も一般的で最も好きなゲームです。 村にいる私たちは、このゲームで友人と緑茶のティーポットで時間を過ごすことがよくあります。

もちろん、キング。 時々それも演奏します。 さらに、子供の頃、私はこのゲームにMS-DOSで出会い 、ソユーズマルトフィルムのヒーロー(Vadim Vladimirovich、 PapaBubaDiop 、私の尊敬)と競いました

私がプレイした別のソリティアゲームがありました-10年前に外国のフラッシュポータルで十分にプレイできませんでした。 それはピラミッドと呼ばれていましたが、その名前の公式のソリティアのルールは私がプレイしたゲームと対立しています。 私のゲームでは、デッキの現在のカードの上に置くには、ピラミッドから1つ古いか低い値のカードが必要です。その結果、特定の器用さと運で、ピラミッドを一度に倒すことができます。 ちなみに、このゲームには10年前に1つの大きな問題がありました。そのロジックはサーバー側で処理されたため、クリックするたびにページがリロードされました(今はフラッシュではないという疑いがあります。 このゲームは私をひどく引きずりましたが、1つのゲームに多くの時間が費やされたため、ひどく迷惑でもありました。 私はいつかその17歳の時に自分自身に同じことを書くことを約束したが、ブレーキはかけなかった。 そして、ご存じのように、ゲシュタルトは閉じなければなりません。

私はインターネット上でカードゲームやカード自体に関する多種多様な資料を積極的に読み始めました。 私はカードで男性用スーツのテーマを取り上げ、カード自体の歴史を掘り下げて、なぜ私がカードゲームを作っていることを誰にでも認めることをとても恥じているのか理解しようとしました。 どれだけ私と一緒にいるのかわかりませんが、私の意見では、カードゲームは、社会で最も成功しているセクションではない、ある種のかなり限界的な楽しみと考えられています。 ただし、それについては後で詳しく説明します。

ウィキペディアで「The Fool」について読んだ後、それに対する多くの変更に満足しました(現在、この記事はすでに編集されており、これ以上の変更はありませんが、50以下もありませんでした )。 少なくとも彼にとって最も面白いものを作るべきだと決めました。 できれば多数のWikipediaの修正を加えて、市場で「Fool」の類似物を探しましたが、そのような「Fool」は1つしか見つかりませんでした。そして、その修正はまず大部分が支払われ、次に一度に1つしか修正できません。 しかし、それらを一緒に混ぜることが最も興味深いです! 袖をまくってから、最も興味深いルール(そのうち20個以上)を選択することにしました。また、自分のルールを追加することも忘れませんでした。これは恥ずべきことです。 当然、獲得したお金のためにそれらを購入することも計画されていました。

一般的に、最初から、私は自分の生き方の表彰台にゲームを設置した人とは違うと判断しました。そのため、「大雨には100リラ、大雨には200リラ、雷と稲妻には300リラ」を服用しなければなりませんでした。 「結局、作家が本を書くとき、彼はそれをどのように収益化するかを考えます。この場合、私にとっては作家です。そうです、そうです、私は作家です。それは自己表現であり創造的な衝動です。
このような状況では、広告やアプリ内購入なしでゲームを完全に無料にすることは可能ですが、この場合、アプリ内購入やクロススクリーン広告APIを掘り下げる楽しみを奪い、「収益化」と呼ばれるモバイルゲームの開発全体をバイパスします「。 だから私はバランスを保とうとしました-プレイは非常に快適で寄付なしでなければなりませんが、突然誰かが開発者をサポートして何かを買いたいなら-私はただうれしいです。 同時に、購入では機能に制限はなく、時間の節約になります。

勝利に対する報酬という形の1つの機能は優れており、2つの機能はさらに優れています。 私はカードゲームで他に何が変えられるかを夢見た喜びを否定しませんでした。 私はこの知的楽しみの楽しさの底に到達しようとしました、そして、一度、村で友人と何百ものゲームをした後、モスクワに住んでいる私のガールフレンドの祖母と一緒にテーブルに座って遊びました。 ゲームがどれほど変わったかに驚いた。 お茶を飲む温かく親しみやすい雰囲気の代わりに、生ではなく死に対する何らかの対立があり、それぞれの勝利または損失はそれぞれ文字通り勝利またはor辱として認識されていました。

その瞬間、私はトランプも、奇妙なことにコミュニケーションであることに気付きました。 会話や冗談で戦いを薄めず、並行して果物を食べず、音楽を聴かなければ、夜の集まりはそれほど多くありません。 私はすぐに、 マリオのゲームギャラリーとワイルドボード ゲームを思い出しました。ここでは、対戦相手がボードまたはテーブルで何が起こっているかを声に出してコメントしました。 追い詰められた犠牲者の感嘆よりも良いことは何でしょうか?

ちなみに、マリオのおかげで、彼のギャラリーでプレイした別の面白いゲーム、 Go Fishを思い出しました! ロシア語では、このゲームは「チェスト」と呼ばれ、わが国ではわずかに異なる方法でプレイされます。 この楽しみの本質は、誰も知らない場合、相手が特定の値のカードを持っているかどうかを推測することになります。 推測-自分でそれらを取得します。 いいえ、相手の番です。 海外ではカードの価値を推測するだけですが、番号、色、スーツに名前を付ける必要があります。

私はゲームで対戦相手が話し、テーブルで何が起こっているかについてコメントすることにしました。 誰もそのようなものを持っていなかったし、本当に例外的な製品に惹かれました。 今、思い付く時が来ました-これらの敵は誰でしょうか? 私は彼らが通常誰であるかについて考え始めました-トランプの人々。 プロのギャンブラー。 高齢者。 シュパナ通り。 講義の学生。 マウスピースにタバコを持つ貴族。 公園のベンチでホームレス。
ボードゲーム「 オーバーボード 」のように、コロニアルスタイルに近い、地下機関の悪臭を放つ陰鬱な精神をゲームに持たせたい。 また、私は自分のゲームのために、ほとんどトレードマークである、よく狙われたキャッチーな名前を望んでいました。 恥ずかしがらず、誇らしげに発音できる名前。 そして、数日間の痛みを伴う審議の後、私はそれを見つけました-「カートリッジハウス」。

このベンチャーの範囲は、私がそれを一言で説明しようとした人たちの間で懐疑を引き起こしました。 結局のところ、これが市場にない場合、これはそれほど簡単ではありませんか? 「はい、あなたは何年もあなたのゲームを書くでしょう」と彼らは私に言いました。 「途中で投げます。」 私と私の考えに対するこれらの懸念はすべて理解できました。 私自身は、急いでいる場所がない、包囲戦術があり、仕事を辞めなかった、自分で夜のポカトシキを開発で戦車に置き換えることに決めただけです。

素朴さの最初の反復:グラフィックなし


私はゲームの最初のバージョンで初歩の最初の反復を行いました。これには約2から3週間かかりました。 私は仕事と家事の自由な時間にプロジェクトに取り組みましたが、これまでのところプラットフォームを勉強するだけの状況で、仕事は続き、ほとんど不可能でした。 まあ、夕方に少なくとも1つの完成したゲーム機能を作成できた場合。

ところで、私は描画する方法がわかりません。 一般的に。 詳細を調べて、すべてがどれほど悪いかを説明します。私はそのように見えるので、ポイントはわかりません-多くのプログラマーがこの機能を持っています。 そこで、純粋な機能を記述し、グラフィックを固定することにしました。 私の手にあるカードは、 LinearLayoutの形式のボタンのリストになり、発生するすべては、行われた移動の簡単な説明を含むTextViewでした。

私はこれが完全にナンセンスであり、誰もが同じことをする脳を持つことはありそうもないことを理解しています-少なくとも灰色の絵で描かれる必要があることを誰もが理解しています。 一方、私の頭の中にそのような考えがあった場合、つまり、同じことが他の誰かに起こる可能性はゼロではありません。 1年半前の私のような人々への私のアドバイスは次のとおりです。これをしないでください。 コントロールモジュール全体を再回転して、ユーザーがクリックした場所をキャッチし、彼が言いたいことを決定する必要があります。 現在処理していないアニメーションの終了を待つために、入力処理と対応する応答の実行の間の遅延を入力する必要があります。 既成のコードを引き裂いて縫製する必要があることを考えると、それは痛いでしょう。

幸運にも、これを十分に早く実感し、既存のコードの断片をやり直すのではなく、すべてを消去して、攻撃の過程でいくつかのカードを使う機会を与えることが必要だと気付いた瞬間にやり直しました。 ボタンの形のカードに関するこの状況での決定は運命にあります-最終リリースには含まれませんが、時間がかかります。

素朴さの2回目の繰り返し:私はすべてを完璧に行い、物議を醸す-私はそれを設定に入れます


この反復により、実際に2つの素朴な視点が同時に結合されました。 彼らが共通しているのは、両方のエラーがアラン・クーパーの本「患者の手の精神病院」に記載されていることです。 したがって、最も一般的なアドバイスは-開発と開発に近いトピックに関する本を読むことです。 あなたが犯した、または犯そうとする多くの間違いは、かなり前に誰かによって発見されました。あなたは本を手に取り、この誰かにあなたに警告させるだけです。 さらに、震える手と眠れない夜を理解している人の話を聞いて、傑作を作ろうとするのは素晴らしいエンターテイメントです。

ただし、最初にまず最初に。

私はAndroidテンプレートには関与しませんでしたが、プログラムをコントロールストリームとレンダーストリームの2つのストリームに分割し、すべてを空白のキャンバスで行うことにしました。 ゲームに視覚的な曲率を導入することを夢見た(そして決して達成しなかった)事実によって、私が選択したことを説明できます。そのようなアプローチでは、標準的な付録マークアップは、どうやら適合しませんでした。

3回目にようやく何かを手に入れたとき、空のカードを引き、その色と意味を表示し始めました。 私の成功は私の頭を向けた。 人々が私のゲームの利便性と理想性から息を切らせるように、私はすべてのことを行うことを決定しました。 その時までに、私は1台のAppleデバイスを手に持ったことは一度もなかったが、何人かから、すべてが驚くほど便利でオーガニックだと聞いた。 すべてを悪化させることにしました(そして、私のゲームのためだけに人々がブルジョアのAppleからAndroidに切り替えることを密かに夢見さえしました)(ハハ、ハ)、「テイク」または「ビト」ボタンは必要ないことを決めました。 テーブル上のカードをそれぞれ手前または横に引くだけです。

私はゲームをできるだけ現実的にしようとしました-敗者に彼の手でデッキをシャッフルしてカードを配ってもらうことさえ考えましたが、私はこの事を後で延期することに決めました。 しかし、私が本当にしたことは、カードがテーブルのどこにでも置かれるということでした。 その結果、もちろん、すでに倒されたカードの上に後のカードが置かれたときに状況が発生しました。 私は長い間このアクションを禁止するメカニズムをデバッグしましたが、遅かれ早かれコンピューターが不注意でそれを行うことができることに気付きました(2人がアニメーションの同じ最終座標を選択してすぐにカードをポップアップする場合)、任意のカードをクリックする機能を追加しました、すでに何枚のカードがあったとしても彼女が現れた理由。

そんな小さなことをするのにかなりの時間を要しました。約2か月です。 先に進む前に、まだ非常に多くの作業がありましたが、私は先に進む前に、最も単純な「愚か者」を理想の状態にすることを試みました。 このことから、レンダリングを担当するクラスのコードと、プレーヤー側のコントロールコントローラーのコードが大きくなりました。

後で、クーパーでプログラマーのこの機能について読みました。 彼は、イベントが発生する可能性が非常に低い場合でも、プログラマーは常にこのような状況に対処するために時間を費やすと書いています。 イベントの確率が1億回に1回であり、それが軽度の不便に過ぎない場合でも、このケース専用のコードを開発するのに2週間かかる場合でも、開発者は、非ゼロの確率を持つすべてのイベントをカバーするよう努めています。

もちろん、これは私の側のもう一つの愚かさです-近視眼的で頑固な頑固さです。 描画と「Fool」コントロールに多くの変更を加える必要があることを考慮して、主にこれらのモードに焦点を合わせ、その後、制御とレンダリングのいくつかの特別でまれなケースにのみ焦点を当てる必要があります。 しかし、私のアプローチは、(私の自由な解釈では)最初に最も重要な側面に集中するように促したパレート法に反していました。 「完璧なコード」でマッコネルが言ったように、「彫刻家は常に最初に未来の彫刻の大まかな形を作成し、それが詳細になります。 詳細の最初の部分を引き受けると、作業していたコードを必要以上に長く廃棄するか、さらに悪いことに、プロジェクトに多くの作業をしたので、プロジェクトに悪いコードを残して、それを控える危険があります。

上位のカードが下のカードで閉じられている場合、ユーザーはフールをプレイできますか? できた。 フールに変更がなければ、彼らは私が考えていたゲームをプレイできますか? いいえ、できます。

したがって、自分自身や私のような人への私の3番目のアドバイス(キャップ​​は私を誇りに思っています):主なことに集中し、物事を台無しにするのに遅すぎることはありません。この機能や機能について忘れることを恐れている場合は、どこかに自分自身を書いてください。

ここで、同じイテレーションで、私はほとんどすべての問題の設定でユーザーに選択肢を与えるために、私がほとんど取り除いた私のひどい習慣を置きます。私の場合、変更の解釈の分割を新しいルールとして解釈したため、すべてがさらに悪化しています。

したがって、たとえば、ポドキドノイでは、攻撃者は攻撃カードを最初にテーブルに報告する必要がありますが、彼が報告するものが他にない場合、他のプレイヤーは時計回りに厳密な順序で報告します。人生の中で、私はまったく異なる条件を見ました-カードはテーブル上に一列に置かれ、キューを観察しませんでした。誰が管理した、彼は食べました。どちらのオプションが良いですか?はい両方!そのため、「ポドキドナヤ」とそれに対するサブモディフィケーションがありました-「ソビエト」(投げるときに厳密な順序が観察される場合)。ただし、これは最悪のケースではありません。

«» «» ( ) «» ( ). — . «, — . — ». .

. , , — , .

, , 2048, 55. , . , - , -, . , , , , , : , . — , , .

:


6か月が経ち、自分で選択した40個の修正とサブ修正をすべて使用して「Fool」を終了しました。休暇が始まり、私はそれをすべて費やし、このイカをデバッグし、思い出させました。同時に、蓄積された疲れは自分自身を感じさせました-時々、私が間違いを見た場合、ここで間違っていることの本質を掘り下げることなく、できるだけ早く終了したい場合、別のものを挿入しました。その瞬間までに、私はいくつかの問題を抱えていて、修正を加えてフールだけをリリースしようとしていました。

ÂŤÂť , . , , 11 . , . ÂŤ, , Âť . . , , , , , .

「フール」の作業が完了するまでに、グローバルレベルでのこのゲームのコンセプトが大幅に変更されたことに注意してください。私は、人に新しい修正を購入するよう促すことができるものについて話し始め、お金を勝ち取るためのボーナス以外は何もないという結論に達しました。もちろん、多くの人は自然なエンジンが賞ではなくゲームプレイに興味があることに反対するかもしれませんが、頭の中の修正を整理し始めたとき、最初にデッキのカードの数を増やすものを調べて、どちらも結論に達しませんでした同じ勝ち金で2枚のデッキでプレイすることはありません。結局のところ、この状況での収益は、時間で割ると減少します。したがって、時間の増加だけでなく、複雑さの増加を大まかに推定しようとしました。どういうわけか対処したそのため、修正の価格は利益の割合の増加に対応し、これらの収益増加要因を導入します。しかし、この状況では、難易度が浮上しました。一度購入した変更をプレーヤーに含めることはできませんでした。これにより、すぐにすべてのルールが組み込まれ、莫大な収益が発生します。したがって、リミッターとして、トークンを導入することにしました。 1つのトークン-1つのアクティブ化されたルール(購入されている場合)。トークンは「Fool」での勝利ごとに発行され、負けた場合、アクティブ化されたすべてのルールがリセットされました(このアプローチはあまりにも残酷であることがわかり、少し負けたときに修正をオフにするルールを変更しましたが、ここでは説明しません。 。しかし、この状況では、難易度が浮上しました。一度購入した変更をプレーヤーに含めることはできませんでした。これにより、すぐにすべてのルールが組み込まれ、莫大な収益が発生します。したがって、リミッターとして、トークンを導入することにしました。 1つのトークン-1つのアクティブ化されたルール(購入されている場合)。トークンは「Fool」での勝利ごとに発行され、負けた場合、アクティブ化されたすべてのルールがリセットされました(このアプローチはあまりにも残酷であることがわかり、少し負けたときに修正をオフにするルールを変更しましたが、ここでは説明しません。 。しかし、この状況では、難易度が浮上しました。一度購入した変更をプレーヤーに含めることはできませんでした。これにより、すぐにすべてのルールが組み込まれ、莫大な収益が発生します。したがって、リミッターとして、トークンを導入することにしました。 1つのトークン-1つのアクティブ化されたルール(購入されている場合)。トークンは「Fool」での勝利ごとに発行され、負けた場合、アクティブ化されたすべてのルールがリセットされました(このアプローチはあまりにも残酷であることがわかり、少し負けたときに修正をオフにするルールを変更しましたが、ここでは説明しません。 。したがって、リミッターとして、トークンを導入することにしました。 1つのトークン-1つのアクティブ化されたルール(購入されている場合)。トークンは「Fool」での勝利ごとに発行され、負けた場合、アクティブ化されたすべてのルールがリセットされました(このアプローチはあまりにも残酷であることがわかり、少し負けたときに修正をオフにするルールを変更しましたが、ここでは説明しません。 。したがって、リミッターとして、トークンを導入することにしました。 1つのトークン-1つのアクティブ化されたルール(購入されている場合)。トークンは「Fool」での勝利ごとに発行され、負けた場合、アクティブ化されたすべてのルールがリセットされました(このアプローチはあまりにも残酷であることがわかり、少し負けたときに修正をオフにするルールを変更しましたが、ここでは説明しません。 。

«» . , , , . , . , , , , . , : , , - . , — .

変更の購入により、それもそれほど単純ではありませんでした。単に修正の線形リストを提供し、誰でも購入できるようにすることは不可能であり、私はこれを理解していました。さもなければ、人は彼にとって興味深いすべてのルールを購入し、残りを単純に採点し、その本質を研究し、それらで小さなゲームを投機的にプレイしていたでしょう。さらに、あらゆる種類のフローチャートが常に私を惹きつけてきました。この点で、WoTの技術開発スキームは、Hill Climb Racingのレベルと機器を購入するための並列スキームよりもずっと好きでした。したがって、トピックのブランチを結合し、ゲームのルールの最も根本的な歪みを最後に置くことを試みて、修正の開発のためのスキームを開発しました。

しかし、もしすべてがまだ修正を続けていて、ライバル、アリーナ、シャツについては、誰もそれを買わないことは明らかでした。つまり、ゲームに影響を与えるすべてのルールの変更が検証された後にのみ、それらが実行されます。私は少なくともそれだけをします-最初は機能的で、それから美しさだけ。そして、ライバルとのチャンスがまだない場合、これらはゲームを希釈する新しいフレーズであるため、シャツとバックグラウンドでは、問題は明らかでした。一度登ってオプションが何であるかを確認し、もはや返されません。したがって、「宝くじ」などの概念を導入し、ゲームプレイに本質的に影響を与えない要素をプレイし始めました。 「宝くじ」は、一定数の勝利の後に登場しました。それでゲームに物事が現れました単純にお金のために買うことはできませんでした-彼らは長い試合を通してしか勝てませんでした。

— «» — - , , . «», «» «» — 6 . , . , .

, - , .
私はすぐに、アニメートされたカードが描画ストリーム内を飛んだ後、制御ストリームにくっついて論理的なアクションを実行するかどうかをチェックするのは間違っていると判断しました。したがって、私はこれを行いました-同じ時定数で、アニメーションを引き起こし、保留中のアクションを開始しました。この繰延アクションは、私から継承されたAsyncTask「とするonBackgroundが行わのThread.sleep() 、およびonCompleteの -私は何をする必要があるかを。
もちろん、そのような遅延アクションは各瞬間に何十回もありました。もちろん、主な消費者は敵でした。彼らはどのカードを使うか、どのカードを投げるかを考えました。画面をタッチするたびに自動的に、このタッチが最後であり、次の30分間は何も起こらないと予想したため、特定の瞬間から怒鳴り始めるためにタイマーを神経質に見つめました。同時に、「おい、カードを倒せ」などと叫ぶためにプレイヤーがどのアクションでストールしたかを見ました。その結果、遅延アクション(および対戦相手)の数の増加に伴い、システムはひどく遅くなり始め、さらには落ちてしまいました。そのdoInBackgroundの Android AsyncTaskは本当にリソースを消費するため、この関数は理由があるため、リモートサーバーまたは並列コンピューティングからデータを受信して​​いて、空の待機ではないかどうかにプッシュする必要があります。したがって、AsyncTaskから継承したクラスを書き直した後、すべてのパフォーマンスの問題が解消されました。
public abstract class Action { protected int interval; // ,    private boolean cancelled = false; //    public Action(int interval) { this.interval = interval; } public void cancelTask() { this.cancelled = true; } public void execute() { new Handler().postDelayed(new Runnable() { @Override public void run() { if (!cancelled) { actionAction(); } } }, interval); } //   protected abstract void actionAction(); //      public abstract Action copyForDelayedExecute(); } 


しかし、気が散りました。

明らかに、修正が想定されていないピラミッドから始めますが、最初から最後までエンジンを記述する経験ははるかに早いでしょう。 見ると、「バカ」のアーキテクチャはそれほど汚くないでしょう。 システムの記述方法について多くの新しいことを学ぶことができたでしょう。その場合、後で問題なくPyramidを書き直すことができます。 「The Fool」から始めて、私は経験の浅いところからたくさんのミスを​​重ねましたが、それでもうまくいき、できることであらゆる側面を支え、今では息をすることを恐れていました。

したがって、血によって得られた別のルールは、開始したばかりのすべての人のために:互いに類似した大きな要素の中で、常に最小のものから開始する必要があります。

1年前にこのアドバイスを読んでいたなら、次のように言っていただろう。「これは理解できます。最初に最も難しい要素に対処したいので、後でもっと簡単なものを残します。 したがって、この大規模で分岐したアルゴリズムを終えると、勝利の終わりまですべてが残されます。 これはそうであり、壊れていない手でのみ、重くて分岐したアルゴリズムはさらに悪いことに書かれています。 「このシーケンスでフールとピラミッドをほぼ1年間書いた。 私がピラミッドで始めていたなら、総期間はたった7-8ヶ月でした。

さらに、最初から最も困難なことに取り組むと、対処することができずに単に退却する機会があります。 そして、すでに部分的にコードを作成した後、乗り越えられない障害につまずくよりもはるかに悪いでしょう。 その瞬間に達成されたエクスプロイトは、妥協点を探すよう促しますが、背中の後ろの成功の欠如は、手を単に落とす可能性があります。

素朴さの4番目の反復:研磨はそれほど時間がかかりません


最後の4番目のゲームを完了するとすぐに、リリースまでに数週間しか残っていないことを家族や友人に急いで発表しました。 すべてのことをみんなに伝えるという私の習慣に反して、何かを書くことに専念しているこれらの友人はほとんどいませんでした。 最初から、自分がやろうとしていることを左右にひび割れて、これを行う力を奪っていると感じました。 しかし、リリースが近ければ近いほど、私が完了するのに必要な道徳的強さは少なくなりました。 このプロジェクトは重くなり、雪だるま式のように、リリースするためにほぼ自力で転がりました。 彼はまだ毎晩押されなければなりませんでしたが、解放は単に避けられませんでした。

楽しみのために、ゲームのリリースまでヘアカットをしないことにしました。 私の頭にかなり大きなはげ点があることを考えると、この決定は急いではありませんでした。 しかし、私は仲間の村人と話をする理由がありました-散髪があるときに尋ねられるたびに、私はゲームをリリースするときに言いました。 ほとんどが神殿の周りで指をひねりましたが、気にしませんでした。

ゲームを仕上げるのにさらに2か月かかりました。 この間、私の頭の毛は、店の売り手が部屋に入ったときに商品を保護するために立ち上がったほどに成長しました。 私はお尻のように見えた。 彼の頭は特に暑さの中でひどく傷つけられましたが、これは間違いなくプラスでした。 何回か2回以上、私はすべてを地獄に送り、ベッドに行きたい、私の影を見た、またはすでにい毛むくじゃらの頭を掻いて、コーヒーを飲みながらプログラムに座った、私は私のほかに私の頭脳を完成させる誰もいないことを知っていたので。 そして、リリースが速くなればなるほど、ヘアカットが早くなりました。

動機は一般的に別の問題です。 私の友人や知人の多くは、1年半半の仕事の後、ある種のプロジェクトを行うことができないと言っています。 私はそれらを理解していますが、自分自身をうまく裏切るために発明した精神的なトリックには幸運でした。

最初から始めましょう-ゲームをやめた最初のことです。 一般的に。 私はプログラミングを開始せず、ゲームに十分な時間はありませんでしたが、意図的にゲームをやめるのは私でした。 その効果は、ひどく低音を再生したばかりのスピーカーをオフにした後の空気中の低周波の密なハム音に似ていました。 私は夜の生活の中で本当にエンターテイメントを欠いていました。 さらに、座って何かをプレイしたかったときはいつでも、ここで-私の人生で最も興味深いゲーム-自分のゲームのリリースだと自分に言い聞かせました。 このすべての自己管理、ゲームのアーキテクチャと意味を考え、無限のクエストの流れとしてのバグとの戦い。 そして時間がたつにつれて、それが判明し始めたとき、私は本当に開発に関与し始めました、それは私のゲームになりました。 同時に、脂肪の多い肉と軽い野菜サラダの違いのように、ゲームは今ここに喜びを生み出し、翌日は何もしないという悪い後味を残しました、最初の開発はそれほど迅速な喜びをもたらさなかったかもしれませんが、その後一晩中、私はヒーローのように感じました。 あなたが望むなら、それはより高次の、はるかに微妙で長続きする幸せでした。

私は自分のゲームに対するすべての考えを減らすことを余儀なくされました。 恐らくいつか私の精神分析医が私のこのベンチャーで彼の舌を突いて頭を振るだろうが、私は常に自分のプロジェクトについてのみ考えるように自分に教えた、私は文字通りそれをつけた。 高価な車を見つけた場合、私はすぐに自分が車を持っているだろうと自分に言い聞かせました。 外国を見た場合、私は間違いなくそこに行くと思いましたが、ゲームをリリースしてそれで何かを達成した後です。 人々がきつく座って何かについて親しげに話しているのを見たなら、私はこれをやると確信しましたが、まずは私のプロジェクトです。

行のない日ではありません! それがこのテクニックの名前のようです。 確かに、私は最近ハブでそれについて読みました;その前に、私は何とか自分でそれについて感じました。 その本質は、開発の1日後、翌日の夕方をスキップすることはそれほど難しくないことですが、1週間の毎日のプログラミングの後、この伝統の違反は翌朝に深刻な影響を及ぼします。 同じレールに慣れていると、脳は習慣から「ゲームをリリースするときにそれを行う/それを手に入れる」ようになり、昨日は何も行われず、脳から脳への痛みを伴う放電が発生することを思い出します。 時間が経つにつれて、私は夕方、開発のために座っていないことを恐れました。 この場合、翌日、私は良心と病気にひどく苦しみ、通常のトラック「プロジェクトファースト」に滑り落ちたからです。 時々、夕方に全く力がなかったとき、私はただIdea (私が書くことに適応した)を始めて、彼女の前に数分座って、そして眠りについた。 ですから、2、3回、罰を避けて自分を欺くことができました。

私はアルコールの飲酒をすぐに止めて、その影響下で何かを実際に開発することはできないことに気付きました。午前中に少なくとも1晩の開発を逃した場合、二日酔いで痛みを伴う道徳的な計算が待っていました。 私は早朝にプログラムして、残りの時間よりも数時間早く起きようとしましたが、一日中、仕事ではなく自分のプロジェクトについてだけ考えていました。 このオプションは私にも似合いませんでした。

最後に、リリースに近づくほど、他の誰もこの石を上り坂に転がさないことにはっきりと気づきました。 女の子は絵を描くことで私を助けてくれましたが、私はすべての主要な仕事を自分でやり、それについてとても幸せでした。 最後に、毎日一歩前進したので、私は自分の召しを見つけて、自分の場所で感じました。 それと同時に、私の脳は、発生するクエストを解決し、特定のイノベーションをゲームの仕組みに導入する際の勝利のための戦略を開発することから、さまざまな喜びを受けました。

一般に、もちろん、私は最初からつるはしで巨大な岩の採石場にチューニングする幸運だった。 毎日、私は巨大なプロジェクト全体のほんの一部をしました。 同時に、昨日を振り返り、明日を振り返ると、私は時間を刻んでいるように思えました。 しかし、次の数ヶ月にわたって、進歩が見られました。 私は急いでいませんでした。どんな犠牲を払っても毎日偉業をやりたいとは思いませんでした。 静かに、落ち着いて、ピッカーのように、彼はゆっくりと、しかし確実に、小さなステップでしっかりと前進しました。

私の素朴さのこの繰り返しに戻って、フレームワークとメインコードがどれだけうまく書かれていても、あらゆる種類の小さなことを完成させるには予想よりはるかに長い時間がかかることに注意したいと思います。 常に。

素朴さの5回目の繰り返し:良い製品が売れると思った


プロモーションなど、将来のためにたくさんの資料を読み込もうとしました。 プレスリリースは、ゲームがリリースされた日に送信する必要があることを知っていました。 私はまた、できるだけ早く一般の反応を見つけるために、また開発コースを時間内に変更する場合を含めて、ゲーム上の資料のレイアウトを事前に練習する必要があることを読みました。 しかし、これらの資料はすべて、どういうわけか国内の現実とまったく一致していないように思えました。

結局のところ、ロシア語版と同時に英語版のゲームをリリースするのは理にかなっていないことに気付きました。 彼らは海外で「バカ」をしません。私のヒーローの多くのフレーズは、ゲームを自分で翻訳する試みを無効にしました。 数日のうちに座ってノートにたくさんの面白い感嘆符を書いたことを覚えています。 それから、テキストリソースファイルでそれらを書き直しただけで、夜中ずっと過ごしました。 ゲーム内で約2万文字のクリアテキストを取得しました。これは自分では英語で翻訳できません。

同時に、メインの消費者である私自身に質問を続けました。6か月後にリリースされ、現在ダウンロードできないゲームについて読むのは面白いでしょうか? はい、私はすぐそこに彼女を忘れます。 最近、ゲーム開発ハブに関する記事の1つに非常に雄弁なコメントが寄せられました。将来、ゲームのリリースを待っている男が、そのアーキテクチャソリューションの図を示しました。 彼に残された唯一のコメント:「ゲーム自体はどこですか?」これは厳しい現実です-誰かがフォールアウト4の予告編を楽しみに見て、リリースを期待して一方の足からもう一方に移動します。 まだ準備ができていないnonameのゲームは、誰もがナイチンゲールがこぼれないことに気付かないように空白を指します。 あなたが本当にあなたのゲームに興味を持っているほど幸運なら、彼をすぐに市場にドラッグし、彼の心が変わるまで、または彼のお母さんがキャベツのスープを求めるまで、あなたの顔に「インストール」ボタンを押してください。

消費者のコメントとコースの変更に関しては、ヘンリーフォードの引用は非常に適切です。「もし私が人々に何が欲しいか尋ねたら、彼らはより速い馬を求めます。」
さらに、自分の意見を表明し、開発者からの応答を待つ人が、彼の提案が不適切であるか、一般的な概念を台無しにすることに同意することを期待しないでください。 彼の提案が一列に並べられたとしても、彼は本当に同意しませんでした。 彼はあなたと彼の考えを共有していたので、ここと今。
彼らは、 ヒルクライムレーシングが自動車のキャップと色を変更できるようにしたいと考えています。 彼らはより多くのお金を望み、勝ちはより簡単です。 カルマ法は、不適切な文章を無視することを許可しておらず、空中にハングアップするように求められた質問を残しています。 しかし、私はすべて同じ道徳法則に従って嘘をつくことはしたくないので、既に形成された製品に返事を返すことはより興味深いと思います。私の場合、それは編集のために開かれたプロジェクトよりも概念的な仕事であり、ダウンロード、評価、または何かを購入した方が良いです。」

上記のすべての理由から、少女以外は誰も私のゲーム、その名前とコンセプトをリリース日まで知りませんでした。 最終段階では、 alexusProが接続し、CPUのヒープを提供しました。それに応じて、インターフェースの瞬間をいくつか変更し、リリースを1週間延期しました。 そして、私のパトルに注意を払った仲間の村人たちでさえ、「ゲームは何ですか?」という質問に答えることを拒否しなければなりませんでした。

そして今、X時間が到着しました。 私はこの瞬間を1週間前に3回延期しました。1年半と比較して、もう1週間は何もありません。 マーケティング記事で、火曜日はローンチするのに悪い日であり、金曜日がそれであると読みました。 したがって、今週の金曜日に時間がない場合は、1週間前に打ち上げを延期しました。 しわくちゃの端や未完成のバグで、生徒としてプロジェクトを台無しにするのがどれほど簡単かを理解していたので、頭に傷がつくたびにすぐにリリースを要求しましたが、すべてが完了していないことに気付きました、今週ではなく、明らかに打ち上げを延期していると自分に言い聞かせました。

リリース後最初に、連絡先、Skype、およびハングアウトで友人や知人にプロジェクトをリリースしたというニュースを送りました。 興味があるかもしれない人への個人的なメッセージ。 驚いたことに、アプリケーションをインストールし、沈黙を守らなかった人たち(そしてほとんどの人たちがいました)の誰も、それが悪いと言った人はいませんでした。 3人か4人がテスターのタイトなスケルトンに完全に迷い込み、系統的にプレイし始め、エラーや改善のための提案を投げかけました。 彼らは今日まで私のゲームをプレイしますが(リリースから3週目は既に過ぎていますが)、これで私を驚くほど驚かせました。 恥ずかしがらずに、うまくいかなかった人、それに対するすべての権利を持っている人、そして傾倒さえした人に、何らかの理由で私のゲームを賞賛した人の多くの人たち。 どうやら、それはそれほど悪くないことが判明した。

多くの人が(かつて私のように)ひどく「ピラミッド」だと書いてくれました。 もちろん、すでに説明書に何が記載されているのかを尋ねる人もいました(誰が読むのでしょうか?) トークンを下げてルールを有効にしたり、複数のカードを一度に攻撃したりする不可解な瞬間など、5〜6の一般的な問題がすべてすぐに見つかりました。 そのようなことを別のファイルに書き出して、できるだけ早く修正しようとしました。

私はエラーエラーについても話していません。 ACRAはゲームにボルトで固定された年なので、コンピューターでゲームをテストし、同時にスタックトレースエラーを追跡できます。 同時に、私は友人とガールフレンドのどちらがどのデバイスであるかを見つけました。

合計で、40のメッセージが送信され、約20のインストールを受け取りました。

この記事で、ゲームをリリースしたという事実について書かなければならないリソーステーブルを見つけました。 確かに、このリストはロシア、ベラルーシ、カザフスタンでのみリリースされているため、このリストの使用はかなり制限されていました。 それにも関わらず、これはインストールの一定の増加をもたらしましたが、ここではそれを修正することができました。 事実、6月5日金曜日の夕方、大切な「公開」ボタンを押したところ、 Googleがapkを承認し、ゲームのインデックスを作成し、検索で発行し始めましたが、12〜14時間かかりました。 つまり、ゲームは土曜日の朝に市場に登場しました。 当然、その時点ではほとんどの人がすでにダーチャにいたため、一部のAndroidリソースでゲームを宣伝しようとする私の怠慢な試みでさえ、まったく空のルネットでクラッシュしました。 月曜日が来ると、朝の同じゴミ箱にたくさんのニュースが投げ込まれたので、私のゲームはすでに3ページ目にありました。もちろん、ここでは珍しい鳥が飛ぶでしょう。

出版のために絶対にお勧めする2つのリソースがあります: androidpit.ruとandroid4all.ruです。 フォーラムのあちこちで、「Rate my application」セクションまたは「Games」セクションのいずれかで、ゲームについて書くことができます。 合計で、ゲームのページビューを追跡するこれら2つのリソースは、約200(すごい!本当に200を超える?)の潜在的な訪問者-私のゲームの存在を知った人に与えてくれました。

また、2つのゲームをgd ( gamedev )セクションに投稿することも考えました。そこでは、スケジュールのためにtarをすぐに使用し(どうすればそれができなかったのか)、私に羽を吹きました。 それにもかかわらず、ゲームが好きな人がいました。

そして...それだけです。 現在、約300人が私のゲームの存在を知っています。最大500人です。 同時に、約150のインストールがあり、そのうち約60がアクティブです。 Pf、あなたは言う? まあ、はい、数千のインストールではありません。 しかし、個人的には、約40人が完全に不慣れであるという考えは、自分のゲームを自分自身に置いて、まだそれを消していないという考えは、非常に奇跡のようです。

「Cartridge House」というクエリを除き、検索でアプリケーションを見つけることができないため、これまでに自分のゲームを見た人の数を簡単に予測できます。 「カードゲームコレクション」でさえ、私は120位以下であり、「愚か者」、さらには「王様」について言えます。 また、100〜500のインストールで何が必要でしたか? さて、可能であれば、このリクエストで「カードゲームのコレクション」がトップ10になります。市場にはあまり多くのカードゲームのコレクションがないからです。 ちなみに、引用符を付けて「カードゲームのコレクション」と入力した場合(つまり、個別の単語ではなくフレーズ全体を検索した場合)、最初の10kを入力します。

あなたが尋ねたので、私はまた、市場でインストールを購入することを不可能にしたいと思います、検索でリストの一番上に移動することは最も成功したゲームではありません。 しかし、これはオプションです。一部の人々にとって、このような状況は非常に正直に思えます。 最後に、典型的な起業家が施設、従業員、および設備に投資することを余儀なくされた場合、なぜ、コンピューターと頭を使って空気からお金と人気が生まれるような球体があると私は決めたのですか?

だからここに私の次のヒントがあります、あなたがそれでやりたいことをしてください:誰もあなたのアプリケーションを必要とは考えないでください 真剣に。 1年半前の私のように、現在これらの行を読んでいる人の多くは、「市場にはアナログがない特別なアプリケーションがあります」と考えています。残念ながら、グーグルはまだ「ユニークなアプリケーション」のような目盛りを付けていないので、あなたの作品はおそらく検索で検索されるでしょう。だから、友人は、パンストのサイズからジャガイモのキログラム数に適合する優れたコンバータを思いついたとしても、あなたの市場には類似物はありません。じゃがいも、キログラム、サイズの順になり、アプリケーション自体が最後になります。繰り返しますが、誰も必要としません。

: , . — 40- , „“. , , , , , .

: ,


-, — . , , , , , . .

. , , . - Mortal Kombat , , . … . , „“ __. — , , , .

, , , . 10 000 , 2 , . 1000 3 , , . , . , : „ ?“ , .

: - - , , „“, „“ , .

, , . , . 冗談です。 , , , , . , . , , , . .

:


, , to be continued... , . , , - , , . — , .
, - - , , , - . - , . , , . . , , , — , , .

一方で、これらの幻想がなければ何をするかわかりません。もしそうなら、それから最高になる。将軍になることを夢見ていない兵士は悪いです。おそらく、私の製品が何となく並外れたものであるという幻想が、私をこの間ずっと打ち負かしたのです。そして、あなたは知っている、私は結果に満足しています。リリース後の不況はほぼ終わりに近づいており、すぐに再びプロジェクトの拡張機能の設計と、デバッグ、新機能の装備、最終的な開発パスの選択のためのコードの記述を開始します。まあ、要するに、私は言っている-6回の反復は私にとって十分ではありません。alexusProとのハングアウトで

起こった奇妙な会話 , , . 25 , 24 , , 2-3. ( ), 100 10, . , — , . , . , , , 10 , 106.

結論の代わりに


だから、私は半年から目覚めた人生を失いました(あなたがすべての作品をまとめた場合)、その結果、私は9つの評価、約150のインストールとハブに関する記事を得ました それは価値がありましたか?くそー、それは千回の価値がありました!

アーキテクチャの設計方法を学び、自分の時間を管理する決意と能力について多くのことを学び、Androidでたくさんのリソースを読み、完成したプロジェクトを自分のポートフォリオに入れ、人生からそれを取り戻しました。ちょうど夏や日の出のように、それは通常ここの村で起こります。

. - . . , , . just for fun .

, , , .

それで、あなたの許可を得て、私はそれをすべて成功物語と呼んでいます。そして、プリエンプティブなインスタレーションを多く持っている人たちにもっと笑わせてください。

Source: https://habr.com/ru/post/J261189/


All Articles