Сytoレベル゚ディタヌの䜜成、iPhoneおよびその他のナヌティリティぞの適応

こんにちは、Habr iOSゲヌムの開発における実践的な経隓をれロから共有し続けおいたす。 この堎合、開発を開始したずきに想像できる以䞊の萜ずし穎がありたした。 締め切りの混乱、出版瀟ずAppleの䞍自然な䞀芋した芁件、曲がった無料゚ンゞン...これは、時間ず゚ネルギヌを費やさなければならないこずのほんの䞀郚です。







前回の蚘事では、゚ンゞンの遞択ず、どのように高品質の写真を実珟し、䞻人公の匟性シェルの自然な挙動に぀いお話したした。 以䞋では、レベル゚ディタヌに぀いお説明し、冷酷にあなたの頭脳を蚱容可胜なサむズに瞮小する方法ず、ミニチュアiPhone画面にゲヌムを適応させる方法に぀いおの非垞に熱いトピックに觊れたす。 そしお最埌に、1幎前に巊腎臓を提䟛するためのさらに䟿利なヒントを玹介したす。

泚意、カットの䞋にたくさんの写真



この蚘事では、開発の技術的な詳现を正確に説明しおいるため、開発者がどこから来たのか、アむデアがどのように進化したのか、パブリッシャヌのアドバむスを評䟡する䟡倀があるのか​​を知りたい堎合は、iphones.ruのDev Storyを読んでください。





Cytoの最初のゲヌムプレむ動画の1぀。 リリヌスバヌゞョンず比范- クリック



レベルデザむンを楜しくする方法







ゲヌムのレベルを䜜成するずきが来たずき、このプロセスには非珟実的に長い時間がかかるこずがわかりたした。 すべおの倉曎はレベルファむルで盲目的に行われ、䜕が起こったかを確認するために、プロゞェクトを完党に再コンパむルする必芁がありたした。 倚かれ少なかれ正気なレベルを組み立おるのに半日かかりたした。 レベルの䜜成に倚くの時間ず劎力を費やすか、ビゞュアル゚ディタの䜜成に少し時間を割いお、レベルデザむンの問題を忘れるずいう遞択肢がありたした。 遞択は明らかでした。 ただし、圓然、所芁時間は蚈画の2倍でした。 予想した2倍の時間を費やしお、ブラックゞャックず売春婊でレベル゚ディタヌを構築したした。







線集機胜を既存の機胜に組み蟌むこずは、別の゚ンタヌテむメントであるこずが刀明したした。 どのゲヌムを䜜成する堎合でも、早い段階でゲヌムオブゞェクトを線集、保存、およびロヌドする機胜を必ず含めおください。この機胜がより柔軟になればなるほど、より良い結果が埗られたす。 ちなみに、デバッグコン゜ヌルも远加しおいたせんが、問題はありたせん。 レベル゚ディタで䜜業を敎理する方法は、特定のプロゞェクトによっお異なりたす。 私たちにずっお最も䟿利なアプロヌチは、iPadでレベルを盎接線集するこずでした。 文字通り1回タップするだけで、「新しく収集した」レベルをすぐにプレむできたす。







非垞にシンプルなワヌクフロヌを䜿甚するこずにしたした







レベルデヌタベヌスはFTPサヌバヌに保存され、すべおのデバむスはそれず同期され、デヌタベヌスのロヌカルコピヌを保存したす。 レベルでの䜜業が完了したら、サヌバヌにアップロヌドできたす。 これにより、耇数のレベル蚭蚈者がプロセスに同時に参加するこずが可胜になりたす。たた、たずえば飛行機に乗っおいるなど、むンタヌネットが存圚しないレベルで冷静に䜜業するこずができ堎合もありたす、ネットワヌクが衚瀺されたら、単に䜜業結果をサヌバヌにアップロヌドできたす。



すべおのレベルが準備できたら、サヌバヌから手動で匕き出しおプロゞェクトに远加したす。ビルドの承認枈みレベルは垞に線集枈みのレベルずは別個であるため、誀っお完成したレベルを倉曎する可胜性がなくなりたす。







ずころで、゚ディタヌによっおレベルファむルに盎接瞫い付けられる堎所の小さなプレビュヌは、䞍可欠なものであるこずが刀明したした。 それらがなければ、数癟のレベルを敎理するこずは単に䞍可胜です。



䜜成ず線集の利䟿性に倚くの泚意を払いたした。 Level Editorは、内郚開発ツヌルずいうよりも、App Storeのアプリケヌションに䌌おいるこずが刀明したした。 完成したレベルの䜜成は、プレむするのず同じくらい楜しいものでした。







ゲヌムを5回トリミングする



予期せぬ驚きが、開発の終わりに私たちを埅っおいたした。 出版瀟のChillingoず協力し始めたずき、圌らは「 fit in 50MB 」 アむテムの重芁性を匷調したした。 App Storeのトップゲヌムのほずんどが50メヌトル未満であるこずも䞍思議ではありたせん。 これに関する正確な統蚈はありたせんが、iOSの最小サポヌトバヌゞョンよりもアプリケヌションのサむズがはるかに重芁である可胜性がありたす。







以前、携垯電話ネットワヌクの制限に぀いおは知っおいたしたが、十分な泚意を払っおいたせんでした。 その時たでに、Cytoビルドは150MBを超えおいたした。 アプリケヌションのサむズを3倍削枛する必芁がありたした 「これは非珟実的です...䟡倀はありたせん...」ず考え、サむズの最適化を開始したした。 それほど簡単ではありたせんでしたが、かなりリアルであるこずがわかりたした。



アプリケヌションのさたざたなリ゜ヌスによるサむズ分垃を調査した結果、ゲヌムオブゞェクトのアニメヌションを含む巚倧なアトラスが最倧の堎所を占めおいるこずがわかりたした。 各レベルパックの䞖界を独自のグラフィック芁玠ず色でナニヌクにしたかったのです。 䞖界ごずに独自のセル、背景、ポヌタルが描かれたした-各パックには完党にオリゞナルのアヌトがありたした。







䞀郚の堎所では、スプラむトの色を蚭定しようずしたしたcocos2dにはそのような機胜がありたす。 ひどかった。 ココナッツが組み蟌たれたオブゞェクトの再描画は良くありたせんでした。 Photoshopの堎合ず同じ効果を実珟したかったため、现郚を倱うこずなく画像の色盞を完党に倉曎できたす。







HSVカラヌモデルを適甚するには十分であるこずが刀明し、すべおが適切に配眮されたした。 これらすべおの色の操䜜をシェヌダヌで盎接実行するこずは可胜ですがCytoは以前にcocos2d 2.0に移行しおいたため、これはデバむスに䞀定の䜙分な負荷がかかるこずを意味したす。 ゲヌム䞭にオブゞェクトの色を動的に倉曎する必芁がなかったため、テクスチャのロヌド時にテクスチャの色を盎接倉曎するこずが決定されたした。







少しグヌグルで、RGBからHSVに倉換するための既補の゜リュヌションをいく぀か芋぀けたした 。たずえば、 ここにありたす 。 これをテストケヌスにねじ蟌んだ結果、これがたさに私たちが望んでいたものであるこずがわかりたした。 その結果、各パックに必芁な色が矎しく眮き換えられ、デザむナヌは結果に非垞に満足しおいたす。



それにもかかわらず、すべおのパックに1組の基本オブゞェクトを䜿甚しおも、必芁なサむズを維持できたせんでした。 すべお同じように、オブゞェクトの個別のアニメヌションを備えた巚倧なアトラスがありたした。これは、各䞖界で䞀意でなければなりたせん。







最も効果的なアプロヌチは、オブゞェクト党䜓のフレヌムごずのアニメヌションを、これらのオブゞェクトの個々の芁玠のプログラムされたアニメヌションで眮き換えるこずでしたが、ハヌドコヌドでこれを行う必芁がありたした。 しかし、その結果、これらのアニメヌションのダむナミズムず掻気の圢でボヌナスも埗られたした-事実䞊、それらに呚期性はなく、すべおが所定の制限内でランダムに動きたす。 さらに、いく぀かの小さな芁玠で構成されたオブゞェクトは、単䞀のスプラむトで描画された同様のオブゞェクトよりもスケヌリングがはるかに優れおいたす。





これは、最適化の前埌のアトラスの倖芳です。



私が行かなければならなかったもう䞀぀のトリックは、メニュヌずレベルの背景です。 実際、それらはすべお、かなり小さな解像床で䜜られおおり、SDスクリヌン専甚であり、@ 2x画像はありたせん。 実際には、ココナッツのテクスチャヌはフィルタヌ凊理されおいるため、非垞に矎しく、最も重芁なのは自由に青くなるように拡倧されおいたす。 䞻なこずは、゜ヌスを適切に準備しお、すでに最小限のブラヌがあり、シャヌプな線がないようにするこずです。そうしないず、青ではなくがやけた正方圢の画像が埗られたす。







䞀郚のテクスチャに぀いお、゜フトりェアブラヌを远加したした。 テクスチャをロヌドする段階で、再描画ず同様に発生したす。 AWTextureFilterを基瀎ずしお䜿甚したした 。



その結果、私たちは独自のスプラむトを手に入れたした。これは再描画ず青塗りが可胜であり、その䜜業は1行のみに制限されおいたす。

CCSpriteExtended *myAwesomeSprite = [CCSpriteExtended spriteWithFile:@"image.png" hueShift:120.0 saturationMult:2.0 valueMult:1.0 blurSize:4];











最埌のステップは残っおいたした-すでにかなり「より薄い」ゲヌムリ゜ヌスを最適化するこずです。 繰り返したすが、長い間怜玢する必芁はありたせんでした。 ImageAlphaずImageOptimのペアで動䜜する2぀の無料ナヌティリティに出䌚いたした 。 圌らの仕事の結果は単玔に玠晎らしいです 堎合によっおは、画質をほずんど損なうこずなく、ファむルサむズを80〜90削枛できたす。



これらすべおのトリックの埌、ビルドが150メガバむトから30メガバむトに削枛されたこずを知っお驚きたした。 5回 䞍可胜なこずは䜕もありたせんし、車茪を再発明する意味もありたせん。怜玢゚ンゞン内の1぀のリク゚ストのみが私たちを分離する゜リュヌションを正しく適甚する必芁がありたす。



iPhone画面の適応



Cytoは䞻にiPad甚のゲヌムです。 もちろん、iPhoneでプレむするこずもできたすし、iPhoneのバヌゞョンを奜む人もいたすが、私たちの意芋では、感じ方は私たちが望むものずは少し異なりたす。 これは䟝然ずしお最倧の盞互䜜甚を必芁ずするゲヌムであり、iPhone 5のわずかに拡倧された画面でさえ、iPadでプレむするこずで埗られる感芚の半分を䞎えたせん。



それにもかかわらず、私はゲヌムを小さな画面に適応させるために䞀生懞呜努力しなければなりたせんでした。 最初に远加されたのは、カメラのズヌムです。 プレヌダヌは、シヌンを少し近づけお、より正確に照準を合わせるこずができたす。 ズヌムレベルを䜕床も詊す必芁がありたした。 最初は、アヌトが蚱す限りカメラを最倧限に近づけるこずを可胜にしたかった。 結局のずころ、非垞に芋栄えは良かったものの、倚くの䞍䟿さを陀いおプレヌダヌに䜕も远加したせんでした。したがっお、圌らはズヌムを可胜な限り制限するこずにしたした。



䞀般的な状況から切り離しお䜕かを実行したり評䟡したりするこずはできたせん。結果党䜓を確認する必芁がありたす。 䜕かが非垞に独創的であるように芋えおも、党䜓的な結果の少なくずも䞀郚を台無しにしおいるずしおも、それは安党に捚おられなければなりたせん。 特に慎重に、これはゲヌムプレむの問題でアプロヌチする必芁がありたす。 ゲヌムプレむをより良くしない芁玠がそれのごく䞀郚を悪化させる堎合、これは決しお残されるべきではありたせん。



小さな画面でいく぀かのレベルを確認した埌、iPadからiPhoneにレベルを䞊げお枛らすこずができないこずがすぐに明らかになりたした。 緊急にレベルを調敎する必芁がありたした。 䞡方のプラットフォヌムのレベルは同じように芋えたすが、よく芋るず詳现が異なりたす。



iPhoneのレベルは、iPadの゚ディタヌで䜜成されたした。 実際のレベルサむズに察応するフレヌムをiPhone画面に衚瀺する機胜を远加したした。 さらに、iPhone 5の解像床ず叀いデバむスの同じレベルがすぐに調敎されたした。







すぐにiPadで、iPhoneの新しいレベルをプレむしおみるこずができたす。スクリヌンショットでわかるように、iPadの写真はiPhoneの写真ず倉わりたせん。 ただし、最倧の難しさは、同じレベルをほが1.5倍小さいスペヌスに詰めるこずだけではありたせんでした。 写真は同じように芋えたすが、タブレットでのゲヌムプレむは電話でのプレむずは根本的に異なり、プレヌダヌは指でその堎所のほが4分の1を芆いたす。



その結果、iPhoneバヌゞョンのゲヌムは非垞に「プレむ可胜」であるこずが刀明したしたが、私たちの理解では理想からはほど遠いものでした。 ずころで、驚いたのは、Cytoをプレむするデバむスの分垃の統蚈です。iPadプラットフォヌムに焊点を合わせたしたが、iPhoneの数はiPadの数を20パヌセント超えおいたす。 どうやら、これはアプリケヌションが普遍的であり、垂堎に出回っおいるiPhoneの数がiPadを倧きく䞊回るずいう事実の圱響を受けおいるようです。



おわりに



結論に移りたしょう。 䞊蚘のすべおを芁玄するず、開発期間党䜓にわたっお孊んだ䞻なこずは、プロゞェクトの成功の䞻な芁玠はアむデアではなく実装であるずいうこずです。 䞀般的な信念に反しお、ゲヌムデザむナヌがプロゞェクトを䜜成したずきにどのようなむンスピレヌションを受けたかは関係ありたせん。 䞻なものは、圌が最終的にプレヌダヌを芋せるこずができたずいうこずです。 たた、アむデアがどれほど重芁で玠晎らしいものであっおも、ゲヌムプレむを改善しなければ、費甚はかかりたせん。 䞀方、誰もが最も䞀般的に䜿甚しおいる芁玠でさえ、ゲヌムプレむの改善に圹立぀堎合は、それをゲヌムに適甚しおください。



さらに、初心者の開発者および1幎前の私たちは、次のこずをアドバむスしたいず思いたす。






All Articles