読者です 読者をやめる 読者になる 読者になる

フニゲの開発日記

Electronとか...

Creatureてすと

CreatureはシンガポールのKestrel Moon Studiosが3月にリリースした2Dアニメーション製作用のツール。¥11800。www.youtube.com Cocos2d-html5 V4のalphaプレビューで見かけたので試してみたのだが、まだ不具合が多いのであまりお薦めできない。いろいろ痒い…

はじめてのシェーダ

OpenGLにはいい思い出がない。 うっかりどこか書き換えると画面に何も出なくなって、何日も原因が分からずに途方に暮れるとか、昔の記憶がよみがえって、いやな汗が出る。 確実に動くものから、少しずつ作りはじめて、迷ったらいつでも戻れるように足場を固…

二本指で拡大縮小

マルチタッチのジェスチャーはPCのブラウザでは再現できないのでどうしても後回しになってしまうのだが、避けて通るわけにもいかない。 ピンチズーム(2本指で拡大縮小)のサンプル。 init:function () { this._super(); this.bg = cc.Sprite.create(...); t…

Invalid Native Object

公式に書いてある通りなんだけど、なかなか厄介なメモリ管理の問題。Memory Management of JSB Cocos2d-x (C++) のメモリ管理はiOS開発者にはおなじみのretainカウント方式なのだが、javaScriptバインディングではほとんど意識することがないように、うまく…

cc.AudioEngineで2回目以降の音が出ない

自分で書いた原稿の通りにやっていたら、効果音が一度だけ鳴って2回目から何も鳴らなくなってしまう。BGMをループにしたら1周目しか音が出ない。 焦ったのだけど、これはChromeの(開発ツールを開いてる間だけ)キャッシュを無効にするオプションがチェック…

cc.EditBox

Cocos2d-html5ではキーボードから入力された文字列を扱うためにcc.TextFieldTTFとcc.EditBoxの2つのクラスがある。cc.TextFieldTTFはよく設計されている感じなのだが、どうもアカデミックというか、大卒のエリート的な印象のクラスだ。 cc.EditBoxの方はいか…

Chrome31でcocos2d-html5が動かなくなる問題

Google Chrome v31 breaks cocos2d-html5 古いバージョンを使って書いたゲームは自分で直さないといけないのか。 Cocos2d-html5-v2.2.min.jsを使っている場合だと、検索で「precision mediump float」って書いてあるところを探して「precision highp float」…

cc.Loderを使う

前回のステージ毎のテクスチャの初期化をcc.Loaderで書き直し。 勉強しながら書いていると、どうしても同じ処理の書き直しが多くなる。前の記事はいらなくなっちゃうんだけど、消すのも何だかもったいないし。 // resource.js var g_stage0 = [{src:"res/sta…

テクスチャの非同期読み込み

テクスチャが少なければ起動時にすべて読み込むのが無難だが、量が増えてくるとそうもいかない。ステージのはじめに必要なテクスチャをロードして、次のステージに行く前にメモリを解放する手続きが必要になる。cc.TextureCacheは、dumpCachedTexture()でロ…

さらにcc.drawingUtil

今回はRay Wenderlichのこの記事をcocos2d-html5でやりたかったんだけど、 How To Create A Game Like Tiny Wings with Cocos2D 2.X ……OpenGLが難しすぎる。挫折した。 代わりにcc.drawingUtilを使ってポリゴンを描くことにする。drawSolidPolyで描けるのは…

cc.drawingUtil

点やラインをちょっと表示したいときに便利なcc.drawingUtil。 cocos2d-html5に同梱のサンプルHelloHTML5Worldでも使われている。 // HelloHTML5World/src/myApp.js var CircleSprite = cc.Sprite.extend({ _degree:0, ctor:function () { this._super(); },…

ctorとかinitとかonEnterとか

cc.Layerを継承するとき、初期化のコードはどこに書いたらいいのか。 ここで初期化というのは、例えばスコアを0に初期化したり、レイヤーにスコアを表示するラベルを貼り付けることなんだけど、どこに書くのが正しいのか。cc.Layerを継承したクラスでは、イ…

cocos2d-html5 2.2

ここで書いてる範囲では、あんまり違った感じはしない。 cc.RectMakeがdeprecatedでcc.rectに直せと言われたくらい。 cocos2d-x 2.2も入れたのだが、wp8のprojectはまだjsbからは使えない。

スプラッシュスクリーンの画像を変える

ロード中に表示される画像は cocos2d/CCLoader.js に埋め込まれているので、これを何とかすればいい。applicationDidFinishLaunching()で差し替えるのが簡単かな。 // main.js ... applicationDidFinishLaunching:function () { var director = cc.Director.…

cc.TMXTiledMap

後回しにしていたTiledの勉強。タイルセット(*.png)とマップデータ(*.tmx)の2つが出力されるので、これをresource.jsで先読みしておく。 // resource.js var s_tile = "res/test.tmx"; var s_tile_png = "res/test.png"; ... var g_ressources = [ {src:s_t…

MouseJointのテスト

Box2DではQueryAABB()というのを呼ぶとマウスの下にあるbodyを見つけることができるらしい。 サンプルローダーのtestbed.jsを見るとコールバックの書き方が2種類あるみたいなんだけど、そのへんは深入りせずに簡単に書けるものは簡単に書く。 // game.js var…

BGMをループさせる

cc.AudioEngineのplayMusic()にはループのオプションがあるので、これをtrueにしてやれば終わり。のはずなのだが、なんだか動作が怪しいぞ。 あとループのつなぎ目がどうしても不自然になる。実機で正常に動けば別にいいんだけど、ここはループ再生機能を信…

RUBEで作ったシーンを表示する

R.U.B.E Box2D Editorはマジで使えるBox2Dエディタ(Really Useful Box2D Editor)。¥3000。無料の体験版もある。完成度が高くて、とにかく使っていて気持ちのいいツールだ。 玄人好みの操作系で最初戸惑うのだが、詳しいチュートリアルビデオがあるので我慢…

7日目 カステラ切るよ!

カステラ切るよ!むかし母親に「下手でいいから大きくはっきりと書きなさい」と言われました。自信がないからと言って小さく書いたり隠したりするのが良くないと。そんなことを思い出しつつアップロード。 結局7本で3週間かかったが、簡単にまとめておこう。…

実行環境で場合分け

ローカライズは var language = cc.Application.getCurrentLanguage(); if (language == cc.LANGUAGE_JAPANESE) { // 日本語だよ } で書ける。と思ったが、微妙に違うな。 var language; if (cc.Application.getCurrentLanguage) { language = cc.Applicatio…

5日目 いわゆる積み物

積みむすめ今日は絵のリハビリをしました。もうちょっと目が覚めるような絵が描けるようになりたい。それからPhysicsEditorで当たりデータを作って読み込むテスト。見た目が破綻しないように当たりを作るのは意外と難しい。あとアンカーポイントを(0.5, 0.5…

せっかくだからBox2Dも試しておこう

起動時の「box2d:false」をtrueにすればすぐ使えるようになるかと思ったのだが、そうでもなかった。何か手順が悪いのかも知れないが、Box2dWebを自分で拾ってきて読み込んでいます。 // boot-html5.js (function () { var d = document; var c = { COCOS2D_D…

4日目 衆議院これくしょん

衆議院これくしょん 仕分けゲームです。与党議員は上に、野党議員は下にフリック。 少しずつ議員が増えます。有名な人が出てくるとちょっと嬉しい。 480人コンプリートするのはなかなか大変だと思います。 やってないですけどね。出題の所にバグがあるような…

cc.TableView

iOSのUITableViewにちょっと似ているテーブル用のクラス。 UITableViewと違ってヘッダもフッタもセクションも無いので、あんまり難しいことはできない。検索しても使用例があまりないので、大変なのかなあとぼんやり思っていたのだが extensions/GUI/CCScrol…

3日目 Touch the Big Numbers

ゲームというよりはベンチマークに近いか。Touch the Big Numbers例の数字を小さい順に1から25まで押していくアプリの大きい版です。 難易度も8x8=64枚、16x16=256枚、32x32=1024枚の3種類用意しました。8x8以外は自分でもクリアしてませんが。パネルはImage…

2日目 また弾避けアクション

回るアステロイド アステロイドが飛んでくるので、うまく重力を使って衛星にしてください。 地球を一周するたびに得点が入ります。ぶつかるとダメージ。4回ぐらいぶつかると人類全滅です。目指していたのはゼビウスのジェミニ誘導なのですが、何とも残念な感…

cocos2d-html5 ver 2.1.5 のインストール

最新バージョンで動作するサンプルがライブラリについてたので、これを参考にして2日目以降は最新バージョンを使うことにする。 $ git clone git://github.com/cocos2d/cocos2d-html5.git $ cd cocos2d-html5 $ git submodule update --init // <-これでサン…

自作のクラスを追加する

スプライトにフラグとかプロパティを追加したいとき、いちばん簡単なのはcc.Spriteのインスタンスに勝手に書き足す方法。 var zombie = cc.Sprite.create(s_zombie); zombie.dead = true; // ゾンビだから まあ、それでいいのだが、後々のことを考えると自作…

1日目 弾避けアクション

本日公開の「World War Z」に合わせて、ゾンビゲーであります。 流行りのネタには飛びつきます。せっかくリアルタイムで公開するんですからね。 時間が足りなかったので、0日目にやったチュートリアルの画像とサウンドをそのまま流用しました。 ゾンビ避け …