5.1さらうどん

@giginetの技術ブログ。ゲーム開発、iOS開発、その他いろいろ

3DS『RUNABOUT3D ドライブ:インポッシブル』買いました

毎週のようにゲームを買ってるので、ゲーム購入を記事にすることはあんまりないんだけど、どうしても書いておきたかったので書きます。

小学生ぐらいの時に、『RUNNABOUT』というバカゲーに激ハマりして、友達とPS2版を遊びまくっていたのだけど、先日、ジャンク屋巡りをしていたらPS版が100円で売ってて懐かしくなった。

そういえば、3DS版が開発中と以前小耳に挟んでいたなぁ、とググってみたら、既に去年1月に発売済み

http://www.rocketcompany.co.jp/runabout3d/


『ランナバウト3D ドライブ:インポッシブル』 ニンテンドー3DSで進化!! - ファミ通.com

へぇ、3000円ぐらいに値下がりしてないかな、と思ったら、まさかのプレミアがついていた。Amazonでは中古9000円、各種ネット通販では軒並み売り切れ、中古12000円の値がついているショップも。

ゲームショップ何件かに問い合わせてみたんですけど、どうやらすでに正規のルートでは流通していないらしい。え、去年発売したばかりですよ!?

このゲームってこんなに値上がりするようなソフトなの?
手に入らないとわかったら、大して欲しくもなかったのに、とてつもなく欲しくなるのが人情というものじゃないですか。ヤフオクで競り落としました。6500円ぐらい。
高いように見えて、ネットで見つけられた中では最安でした。

まだ遊んでないんですけど、完全にコレクターアイテムと化してて、いざ起動したらあんまり遊ばないんだろうなぁ。あんまり評価も高くないしね。

もう二度と市場に出回らないような気がするので大事にします。


何本売れたんだろうなぁ、これ。

cocos2d-xのバグを直したらmergeされた話

cocos2d-xで割と大規模なゲーム開発をしております。


チームでRPGなどを開発していると、

Bルート3面最終面に出てくるナイトが10%の確率で2ターン溜め攻撃するんだけど、
溜め攻撃の最中の1ターン分だけナイトを点滅させるようにしてくれない?

などとピンポイントなオーダーがディレクターから飛んできます。


プログラマはこういう事態を予期しておき、敵キャラの技のスクリプトは全てLuaで記述できるようにしておきます。

このようなスペシフィックな注文が来たときに、待ってました!と言わんばかりにわしわしと技のスクリプトに処理を書き込むわけです

local actions = CCArray:create() -- 空の配列作って
actions:addObject(CCFadeTo:create(0.05, 128)) -- 0.05秒で透明度128に
actions:addObject(CCFadeTo:create(0.05, 255)) -- 0.05秒で透明度255に
local sequence = CCSequence:create(actions) -- それらをアクションにして
user:runAction(CCRepeat:create(sequence, 10)) -- それを10回繰り返す動きを適応


点滅をはじめとして、ちょっとした表現のクォリティアップをいとも簡単に行えてしまうのがcocos2dの良いところですよね!


満を持して実行してみると、エラーを吐く。なんだこれは!何も間違ってないぞ!
バージョンは2.0.3

...9C-411D-A8EC-E8454ECC9071/YourFantasticGame.app/charge_attack.lua:5: error in function 'create'.
argument #2 is 'CCFiniteTimeAction'; 'CCActionInterval' expected.

エラーの原因

悩むこと数分、cocos2d-xのLua-Binding自体が怪しい、という結論にいたり、内部のコードを読み始めるわけです。


cocos2d-xのドキュメントと見比べてみると、Lua-BindingでCCRepeatのcreateに渡している型がドキュメントと異なっている!

ドキュメントによると、繰り返すアクションをCCFiniteTimeActionとして受け取らないといけないのに、そのサブクラスであるCCActionIntervalとして受け取っている!

CCSequence#createはCCFiniteTimeActionを返す仕様になっているため、引数エラーが出てしまったというわけです。なるほど納得!

つまりこんな感じで直した

http://cdn-ak.f.st-hatena.com/images/fotolife/g/gigi-net/20130304/20130304195232_original.png

Pull Requestから始まるコミュニケーション

というわけで修正して、Pull Requestを送ってみたら

f:id:gigi-net:20130304193416p:plain
Fix CCRepeat#create is recieved bad argument on Lua binding. by giginet · Pull Request #2030 · cocos2d/cocos2d-x


マージされた!!!!

f:id:gigi-net:20130304193430p:plain
Fix CCRepeat#create is recieved bad argument on Lua binding. · 8f4340f · cocos2d/cocos2d-x

実写アイコンに颯爽と並ぶぎぎねっとアイコン


これで晴れてcocos2d-xコミッターです!やったね!

まとめ

というわけで、なかなかハマる人も少ない現象だとは思いますが、まとめてみました。

Forumとか見てるとScript-Binding周りはまだまだバギーみたいなので、報告すると喜ばれると思います。

初めて知り合い以外にまともなPull Request送ってみましたが、感謝されるとなかなか嬉しいですな。

iPhoneゲーム開発に役立つツール13選まとめ

みなさん、iPhoneでゲーム開発してますか!

iPhoneでのゲーム開発は、cocos2d for iPhoneを初めとして、cocos2d-x, Kobold2D, Unity, Corona SDK, GameSaladなど、様々な開発環境で割りと手軽に行えるようになってきました、


それに伴って、非プログラマ向けのゲーム開発支援ツールも非常に充実してきていますが、日本語で読める詳しい記事が少なかったことが気になったため、自分が使っているモノをまとめてみました。

デザイナー向け

CocosBuilder

f:id:gigi-net:20130223123219p:plain
CocosBuilder – Graphical Interface Builder for Cocos2D iPhone and iPad

GUI設計ツール。

コードでちまちまとスプライトを配置していくのは発狂するので、GUIツールを使った方が楽。読み込み用のライブラリも付属していて、吐きだしたファイルを簡単にゲームに反映できます。

cocos2d/cocos2d-x両方から利用可能なのも嬉しい。


GlobalGameJamの時に実戦投入してみたんですが、画面のOrientationが勝手に戻ってしまったりと、少々バギーなところがあってなかなか使いづらいかも。

Particle Designer

f:id:gigi-net:20130223122402p:plain
71 Squared: Particle Designer - Particle Simulation Editor for OSX

OpenGL向けの美しいParticleを簡単にデザインできるツール。UnityやBlenderなどに付属しているパーティクルツールに近い使い勝手で簡単に利用できます。

非常に手軽にエフェクトをリッチにできるので、導入しない手はないかと。ライセンスも1400円と非常に手頃なので購入をオススメします。

zwoptex

f:id:gigi-net:20130223122418j:plain
Zwoptex

複数画像をまとめたTextureAtlasを簡単に生成してくれるツール。

上手く利用できれば、パフォーマンス改善が見込めるため有用な感じです。

簡単なゲームの場合、ムリにテクスチャを1枚にまとめずとも遊べるモノは作れるので、必要になったら導入する程度で良いかと。

Sprite Helper

f:id:gigi-net:20130223122709p:plain

SpriteHelper | Game dev Helper

スプライト生成用のツール。前述のzwoptexと同等の機能の他、物理エンジンの属性の設定やアニメーションなどがGUIで手軽に行えるようです。

また、後述のLevel Helperとも連携ができるらしい。

ガッチリ使ったわけじゃないので、以下の記事を読んでみると良いかと。

サクッと Cocos2D ゲームを作ろう!(1)SpriteHelperでのテクスチャー処理 | Zero4Racer PRO Developer's Blog

スクリプター・プランナ向け

Level Helper

f:id:gigi-net:20130223122502p:plain
LevelHelper | Game dev Helper

cocos2d/cocos2d-x向けレベルデザイン支援ツール。

マップの設計やアニメーション、演出などがかなり自由に設計できるようです。

これも買って使ってみたわけではないので、便利そうだったら誰か詳しく教えてください

Code Helper

f:id:gigi-net:20130223122545p:plain
CodeHelper | Game dev Helper

Corona SDK, cocos2d-html5特化のLua, JavaScript IDE

トライアル版のみしか使っていませんが、設定項目がほとんどなかったりと、機能面ではまだ不十分だなぁと感じました。

これらの開発環境で補完を利用したい場合には便利そうですが、単にLuaIDEが欲しいぐらいなら後述のLua Development Toolsを使うのが良いのかも。

Lua Development Tools

f:id:gigi-net:20130223122603p:plain
Koneki - Lua Development Tools, an IDE for the Lua programming language

Eclipse派生のLua向けIDEXcodeLuaをサポートしていないので、スクリプターにはこれで書いてもらうのがオススメ。vimは敷居が高いですしね。

基本的な機能は揃ってるし、クロスプラットフォームだし、取っつきやすいのでちょっとしたコードを書くぐらいならこれで十分なのかも。

ちなみに、Xcode4でLuaシンタックスハイライトを有効にするプラグインなんかもあるので、一応導入しておくと良いかも。

bastos/lua-xcode-coloring · GitHub

Tiled Map Editor

f:id:gigi-net:20130223122808p:plain
Tiled Map Editor

よくあるマップエディター。cocos2dでは最初からこの形式のパーサーが用意されているので、はき出したファイルを簡単に利用できます。

Qtで実装されているので、クロスプラットフォームで利用できるのもポイント高い。

マップを実装する類いのゲームであれば、このツールを利用できる設計にしておいた方が良いかと。

プログラマ向け

Dash

f:id:gigi-net:20130223110521p:plain:w128
Mac App Store - Dash (Docs & Snippets)

高速シンプルなドキュメントビュワーツール

ゲームやiPhone開発に限らず、Macでの開発者必携のツールな気がしています。

利用可能なドキュメントの量が膨大で、iOS SDKはもちろん、ゲーム開発にだけに注目してもcocos2d, cocos2d-x, Kobold2D, Unity辺りが完全に網羅されています。C++STLLua、Box2Dなどのドキュメントも用意されているので、どのような開発環境であっても役に立ちます。

f:id:gigi-net:20130223123102j:plain

XcodeやAlfred/QuickSilverとも連携できて強力。とりあえず導入しておきましょう。

デバッガー向け

TestFlight

f:id:gigi-net:20130223105906p:plain
TestFlight » Beta Testing On The Fly

もはや語る必要もないチーム向けデバッグ版リリースサービス。

これもゲーム開発に限らず、iPhone開発者には欠かせないツールなのではないでしょうか。

iPhoneアプリの複数人開発にはもはや必須になってきてますね。開発者はともかく、デザイナーや音屋さんが実機の動作を確認するのに重宝します。

詳しい使い方は下記ページなどを見ると良いでしょう。

TestFlight とりあえずどんなものか | MUSHIKAGO APPS MEMO

Reflector

f:id:gigi-net:20130223112958p:plain:w128

Reflector.app - AirPlay mirroring to your Mac or PC, wirelessly.

チームメンバーがiOS実機を持っていなかったり、効果音を付けるために動画で動作を確認したいという需要があるでしょう。

そんなときにオススメなのが、iOS端末の動画を簡単に撮影できるReflector。

簡単に撮影できて、ゲームでも処理落ちはあまりしないです。

PV撮影や、ドロワーを起動したiPadの画面をミラーリングして、Skypeで画面共有し、お絵かきチャット代わりに使う、なんて使い方も。

その他いろいろな状況で便利なので、シェアウェアですがライセンスを持っておくと便利。

WunderList

f:id:gigi-net:20130223115441j:plain:w128
Wunderlist 2 - Your beautiful and simple to-do list

クラウド型のタスク管理ツール。

タスク管理については各々使いやすいモノがあると思いますが、導入してみて上手くいったモノをご紹介。

githubのissueは非プログラマには敷居が高かったり、ブラウザを開いていちいち登録するのが地味に煩わしかったりするので、思いついたらホイホイと投げれるWunderListは結構便利でした。

チームメンバーで同期して利用できるし、クロスプラットフォームなのもポイント高い。TestFlightとあわせたバグ報告などに便利です。

f:id:gigi-net:20130223122836p:plain

カテゴライズが貧弱なので、大規模な管理には向かないかもですが、一応ご紹介。

その他

GameSalad

f:id:gigi-net:20130223115759p:plain:w128

Game Design Engine, Make Games for iPhone & Android - GameSalad

全然使ってないけど、ちょっと注目しているのでご紹介。

コードを書かずに簡単にiOS/Android向けのゲームが作成できるツール。

f:id:gigi-net:20120517100555j:plain

使い勝手は「MultimediaFusion」や「Scratch」などに近いかも。

初学者にはまだ英語版しかないのが若干敷居が高いかも、という印象。

フリーで利用できるし、書籍も出ているようなので、今後流行ると良いですね。

まとめ

如何でしたでしょうか!

こんな感じで、非プログラマでもゲーム開発に参加しやすい下地が整ってきたように感じます。

上手く使いこなせれば、分業して大作を開発するのに役に立つかと思います。


この記事がなるべく多くのゲーム開発者の一助になれば幸いです。


この記事を読んでゲーム開発にご興味を持った方は札幌ゲーム製作者コミュニティKawazにどうぞ。ゲーム作りましょう!