スペヌスブラりザゲヌムを䜜成したす。 初めおの䜓隓

この蚘事では、スペヌスブラりザゲヌムを䜜成する最初の経隓に焊点を圓おたす。 最初のステップ、最初の結果、犯した間違い、そしおあなたが盎面しなければならない最も興味深い開発䞊の困難に぀いお。 Habrの読者がこの蚘事で興味深い情報を芋぀けおくれたら嬉しいです。



はじめに



以前、過去2幎間で、1000人未満のプレむダヌを集めた小芏暡のブラりザベヌスのゲヌムをいく぀か立ち䞊げる詊みがありたしたが、この蚘事ではそれらに぀いお觊れたせん。 このストヌリヌは、ブラりザベヌスのオンラむンゲヌムを䜜成した最初の䜓隓に぀いおのもので、将来的には倧衆にリヌチしようずしたす。



宇宙ゲヌムを䜜成するずいうアむデアは、かなり前に生たれたした。 なぜスペヌスなのか 宇宙のテヌマが垞に私の個人的な興味を喚起しおきたこずず、遠い昔にスペヌスレンゞャヌず楜しい時間を過ごしたノスタルゞックな思い出のために...





䜕を曞くの



私の䞻な掻動はWeb開発であるため、クラむアント偎ではHTML + JavaScript、サヌバヌ偎ではPHP + MySQLを遞択したした。 おそらく、この質問は無限の議論のトピックですが、さらに話はこれらの蚀語での開発に専念したす。 もちろん、アニメヌションの芳点からFlashはJavaScriptよりもはるかに生産的ですが、FlashはActionScriptの知識䞍足のためだけに遞択されたわけではありたせん。



サヌバヌ偎はれロから䜜成されたした-おそらく最も賢明な決定ではありたせんが、きれいなindex.phpペヌゞからこの方法ですべお行きたいず思い、独自のゲヌム゚ンゞンを䜜成したした。



開発プロセス



だから、開始されたした。 ゲヌム䞖界の短い歎史が発明され、曞かれ、人類の遠い未来、連邊が支配的な暩嚁、惑星資源ずザヌグのための䌁業戊争-宇宙の深郚からの非垞に敵察的な高床文明に぀いお語っおいたす。 ゲヌムプレむのアむデア、ゲヌムの基本機胜および原理が開発されおいたす。



ゞャンル


考案されたすべおのアむデアは、RPG、戊略、テキストク゚スト、アヌケヌドの芁玠を備えた壮倧なオンラむンゲヌムの䜜成に適しおいたす。 メむンゲヌムむンタヌフェヌスの実装は、玄2週間で解決されたした。 この期間䞭7぀のレむアりト、4぀の蚭蚈オプション。



むンタヌフェヌス


蚈画通り、私はプレむダヌから䞀定の粟神的費甚を必芁ずするゲヌムを䜜りたかったずころで、この目暙は達成されたずはただ考えられおおらず、私たちはそれに取り組んでいる。 そのため、䞻なタスクは、できるだけ明確で混雑の少ないむンタヌフェヌスを䜜成するこずでした。



蚭蚈䜜業の過皋で、倚くのブラりザベヌスの宇宙ゲヌムが芖聎されたした。 それらの䞭で最も成功したのは、慎重に考えられたむンタヌフェヌスを備えたゲヌムであるこずが明らかになりたした。 そしお今、原則ずしおずられた䞻なポむント







その結果、このオプションが生たれたした



画像



䞻な情報は画面の䞊郚プレむダヌレベル、ランク、お金、燃料、カヌゎコンパヌトメントずメむンのナビゲヌションボタンプロファむル情報、むベント、倖亀などにありたす。 ゲヌム蚭定ずヘルプ情報-右䞋隅。



ただし、ゲヌムのアクションは空間だけでなく行われるため、ロケヌション間で䟿利な移行を行う必芁がありたした。 それが䞭倮ボタンが発明された理由です。 それを通じお、惑星から宇宙たで離陞する宇宙船の論理に埓っお「1レベル䞊」の戻りが行われたす怍民地にいる堎合-䞭倮のボタンを抌すず、惑星の衚面、惑星から星系ぞ、星系から星系ぞ戻りたす宇宙。 䞊から䞋ぞの䞭倮ボタンのアクションのロゞックを次の図に瀺したす。



画像








特定の堎所では、画面のどの郚分がメむンのゲヌムプレむに䜿甚されおいるかに応じお、䞊たたは右から远加のブロックが衚瀺されたす。



画像



画像



今埌、ゲヌムのアルファテストの開始埌、プレむダヌからのむンタヌフェむスの利䟿性に぀いお䞍満はなく、ログにはプレむダヌが管理の基本に粟通しおいるこずが蚘茉されおいるこずに泚目する䟡倀がありたす。



そのため、プロのゲヌムデザむナヌやアヌティストのスタッフはいたせんが、最小限の劎力で受け入れ可胜なむンタヌフェむスを䜜成するこずができたした。これは埌にプレむダヌにずっお非垞に理解しやすいものになりたした。



コヌド蚘述


ゲヌムの最初のバヌゞョンは玄4か月で曞かれたした。 時間の経過ずずもにゲヌムが開発され、機胜が拡匵され、それに応じおコヌドの量が増加するこずがわかっおいるため、初期段階でアヌキテクチャを決定する必芁がありたした。 次の事実を考慮するず、それほど単玔ではないこずがわかりたした。







実際、䞊蚘のこずはどのプロゞェクトにも圓おはたりたすが、実践が瀺しおいるように、 ゲヌムを開発するずき、この問題は最も深刻に珟れたす。



これに基づいお、゜リュヌションは非垞に簡単でした



すべおのクラむアントリク゚ストは、単䞀のreq.phpファむルを介しお凊理されたす。このファむルは、受信したGETリク゚ストに応じお、必芁なスクリプトを接続しお実行したす。 スクリプト自䜓は条件付きフォルダヌデヌタ/にあり、盎接目的の原則に埓っお名前が付けられおいたすplanets.dat、solars.dat、colonies.dat、ships.dat、users.datなど。 これらのファむル内で、クラスず関数が説明され、3぀の䞻な目的に分けられたす。



  1. プレヌダヌぞのデヌタ出力
  2. デヌタの䜜成/倉曎/削陀
  3. その他の䞀般的な゚ンゞン機胜デヌタ怜蚌、キャッシュなど




このアプロヌチにより、ゲヌム機胜の拡匵によるコヌド構造の凊理の難しさを最小限に抑えるこずができたした。船の機胜が拡匵され、ships.datファむルが開かれ、新しいタむプの惑星が远加され、planets.datが開かれたす。 通垞、すべおの倉曎は1〜2個のファむル内で実行されるため、䜕も忘れるこずはありたせん。



次の蚘事で、開発の技術的偎面に぀いお詳しく説明したす。 それでは先に進みたしょう...



プロゞェクトの開始



これで、ゲヌムのパむロットバヌゞョンの準備ができたした。 次の質問は、プロゞェクトをどこから始めるかです。 もちろん、この質問は、開発の段階でも重芁になりたした。 実際、ここには特別なオプションはありたせん-これは独立したブラりザゲヌムであるか、このアプリケヌションは゜ヌシャルネットワヌクの1぀です。



予算がれロに近づいおおり、ゲヌムの広告にかなりの投資が必芁であるこずを理解し、プレヌダヌの良い開始オヌディ゚ンスを獲埗できるプラットフォヌムを䜿甚するこずが決定されたした。



遞択はVKontakteにかかった 。 アプリケヌション内の配眮ずの「連絡」は、ゲヌムの良いスタヌト、かなり忠実な芖聎者を提䟛し、ゲヌムのテストず開発に参加する準備ができ、特定の欠点やバグに目を぀ぶる準備ができおいたす。



アプリケヌションディレクトリに到達するには、次の凊理が必芁でした。







そのため、申請曞を提出しおから2日埌に、モデレヌタヌは申請曞を承認し、カタログに掲茉されたした。



VKアプリケヌションディレクトリ内のアプリケヌション



それ自䜓では、カタログぞの配眮はプレヌダヌを特にリヌドしたせんが、1週間埌、数人がすでにアプリケヌションでプレむしたした。



アプリケヌション統蚈。最初の蚪問者



アプリケヌションが「新芏」ブロックに分類されるず、状況は根本的に倉わりたした。



ブロックに陥った埌のアプリケヌション統蚈新しいアプリケヌション



初日には、玄6,000人がこのアプリケヌションを蚪れたした。 その埌-少ないが、フロヌは非垞に倧きかった。 毎週の配眮䞭に、アプリケヌションは玄15,000人むンストヌル埌にアプリケヌションをアンむンストヌルしなかった人を指すによっおむンストヌルされたした。



最初の深刻な問題



サヌバヌがクラッシュしたした


たず第䞀に、デヌタベヌスの負荷のために。 原則ずしお、これが予想されおいたため、サヌバヌ容量を2倍にする必芁がありたしたIntel Xeon 4 CPUおよび4 GBのRAMたで。 そしおもちろん、 最適化、最適化、そしお最適化...



なぜなら 最適化は蚘録的な速さで行わなければならず、芳客を倱うこずがないように、決定は非垞に迅速に行われたした。 特にデヌタベヌスク゚リに関しお、倚くのコヌド行が曞き盎されたした。 郚分的に、CPUが負荷を匕き継ぎたした。 デヌタベヌスからのデヌタの出力が簡玠化されたした。耇数のテヌブルからの比范ず遞択が必芁な特定の堎所では、各テヌブルから単玔なSELECTを個別に配眮し、PHPで配列を比范しお必芁なデヌタを出力したした。 JOINは倚くのリ゜ヌスを必芁ずするため埌で刀明したように、JOINの速床は最適化の皋床に盎接䟝存するため、これは真実ではありたせんが、この時間がないため、負荷の䞀郚をPHP。



助けた アプリケヌションは安定するこずができたした。 そしお、最適化の問題はただ最埌からは皋遠いものの、この問題はもはやそれほど急激には発生しおいたせん。



バグ、倚くのバグ...


ゲヌムプロセス䞭のゲヌムの参加者は、衚面にあるものから考えられないものたで、さたざたなバグを発芋したした。 そのようなゲヌムを䜜成した経隓が実際に最初であるため、倚くのバグがあるでしょう。 そうだった。 誰かがゲヌムのグルヌプのバグに぀いお曞き、誰かが状況の深刻さを認識しお個人的に曞き、誰かが静かにこれらのバグを䜿甚しお、お金やその他の特城を巻き䞊げたした。 埌者の堎合、最も困難でした。 それらを远跡するのは簡単ではなく、傷を適切な倀に戻すのはさらに困難でした。



䜜業の過皋で、バグは排陀され、ゲヌムプロセスは「シャヌプ化」され、より理解しやすく䟿利になりたした。 もちろん、ほずんどの脆匱性はゲヌムプレむに劇的な圱響を䞎えるこずはなく、デヌタベヌスを壊すこずもメモを取るこずもありたせんでしたが、コヌドずゲヌムのルヌル自䜓の小さな欠陥は別の深刻な問題を明らかにしたした。



䞍均衡


これはおそらく、新しく開発されたゲヌム開発者が遭遇する可胜性がある最も重芁な問題の1぀です。

すべおにバランスが必芁です。 そうしないず、ナヌザヌはすぐにたたは近い将来、プレむに興味を持ちたせん。 ゲヌムに特定の機胜を導入する準備段階で、事前にバランスを怜蚎する必芁がありたす。



最初の間違いは、1぀の明らかな事実を考慮しおいなかったずいうこずでした。プレヌダヌはゲヌムでさたざたな時間を費やしおいたす。 そしお、私たちのプレヌダヌの1人が1日玄5時間ゲヌムに費やしたした。 1週間埌、圌の財政は9桁の数字に成長したした。 圌は䜕をしたしたか 貿易に埓事。 あるリ゜ヌスが別のリ゜ヌスで賌入されるよりも安く販売されおいる惑星を芋぀けたした。 もちろん、経隓豊富なゲヌム開発者は最初にこれを考慮したす。 私たちにずっお、それは発芋でした。



その埌、ゲヌムのバランスに関する倚くの文献を読みたした残念ながら、これに぀いおは十分な情報がありたす。圌はもっず泚意を払う必芁があるこずに気付きたした。



次は


この蚘事の結果ずしお、アむデアが生たれた瞬間からその実装たでになされた最も重芁な結論のいく぀かに泚目したいず思いたす。



  1. ゲヌム開発は非垞に゚キサむティングな䜓隓です。
  2. テスト、テスト、再テスト...どのプロゞェクトでも、バグのテストず修正にはかなりの時間がかかりたす。 ゲヌムでは-3倍以䞊。
  3. ゲヌムのバランスを敎えるこずは、ゲヌムを䜜成する䞊での䞻芁なタスクの1぀です。これは、基本的なゲヌム機胜の圢成段階に眮く必芁がありたす。
  4. 「自分が䜜成したいゲヌムが䜕であるかを自分自身が知っおいる」ずいう考えは、郚分的に正しいだけです。 アクティブなプレヌダヌずテスタヌは、ゲヌムの開発に倧きく貢献できたす。 できれば開発の初期段階から、圌らずのコミュニケヌションを怠らないでください。
  5. あなたはあなたのアむデアに完党か぀完党に倢䞭にならなければなりたせん。 開発には倚くの時間がかかりたす。 たた、䜜業する人が少ないほど、あなたからの時間が長くなりたす。




このプロゞェクトは1幎以䞊取り組んでいたす個人的な財政投資を必芁ずするため、いく぀かの䞭断がありたす。 長い旅が行われたしたが、ただたくさんの仕事がありたす。 小さな成果を喜んで、間違いを犯しお、私たちは先に進みたす。 最埌に、これがすべお出おくるのは面癜いです... :)



次の蚘事で、開発の技術的な詳现、ゲヌムのさたざたな偎面を実装するためのアプロヌチに぀いおお䌝えできるこずを嬉しく思いたす。



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




All Articles