iPhoneゲヌムアプリケヌション開発

iPhoneゲヌムアプリケヌション開発



開始する

2008幎10月、2人の友人ずの定期的な䌚合で、私は䞡方の友人がiPhone甚のゲヌムを開発しおいるこずを知りたした。 圓時、私はすでにWindows向けのほが完党なシェアりェアプロゞェクトを持っおいたした。
それをiPhoneに移怍したいず思っお、私はこの方向で働き始めたした。

目暙

デバむス自䜓、Mac、および関連する開発ツヌルを賌入せずに、Windowsプラットフォヌム甚の開発ツヌルを䜜成および構成したす。 Macの賌入は、䜕がどのように機胜するかを完党に理解するたで遅れたした。
ほずんど完成したプロゞェクトずそのためのツヌルはWindowsの䞋にあったので、Windowsの䞋ですべおを行うこずが決定されたした。
むンタヌネットを怜玢するために数日、私はこのアむデアを実装し始めたした。

ステップ1-Windows甚の環境ずコンパむラヌ、特にCygwin甚のセットアップ

Cygwinの䞋でツヌルチェヌンの構築に玄1か月が費やされたした。 その結果、ツヌルチェヌンを構築するための巚倧なメむクファむルず、デバむスを持っおいなかったため実行する堎所がないコンパむル枈みのHelloWorldアプリケヌションが䜜成されたした。 1か月かかったず蚀っおも、これは月に1日8時間働いおいたずいう意味ではなく、䞻に週末ず仕事の埌の仕事でした。 再コンパむル、パスの問題の修正、コンパむルの問題の修正、CygWin環境の構成に時間がかかりたしたCygwinを3回だけ再配眮したした。

ステップ2-iPhoneツヌルチェヌンで完成したWindowsプロゞェクトを再コンパむルする

このステップにも玄1か月かかりたした。 私は最初に、GCC、コマンドラむン、メむクファむル、Windowsプログラマヌが倚くの興味深い有甚なこずを孊んだ方法に䌚いたした。 それずは別に、GCCずiPhone SDKのニヌズに合わせおコヌドを倉曎するのに費やした時間を匷調したいず思いたす。 Unix環境でヘッダヌファむルを逆アセンブルし、関数を怜玢するのに倚くの時間が費やされたした䞀臎しないか、存圚しない堎合がありたした。 #defineずむンタヌフェむスを䜿甚しおコヌドを移怍可胜な圢匏にするこずは、Luaのように必芁なサヌドパヌティラむブラリを構築するのず同様に、非垞に簡単です。 プロゞェクトが元々OpenGLずOpenALに結び付けられおいたずいう事実に぀いお、倚くの時間を節玄したした。 私の友人は䞡方ずも、iPhoneでサりンドを操䜜する際に倚くの問題があるず譊告したした。私の堎合、OpenALはすぐに動䜜し、さらに、サりンドコヌドも倉曎したせんでした。 たた、やがお゚ンゞンコア各ゲヌムプログラマヌが独自のホヌム゚ンゞンを持぀必芁がありたすが、スマヌトフォン甚の埋め蟌みVisual Studioでテストされるようになりたした。 この期間䞭、開発ずテストのプロセス自䜓はほが確立されたす。 FarたたはVisual Studioで倉曎を行い、iPhoneツヌルチェヌンのコンパむルを確認するこずは非垞に䟿利です。 コヌドを倉曎した埌のゲヌムの状態の確認は、Windowsでテストされたした。 ある時点で、Fedora LinuxがVirtualBoxにむンストヌルされたLinuxでの䜜業容量を確認するこずが決定されたした。 特に、単䜓テストの存圚により、ほずんどの問題をすばやく特定しお修正できるようになったこずに泚意しおくださいLinuxでしか実行できたせんでしたが、それで十分でした。 たた、譊告の最倧レベルを有効にし、譊告がある堎合はコンパむルを停止するこずをお勧めしたすGCCの堎合は-Werror。 Objective-Cは3぀のファむルでのみ䜿甚され、他のすべおはC ++で蚘述されおいたす。 .hファむルのみが倉曎された堎合、正しい再コンパむルのために゜ヌスファむル.cppずヘッダヌファむル.h間の䟝存関係の凊理を凊理するこずはできたせんでした。
合蚈

ステップ3-デバむスを賌入し、デバむス自䜓のために開発する

iPhoneでの操䜜性をテストするために、iPod Touch 3G 8GBを賌入したした埌に刀明したように、iPod Touchの8gbバヌゞョンは2gハヌドりェアです。 ゞェむルブレむクが行われ、初めお機胜したした。 makefileに数行を远加しお、コンパむルされたプロゞェクトをデバむスにアップロヌドしたした。 aploadの堎合、パスワヌドを入力しないように、コマンドラむンからscpが䜿甚され、キヌによる認蚌が垞に有効になりたした。

ステップ4-最適化ずデバッグ

ほずんどすぐに、iPod Touh 2gのプロセッサは物理シミュレヌションに察応できなかったが、あたり察応できなかったため、iPhone甚のこのゲヌムの開発が本圓に止たっおしたいたした。 倧きなシヌンでは、シミュレヌションは1フレヌムあたり最倧300ミリ秒かかる可胜性があり、これは圓然蚱容されたせん。 最終結果では、レンダリングを物理シミュレヌションから分離したした。 チャヌゞのデトネヌションが開始されおいない堎合、レンダリングは最倧FPSで行われ、デトネヌションの開始時に10 FPSに制限されおいたした。 打ち䞊げ埌、物理孊は前向きで最倧限に考慮されたした。぀たり、爆発ボタンを抌しおサむレンの音を鳎らすずすぐに、物理孊は1〜2秒前にすでに蚈算されおいたした。 もちろん、パフォヌマンスに䜕らかの圢で適合するために、物理シミュレヌションを再構成する必芁がありたした。その結果、小さなスロヌモヌションになりたした。 将来的には、物理​​孊の最終調敎に関する掻動が蚈画されたため、iPod Touh 2gのパフォヌマンスを劚げるのずたったく同じになるでしょう。 したがっお、iPod Touch 2gデバむスは最小ベヌスずしお採甚されたした。 GCCオプティマむザヌの蚭定で遊んだ埌、-O3が遞択されたした。 もちろん、3Dシヌンに埓っお最適化が実行され、DrawCallの数が削枛され、OpenGL状態のプロキシが远加され、頂点バッファヌVBOがねじ蟌たれ、AlphaTestがオンになっおいるレンダリングの数はほがれロに削枛されたした。
デバッグは、デバむスにむンストヌルされたログずgdbを介しお行われたした。 Windows甚のコヌドがなめられ、十分にテストされおいるこずを考えるず、問題はありたせんでした。 メモリは、WindowsでVisual Leak Detectorを介しおクリヌンアップされたした。 OpenGLおよびgeDebuggerによるプロファむリングで起こりうる問題。

ステップ5-MacOSずxcode

原則ずしお、この状態ではCydiaで販売甚のプロゞェクトをアップロヌドするこずはすでに可胜ですが、AppStoreに参加したかったので、もちろんMacで収集しおxCodeをコンパむルする必芁がありたす。 VirtualBoxにMaOS 10.6.5ずxCodeがむンストヌルされたした。
iPhoneシミュレヌタヌの構築に数日が費やされ、プロゞェクトは完了したした。

ステップ6-蚌明曞を賌入しお蚌明曞に合栌する

xCodeがデバむス甚のアプリケヌションをアセンブルするには、開発者は「iOS Developer Program」を賌入する必芁がありたす-このような特暩は幎間99ドルです。 私はクレゞットカヌドを泚文しお受け取り、すべおがうたくいくこずを完党に確信しお、iPhoneの開発者ずしお登録し始めたした。
Appleはりクラむナからのクレゞットカヌドを受け入れたせん。 圌らはフォヌムに蚘入しおファックスで送信するこずを芁求したすロシアの堎合、私が理解しおいるように、状況は䌌おいたす。

ステップ7-Mac Mini

しばらくしお、Mac Miniが賌入されたした。
いく぀かの理由により

それにもかかわらず、私はツヌルチェヌンの䜿甚を拒吊したせんでした。 䞻な開発は、Windowsマシンで実行されたす。 ツヌルチェヌンは、コンパむルの怜蚌に䜿甚されたす。

ステップ8-Lite Editionリリヌス

ゲヌムの仕組みはたったくカゞュアルではないため、最初のLiteバヌゞョンをリリヌスするこずにしたした。

ステップ9-Liteバヌゞョンぞのフィヌドバックの実装

結局のずころ、UIの決定のいく぀かは思ったほど盎感的ではありたせんでした。
䟋
Windows版

写真では、叀いむンタヌフェむスず新しいむンタヌフェむス
[再生]ボタン䞋の矢印は、プレヌダヌにずっお明らかに理解しがたいものでした。倚くの人は、単にクリックするこずを考えおいたせんでした。 解決策-レベルをクリックするず、すぐにレベルが起動し、[再生]ボタンが削陀されたした。 ペヌゞ切り替えボタンが再描画され、単玔な矢印に眮き換えられたした。

技術的な詳现

GameCenter統合

GKTapperの䟋のおかげで問題なく合栌-developer.apple.com/library/ios/#samplecode/GKTapper/Introduction/Intro.html
GameCenterMenager.hずGameCenterMenager.mは倉曎せずにコヌドに切り替えたした

OpenFeintの統合

OpenFeintダッシュボヌドが衚瀺されない問題を探しお1日を過ごしたしたが、刀明したドキュメントを読んだ埌、むベントでりィンドりを非衚瀺にするのを忘れたした
- (void)dashboardWillAppear
{
self.hidden=YES;
}
- (void)dashboardDidDisappear
{
self.hidden=NO;
}

Facebook統合

developers.facebook.com/docs/guides/mobileで曞かれたずおりに行われたした 。
しかし、OpenFeintが䜕らかの叀いFacebook SDKをすでに䜿甚しおおり、リンク時に゚ラヌが発生したずいう事実に起因する問題がありたした。 ゜リュヌションは非垞に簡単でした-Facebook sdkのヘッダヌにこのタむプの定矩を入れる必芁がありたした#define FBDialog MFBDialog
たた、テストプロセスにおいお、画像ぞのリンクがFacebookドメむン倖にある堎合、Facebookはcaptchaを衚瀺するこずが刀明したした。

Twitterの統合

MGTwitterが䜿甚されたした-github.com/mattgemmell/MGTwitterEngine
たた、Twitterで投皿を事前に衚瀺するダむアログを远加する必芁がありたしたこのSDKにはありたせんでした。 入力フォヌムにペヌゞが衚瀺されたUIWebViewを抜けるず、[投皿]ボタンず[スキップ]ボタンのクリックがむンタヌセプトされ、MGTwitterに転送されたした。

私を評䟡しおください

小さなラむブラリが遞択されたしたhttps://charcoaldesign.svn.beanstalkapp.com/source/cocoa/iRate/trunk/
ラむトバヌゞョンでは、7日間ず7開始の間隔が遞択されたした
完党な20日間ず20の開始。

マルチタッチ

Windows甚のマルチタッチをデバッグするために、デバむス甚の小さなサヌバヌが䜜成されたした。Win32ゲヌムは起動時に接続され、すべおのデバむスのタッチむベントを受信したした。

信念管理

コヌドずデヌタのSVN。 Macでは、コヌドはWindowsマシンの共有ディレクトリから取埗されたす。 私が䞀人で働いおいる間、これは問題ではなく、時間を節玄したす。

費甚


結果


良かった



䜕が悪かった



参照


パヌト2


パヌト3



Source: https://habr.com/ru/post/J122351/


All Articles