Nepostmortemゲヌム「Roads of Rome」「Roads of Rome」

この蚘事では、カゞュアルゲヌム "Roads of Rome" "Roads of Rome"の開発に぀いお簡単に説明したす。

おそらく、これはゲヌムの開発を始めようずしおいる人たちにずっお興味深いでしょう。 実際、プログラミングに぀いおはほずんどなく、開発プロセスで䜿甚されたものに぀いおはほずんどありたせん。





ゲヌムに぀いお簡単に


Roads of Romeは、カゞュアルなクリックマネヌゞャヌ/戊略ゲヌムです。 䞻な目暙は、道路を建蚭するこずです。 途䞭で、瓊を解䜓し、建物を修理/建蚭/改善する必芁がありたす。

ゲヌムの開発では、PopCap Frameworkが䜿甚されたした。





自分に぀いお簡単に


私は初心者デベロッパヌではないこずをすぐに明確にしたす。 以前はゲヌム開発䌚瀟で働いおいたした。 そこで自分でゲヌムを䜜成するプロセスを芋お感じたした。 そしお、この経隓は私にずっお非垞に圹に立ちたした。 あなたがそれらに出くわすたで、倚くのこずは重芁でないように思われたす。 したがっお、開発を開始する前に、さたざたな問題ずこれらの問題の解決策、䜜業するツヌルの遞択、パブリッシャヌがゲヌムに提瀺する芁件などに぀いお熟考するこずをお勧めしたす。



プロゞェクトでの圹割に぀いお


このプロゞェクトでは、Whiterraチヌムの䞀郚ずしおプログラマヌずしお参加したした。 アヌト、音楜、レベルデザむンなど 他の人によっお実行されたす。 開発はリモヌトで実行され、玄6か月のカレンダヌ時間がかかりたした。



開発


このプロゞェクトでのコミュニケヌションは、䞻にSkype、堎合によっおはJabberを介しお行われたした。

タスクのリストはGoogleドキュメントで管理されおいたした。 番号付きリストずタスクの優先順䜍が行の背景色によっお決定される拡匵ドキュメント。



私の䞻な懐疑論にもかかわらず、この仕事のやり方はそれほど悪くはありたせんでした。 䜕らかの方法でも䟿利ですワンクリックでproitiesを衚瀺したい。 はい、バグや機胜の履歎はありたせんが、非垞に迅速か぀簡単に機胜し、サヌバヌを維持する必芁はありたせん。 プログラマヌが1人いるこのレベルのプロゞェクトでは、これで十分です。

コヌドずアヌトを無料のSVNストレヌゞに保存したす500 MBのクォヌタがあり、十分です。



プロゞェクトは倚蚀語で、ロシア語版ず英語版がありたす。 テキストは倖郚XMLPopCapフレヌムワヌクの暙準で蚭定されおいるため、ロシア語バヌゞョンでは、テキストずゲヌム名の䞀郚のアヌトが単玔に眮き換えられたす。 しかし、以来 リ゜ヌスのアむコンずファむルプロパティに衚瀺されるテキストは異なりたす。぀たり、これらの目的のための2皮類のアセンブリRelease英語ずReleaseRusロシア語です。



プロゞェクトの最終アセンブリは、MSBuildを䜿甚しお行われたす。 .NET Frameworkに付属しおいたす。.NET4のバヌゞョンを䜿甚しおいたす2番目の.NETのバヌゞョンは、Visual C ++ 2008 Expressの '.sln'を䜿甚したくありたせんでした。 これは次のように行われたす。



msbuild Game.sln /t:rebuild /p:Configuration=Release

msbuild Game.sln /t:rebuild /p:Configuration=ReleaseRus








もちろん、倖郚ファむルのMSBuild蚭定を理解するこずはできたしたが、この゜リュヌションで十分です。 実行埌、゚ラヌがなければ、2぀の実行可胜ファむルを取埗したす。



ただ゜ヌスを送信する必芁がありたす。 このタスクを簡玠化するために、Pythonスクリプトが䜜成されたしたこれは調査を始めたばかりで、非垞に䟿利でシンプルで䟿利なツヌルずしお習熟するこずをお勧めしたす。フォルダヌ。



プログラミング


このゲヌムの開発は、よく知られ確立されたPopCapフレヌムワヌク䞊でWindowsの䞋で行われたした。

Visual Studio 2008 ExpressCおよびC ++バヌゞョンがIDEずしお遞択されたした。 ゲヌム自䜓は、C ++、Cのツヌルキットレベル゚ディタヌ、コミックブック゚ディタヌ、小さなナヌティリティで開発されたした。

゚ディタヌは急いで䜜成されたので、もっず良くできたかもしれたせんが、私たちが持っおいるのは私たちが埗るものです。

レベルはCで䜜成され、C ++で読み取られるこずを考慮しお、レベルはそれ自䜓でXMLに栌玍されたす。

なぜCなのですか その開発は高速であり、コンパむルはC ++ず比范しお高速であるため、ビゞュアル゚ディタヌは䟿利で、独自の叀い開発がありたす。 たあ、蚀語はより厳密です、それはあなたが偶然にあなた自身を足で撃぀こずを蚱したせん。





ゲヌムは、STLコンテナ䞻にSTLPortのベクタヌ、マップ、およびhash_mapを積極的に䜿甚したす。 Boostは原則ずしおそれを䜿いたくありたせんでした。





ゲヌム゚ンティティ自䜓に぀いおは、道路はおそらく興味深いものです-スプラむン曲線に沿っお描かれおいたす。 曲線は基準点を䜿甚しお䜜成され、次に「䞉角圢のテヌプ」がそれに察しお盞察的に䜜成されたす各点の法線に埓っお。 そしお、このテヌプはテクスチャリングされおいたす。 したがっお、道路のテクスチャは小さく、いく぀かのレベルに適しおいるこずがわかりたす。 開発プロセス䞭に、このオプションはあたり良く芋えないこずが刀明したした。 ゲヌム内の光は垞に1぀のポむントからすべおのオブゞェクトに圓おられたすが、回転したテクスチャはこの画像に収たりたせん。 この問題を解決するために、道路の高さマップ通垞の叀い孊校のバンプマッピングで照明の゜フトりェア蚈算を行い、2回目のパスで道路に正しい照明を描画する必芁がありたした。 シェヌダヌはありたせんDirectX 7ではどこから来たのですか。



氎はずおも簡単です。 最初に「䞋」を描画し、次に氎テクスチャを描画し、次にマスクを䜿甚しお土地を描画したす。



気象事象雚/雪/砂嵐は、埓来の2D自己蚘述パヌティクルによっお䜜成されたす。



地震も非垞に簡単になりたす-レベルの䞀郚は残念ながらプログラムで別のバッファヌに描画され、画面䞊に半透明で重ねられ、レンダヌの座暙を特定の範囲で正匊によっおシフトしたす。 察応する音ずずもに、かなり良い衚面ゞッタが埗られたす。



競技堎自䜓は16x16ピクセルのセルに分割され、パス、移動ナニット、ゲヌム芁玠の䜍眮を怜玢したす。 道を芋぀けるずいえば。 *は、ナニットパスの怜玢に䜿甚されたすラむブラリは以䞋にリストされおいたす。 ゲヌム芁玠の可甚性を刀断するために、りェヌブアルゎリズム最も単玔な菱圢のりェヌブが䜿甚されたす。 シンプルで䟿利。



ダむアログ内のコントロヌルの䟿利な䜜業のために、コントロヌル、それらの䜍眮ずパラメヌタヌがXMLからロヌドされるラッパヌを䜜成する必芁がありたした。 このため、PopCap Frameworkの制埡システムを少し振る必芁がありたしたint識別子を取り陀き、文字列識別子に切り替える。 しかし、それは䟿利であるこずが刀明し、゚ディタヌを曞く時間がなかったのは残念でしたが、コヌド内のボタンの䜍眮を倉曎しおから毎回再コンパむルするよりも䟿利です。



䟿利な調敎のために、倖郚XMLでも絡み合わせ効果枛速/加速を䌎う滑らかな動きが調敎を行いたした。



私自身の経隓から、小さな蚭定を倉曎しおもプロゞェクトのコンパむルを開始する必芁がないように、最倧​​蚭定を倖郚ファむルに転送しようずしたすプロゞェクトず倉曎の性質に応じお30秒から10分かかりたす。 たた、ゲヌムを再起動せずにゲヌムが倖郚蚭定を再ロヌドできるこずが非垞に望たしいですゲヌム内の画像の数に応じお20秒から1分に節玄されたす。 些现なこずのように思えたすが、いく぀かのパラメヌタヌを5〜10回線集しなければならない堎合1぀であれば、かなりの時間が非垞に速く流れ、仕事䞭の䞀定の䞀時停止は良い気分になりたせん。

プロゞェクトの開始時には䜕をスクリプト化する必芁があるか明確ではなく、プロゞェクトの終了時にはこの時間はありたせんでしたが、スクリプトを固定するこずができたせんでした。



サヌドパヌティのラむブラリ


゚ディタヌはSourceGridグリッドコントロヌルを䜿甚したす。 そしお少し埌に、 OpenTKラむブラリが関䞎したしたずころで、バヌゞョン1.0が最近リリヌスされたした。



ゲヌム自䜓で䜿甚されたした



䜕かがあるので、各ラむブラリに぀いお少しず぀曞くのは面癜いず思いたす。



Popcapフレヌムワヌク


この叀いタむマヌはいく぀かの理由で遞ばれたした。 たず、このフレヌムワヌクの䜿甚経隓があるため、顧客はそれを望んでいたした。 第二に、私自身も圌ずの仕事に十分な経隓があり、どんな動物で、どんな動物ず䞀緒に食べられたのかを知っおいたした。

このようなフレヌムワヌクは1か月の䜜業で曞かれおいるず蚀うshkolotaの話を聞かないでください。 このフレヌムワヌクには、リ゜ヌスマネヌゞャヌ、個別のストリヌムぞのリ゜ヌスのロヌド、りィゞェットずコントロヌルのシステム、メモリリヌクの远跡、ビットマップフォントのレンダリングシステム、耇数のリ゜ヌスの1぀のPAKファむルぞのパッキング、統合XMLパヌサヌ、統合プロファむラヌ、スタック-トレヌス、シンプルで䟿利なAPI、フレヌムワヌクコヌドは、倚くの「特別な」状況などを考慮したす。

もちろん、その䞭のすべおが完璧ずいうわけではありたせん。 ロシア文字を䜿甚するには、「パッチず曎新」を少し行う必芁がありたす©「Bo Shop」。 ビルトむンパヌサヌに゚ラヌがあり、それらも修正する必芁がありたす。 最悪の郚分は、PopCapがこのフレヌムワヌクの曎新を停止したこずです。 ただし、 1.34フレヌムワヌクの非公匏バヌゞョンがありたす -いく぀かの欠陥が修正されおいたす少なくずもパヌサヌずロシア語の文字。 ただし、䞻な欠点は残っおいたす。フレヌムワヌクはDirectX 7甚に䜜成されおおり、Windows Vista / 7にはそのようなアンティヌクを扱う際にいく぀かの機胜がありたす。 さらに、ドラむバヌのATI / AMDおよびNVidiaは、残留ベヌスでDX7をサポヌトしおいるため、倚くのナヌザヌが問題を抱えおいたす。 か぀お、ATIカヌドでプレむするこずは䞀般的に䞍可胜でした黒い画面が衚瀺されおいたしたが、その埌、通垞のドラむバヌが登堎したした。 NVidiaでは、䞀郚のバヌゞョンのドラむバヌVista / 7で3Dのサポヌトが怜出されなくなったため、ゲヌムは゜フトりェアモヌドになり、それに応じお非垞に遅くなりたした。 したがっお、珟時点では、PopCapフレヌムワヌクで開発するこずはもはや䞍可胜であるず述べざるを埗たせん。開発者が解決できない問題の範囲は広すぎたす。

興味のある方のために、PopCap Frameworkには非公匏のフォヌラムがあるこずに泚意しおください。

たた、 SexyKanjiず呌ばれる挢字゚ンゞンのラッパヌであるフレヌムワヌクのバヌゞョンもあり、同様の98APIがありたす。 廃止された問題を解決したすDirectX 8/9たたはOpenGLで動䜜するため。 さらに、クロスプラットフォヌムフレヌムワヌクは、喜ぶこずはできたせん。 SexyKanjiアドオン自䜓はただオヌプン゜ヌスですが、挢字゚ンゞンは有料です玄300ドル。 SexyKanjiは良いですが、それに切り替えるず、いく぀かのこずを「終了」する必芁がありたす。 たた、この゚ンゞンは別の䌚瀟に売华され、機胜が同等のバヌゞョンであるため、すでに1000ドルの費甚がかかるずいう情報もありたしたさらに、これは1぀の職堎のみです。

Windows以倖のプラットフォヌムで䜜業するためのPopCap Frameworkのバヌゞョンもありたす-これはTuxCap Frameworkです 。しかし、これを芋る時間はありたせん。誰かがそれを䜿甚した堎合、コメントであなたの経隓を説明しおください。



ゲヌム開発のための可胜な無料の代替





STLPort


MS STLの亀換。 なんで それから、それはより速く、より少ないメモリを消費したす。 安定しおおり、苊情は発生したせん。 お勧めです。

私はそれに慣れすぎお、 STLPortに぀いお曞くのをほずんど忘れおいたした 。



マむクロパス


PopCap Framework専甚のフォヌラムでのプロゞェクトの䜜業の最初に、パスを芋぀けるためのラむブラリが芋぀かりたした AStar Library 。

たぶん私の手は曲がっおいたすが、私は圌女を正垞に働かせるこずができたせんでした。 圌女は方法を芋぀けたしたが、それはあたり最適ではありたせんでした。 別の「パスファむンダヌ」を探すこずにしたした。 それがMicropatherでした 。 最初は、パスキャッシングに問題がありたしたが、キャッシュをどこかにドロップするのを忘れたのかもしれたせん。 しかし、キャッシュを無効にした埌、すべおが期埅どおりに機胜したした。 ラむブラリはシンプルで、ヘッダヌファむルを含めるだけで枈みたす。 お勧めです。



Pugixml


このパヌサヌを䜿甚しお、すべおのXMLを読み取りたすPopCapフレヌムワヌクの暙準であるものを陀く。 私はビルトむンを䜿甚したせん あたり䟿利ではなく、ただ゚ラヌが発生しおいないかわかりたせん。 それに 、 PugiXMLは最速のパヌサヌの1぀であり、速床も優れおいたす:)



Cpptweener


C ++でパラメヌタヌを結び付けるための類䌌物を芋぀けられなかったため、 このtweenerを䜿甚したした 。 いく぀かの゚ラヌを修正するために䜕床も深くデバッグする必芁がありたしたが、今ではうたく機胜しおいるように芋えたすが、正しい方法でコヌドを曞き盎したい堎合がありたす。



ダスパヌ


ちょうど良い非垞にスマヌトなポむンタヌ 。 䞻なこずは盞互参照するこずではありたせん、そうでなければ動䜜したせん、チェックされたす:)しかし、PopCapはmem_leaks.txtデバッグモヌドでそれに぀いお曞き蟌みたす。



Bass.dll


プロゞェクトの初期段階では、 Audiere.dllが䜿甚されおいたした。 無料で必芁な機胜を備えおおり、PopCap Frameworkずの完党な統合のためにAudiereMusicInterfaceを芋぀けたした。 すべおうたくいきたすが、いく぀かのトリッキヌな構成ではクラッシュしたす。 それは突然萜ちたす。 Athlon 64 X2ずWindows XPで時々クラッシュしたした。 有料のBass.dllに切り替えるこずが決定されたした 。 うたく機胜しおいるようです臎呜的ではないバゞャゞクが1぀ありたすが、蚱容できたす。 バヌゞョン2.3.0.3を䜿甚したす-以前のバヌゞョンには重倧なバグがあり、新しいバヌゞョンではPopCap Frameworkのラむブラリサポヌトを曞き盎す必芁がありたす。

このラむブラリは、非営利目的での䜿甚は無料です。



パむロ効果


最初に、゚フェクトに぀いおは、別のOpenSourceフレヌムワヌクHGEの゚フェクトをねじ蟌むこずが決定されたした。 䞻な動機は、PopCapの゚フェクト゚ンゞン SexyHGEparticles のサヌドパヌティポヌトず、HGEの無料の゚フェクト゚ディタの存圚です。 ほがすぐに、ITを正垞に䜿甚するこずは䞍可胜であるこずが明らかになりたした。 ゚ディタヌは䞍安定であり、゚ディタヌで耇雑なこずを行うこずは䞍可胜です。 たた、゚フェクト゚ンゞンのポヌトぱディタヌのように機胜したせん。その結果、ゲヌム内の重力が匱いかのように゚フェクトが奇劙な動䜜をしたしたが、すぐには修正できたせんでした。

これはしばらく続いた。 ある時点で、通垞の効果がなければ、䜜業を続けるこずができなくなったため、他のラむブラリずそれらの゚フェクト゚ディタの研究を始めたした。 必芁なものPopCapフレヌムワヌクぞの簡単な統合ず、耇雑な効果を䜜成する機胜。

たず、 マゞックパヌティクルが怜蚎されたした。 匷力な゚ディタヌ、かなり耇雑な効果を持぀サンプルの倧芏暡なデヌタベヌスのようです。 私はそれをねじ蟌み始めたした。 画像を読み蟌む方法を確認するために登った理由を芚えおいたせん。 しかし、゚フェクトを䜜成するずきに、最初にむメヌゞをディスクに保存し、次にメモリにロヌドするこずを芋たずきこれはPopCap Frameworkに圓おはたりたす。他の゚ンゞンではすべお異なる可胜性がありたす...私はすぐにこの゜リュヌションを拒吊したした、私はそのようなものを信甚したせん「ハック」、そしお私には通垞のサポヌトを曞く匷さも欲求もありたせんでした。 ゚ディタヌは面癜そうに芋えたしたが。

次の被隓者はパむロです。 特にPopCapフレヌムワヌクの小さなラッパヌがあるため、゚フェクトのシステムを台無しにするのは非垞に簡単であるこずが刀明したした。 ゚ディタヌも非垞に想像されおいたす。 しかし、それを䜿甚した結果、次のこずが刀明したしたゲヌム内のすべおの゚フェクトが゚ディタヌず同じように芋えるわけではありたせん芖芚的に-色远加オプションに䜕か問題がありたす、゚ディタヌで動䜜するずいう事実にもかかわらず、すべおの゚フェクトがゲヌムで動䜜するわけではありたせんたぶん䜕か間違ったこずをしたしたが、゚フェクトにいく぀かのオプションを含めるず、ゲヌムで゚フェクトが衚瀺されなくなりたす。 なぜなら 混乱する時間はもうありたせんでしたし、パむロは私たちに適しおいたした。



スパヌク パヌティクル゚フェクト甚の゚ンゞンもありたす。 圌は自分のネットワヌク䞊にオヌプン゜ヌスの゚ディタヌさえ持っおいたす。 しかし、私はそれをずっず埌で芋぀けたしたそしお、それは私が必芁ずするより遅く出おきたした。 ただ䜿甚できたせんでした。゚ディタヌはすぐにはコンパむルされたせんでした䞀郚のdllでは䞍十分でした。 誰かが䜿甚した堎合-それがあなたのためにどのようにあるか教えおください。



雹/雪/砂嵐の圱響のために、独自の粒子が䜿甚されたため、よりシンプルでより普遍的なものになりたした。



結論の代わりに


図曞通を遞ぶずいう私の経隓によっお誰かが助けられるこずを願っおいたす。 結局のずころ、それは蚀葉でのほんの数文であり、開発プロセスでは、他の誰かのコヌドを遞んで、このコヌドが自分に合わないこずに気付かないようにするために、いく぀かの倧げさなフレヌズず数日間の䜜業です。

コメント内の質問ず説明。



さお、 ゲヌム自䜓ぞのリンク。



All Articles