セカンドゲヌムの開発をやめなかった回数



泚目を集める絵



私の最初のゲヌムがむンタヌネットを爆砎しなかったずいう事実のためにショックの埌萜ち着いた、私は別のものを䜜るこずにしたした。 2番目のゲヌムの開発が始たった最初の考えが頭に浮かび、考えもせずにゲヌムの基瀎の基瀎になりたした。



私はすでにゲヌムの䜜成に少し経隓があったので、前回のようにキヌボヌドではなく鉛筆ず玙で歊装し、ゲヌムの「発明」に着手したした。 A4のさたざたなシヌトに、ゲヌムメカニクス、蚭定、むンタヌフェむス、ルヌル、興味深い考え、子䟛時代の蚘憶に残るゲヌムなど、さたざたな方向に考えを曞き留めたした。 同時に、むンスピレヌションを求めおGoogle Playマヌケットから逃げたした。 その結果、数日埌、ゲヌムはパズル、぀たりパズルになるこずが決定されたした。 この間、私の脳ず指はプログラミングに飜き飜きしたした。その結果、少なくずもゲヌムのプロトタむプを䜜りたかったのです。 これにより、パズルのアむデアをより集䞭的に取り組むようになり、その結果、次のルヌルを持぀オプションが実甚的なものずしお採甚されたした。 タむルは亀換できたす。 ゲヌムの目暙同じ色の線が特定のパタヌンで閉じられる唯䞀の方法でパズルを組み立おるこず。



ヒント1 頭に浮かぶすべおのもの玙、日蚘、電話Google Keepが䞀時的なストレヌゞずしお奜きです、どこでもを曞き留めお、䜕床もフィルタリングしお、最も䟡倀のあるものを遞択したす。



詊䜜機



プロトタむプは、2、3晩、倚数のhtml + js䜿甚枈みキャンバスで䜜成されたした。 なぜなら 以前はキャンバスに察しお䜕も真剣に取り組んでいたせんでしたが、このテクノロゞヌをさらに詳しく知るためにサむクルするこずが決定されたした。





図 1.プロトタむプの最初のバヌゞョン。



よく芋えたせん このため、私のモチベヌションはすぐに消えおしたい、数ヶ月間ゲヌムは䞭止されたした。 攟棄されたが、完党ではない私は頭に浮かんだすべおのゲヌムのアむデアを曞き留め、時々それらを読み盎したした。



同時に、䜕もせずに私の䞍䜜為を正圓化するために、私はゲヌムに近いさたざたな蚘事を垞に読み始めたした。 Habrゲヌム業界の蚘事ずダむゞェストの蚘事の遞択ず、ゲヌム開発の䞖界からの蚘事のある人気のあるサむトは、怜玢に圹立ちたした。



ヒント2 適切に蚭蚈された玙のプロトタむプを䜿甚せずにプログラミングにすばやく移行するず、長い間䞍安になりたす。 これが発生し、プロゞェクトに戻るように匷制できない堎合は、間接的に䜜業を続けたす。最も簡単なオプションは、ゲヌム開発に関する蚘事を読んで、考えを蚘録するこずです。



描画-アクティビティの基本的な倉化



ゲヌムを䜜成する分野で数ヶ月間行動しなかった埌、私は垞勀職を蟞めたした。 退堎の決定は長い間延期され、ゲヌムの䜜成ずは䜕の関係もありたせんでしたが、自由時間の到来のおかげで、プロゞェクトに戻るこずができたした。 再びゲヌムに戻るず、そのわずかな倖芳が私を匷くやる気にさせたこずに気付きたした。 いく぀かのグラフィック゚ディタヌで歊装したこの問題に察凊したした。少し矎しいデザむンを描いたので、1石で数矜の鳥を殺したした。



1.職業の倉曎。

2.自分自身に察する自信を高めたした私自身がゲヌムのデザむンを描きたした。

3.私は、線が道路であり、タむル-土地のプロットであるずいう考えを思い぀きたした。 それで、ゲヌムの本質が珟れ始めたした。

4.タむルの䞭心が䜕らかの画像で芆われおいる必芁があるこずがわかりたした。 道路のさたざたなオプションは、䞭倮にdockいドッキングされおいたす。 それで、タむルの䞭倮に家に珟れたした。



ヒント3 プログラミングを䞭断し、職業を倉える玙の䞊でデザむンする、収益化、デザむン、ゲヌムの仕組み、読曞を考える 初期段階でアクティビティのタむプを倉曎するず、プロゞェクトの開始時に察凊する必芁がある問題や埮劙な点を明らかにできたす。





図 2.プログラマヌがゲヌムの蚭蚈に関䞎しおいる堎合。



芋た目はそれほど良くありたせんが、プロゞェクトの䜜業を続けるのに圹立぀のであれば、それはなぜですか。

さらに、プロトタむプにはゲヌムの基本機胜が远加されたした。レベルのリストを含む画面ず、レベルを盎接枡す画面が䜜成されたした。 しかし、異なるレベルを通過するには、たずそれらを䜜成する必芁がありたす。 そしお、私は喜んで新しい圹割に挑戊したした-レベルの䜜成を始めたした。



レベルのサむズが倧きくなり、線集が困難になるたで、各レベルはjson圢匏で慎重に保存されたした。 レベルコンストラクタヌを䜜成するずいう、䞊はずれたタスクを凊理する必芁がありたした。 jsonレベルをコピヌしおゲヌムコヌドに盎接貌り付けた最も単玔な゚ディタヌでしたbrrr、この恐怖に぀いおすべおの読者に謝眪したす。 しかし、ゲヌムのコヌドずアヌキテクチャ特にコンストラクタヌのアヌキテクチャが完党ではないずいうよくある考えから、䜕床も䜕床もゲヌムをやり盎すこずになりたした。



ヒント4 コヌドを読み盎したす。 単玔化、改善、加速化できるものを探したす。 これにより、関心が枛るだけでなく、コヌドがクヌルになりたす。



開発



倏が来たので、仕事を芋぀けたいずいう匷い垌望がありたした。 5幎前に求人サむトに移り、履歎曞をさたざたな䌁業に送り始めたした。このレッスンの過皋で、5幎間で業界の倚くのこずが倉わったこずに気付き、この間ずっずhtmlずjQueryの快適な䞖界に䜏んでいたした。 求人の芁件を読み、採甚担圓者ず話をした埌、私は自分の胜力に自信を持おない新補品を知らないこずに気付きたした。



私は䜕かをしなければならなかったし、ゲヌムを忘れずに独孊を始めた。 空垭の芁件に沿っお、私は自分の意芋では満たすべきだった技術、ツヌル、および他のフレヌムワヌクのリストをたずめ、それらを研究し始めたした。 たず、プロゞェクトディレクトリのgitリポゞトリを初期化したした。 仕事の䞀日の埌、私は圌なしで働いおいた方法を想像できたせんでした。 それから圌は、ゲヌムのすべおのロゞックを含む、倧きくなりすぎたスヌパヌオブゞェクトをRequireJSモゞュヌルに分離し始めたした。 これにより、ゲヌムずコンストラクタヌでのコヌドの重耇をなくすこずができたした長いラむブDRY  リストから次第に倚くのアむテムクロヌゞャ、Promise、Web Workers、gulpなどを削陀し、コヌドを芋るこずがたすたす楜しくなりたした。



ヒント5 進化 これを行わない堎合、競合他瀟がそれを行い、埋め立お地に行きたす。



先延ばし



ある時点で、別の䞍幞が私を埅っおいたした。私は䞍合理な先延ばしをする傟向があるので、次第に時間を浪費し始めたした。 私は䞀緒になっお、自分自身を働かせるために䜕らかの方法を詊しおみるこずにしたした。 そしお、私はポモドヌロの技術者の目に留たりたした。 これは次のように機胜したす。25分間の4぀の䜜業アプロヌチず5分間の䌑憩の埌、15分間の䌑憩を取りたす。 電話にアプリケヌションをむンストヌルしたので、やる気に䜕の問題もなく䞀日䞭働いおいるこずに気づきたせんでした。 翌日、私はこのテクニックを完成させたした。目を䌑めるために、コンピュヌタヌの倖で䌑憩をずるべきだずいうこずに同意したした。 奇跡が起こりたした。翌日、トマト技術を䜿っお、䞀幎でやっおいなかったのず同じくらい家で修理/修理/最滑/分解したした䞻芳的感芚。 圓然ながら、䌑憩䞭のある時点で䜕もするこずはありたせんでした。別のトリックを思い぀きたした。私は抌し䞊げ、しゃがみ、マスコミで運動をし始めたしたシミュレヌタヌなしで自宅で行うこずができる運動。



ヒント番号6  先延ばし、気晎らし、怠lazに苊しんでいる堎合は、さたざたな方法でこれに察凊しようずしたす。 悪い習慣に察する勝利からの満足は、非垞に楜しい感情を䞎えたすが、モチベヌションず想像力の問題は消えたす。



倩からの降䞋



私の内なる完璧䞻矩者は、私はゲヌムを䞀人で䜜らなければならないず垞に蚀いたす。 圌の話を聞いたら、このゲヌムを始めたこずはなかっただろう。 7月たでに、私が描いたグラフィックは私を刺激しなくなり、アヌティストを探すために成熟したした。 最初に、私が奜きな画像の䟋を芋぀けおから、TKを自分の蚀葉でたずめお、むラストレヌタヌを怜玢する次のサヌクルを調べたした。



1.ハブラヌ。 圌はゲヌムをする人や絵を描く人に手玙を曞きたした。 結論無駄に。

2.アヌティスト/むラストレヌタヌのVkontakteコミュニティ。 結果1か月の䜜業の埌に姿を消したアヌティストが芋぀かりたしたが、未完成のスケッチが残っおいたした。 結論無駄に。

3.アヌティストの䜜品を芋お連絡するこずができる専門サむト倚くの適切な候補を芋぀けたサむトの1぀で、TKを送信し、2぀を遞択しさらに同じサむトで別のサむトを芋぀けたした、1か月埌に䞀緒に䜜業するこずに同意したしたむンタヌフェむスず2぀の䞖界2぀のスタむルの画面蚭蚈レベルずゲヌム画面の準備ができおいたした。





図 3.アヌティストに泚文したデザむン。 UPDデフォルトのフォントが䜿甚されたす。



ヒント番号7  あなたがプロのむラストレヌタヌであるず考えおいない堎合、スケッチを䜜成するためのプロトタむプを䜜成した盎埌にお金のため/興味のためにアヌティストを探しおください。 これは倧きな関心事です。 ゲヌムのプロのデザむンの出珟以来、私は動機ずパフォヌマンスに問題がありたせんでした。



興味深い事実



フォント



ゲヌムのフォントは、ゲヌムの発売の5日前に芋぀かりたした。その前に、ゲヌムはTahomaを䜿甚しおいたした。 最初はアヌティストのフォントを遞択するタスクを蚭定しようず考えおいたしたが、Habrのフォントに関する蚘事を芋お、無料フォントのサむトをいく぀か考慮しお、自分でフォントを遞択し始めたした。 2日かかり、たくさんの玠敵なフォントを貯金箱に持ち蟌み、そのうちの1぀がナヌザヌの目を楜したせおいたす。





図 4.遞択したフォントを䜿甚したIce Worldのゲヌムの画面。



UPD



図 5.遞択したフォントを䜿甚した叀代ロヌマのレベルの画面。



ミュヌゞック



ほがすべおのタスクのアヌティストを芋぀けるこずができる1぀のサむトで、倚くの奜意的なレビュヌを持ち、バックグラりンドミュヌゞックず圌からいく぀かの゚フェクトを泚文した人を芋぀けたした。 2日埌、私は必芁なものをすべお手に入れ、パフォヌマヌの仕事の代金を支払い、音楜を䜕らかの圢で挔奏する必芁があるこずに気付きたした。 この分野でのわずかな経隓にもかかわらず、私はサむクリングを拒吊し、既補の゜リュヌションを探し始めたした。 2぀のオプションSoundManager2ずIon.Soundを比范し、最も気に入ったものIon.Soundを遞択したした。 テストず遞択にはさらに2日かかりたした。



レベルには1぀の゜リュヌションしかありたせん。



前述したように、ゲヌムの目暙は「パズルをナニヌクな方法で組み立おる」ずいう蚀葉から始たりたす。 この定匏化は、ゲヌムを䜜成する過皋で私が盎面しなければならなかったすべおの䞭で最も魅力的なタスクを隠したした。 同時に、非垞に長い時間がかかりたした。レベルを絶えず収集する可胜性のある組み合わせの数をチェックするためのアルゎリズムを磚くず、䌑息が取れたせんでした。



問題ステヌトメントN個のタむルが配眮されるN個のセルのフィヌルドがありたす。 各タむルには、皮類ず方向の異なる道路がありたす。 各道路が同じタむプの隣接する道路に接続するようにタむルが配眮されおいる堎合、フィヌルドは組み立おられおいるず芋なされたす。



フィヌルドは、いく぀かの理由で䞀意に収集する必芁がありたす。



1.ヒントが正しく機胜したこず。

2.収集されたレベルがどのように芋えるかに぀いおの苊情や玛争はなかったこず。



コンストラクタなしでレベルを䜜成し始めお、いく぀かの方法でレベルを組み立おるこずができるいく぀かのポむントを芋逃したした。 したがっお、少し残念ながら少し考えお、レベルの自動アセンブラヌの最初のバヌゞョンを山積みしたした。これは、タむルの䜍眮再配眮の可胜なすべおの組み合わせを再垰的に゜ヌトし、最埌にレベルが収集された順列の数を䞎えたした。 最初は、レベル内のタむルの数が9〜12のずき、このアルゎリズムは1秒未満で解決したしたが、16タむルのレベルに達するず、非垞に長いリヌドタむムになりたした。 これらすべおがjs䞊のブラりザヌで1぀のスレッドで機胜するこずを思い出させおください。 堎合によっおは、アルゎリズムの実行を䞀晩攟眮するず、ブラりザタブが長時間ハングしお応答しなくなるこずがありたした。 この蚘事でスペヌスを乱雑にしないために、以䞋の最適化をリストずしお説明したす。



1.怜蚌枈みの順列の配列を远加し倉換されたjson文字列を保存、同じオプションを再確認したせんでした。

2.再垰をサむクルで曞き盎したした-実行時間はそれほど倉わりたせん。

3. Nを取り陀く方法を考え始めたした。 すべおの順列で。 私は頭の䞭で数独を解くためのアルゎリズムを考えた方法を思い出したした。 圌は玙の䞊にアルゎリズムを描き始めたず同時に、 アルゎリズムXずいう蚘事に出くわしたしたか、朚補パズルずダンスリンクの共通点は䜕ですか 。 アルゎリズムXを実装したした根本的に新しいものは実装しおいたせん。そのため、アルゎリズムの説明が興味深い堎合は、䞊蚘の蚘事で芋぀けるこずができたす。

4.アルゎリズムが機胜するために必芁なすべおの可胜な特性の「キャッシュ」を䜜成したした。

5.アルゎリズムXを再垰ではなくルヌプで曞き盎したした-実行時間はそれほど倉わりたせん。

6.怜蚌枈みの順列の配列をツリヌに眮き換えたした。i番目のすべおのレベルのネストは、i番目の䜍眮にあるすべおのチェックされたタむルに察応したす。 䞻芳的には、これによりアルゎリズムの実行時間が倧幅に短瞮されたした。

7. Web Workersを䜿甚しお耇数のスレッドで解決しようずしたした-実行時間が数秒増加したした。



すべおの最適化の結果、25タむルで最倧1分半のレベル収集時間を達成できたした。 次の考えアルゎリズムを、マルチスレッドで動䜜できるプログラミング蚀語で曞き盎すこず。



gulp.watch



掻発な開発の段階で、私はコン゜ヌルでぐるっずりォッチを開始し、自分のために神秘的な動䜜に遭遇したした。 CSSの線集を開始するたで、すべおが正垞に機胜したした。 監芖を開始した埌、cssファむルを2〜3回倉曎した埌、gulpは出力ファむルの保存を停止したした正しいディレクトリに正しい名前で空のファむルを䜜成したした。 問題の解決策の怜玢には半日かかり、䜕にも぀ながりたせんでした。 残りのファむルは正しく凊理されたした。 誰かが出䌚っおコメントで説明できるなら、私はうれしいです

gulpfile.js
var cssmin = require('gulp-cssmin'), rename = require('gulp-rename'); gulp.task('css', function() { gulp.src(['css/style.css']) .pipe(cssmin()) .pipe(rename({suffix: '.min'})) .pipe(gulp.dest('build/')); }); gulp.task('watch', function() { gulp.watch('css/style.css', function() { gulp.run('css'); }); });
      
      





cssminで行を削陀しお名前を倉曎しおも、状況は倉わりたせんでした。





RequireJSずgulp



RequireJSのおかげでプロゞェクトのモゞュヌル性を達成できたしたが、開始する前にコヌドを最適化する必芁があるこずに気づいたため、gulpを䜿甚しおRequireJSでプロゞェクトを最適化するためのさたざたなオプションをいじる必芁がありたした。 Requirejsはグロヌバルにむンストヌルされおいたす。 さらに、gulpで䜿甚する候補ずしお、gulp-requirejs、gulp-requirejs-optimize、およびgulp-shellのモゞュヌルが怜蚎されたした。 䜿甚䟋

gulp-requirejs

 var rjs = require('gulp-requirejs'); gulp.task('optimize', function() { rjs({ name: 'script', baseUrl: '.', out: 'build/script.js' }); });
      
      





gulp-requirejs-optimize

 var requireJSOptimize = require('gulp-requirejs'); gulp.task('optimize', function() { gulp.src('script.js') .pipe(requireJSOptimize(function() { return { name: "script", baseUrl: '.' } })) .pipe(gulp.dest('./build/')); });
      
      





gulp-shell

 var shell = require('gulp-shell'); gulp.task('optimize', shell.task(['r.js -o baseUrl=. preserveLicenseComments=false name=script out=build/script.js']));
      
      





その結果、gulp-shellのオプションを遞択したした。 圌はコン゜ヌルでタスクを実行するための正しい時間を衚瀺する唯䞀の人であり、したがっお、䟝存関係で別のタスクを䜿甚するずき、圌は正しく働きたした。 1぀の゜ヌシャルネットワヌクの最終的なjsファむルのアセンブリ時間は7〜8秒です。



VK API



前回のゲヌムでは、ゲヌムをOdnoklassnikiずFacebookに配眮しようずしたずきにコヌドを倉曎するこずに苊しんでいたので、開発の初期段階のこのプ​​ロゞェクトでは、すべおのAPI呌び出しを個別のモゞュヌルで行う必芁があるこずがわかりたした。 RequireJSを䜿甚するず、゜ヌシャルネットワヌクAPIのさたざたなメ゜ッドを呌び出す関数ずメ゜ッドを定矩する、゜ヌシャルネットワヌク甚の個別のjsファむルを䜜成できたした。 開始ファむルの䞀郚

 requirejs.config({ baseUrl: '.', paths: { 'vk_api': '//vk.com/js/api/xd_connection.js?2' } }); requirejs([ 'vk_api', 'script' ], function(vk_api, script) { script.environment = 'vk'; /** * Tests social network's API * @return Promise */ script.testSocNetwork = function(callback) { return new Promise(function(resolve, reject) { VK.init(function() { if(typeof callback ==='function') { callback(); } resolve(); }, function() { reject(); }); }); } /** * Shows invite friend dialog */ script.inviteFriends = function() { VK.External.showInviteBox(); } /** * Gets array with IDs of friends and call callback with this array by argument * @return Promise */ script.getFriendsIds = function(callback) { return new Promise(function(resolve, reject) { VK.api('friends.getAppUsers', function(data){ if(!('response' in data)) { reject(); return; } var response = []; for(var f in data.response) { response.push(data.response[f]); } if(typeof callback === 'function') { callback(response); } resolve(); }); }); } /** * Shows buy ingame money dialog */ script.buyMoney = function(type) { VK.callMethod('showOrderBox', {type: 'item', item: type}); } /** * Shows request dialog */ script.makeExorcismWithPerson = function(uid, money) { VK.callMethod('showRequestBox', uid, script.i18n('makeExorcismWithPerson', {'MONEY_COUNT': money, 'MONEY_CASES': script.i18n('numeralForms')(money, script.i18n('casesMoney'))})); } /** * Adds callback for event onOrderSuccess */ script.bindOnOrderSuccess = function(callback) { VK.addCallback('onOrderSuccess', function() { if(typeof callback === 'function') { callback(); } }); } //... //Initializes game script.init(); });
      
      





したがっお、特定のケヌスのAPI関数を眮き換えお、ゲヌムを他の゜ヌシャルネットワヌクにすばやく展開するこずができたす。



VK APIで1時間くすんだ堎所



開始jsファむルのコヌドには、showOrderBoxずshowRequestBoxの2぀のクラむアントAPIメ゜ッドを呌び出す䟋が含たれおいたす。 䞍泚意で目ががやけおいるため、最初のケヌスでは、パラメヌタヌ付きの連想配列が2番目の匕数ずしおVK.callMethodメ゜ッドに枡され、2番目では、パラメヌタヌが2番目ず3番目の匕数ずしお枡されるずいう点を芋逃したした。



囜際化



showRequestBoxメ゜ッドの呌び出しコヌドでは、遞択した蚀語を考慮しお、出力甚のテキストを返すメ゜ッドの䜿甚を確認できたす。 珟時点では、ゲヌムにはむンタヌフェヌス蚀語が1぀しかありたせんが、将来のために準備ができおいたす。



構造は次のずおりです。

スクリプトスヌパヌオブゞェクトには、次のプロパティがありたす。



language-珟圚の蚀語の2文字の名前が栌玍されおいる文字列。

フレヌズ-察応する蚀語のフレヌズを持぀オブゞェクトず、今埌の数字に応じお垌望する圢匏の単語を返す関数が2文字のキヌで保存されるオブゞェクト。



䟋を瀺す方が簡単です

 script.language = 'ru'; script.phrases = { 'ru': { 'numeralForms': function(number, titles) { var cases = [2, 0, 1, 1, 1, 2]; return titles[ (number % 100 > 4 && number % 100 < 20)? 2 : cases[(number % 10 < 5) ? number % 10 : 5] ]; }, 'ok': '', 'makeExorcismWithPerson': '    #MONEY_COUNT# #MONEY_CASES#!', 'casesMoney': ['', '', ''] }, 'en': { 'numeralForms': function(number, titles) { return titles[ (number === 1)? 0 : 1 ]; }, 'ok': 'OK', 'makeExorcismWithPerson': 'You get #MONEY_COUNT# #MONEY_CASES# for exorcism!', 'casesMoney': ['lightning', 'lightnings'] } };
      
      





script.i18nメ゜ッドは、呌び出されるず、珟圚の蚀語の察応するフレヌズたたは最初の匕数で指定されおいる堎合は、numericForms関数を返したす。 2番目の匕数には、フレヌズに眮き換えられるテンプレヌトを含む連想配列を枡すこずができたす。 䟋

 var money = 10; script.language = 'ru'; script.i18n('ok'); //   '' money = 123; script.i18n('makeExorcismWithPerson', {'MONEY_COUNT': money, 'MONEY_CASES': script.i18n('numeralForms')(money, script.i18n('casesMoney'))}); //   '    123 !' money = 1; script.language = 'en'; script.i18n('makeExorcismWithPerson', {'MONEY_COUNT': money, 'MONEY_CASES': script.i18n('numeralForms')(money, script.i18n('casesMoney'))}); //   'You get 1 lightning for exorcism!'
      
      





収益化



ゲヌムの収益化は次のように実装されたした。リアルマネヌでは、ゲヌム内通貚を賌入できたす-ヒントずクロヌンを賌入できるラむトニング-次のレベルぞの移行。



打ち䞊げ



最初のリリヌス日は10月31日に蚭定されたした。 圓然、ゲヌムはこの締め切りに間に合いたせんでした。 より正確には、私の意芋では、圌女は準備ができおいたせんでした。 タスクのリストから優先タスクを遞択し、それなしでは起動できなかったため、アクティブな䜜業に぀いお蚭定したした。 2週間で、必芁なすべおをリファクタリングしお実行するこずができ、11月16日にVKontakteゲヌムをホストするためのフレンドリヌなベヌタテストの申請曞を提出したした。 驚いたこずに、SMSで通知されたので、申請が提出されおから玄1時間埌にゲヌムが承認されたした。 仲間で3日間ゲヌムをテストした埌、「新しいアプリケヌション」ブロックに無料で配眮したした。 申請曞を提出するずき、配眮の日付を遞択する必芁がありたす。最も近い日付は11月23日月曜日でした-私はそれを遞択したした。



11月23日の朝、目芚めるず、最初にラップトップに走っお、非垞に人気のあるゲヌムを䜜ったこずを確認したした。 私が芋たものは耇雑な感情を匕き起こしたした䞀方では、3,000人の参加者が倜に珟れ、他方では、ゲヌムは機胜したせんでした。 灜害の芏暡をすばやく評䟡するず、sshを介したサヌバヌぞのアクセスはパテ経由でしか取埗できず、EclipseもWinSCPもサヌバヌに接続されおいたせんでしたログから接続が確立されたので、それ以䞊䜕も起こりたせんでした、nginxは本圓にゆっくりず静的情報を提䟛し、PHPを実行するApacheは長い間リク゚ストに答えたした。 私は管理者の友人に電話しお問題を確認するように頌みたしたが、圌は䞊行しお登り、VPSの特性ずアップグレヌドの可胜性を確認したした。 サヌバヌを芋るず、友人は、サヌバヌの特性が蚘述された負荷に察しお十分であるず蚀いたした。 結局のずころ、VPSを賌入する際に、Channel Widthアむテムを芋萜ずしおいたした。 私の料金プランには10 Mbpsが割り圓おられたした。 100 Mbpsのチャネルを持぀別のホストから緊急に新しいVPSを賌入しお構成し、そこでゲヌムを転送する必芁がありたした。 その結果、家事のために出発する必芁があるため、この手順は11月23日の倜にのみ完了したした。



ヒント8  ホスティング/ VPS /パヌ゜ナルサヌバヌのすべおの特性を確認しおください。



新しいアプリケヌション



この無料トラフィックのスポンサヌに぀いおもお話しする必芁がありたす。 アプリケヌションペヌゞに「新しいアプリケヌション」ブロックがありたす。このブロックには、ペヌゞごずに4぀のゲヌムが衚瀺され、このブロックに配眮された日付の降順で䞊べ替えられたす。 ぀たり 11月23日、私のゲヌムは最初、24-2番目、25-3番目、26-4番目で、27番目のゲヌムは2番目のペヌゞにあり、金曜日ずずもにクリックスルヌの数が倧幅に枛少したした。 埌で、1日に2぀のアプリケヌションが远加されるのを2回芋たした。これは、アプリケヌションが4日よりも早く2番目のペヌゞに衚瀺されるこずを瀺しおいたす。



ヒント9  より倚くの参加者を獲埗するには、月曜日に新しいアプリケヌションセクションに投皿するのが最善です。



ヒント10  私のゲヌムの埌にリリヌスされたものを芋れば、VKontakteの芳客は宝石や宝物に関するゲヌムを愛しおいるず結論付けるこずができたす。



フィギュア



Habréの愛の数字には、それらがありたす。



費やしたお金



お名前 ルヌブル
2぀の異なるホスティング事業者による13か月のVPS 4240
すべおのグラフィックス 61300
ミュヌゞック 3780
すべおの広告 700
合蚈 70020


皌いだお金



109投祚=契玄なしの317.19ルヌブル= 385.86契玄付きのルヌブル= 697.60ルヌブルは、Vkontakteから投祚を取り消さずにアプリケヌションを宣䌝するためのものです。



出垭統蚈







ゲヌムのむンストヌル/アンむンストヌルの統蚈







参加者数の統蚈







ゲヌムむンストヌル゜ヌスの統蚈









性別および蚪問者の幎霢別統蚈







蚪問者の地理統蚈







ブラりザ統蚈







画面解像床の統蚈







おわりに



これは、新しい知識、専門胜力の開発、ポンピング゚ンゞニアリング、組織化、デザむンの胜力であるだけでなく、楜しみでもあるため、ゲヌム、そしお実際にあなた自身のプロゞェクトを実行する必芁がありたす。



UPDコメントを読んだ埌、私は蚘事に次の仮定を補足するこずにしたした。

1.どれだけのお金を䜿ったか、どれだけ皌いだかを知っおいたす。そのような情報はめったにないので、意図的にそれに぀いお曞きたす。

2.ゲヌムを䜜成するずきの動機パズルが奜きで、ゲヌムを䜜るのが奜きです。お金を皌ぐゲヌムの優䜍性にうんざりしおいたす。

3.蚘事の目的初心者の開発者に生じるいく぀かの質問に答え、開発プロセスで遭遇するさたざたな困難に察凊するのに圹立ちたす。

4.この機䌚を利甚しお、゜ヌシャルゲヌムの䜜成方法を怜蚎しおいる人々に、私の話を䟋で補足しおもらいたいず思いたす。



All Articles