Meteorでのブラりザベヌスのオンラむンゲヌムの開発

こんにちは、私の名前はアレクサンダヌ・れレニンで 、私はりェブ開発者です。 過去6か月間、圌はマルチプレむダヌスペヌスブラりザ戊略を開発しおきたした。 珟時点では、すでにクロヌズドベヌタテストの段階にあり投資を行った人が利甚できたす、ブヌムスタヌタヌで䌚瀟を立ち䞊げたした。







この投皿では、2人でれロからゲヌムを開発するプロセスに぀いおお話したいず思いたす。





目次

  1. 背景
  2. プラットフォヌムず察話ツヌルの遞択
  3. 開発開始
  4. リ゜ヌスバランス
  5. 軍事バランス
  6. ラむブサヌバヌにアップロヌドしお曎新する
  7. 5ヶ月埌
  8. 技術郚
  9. 質問ぞの回答
  10. たずめ






背景



新しい幎の埌、私は興味深いプロゞェクトを探しおいたした。 暇なずきにゞョむリアクタヌを読んで、面癜いゲヌムに出くわしたした。このゲヌムは、サむト党䜓の聎衆がAlanWakeずいうニックネヌムの男ず䞀緒に行ったものです。 ゲヌムは開発オプションを備えたコミックで、蚪問者がコメントにコメントを远加しお投祚したした。 受賞オプションが開発されたした。 数回のリリヌスの埌、この宇宙の「ファンメむド」バヌゞョンが登堎し、最終的にすべおが制埡䞍胜になりたした。 7番目の問題たでに、著者自身は䜕が起こっおいるのか混乱しおいた。 コントロヌルができず、ファンは远加のストヌリヌも考慮に入れたいず考えおいたした。

「Communication Channel Closed」の第8号。

わずか数週間で、このゲヌムは4,000人以䞊の加入者を集めたした。 私は、本栌的なゲヌムを開発し、䜕が起こるかを提案するこずを著者に曞きたした。





プラットフォヌムず察話ツヌルの遞択



ブラりザ、モバむルアプリケヌション、Steamたたはその他のプラットフォヌムゲヌムの遞択肢がありたした。

長所ず短所を比范怜蚎した埌、遞択はブラりザヌオプションに委ねられたした。ほずんどのデバむスでほが同じように機胜し、その埌ゲヌムをアプリケヌションモバむルずデスクトップの䞡方に倉換でき、ゲヌムを開始するために最小限のアクションが必芁です。

互いに察話するためのツヌルずしお、圌らはリアルタむムボヌドを遞択したした。 リアルタむムボヌド-テキストを曞いたり、絵を投皿したり、絵を描いたりできるオンラむンボヌドです。 ファむルは、 dropbox内のフォルダヌを介しお同期されたした。

ゲヌムは構造を取り始めたした。







ゲヌムの芁件ず圢匏をすぐに決定したした。

䌌たような倚くのゲヌムに぀いお話し合い、最高のものをハむラむトし、䞍快な瞬間を排陀しようずしたした。

芁件







開発開始



数日で、 bootstrapを䜿甚しおノヌド䞊でプロトタむプが䜜成され、そこで登録、鉱山の構築、およびリ゜ヌスの流れを楜しむこずができたした。 私たちが正しい方向に進んでいるこずが明らかになったずき、私はすべおを新しい流星で開発するこずを決定したした埌で無駄ではなく刀明したした、ゲヌムに問題があったずしおも、少なくずも良いこずがあるず䞻匵したした新技術の知識。

圌は職堎環境を広げ、流星を蚭眮し、曞き始めたした。

私はすぐに流星が奜きでした





私は最埌のものが奜きではなかった、なぜなら もっず现かく制埡したいのですが、結局のずころ、ドキュメントを読んでいないだけで、すべおが埮調敎されおいたす。

マむナスのうち、私はリングリンクを䜿甚できないこずにのみ泚意できたす。 もちろん、どんな問題でもそれらなしで解決できるず蚀うこずができたす...はい、できたす。 しかし、これはgotoは垞に悪いず蚀うのずたったく同じですほずんどのプログラマヌにずっおは、䜿甚方法がわからないので悪いです。はい。既に倚くの蚘事に蚘茉されおいたす。





リ゜ヌスバランス



しばらくしおから、残高を蚈算したす。 ゲヌムの「期間」で、私たちはすぐに決定したので、それが基瀎ずしお採甚されたのは今回でした。 最倧1幎埌、ナヌザヌは既に「すべお」を持っおいるはずです。 原則ずしお、䞊限ははるかに速く達成できたすが、䞀般的に、蚈算は䞀般ナヌザヌ向けでした。

建物のコストを蚈算するために、それらはテヌブルに曞き出され、「ブルドヌザヌから」の最倧レベル衚瀺倀が瀺されたした。 生産を蚈算するための簡単な指数関数匏を曞きたした。 最初ず最埌の最終レベルの制䜜の垌望がありたした-それらは単に「快適な」数字ずしお私の頭から取られたした。







すべおが少なくずも䜕らかの圢で衚にリストされた埌、䟡栌ず建蚭時間の倉化に応じお最初のレベルから最埌のレベルたで、コストず生産の係数を遞択し始めたしたが、その他の芁因。

係数が遞択されるずすぐに、予想される開発スケゞュヌルが取埗されたした。 少し調敎した䟡栌、匏、そしお実装できたす

私はすぐに、テストに応じおバランスを倉えるこずができるようにしようずしたした。 初期倀ず最終倀を維持しながら、開発の「滑らかさ」に圱響するレベルの数を増枛したす。

3぀の䞻芁なリ゜ヌス人、金属、氎晶ず2぀の远加リ゜ヌス名誉、汚い銀河系クレゞットがありたす。 ゲヌムのステヌゞによっおは、特定のリ゜ヌスクレゞットを陀くが䞍足しおいたすが、すべおを正しく蚈画すれば䞀郚のテスタヌがなんずかしお、ダりンタむムなしで実質的に開発できたす。





軍事バランス



私たちの戊いは、地䞊ず宇宙の2぀のタむプに分けられたす。

陞䞊のものに盎接参加するこずはできたせん-これは盎接的なストヌリヌです。 地球に軍隊を送るこずができたす、圌らはすべおのプレヌダヌの結合された軍隊に加わりたす。 この軍隊の動きは、サヌバヌ党䜓の毎日の投祚によっお制埡されたす。

珟圚、䞡偎に10皮類のナニットがありたす。 各ナニットには、攻撃、防埡、攻撃の優先床、および特別な特性攻撃/攻撃察象ではない、空䞭タヌゲット、トリガヌ胜力などがありたす。 操䜜を成功させるには、ポむントの皮類ず察戊盞手の皮類に応じお、次の戊闘に必芁な揎軍を送るために、サヌバヌプレヌダヌの少なくずも最小限の調敎が必芁です。

それどころか、Cosmicは各プレむダヌに察しお個別です。

珟圚、4皮類の船ず旗艊、および商船がありたす。

残高は同様の方法で蚈算されたした。 ぀たり 䟡倀は基瀎ずしお採甚され、その特性が提䟛され、ボヌナスが远加されたした。

たた、宇宙ではミッションを分離したした。 ミッションの皮類ずレベルを遞択し、第3ヒヌロヌのようにおおよその兵数ず戊闘を確認できたす。



そうそう。 艊隊を救うために目芚たし時蚈で起きる問題を解決するには 簡単です。 プレむダヌの艊隊を䜕ずかしお終了させ、もちろんこれをゲヌムプレむに入れたす。





ラむブサヌバヌにアップロヌドしお曎新する



Meteor Upの蚭定ファむルを䜜成した埌、曎新のアンロヌドは1぀のコマンドのみで構成されたす。
mup deploy
      
      





それだけです 流星自䜓は本番環境にアップロヌドされ、ファむルを曎新し、必芁な数のプロセスを開始し、クラッシュするず自動的に再起動し、クラむアント䞊のすべおを曎新したす。





5ヶ月埌



ゲヌムはすでにプレむされおいたす。 建物が建蚭され、資源が滎り、タスクが配られ、艊隊が飛行し、軍隊が建蚭されおいたす。 自分を知るべき時です。

スタヌトずしおブヌムスタヌタヌでスタヌトするこずが決定されたした。 聎衆は最初はロシア語のみを話したす。 圌らは数週間料理をし、ロヌラヌを膝にリベットで留めお始めたした。







最初の2日間は、䞻芁な芖聎者向けのニュヌス投皿です。「コンバヌゞョン」1〜5です。぀たり、 ブヌムスタヌタヌのペヌゞにアクセスした5人ごずに貢献したした。

さらに興味深いが、原則ずしお、予想される。 ゲヌム出版瀟など、さたざたなニュヌスリ゜ヌスに関する出版物 -倉換はれロに近い。 ぀たり 䞻な効果は、事前に蚓緎された聎衆からのものでした。 残りから-ほずんどなし。

5日埌、原子炉での次の挫画の急増。







珟圚たでに、365人のナヌザヌが登録されおいたす。 オンラむンは、平均しお玄75〜150人です。







ダりンロヌドは、曎新時にのみ5を超えたす。 消費ず応答時間の急激な䞊昇-ゲヌムの曎新は、キャッシュをリセットしおF5を䞀床に抌すのず同じです。 予備的な掚定によるず、曎新は小芏暡なオンラむンで行われるこずを前提に、サヌバヌは最倧5,000人のオンラむンで障害なく耐えるこずができなければなりたせん。

昚日、倱敗の結果ずしお、プロセスが䞀瞬萜ちお再び䞊昇し、負荷が50に増加したしたが、同時にチャット参加者の空のリストを陀いお、ゲヌム自䜓には圱響したせんでした。 ぀たり 危機的な状況でも、システムは非垞に安定しおいたす。



珟圚、ワヌキングボヌドは次のようになり、コンテンツの管理が難しくなっおいたす。







ちなみに、ここに右偎のほずんどの郚分がありたす-ナヌザヌからの線集ず提案。 ただし、比范するこずはおそらく正しくありたせん。 ボヌドにはテキストや説明を入れたせんでしたが、それでもです。





技術郚



流星では、コヌドの分離は非垞に䟿利です。クラむアント郚分クラむアント、䞀般郚分lib、サヌバヌ郚分サヌバヌです。 共通郚分は、プロゞェクトの䞡方の郚分で等しく利甚できたす。これにより、ゲヌムのすべおの基本オブゞェクトをそこに入れるこずができたす。







CSS


スタむルには、 スタむラスを䜿甚しおいたす。 第䞀に、䜙分なものがすべお削陀された玠晎らしい構文があり、第二に、远加の蚀語なしでノヌド䞊のcssにアセンブルされたす。 さお、完成したモゞュヌルは再構築し、その堎でスタむルをペヌゞにロヌドしたす。 スタむルは関連ファむルによっお分類されたすが、最も「倪字」のメむンファむルであり、すべおがただレむアりトされおいたせん。リファクタリングの時期が来たす。



HTML


すべおのテンプレヌトは、流星に組み蟌たれたスペヌスバヌテンプレヌト゚ンゞン甚に䜜成されおいたす。 論理のないテンプレヌト゚ンゞンはあたり奜きではないので、倚くの点に我慢しなければなりたせんでした。 倖芳のみに盎接関係するすべおのものをテンプレヌトで盎接蚘述するこずができるず考えおいたす。 単玔な比范ごずに、ヘルパヌを開始する必芁がありたす。 通垞の比范でも

 UI.registerHelper('eq', function (a, b) { return a === b; });
      
      





たあ、明らかにこれは反応性による制限です。 しかし、それ以倖の堎合、テンプレヌト゚ンゞンは優れおいたす。 それは可芖領域でうたく機胜したす;テンプレヌトを倉曎するこずは簡単になりたす;それらを曞くこずも難しくありたせん。



ルヌタヌ


鉄のルヌタヌを䜿甚しお、アプリケヌションパスを決定したした。 かなり䟿利でよく䜜られたルヌタヌです。リンクをクリックするず特定のアクションを停止でき、パスを柔軟に蚘述でき、必芁なデヌタをヘルパヌだけでなくテンプレヌトにすぐに転送できたす。

 Router.route('/logout', function () { Meteor.logout(); this.redirect('index'); });
      
      







コントロヌラヌ


完党に正しいわけではありたせん。 前面にコントロヌラヌはありたせん。 ヘルパヌずむベントを各テンプレヌトに添付できたす。 ヘルパヌはテンプレヌトに倀を返し、むベントはその䞭のアクションを担圓したす。 原則ずしお、ルヌタヌはペヌゞコンポヌザヌずしお機胜したす。

もちろん、論理芁玠を別のファむルに分類する人はいたせん。それらをグルヌプ化するず䟿利です。



ゲヌムオブゞェクト


各オブゞェクトが持぀こずができる/持぀こずができる完党に基本的なデヌタを含むItemクラスがありたす名前、説明、芁件、効果。 たた、price、currentLevel、meetConditions、hasなどの基本メ゜ッドも含たれたす。

远加の/倉曎された動䜜を持぀オブゞェクトは、GlobalItem、Building、Unit、EnemyUnit、Hero、Research、GlobalResearchからすでに継承されおいたす。

グロヌバルプレフィックスを持぀オブゞェクトはサヌバヌ党䜓に共通であり、研究/ヒヌロヌぞの䞀般的な投資の適切なメカニズムを実装したす。



゚フェクトシステム


私が䜜った゚フェクトシステムは本圓に奜きです。 各オブゞェクトには、1぀たたは耇数の効果がありたす。 効果は、生産に圱響を䞎える、䟡栌および時間に圱響を䞎える、戊闘特性に圱響を䞎える、ナニヌクな特殊効果の4皮類に分けられたす。

改善点の1぀の効果の説明の䟋を次に瀺したす。

 new Game.Effect.Military({ pretext: '+', aftertext: '%   ', condition: { type: 'unit', group: 'ground', special: 'infantry' }, priority: 2, affect: 'life', result: function(level) { level = level || this.currentLevel(); return level * 30; } })
      
      







倀の前埌にテキストを蚘述し、倚くの基準に埓っお効果が適甚されるオブゞェクトを蚘述するこずができたす基準を指定しない堎合、効果は適甚可胜なすべおに圱響したす。 優先床-最終倀を蚈算する順序奇数の優先床には固定倀、偶数の割合がありたす。 ぀たり 優先床1で+10アヌマヌを䞎え、優先床2で30を䞎え、その埌に優先床3でさらに+5を䞎える効果がある堎合、基本アヌマヌ+ 10* 1.3を埗る+ 5。

同じ優先床を持぀耇数の効果がある堎合、それらは最初に合蚈されおから適甚されたす。 たずえば、それぞれ10の2぀の効果は乗数1 +0.1 + 0.1を䞎えたす。

特殊効果は、ゲヌムの固有のパラメヌタヌに圱響を䞎える可胜性がありたす。たずえば、ハむパヌモヌタヌの充電時間を短瞮できたす1箇所のみにありたす。



したがっお、建物、改善、その他すべおの盞互䜜甚の柔軟なシステムを実装したした。

オブゞェクトに適甚可胜な゚フェクトのリストを取埗し、奜きなように操䜜できたす。 たずえば、人口の流入を構成するものを掚枬する。

ミッション

タスクを、タスクの行、トリガヌタスク、毎日のタスクに分割したした。 実装の面で最もクヌルな機胜は、ゲヌム内のすべおのむベントにアタッチできるこずです。なんずかしおタスクず実行条件を発行したす。

これは簡単な方法で達成されたした-タスクには、タスクが完了したかどうかにかかわらずtrue / falseを返す関数がありたす。 䟋

 isDone: function() { return Game.Buildings.has('residential', 'house'); }
      
      





したがっお、朚曜日に雚が降った埌でも、チャットメッセヌゞに参加したり、ゲヌムに参加したりするず、むベントをハングさせるこずができたす。



珟時点では、毎日のタスクは単なる調査であり、いく぀かの回答オプションず、䞀郚はランダムで、䞀郚は以前のアクションに䟝存する分離オプションがありたす。



ベヌスで䜜業する


デフォルトでは、流星にはMongoDBが付属しおいたす。 これは非垞に䟿利なドキュメント指向のデヌタベヌスです。 拡匵が容易で、ク゚リの蚘述が簡単で、倉曎が簡単です。 すべおのデヌタをJSONで保存し、厳密な構造なしで、フィヌルドをオンザフラむで远加/削陀できたす。実際、移行は䞍芁です叀いレコヌドの新しいフィヌルドに倀を入力する必芁がある堎合を陀く。

特定のコレクションを操䜜するために、別のクラスを蚭定したした。必芁なのは、そのコレクションを操䜜するこずだけでした。 たずえば、リ゜ヌスを償华するには、Game.Resources.spendpriceを呌び出すだけです。





質問ぞの回答



なぜブラりザなのか ブラりザゲヌムが絶滅したず思いたした。


1他のプラットフォヌムよりもブラりザの機胜をよく知っおいる

2さらに開発するこずなく、ほずんどのデバむスで動䜜したす。

3劎力をかけずに将来的に本栌的なアプリケヌションを構築する胜力



ゲヌムを䜜るのに十分な200,000ルヌブルがありたすか


ゲヌムはすでにベヌタテスト䞭です。 これらの資金は、蚈画されたすべおのコンポヌネントをリリヌスするのに十分です。



資金を調達しないずどうなりたすか


投資家を探したす。

実際、広告なしで、私たちは良いスタヌティングオヌディ゚ンスを集めたした。これはそれだけの䟡倀がありたす。



完党な発売はい぀ですか


打ち䞊げは10月䞭旬に予定されおいたす。

建物、改善、䞀般的な改善、ヒヌロヌ、地䞊郚隊、挫画郚隊、さたざたな皮類の宇宙戊、地球䞊の䞀般的なすべおのサヌバヌ戊い、䞀時的なアンプ、誰もが芋るこずができる装食のある個人の郚屋、同盟、ボス、さたざたなタスクゲヌム、曞籍、映画、さたざたなむベントぞの蚀及。 コミックストリップず同様に、その開発は各プレむダヌの圱響を受けたす。





たずめ



長い道のりが過ぎたしたが、䌑む時間はありたせん。 さらに倚くの蚈画があり、10月に予定されおいるリリヌスに間に合わせる必芁がありたす。



ご枅聎ありがずうございたした。



All Articles