プログラミングの魔物

エラー、バグ、仕様変更と戦うブログ

ゲームの開発速度は十分ですか?

スクリプト言語による効率的ゲーム開発 1章この本はスクリプト言語を使ってしあわせになろうという本。 例としてLua&C++での作り方が載っている。 「スクリプト言語なんて使わなくてもC++で組めばいいじゃん。速いし」 そう考えるのはちょっと早い。 ゲーム…

Luaのモジュールを穴が空くまで見つめてみる

Lua

Luaで組むならモジュールは避けて通れない。必須と言ってもいい。 今回はそんなモジュールについての解説・・・というか、自分が今理解している内容の確認のためにプログラムを組んでみる。 追記: Lua5.2からはコンセプトが変わり、module関数とsetfenv関数…

リファクタリングの原則

リファクタリング 2章リファクタリングの重要な原則を改めて振り返り、リファクタリングを実践する上で考慮すべき点をみる。 一応ノートを取りながら読んでみたけど、ほとんど概念だから読むだけでもよかった。 リファクタリングの定義 名詞としての定義 「…

iphone上でLuaのバイトコードを生成する

cocos2d-xで使うLuaをバイトコードへ変換する方法を探ってみた。 バイトコードへ変換するとロード速度が上がる。また、難読化にも繋がる。 一般的な方法ではバイトコードの生成にluacを使う。 コマンドをたった1行打つだけでLuaのバイトコードを生成すること…

Luaでオブジェクト指向プログラミング考察3

Lua

先日の考察ではLuaのクラスでプライベート変数を扱った。 しかし、以前のプログラムではオブジェクトの解放後もプライベート変数がメモリ上に残ったままになってしまう。 private.lua local _M = {} local _ = {} --プライベート変数を保持するテーブル func…

ブログ記事整理

Lua

Programming in Luaに関する記事を削除した。このブログでは主に読んだ本の内容を元に記事を書いている。 しかしLua本の記事は自分の言葉で書いた部分があまりにも少なかったため、いずれ削除しようと思っていた。 ちょうど新しい本も読み始めたので、これを…

リファクタリングとは?

リファクタリング 1章第1章ではJavaで作られたプログラムを例として、リファクタリングの過程を説明している。 実際に打たないと感覚が掴みにくそうだったので、Luaで例題のプログラムを組んで修正しながら読みすすめた。 汚いプログラムは何が問題か? ろく…

Luaのオブジェクト指向プログラミング考察2

Lua

昨日の記事ではLuaのモジュールでクラス定義とプライベート変数を扱う方法について考察した。 今回はモジュールで継承とプライベート関数を表現する方法を考える。 ディレクトリ構成 libs/mod.lua libs/sub.lua main.lua 親クラス(mod.lua) local _M = {} …

Luaのオブジェクト指向プログラミング考察

Lua

モジュールでクラス定義を行う方法。 ついでにプライベート変数を定義する方法も。※この記事のプライベート変数定義には問題があるため考察3も参照 モジュール定義(mod.lua) local _M = {} local _ = {} --プライベート変数を保持するテーブル function _M…

cocos2d-x Lua RPGのサンプルほぼ完成

iPhone/iPad/iPod touchプログラミングバイブルのサンプルゲームをLuaで組んでみる。の続き(iOS5版のサンプルプログラム) マップ移動、戦闘、ゲームオーバー、エンディングと言ったひと通りのロジックを作成した。今回のRPGの作成ではC++側はノータッチ。…

cocos2dでUIButtonを表示する

以前cocos2dでイメージピッカーを使うためにUIKitを利用した時の方法を覚書。 サンプルはボタンだけど要領は同じ。 { UIButton *button; } -(id) init { if( (self=[super init]) ) { button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; button.f…

Luaの統合開発環境「Lua Development Tools」を試す

Lua

trinity.vimプラグインを入れるとVimをIDEのように使うことができるようになる。 そこでふと、LuaのIDEにはどのようなものがあるのかと思い調べてみたら「Lua Development Tools」というのがあったので入れてみた。 窓の杜の紹介記事 http://www.forest.impr…

vimでLuaのソースからC関数のソースへジャンプ

Luaで組んでいるとcocos2d-xの関数のソースを見たくなることがよくある。 今まではxcodeを同時起動して探していたけれど、ctagsで探せるようになったのでやり方をメモ。 若干重いのでまだ試用段階。 MacPortsでExuberant Ctagsを入れる Exuberant Ctagsのイ…

Bundle

久しぶりにVIMプラグインを入れようとしたらコマンドを忘れていたのでメモ インストール :BundleInstall アップデート :BundleInstall! アンインストール :BundleClean ヘルプ作成 :helptags ~/.vim/vundle.git/doc

cocos2d-x Luaでゲーム作り2

RPGの続き マップ移動と当たり判定を組んだ あとはパラメータと戦闘を組んで終わり。 ちょっとアレっと思ったのはgetPostionがCCPoinstではなく複数の戻り値を返すこと。 CCPointで欲しい時はobj:getPositionLua()を呼ぶか、cpp(obj:getPosition())のような…

cocos2d-x Luaでテクスチャアトラス

今回はこちらのサイトを参考にした。 cocos2d-xにおいてTexture Atlasを利用する方法(iOS, Android)C++でのコードは次のようになる。以下転載 アプリで画像ファイルを用意する場合、Texture Atlasを利用することで メモリを大幅に節約することが可能です。…

ニュース等の巡回

あまりIT関連のニュースを見ないので頭が古くなっているのを感じる。 他の人はどうやって情報を取り入れてるんだろうか? RSSとかかな? 自分用のニュースアプリでも作ってしまおうか。詳細については実際に使う時に調べるとして、 とりあえずいくつかの記事…

cocos2d-x Luaでゲーム作り

iPhone/iPad/iPod touchプログラミングバイブルのサンプルゲームをLuaで組んでみる。手元にあるiOS5版はアクションゲームとRPGのサンプルが載っているので、それをcocos2d-x Luaで書いてみる。 そのまま移植してもつまらないので、とりあえず外部仕様を見な…

さらにListView

C#

VirtualListSizeは仮想リストビューの全体の数を表すプロパティだが、項目数を減らそうとして小さい数を代入するとたまにNullReferenceExceptionという例外が発生する。 ひょっとしたら同じエラーで悩む人もいるかもしれないのでメモっておく。 listView1.Be…

正規表現でパターンの否定

メモメモ True if pattern /PAT/ does not match, like $var !~ /PAT/: /^(?:(?!PAT).)*$/sTrue if pattern BAD does not match, but pattern GOOD does: /(?=^(?:(?!BAD).)*$)GOOD/s http://d.hatena.ne.jp/amt/20060728/Hitei VirtualModeでShift+クリッ…

ListViewの続き

C#

やはりファイル数が多いのでListViewにVirtualModeをサクッと導入することにした。その前にWindows環境にGitを入れてバージョン管理してみることに。 今までTortoiseSVNを入れていたのでその流れでTortoiseGitを入れた。 http://code.google.com/p/tortoiseg…

C#のListView

C#

ちょっとしたツールを作るためにListViewを使用中。そのメモ。公式のヘルプ。 http://msdn.microsoft.com/ja-jp/library/ms750972.aspx@ITの記事 http://www.atmarkit.co.jp/fdotnet/dotnettips/336listviewimage/listviewimage.htmlLargeIconを表示する場…

cocos2d-x LuaでCCNodeにLuaのコールバック関数を登録する方法

cocos2d-xでLua関数をコールバックする時の参考用にメモ。ソースを読んでみるとCCNodeは最初からLua関数をコールバックできるように作られている。 ここに説明が書いてある(しかしサンプルは古い様子) http://www.cocos2d-x.org/projects/cocos2d-x/wiki/N…

プログラミング言語の習得方法について

何事もポジティブに取り組む 楽しんだほうが覚えるのは早い。 基本的な言語仕様を押さえる 宣言や演算子、条件判断、制御文などの基本仕様を把握する。 言語によっては同じコードがまったく別の意味を持つこともあるので、複数の言語を習得する場合は特に注…

cocos2d-x覚書

CCArrayから取得したオブジェクトを使用するにはtolua.castする local str = arr:objectAtIndex(0) str = tolua.cast (str, "CCString") http://www.cocos2d-x.org/boards/11/topics/14344 BGMが流れていない場合でもバックグラウンド時には SimpleAudioEngi…

cocos2d-x2.0-xでRetina Display対応

cocos2d-xではサフィックス(Suffix)によるリソースの切り替え(@2xや-hd)を推奨していない。 cocos2d-xはクロスプラットフォーム開発環境なのでiOSだけではなくAndroidにも対応している必要がある。 Androidのリソース管理方法としてサフィックスは適して…

portのアップデート

# port selfupdate# port sync

autocomplpop.vim調整中

Vim

リアルタイムで入力補完 Ctrl+pやCtrl+nでも入力補完できるが、リアルタイムでできたらxcodeライクになってもっと便利だろうと思って入れた。 とりあえず辞書を作るためのLuaでも書こうかな。参考 http://d.hatena.ne.jp/rdera/20090113/1231819016追記: そ…

iCloud、Storyboad、ARC

iPhone/iPad/iPod touchプログラミングバイブル8章 いま読んでいるのは1つ前の版なので、最新のiOS6版とは内容が異なる。 たとえばiOS6版ではiCloudについて5章で書かれているが、iOS5版では8章で解説されている。また9章のアプリケーションの作成の章でも少…

iOS サウンドとムービーとアニメーション

iPhone/iPad/iPod touchプログラミングバイブル7章 サウンドの再生 CoreAudioフレームワークの追加 フレームワーク 意味 AVFoundation シンプルなオーディオ再生/録音とセッション管理の機能を提供 AudioToolbox オーディオ及びストリームの再生/録音、セッ…