[[FrontPage>../../]] > [[GameDevelopment>../]] > [[Objective-C>./]] (Now) #title(Objective-Cでゲームを作ろう) * はじめに [#t5fd40b1] Macユーザなら、Objective-Cでしょ!~ てなわけで、Objective-Cでゲームを作っていこうと思います。~ 今(2009.09現在)、NowでHotなiPhoneでの開発がメインになってくると思います。 *Contents [#i6b52d75] **iPhoneでRPGを作ろう! [#d154f537] *** まずは戦闘システムから! [#m97bd197] いきなりでドびっくりですが、まぁ、戦闘システム作りましょ、楽しいし。 +仕様~ テキストベースで、シェイクとかタッチとかで進める、ドラクエ風味な感じのやつを作ります。~ ~ +まずはリサーチ~ Objective-Cで、同じようなプログラムが落ちていないか探してみます。~ 日本語のドキュメントは、残念ながらなさそう。~ ただ、英語のドキュメントはありました。海外レベル高い。~ あれ、肝心のRPGのソースコードはないなぁ...。~ 自分で作れってことですね、はい、最初からわかってました(笑~ ~ +アイディア~ ++メインループ中で、デバイス操作を通知し、それに伴う動作を行う。~ これだけだわ。簡単簡単...たぶん。~ ~ +やってみよう!~ なにはともあれ、作ってみないと始まらない。~ XCodeを起動して作成開始〜です。~ ++NSLogで動く、テキスト戦闘~ iPhoneSDKで、わっけわかんねー!!となる前に、まずは戦闘システムを作ってしまいます。~ ま、ここさえできれば、あとは表示するにはどうするか考えるだけなので、6割完成としていいでしょう。~ ***開発中メモ [#fbc57e96] -UIWindow~ -UIViewController - init~ loadVIew: ~ 子となるUIViewオブジェクトを作成して、それをViewControllerにアンカーする。~ つまるところ、ここで表示するオブジェクトのインスタンス化を全部行ってしまえばいいのかな? -UIView - initWithFrame:CGRect...~ サイズ指定必須~ インスタンス化されると、[drawRect(): (CGRect)_rect]が自動的に呼び出される。 -テキストを残しておきたい場合のアイディア~ スクロールしていくテキスト(チャットみたいな)を作る場合、配列に入れて、ある程度たまったら消していく...~ あっ!スタック使えば良いんだ!~ なんだ、そうかそうか。 ***遭遇したエラーと、解決策一覧 [#w580b4df] - error: request for member in something not a structure or union - 構造体、共用体ではないなにかがメンバーとしてリクエストされています -- ポインタ関連のエラーみたいなのですが、実は使い方は間違っていませんでした。~ ただ、UIView に loadView() を実装していた管理人が馬鹿なだけです...orz~ loadView() は、UIViewController のインスタンスメソッドだってーの...。 - 表示されない! - [UIView addSubView:] の使い方 -- なんか、おかしい。おかしいぞ、表示されない。~ と、おもったあなた。~ とりあえず、インスタンス化したついでに、addSubView: を使って既に表示されているViewに、サブビューとしてアンカーしましょう。 - 表示されない! - アンカーする対象の違い -- addSubView: するにも、どこにアンカーすればいいの?~ とりあえず、ソースコードを見ると、self.view と self の違いがある。~ これらの違いは、そもそもなんなのか?~ viewプロパティについて調べてみた。~ UIViewControllerクラスのプロパティで、そのコントローラが管理しているUIViewのことみたい。~ ほいでは、どうするのか。~ とりあえず、おまじない的な法則としては...addSubView: のアンカー先は~ 1. UIViewControllerでは self.view を使う。~ 2. UIViewクラスでは、self を使う。~ でいいみたい。 - やったー!Viewインスタンスが表示されたー!けど、ずれてるぞー! - applicationFrames と bounds の違い -- この2つのパラメータをいじる!(笑 - UIInterfaceOrientationって、どうつかう? -- 実は、UIViewでは、回転する度に[drawRect:]が呼ばれているのだった!~ で、肝心の使い方はよくわからない!!(笑~ 向きとか云々の前に、回転する方向とかを定義するものなのかな?~ 加速度センサとかセンサ類のHackのときに調べてみたいと思う。 - Tocheで関数を起動したい -- UIView は、UIResponder というクラスを拡張しているので、何もせずにタップイベントを受け取るみたい。~ ただ単にクリックを実装するだけなら、UIResponder クラスにある touchesBegin: という関数をOverride 定義すればよい!~ - Touch Event を受け取ってくれないよー - UIView. - UIAlert が実機でうまくいかない! - なにか忘れていませんか? -- UIAlertのオブジェクトには、必須の委任クラスがあります。その名も...。~ alertView:clickedButtonAt: というメソッド。~ これを必ず実装しないといけないみたいです。 *リンク [#x7cdeb8f] ** iPhone Development 関連 [#e033c4fa] - [[iPhone Dev SDK - The Communit for the iPhone developer community:http://www.iphonedevsdk.com/]] -- 英語だけど...。~ Errorの対処方法とか調べるときに。 ** iPhone Game Development 関連 [#u67d7a5a] -[[iCodeBlog:http://icodeblog.com/]]~ --[[Category iPhone Game Programming:http://icodeblog.com/category/iphone-game-programming/]]~ ---[[iPhone Game Programming Tutorial – Part 1:http://icodeblog.com/2009/01/15/iphone-game-programming-tutorial-part-1/]]~ ---[[iPhone Game Programming Tutorial Part 2- User Interaction, Simple AI, Game Logic:http://icodeblog.com/2009/02/18/iphone-game-programming-tutorial-part-2-user-interaction-simple-ai-game-logic/]]~ ---[[iPhone Game Programming Tutorial Part 3 – Splash Screen:http://icodeblog.com/2009/03/18/iphone-game-programming-tutorial-part-3-splash-screen/]]~ ---[[iPhone Game Programming Tutorial Part 4 – Basic Game Audio:http://icodeblog.com/2009/05/04/iphone-game-programming-tutorial-part-4-basic-game-audio/]]~ ---[[iPhone Programming Tutorial: Animating A Game Sprite:http://icodeblog.com/2009/07/24/iphone-programming-tutorial-animating-a-game-sprite/]]~ -[[iPhone Development Tutorials and Programming Tips:http://maniacdev.com/category/opengl-es-game-programming/]]~ --[[Cocos2D Game Engine:http://mitchallen.com/iphone/archives/254]]~ 使えそうなライブラリを発見。英語圏はすごいなぁ。~ --[[Incredible iPhone Game Programming Tutorials With Video:http://maniacdev.com/2009/07/incredible-iphone-game-programming-tutorials-with-video/]]~ なんと動画で、チュートリアルが!英語圏はすごいなぁ。~ --[[The Commercial iPhone Game Engine Comparison (3D and 2D):http://maniacdev.com/2009/09/the-commercial-iphone-game-engine-comparison-3d-and-2d/]]~ 商用ゲームエンジンの比較ですって!英語圏はすごいなぁ...orz~ ** Webサーフィン中に見つけたリンク [#uf9a76e7] -[[おなかがすいたWiki iPhoneSDK:http://wiki.onakasuita.org/pukiwiki/?iPhone%20SDK]] --ふむ、よいリンク集? -[[iPhone/Touch コーディング方法 覚え書き Top - クラスの継承関係:http://www.urawaza.jp/iphone/touchwiki/index.php?%A5%AF%A5%E9%A5%B9%A4%CE%B7%D1%BE%B5%B4%D8%B7%B8]] --クラス階層についての記述があったので、Bookmark! -[[iPhoneSDK他いろいろ 開発メモ:http://d.hatena.ne.jp/uosoft/20090817/1250435305]] --使えるTips集!先人の方々の取り組みには頭があがりません。負けないぞ。 * 参考文献 - もっているもの [#cdd65a06] ** Objective-C 書籍 [#b31452a3] -[[詳細Objective-C2.0 - 荻原剛志著 2008.06.01 Softbank Criative:]] -- もはや語るまい。神本。 ** iPhone SDK 書籍 [#g2a13d6c] -[[iPhone SDKの教科書 Cocoa Touch プログラミング、最初の一歩 - 赤松正行著 2009.05.25 秀和システム:]] -- 初歩の初歩を学ぶなら、これ!~ Interface Builderに習熟できると思う。 -[[iPhone SDK アプリケーション開発ガイド - Jonathan Zdziarski著 近藤誠監訳 2009.09.02 O'Reilly Japan:]] -- 良すぎるくらいの本。~ Interface Builderで開発したくなかった、管理人はここでその術を学びました!(笑