サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
tf.hateblo.jp
今回はUnityのLOD (Level of Detail)機能を使い、ポリゴンが細かいモデル、中間のモデル、荒いモデルを自動的に切り替えて不要なポリゴン数を抑える実験をしてみました。 LOD機能を使用するには、まずBlenderでポリゴン数の異なる複数のモデルを準備する必要があります。 Blenderには自動的にポリゴンを間引いてくれるDecimate Modifierというモディファイアーが用意されていますが、CR-Xの場合それほど上手には間引いてくれなかったので手動でポリゴンを削っていきます。 基本的にはDissolve Edgesでエッジを消して両隣のフェースを繋げていく作業を繰り返し、できるだけ元の形状を崩さぬように作業します。ポリゴンを消すことでUVが乱れるので形が崩れた部分は適宜Unwrapして配置し直します。 元の細かいモデルのTrisの数は7198です。 中間のモデルでは
これまでゼンリンのJapanese Otaku Cityという、秋葉原をモデルにした街をベースにレースゲームを作ってきましたが、自分の街を作ることにしました! 建物のモデリングが90個くらい完成したので適当に並べてみたのがこれです。 植物の緑が一切ないので殺風景ですね。 現時点ではJapanese Otaku Cityの地面を流用していますが、いずれは地形も自分で作る予定です。 Japanese Otaku Cityはかなりのデータ量、かつマテリアルをふんだんに使用しているため、モバイル用としてはなかなか厳しいものがあります。 もちろん、これを使ったiOS用ゲームはレースゲームも含めたくさん出ていますので使い方、用途次第だと思いますが、私のゲームではJapanese Otaku Cityの使用を諦め、自分で街を作ることにしました。 マテリアル(=テクスチャ)の使用をできるだけ少なくしてBa
前回、高速化のためにライトマップを焼いて見ようなどと書きましたが、実際に秋葉原の街全体を焼いてみるとMacBook Proの4コアフル稼働で数時間かかりました。真夏にファン全開でうなるMacを見るのはつらいものがあります。 そして、ライトマップを焼いた結果、ビルの壁のテクスチャーが何故かボロボロの廃墟のようになってしまいました。 という訳で、ライトマップは一旦あきらめました。 さて、今回はAE86のボディに周囲の景色を映り込ませてみました。 Reflection Probeコンポーネントを付けたEmptyゲームオブジェクトをゲームシーンのあちこちに配置し、街のオブジェクトのReflection Probe Staticにチェックを入れれば準備OKです。 このゲームではコース上にマーカー用のゲームオブジェクトを置いているので、その子オブジェクトとしてReflection Probeコンポーネ
ここ1週間はプログラミングから少し離れ、レースゲーム用の車のモデリングにチャレンジしていました。 初モデリング用に選んだ車はAE86トレノです。イニシャルDでおなじみのパンダカラーのあれです。 自分が学生の頃はまだイニシャルDは始まっていませんでしたが、AE86トレノやレビンは貧乏学生の間では人気でした。 今回モデリングに使用した3DCGツールは、これまた財布に優しくて高性能で人気のBlenderです。 Unityもそうですが、こんなに素晴らしいツールを無料で使えるというのは私のような個人開発者には非常にありがたいことだと思います。 とりあえず試行錯誤の末完成したのがこちら。 90年代のゲームのようにポリゴン丸出しです。 スムーズシェーディングを掛けるとディテールが全て溶けて無くなってしまうので今はフラットシェーディングにしています。下のスムーズシェーディング適用時の画像ではドアパネルを前
ミッドナイトクラブ ロサンゼルス(MCLA)というレースゲームをご存知ですか? 2009年発売と結構古いゲームなのですが、つい先日Xbox 360用を購入したところすっかりハマってしまい、ゲーム開発の方がおろそかになってしまいました。 Midnight Club Los Angeles Complete Edition (PS3 輸入版 北米)日本版PS3動作可 Amazon上のリンクはPS3版ですが、このComplete Editionというやつのダウンロード版です。 拡張マップなどのダウンロードコンテンツが入っていてお得なのですが、ローカライズされていないので英語が苦手な人は要注意です。登場人物がチンピラ英語を話すので英語が苦手でない人でも聞き取るのが大変かも知れません。私は無理でした。 MCLAについて簡単に説明すると、「時間、天気が変化するLAの街を自分の好きなように走り回り、気が
さて、前回行った、TravelShooting JPの64bitプロセッサへの対応ですが、問題もほとんど出ずに完了したので、本当に64bitで動作しているのか不安になってしまいました。 前回の記事: tf.hateblo.jp 今回は、64bit版のプログラムで動作している事をこの目で確認して安心したいと思います。 検証にちょうど使えそうなのが、桁溢れのバグがある事を知っていながら、恐らく実用上は問題が出ないはずなのであえて直す予定のない累計スコア表示用のプログラム。 累計スコアは、今度リリースされるバージョンで追加実装したコスチューム変更画面で表示されます。 tf.hateblo.jp NSUserDefaultsに入れたり出したりする関係上、累計スコアはNSIntegerの変数に入れています。 NSIntegerは、32bit CPUでは32bitなのに対し、64bit CPUでは64
TravelShooting JPのアンドロイド版がほぼ完成し、今は若干薄っぺらだった敵キャラの陰影を濃くて立体感を付けたりなどの改良作業を行っています。 そんな中、TravelShooting JPの絶賛予約受付中の予約トップ10をのぞいてみると、あるアプリの言語が英語版のみの対応であるばかりにコメント欄(PCからは読めないと思います)で数多くの否定的な意見が書かれていることにショックを受けました。 そう、TravelShooting JP Android版は日本語にローカライズせずに英語版のみでリリースするつもりだったのです。 恐ろしくなった私は慌ててcocos2d-xでのローカライズの方法を調べました。 iOSのNSLocalizedStringのような物のcocos2d-x版を作って公開している方がいるようなのでそれを使わせてもらおうかとも思いましたが、TravelShooting
TravelShooting JPのアンドロイド版がようやく形になってきました! Androidで動作しているアプリを動画として取り込む方法をまだ知らないのでカメラでNexus 7の画面を撮影しています。 ゲームの操作に気をとられてカメラの向きがずれてしまっていますが、ご勘弁ください。 今のところ、背景、主人公キャラクター、主人公の弾の表示まで移植が進んでいます。 始めてのcocos2d-x & C++ & Android & Eclipseのため、環境の構築でいきなりつまずいてしまいました。 結局、「cocos2d-xで始めるスマートフォンゲーム開発」という本を購入し、それを参考にしつつ試行錯誤の末、何とかAndroid向け開発環境を構築することができました。 cocos2d-xではじめるスマートフォンゲーム開発 [cocos2d-x Ver.3対応] for iOS/Android 作
明けましておめでとうございます! TravelShooting JPのバージョン1.1.0が予想よりもずいぶん早くリリースされました! 去年の年末から元旦にかけて黙々とTravelShooting JPの追加面の実装をし、Appleの審査にアプリを提出したのが1月2日の午前2時過ぎでした。 通常、審査期間は1週間くらいなのですが、忙しい時期なので「いつもより長く掛かるだろうな〜」と予想していました。 ところが意外や意外、約30時間後の1月3日の午前8時過ぎには審査が完了しApp Storeでリリースされていました。 Appleのアプリ審査のチームは正月から頑張って仕事をしてくれたようですね。おつかれさまです。 そんなわけで、TravelShooting JPのバージョン1.1.0のダウンロード、あるいは前のバージョンからのアップデートをよろしくお願いいたします。 今回のバージョンでの変更点
前回のMyEnemyのテストプログラムにより、CCNodeのサブクラスに対してCCFadeInなどのアクションを設定するとクラッシュ事が判明しました。現時点ではMySprite, MyBulletでは動きに関するアクションしか設定していないため、たまたま動作していますが、今後に備えキャラクター本体のオブジェクトではなく、スプライトに対してアクションを設定したいと思います。 今後MySpriteオブジェクト本体のpositionなどは使用しませんので、updateメソッド内でスプライトの位置を本体と合わせる必要がなくなります。その代わり、HelloWorldLayerからスプライトのpositionを設定する事になります。MySpriteが持つ_spriteインスタンス変数をプロパティとして外から見えるようにしてあげればいいのですが、いろいろなオプション設定があり、何を設定するのが正しいのか
ゲーム用BGMの多く、特にボス戦用の曲はつなぎ目無くループ再生されますよね? 曲が終わってから次に始まるまでにたとえわずかでも曲間が開いているとどうでしょう。 シューティングゲームの場合はノリが悪くなってゲームに集中できなくなるかもしれません。 ちなみに、私が以前リリースしたBeeClusterは曲間に結構な無音部分があるので非常にノリにくくなっています。 さて、GarageBandでゲーム用の曲を作り、「共有->曲をディスクに書き出し...」で音楽ファイルを作成すると残念ながら連続再生に適さないファイルができてしまいます。 というのも、曲が終わった後の余韻の部分がファイルに含まれているので、ループ再生すると曲間にかなりの無音の時間ができてしまうのです。 これは、「サイクル範囲のみ、または選択したリージョンの長さを書き出す」オプションをチェックしてもしなくても同じようになります。 曲の終わ
iPhoneのゲームに使うキャラクターのアニメーション具合をプログラムに組み込まずにとりあえずMac上で確認したいときに使える方法をググって見つけました。 1. アニメーションさせたい絵をGIF形式でセーブする 最近はGIF形式というのはあまりポピュラーじゃないんですかね? 私が使っているお絵描きソフトClip Studio Paint ProではGIFでのセーブはできないようです。 また、プレビューの書き出しのフォーマットにもGIFと言う選択肢は見当たりません。 しかしここで諦めてはいけません。 プレビューのファイルメニューで書き出しを選び、フォーマット選択ボタンをOptionキーを押しながらクリックしてみると、 選択肢がずいぶん増えています。GIFもしっかり一番上にありますので、無事にGIF形式に変換する事ができました。 こんな感じで、アニメーションさせたい絵を1枚ずつGIFに変換しま
タッチ操作に合わせて気持ちよく背景を慣性スクロールさせてみます。 実際にはタッチ操作で自機の座標を動かし、同時に背景の座標をを逆方向に動かす事でキャラクターを画面の中心に保ったまま背景をスクロールさせています。 早速キャラクターのクラスCatクラスの実装です。画面上は仮にハチを入れていますが、いずれはネコになる予定です。 @implementation Cat { CGPoint _originalTouch; // タッチ開始時のタッチ位置 CGPoint _originalPosition; // タッチ開始時のself.position CGPoint _velocity; // 速度ベクトル CGPoint _floatPosition; //小数点以下を丸めない生の位置 CGPoint _previousPosition; // 前回処理時のfloatPosition } - (
cocos2dで開発したiPhoneアプリをGame Center対応にする方法の後編です。 前編はこちら。 前編でiTunes Connectでの設定を終えました。後編の今回はGame CenterのLeaderboard機能を実装するプログラミングを行います。 1. Info.plistファイルの編集 プロジェクトのInfo.plistファイルにgamekit対応のデバイスが必須である事を記述します。 Info.plistのRequired device capabilitiesを開き、+ボタンを押すとNew itemという行が生成されるので、Keyをgamekitに変更します。TypeはBoolean, ValueはYesにします。 2. ヘッダーファイルの編集 ゲームセンターを組み込むクラスのヘッダファイルにGameKit/GameKit.hをインポートし、GKLeaderboar
次のプロジェクトでSprite Kitにチャレンジしようかcocos2dを引き続き使おうか迷っています。 そこで、パフォーマンス対決をやってみました。 ちなみにSprite Kitのプロジェクトを作るのは簡単で、Xcode5のWelcomeスクリーンからCreate a new Xcode projectをクリックし、テンプレート選択画面でiOSのApplicationからSpriteKit Gameを選ぶだけです。 このテンプレートプロジェクトを実行すると、お決まりのHello, World!が表示され、画面をタップする毎にクルクルと回る宇宙船が表示されます。 今回は、これと同じことをするプログラムをcocos2dでも作成し、60fpsを維持できなくなるときの宇宙船の数を比較する事で性能を比較してみたいと思います。 比較にはiPhone4Sを使用します。 ただ、謎な事にSprite Ki
海外のApp Storeで検索して自分のアプリが見つかるかどうか気になりますよね? このサイトにやり方が書いてあったので参考にさせていただきました。 1. カテゴリやトップ 25のタブの一番下の「Apple ID」をタップ 2. 「サインアウト」をタップ 3. 「サインイン」をタップ 4. 「Apple IDを新規作成」をタップ 5. 「Store 日本」をタップ 6. リールを回して「United States」(アメリカの場合)をさがしタップし「完了」をタップ United Statesはなぜか一番上にあります。Uのあたりを探しても見つかりません。 7. 「次へ」をタップ 8. 「Cancel」をタップ 9. 「Yes」をタップ 10. アメリカのApp Storeに入れます! 11. 戻りたいときはCategoriesかTop 25のタブの一番下の「サインイン」をタップ 12. 「既
BeeClusterをGame Center対応にしたときのメモです。 BeeClusterではGame CenterのLeaderboardへの対応を行いました。リーダーボードはスコアランキングのことで、他のプレイヤーとオンラインでスコアを競う事ができるようになります。 Game CenterにはLeaderboardの他にAchievementという機能もあります。こちらの機能を使うとゲーム中の実績を記録する事ができます。 さて、Game Centerをアプリに組み込むには、iTunes Connectで設定をしておく必要があります。 1. まずは、アプリの管理ページで"Manage Game Center"ボタンをクリックします。 2. "Enable for Single Game"ボタンをクリックします。 3. スクリーンショットを取り忘れましたが、"Add Leader Boa
さて、BeeClusterリリース2ヶ月目が終了しました。 はりきって今月のダウンロード数と広告収益を見て行きましょう。 8月のダウンロード数は304でした。 アップデートを2回(うち1回はバグフィックス)したおかげか、最近は少しダウンロードが増えました。 アップデート数はこのような感じで、2回のアップデートの時期に山ができています。 さて、気になる広告収益ですが、今月はリリース月の先月を超えました! 広告はnend, iAd, AdMobの3社ををAdMobメディエーションで切り替えています 3社の合計は、 3009円 でした。 3000円がこんなに嬉しいのは小学生ぶりですね。 リリース月より増えるとは思っていなかったので。 先月の収益を掲載した記事「【iPhoneアプリ】BeeClusterリリース後1ヶ月のダウンロード数と広告収入は?」と比較すると約2.7倍になっています。 BeeC
これまではiAdとAdMobの二つを使っていましたが、いろいろな方からnendをおすすめされたので、早速nendに登録してみました。「メディアパートナーご登録」ページから登録できます。私の場合、次の日には広告枠承認のメールが帰ってきました。 これまではiAdの広告をリクエストして、あればそれを表示、なければAdMobに切り替えて広告を表示という実装にしていました。nendも同じようにできますが、せっかくなのでAdMobメディエーションというサービスを使って複数の広告ネットワークの切り替えを実装してみます。 プログラムで広告ネットワークを切り替えている場合はアプリのリリース後に外から優先順位を変える事はできませんが、AdMobメディエーションを使えばWebサイトでの操作で簡単に優先順位を切り替えたりできます。また、プログラム上はAdMob表示用のコードだけになるのでシンプルになります。 この
縦スクロールシューティングゲームを作ると宣言しながらもずっと横画面だったこの自作アプリもようやく前回から縦画面になり縦シューらしくなってきました。 今回は背景を付け、それをスクロールさせる事でよりそれっぽくしたいと思います。ようやく黒背景からサヨナラできるわけですが、何でもいいから絵が必要なのでとりあえず描いてみました。 何でしょうこれ。草原と池と道のようなものがある風景に見えますか? 幅640ピクセルx高さ2000ピクセルで描いてみました。ゲームではこのようなテクスチャーを6枚縦に並べて1ステージとし、2分間で1ステージ分スクロールするイメージで考えています。 それでは、この絵を6枚並べてスクロールさせるプログラムを作ってみます。本来は高さ2000 x 6 = 12000ピクセルの絵を描いてそれを6分割するべきなのでしょうが、大きな絵を描くのがしんどいのでとりあえず同じ絵を6枚並べること
追記:.plistファイルを経由せずに.csvファイルを直接プログラムから読み込む方法は、 【Objective-C】.plistファイルを経由せず直接.csvファイルからデータを読み込む方法 - 夏までにiPhone アプリつくってみっか! をご参照ください。 現在作成中の縦スクロールシューティングゲームで敵の生成データをどういう形で管理しようか考えているのですが、やっぱりプログラムコードとしてデータを組み込むよりは外部ファイルから読み込むのが良いでしょう。 ということでplistファイルについて調べました。 plistファイルはXcodeのFile>New>FileからResourceを選んで出てくる選択肢の中からProperty Listを選んで作成するができます。そして、それをXcode上で編集することもできるのですが、結構編集に時間がかかります。何か便利な方法はないかと調べたとこ
開発中のオープンワールドレースゲームの地形の作成に取り掛かりました。 街、山、水場がバランス良く配置され見栄えのする地形を作りたいのですが、自分の想像だけではまともな地形を作れそうにありません。 なので、ちょっと手抜きをして現実にある地形を参考にモデルを作りたいと思います。 今回は、相模川を挟んで両岸に街が広がり、西にはそこそこ起伏がある、なかなか見栄えが良さそうな場所として神奈川県の厚木市、海老名市付近を選択しました。 まずはGoogle Mapでそのあたりを表示し、画面のスクリーンショットを撮影します。私はMacbook Pro Retinaの15インチを使っているのですが、画面の解像度を1920 x 1200ピクセルに設定しておくと広い範囲を良い解像度で撮ることができます。 次に、主要な道路の向きが東西南北を正確に向くように画像を回転させます。 Macのプレビューアプリでは残念ながら
このページを最初にブックマークしてみませんか?
『夏までにiPhone アプリつくってみっか!』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く