2008-01-01から1年間の記事一覧

VirtualBoxがOpenGLに対応!?

http://www.virtualbox.org/wiki/Changelog何気にググったら待ちに待った3Dアクセラレーションをついに対応開始したらしい。まだ実験的に、みたいだけど。compizは動かないけど、blenderとか普通の3Dアプリは動いた!すげー。vbox更新しただけだと動かなく…

Androidの壁紙がかわいい

http://code.google.com/intl/ja/android/goodies/index.html うん。

はてなアンテナからgoogleリーダーへ

フィード管理をはてなアンテナからgoogleリーダーへ移行しました。Ajaxで使いやすいし、やっぱし天下のgoogle先生ですから。 GMailといい、最近どっぷりgoogle信者です。

古いPCを有効活用

1ヶ月ぶりの更新です。やっとこ仕事が一段落してもうすぐ夏休みです(^O^以前から旧式のノートPCにPuppyLinuxを入れて遊んでいたんですが、メモがてらローカルでPukiWikiが使いたくなってxamppをインストールしてみました。展開して起動するだけなので…

Ajaxがすごい

ついこの間SQLiteを知って(某氏の日記へのコメントではじめて知った^^)いろいろ調べてました。GoogleGearsやExtJSなどを見るに近年のweb2.0技術がすごい。これ勉強しないとプログラマとして出遅れる気がしてきた(むしろもう遅い?) 伊藤さん懐かしい。い…

Dokan

http://www.infoq.com/jp/articles/filesystem_helloworld_1http://dokan-dev.net/ Windowsファイルシステムをユーザーモードで作成するツール(ライブラリ?)らしい。ゲームの開発現場で使ってるアセット管理システムをファイルシステムレベルまで落とし込…

gtagsにバグが。

cygwinでビルドしたgtagsがshell上だとうまく動くんだけどemacs上だとgtags-visit-rootdirしてもGTAGSROOTが気に食わないと怒られたので、速度のことも考えてmsysでビルドしなおすことにした。 こっちはこっちでファイルリスト作って喰わせるとpath name is …

gtags入門

中途半端にタグができないな…って悩んでたらただデフォルトのgtags.confで.hがC++じゃなくてC扱いになっててclassが無視されてただけだった…。これでemacsでタグジャンプ使えるようになった。 次はVisualStudioと連携してコンパイル&デバッグする方法を確立…

近況報告

etc

めっちゃ忙しいです。いろいろ書きたいことがあるんだけどまとめる時間が取れません。とりあえず箇条書きで報告します。 脱xcopy!rsyncが超便利。 第3次emacsマイブーム到来。 shive's code完全停止中。

CEDEC2008 小さな王様と約束の国

CEDEC2008でのSquirrelの講演を見ました。 スクリプタだけではなく、プログラマもSquirrelで一緒に開発。 3割がC++コードで7割りがスクリプト。プログラマも後半はほとんどSquirrelで作業しつつたまにC++実装してバインディング。途中で面倒になってきたの…

awkが楽しい

仕事ではじめてawk使いました。プロジェクトファイルとソースファイルを定型的に処理するスクリプト。例えばC++ソースファイルの#〜を削除するだけであればこんな感じ。 #!/bin/gawk -f BEGIN { } $1 ~ /^#/ { next; } { print($0); } END { } 実際にやった…

スレッドの作り方

C++

なんだかスレッドの調子が悪いな〜。動作が不安定。って思ってたらCreateThreadを使ってるのが原因だった。 Windowsでスレッドを作るには_beginthread,_beginthreadex,CreateThreadの3種類の関数がありますが、_beginthreadexを使うのがベターらしい。Creat…

squirrelとc++の速度比較

#pragma optimize("",off) static void dummyfunc(){}//最適化抑制のための関数 #pragma optimize("",on) struct Foo { int num; Foo() { num = 0; } void inc() { ++num; dummyfunc(); } }; Foo foo; for(int Li=0;Li<1000*1000;++Li){ foo.inc(); } O2でビ…

squirrelのデータをC++から簡単にアクセスする

モデルのポリゴンデータを.nutで記述するつもりなので、手始めにsquirrelのデータへのアクセスを容易にするためのオブジェクト&イテレータを実装してみた。 return { NAME="カイン" JOB="竜騎士" EQUIP=["グングニルの槍","クリスタルアーマー","リボン"] }…

仮想関数ポインタは4バイトとは限らない

c++

呼べました。なんてあっさりと。。。スタック上の値が0だったりCCだったりしたのはポインタのサイズが違ってて4バイト以上の余り部分が初期化されていないからなんでしょうね。これをsquirrelに組み込んでみます。いままでuserpointerの自由変数でやってた…

squirrelへのクラス登録、仮想関数テーブルがあるとNG

ベクトル組み込みはできた。コンストラクタによくあるオーバーライドに関してはメソッド名を変えることでスルー。他のクラスを登録しようとしたら、キャストにミスってるらしくvfptrがあるとうまくメソッドが呼ばれない。あとちょっと。。。 2008.09.16 追記…

ゲーム開発のコツ

うちでは常套手段としてよくやるんですけど、モニタ(テスターとも言う)にチェックしてもらうときにハングアップしたときの例外ひろってそのときのメモリダンプ、コールスタックダンプなどを退避、オフラインでマップファイルからシンボルに展開してweb…

squirrelへのクラス登録、引数と戻り値にC++型を使えるように

忘れてた。 class model { void setvisible(bool flag); bool isvisible() const; }; class loader { public: model& loadmodel(const char* path); }; vm.creg<model>("Model") .variable("visible",&model::isvisible,&model::setvisible); vm.creg<loader>("Loader") .fu</loader></model>…

多人数ゲーム開発のコツ

いま仕事で作ってるゲームのビルド警告があまりに多いので1台空いてるマシンにループビルド環境を作って定期的にメールで警告一覧をプログラマ全員に送りつけるようにしてみた。しかもグループごとの警告数比較付き。 そしたらあら不思議。見る間に警告が減…

consttable

consttableの存在がよくわからんかったのでここにメモしておきます。 enum hoge { one=1, two=2, san=3, }; const uuu=11; このenumとconstはroottableやregistrytableと並列に存在するconsttableへスクリプトコンパイル時に蓄えられます。ここでわからない…

続squirrelへclassバインディング

http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?rev=52&root=shive&view=rev だいぶできた。 //クラスを登録 creg<aaa>(hvm,"aaa") .function("getstatic",&aaa::getstatic) .function("somemsg",&aaa::somemsg) .function("getname",&aaa::getname) .function("</aaa>…

squirrelへclassバインディング

http://svn.sourceforge.jp/svnroot/shive/junk/diary/2008/20080906-test001.cpp 簡単なclassバインディング書いてみた。関数のオーバーロードとかちゃんとやるべきだろうか。必要になってから考えよう。メンバ変数へのアクセスも対応したいなぁ。

Google C++スタイルガイド

http://www.henshi.net/k/hiki.cgi?GoogleCppStyleGuide 例外を使わないようにしてるのは意外だった。書いてることが細かすぎる気がする。推奨だから別にいいんかな。 それはそうとは悪だ。なんでuintとかGetObjectとかdefineしとんねん。あれはいつになった…

squirrelの構文習得

http://svn.sourceforge.jp/svnroot/shive/junk/diary/2008/20080906-test100.nut 構文習得がてらつらつら書いてみた。luaもC++も好きなので気持ちがいいです。早くゲームに使ってみたい。 以前luaを使っていたときにもすでにcoroutine(fiber)の仕様はあった…

squirrelのsjis対応

http://svn.sourceforge.jp/svnroot/shive/junk/diary/20080904/sqlexer.cpp ReadStringで文字列をパースしているようなので、leadbyteが来たらもう1文字を連続して読むように変更しました。ちゃんとエラーチェックしないとごみデータを渡したときにおかし…

svn:externalsが相対パスに対応 svn-1.5.x

svn

http://subversion.tigris.org/svn_1.5_releasenotes.html#externals英語ちゃんと読んでなくて気づかなかった。subversion-1.5.xからsvn:externalsが相対パスに対応した。待ってましたよ、この機能!ようするにリポジトリ上のシンボリックリンクが使えるよう…

くまたんち

http://www.dmpl.co.jp/kumatan/ バナー貼ってくれと書いてあったので貼ってみた。 このサイト、バナー画像以外のところに発売日が明記されていないのはポリシーなのか。 9/25発売らしいです。

dostring

昔luaにあったdostring。あれなんでなくなったんだろう?squirrelで書くとしたらこんな感じ。 //printハンドラ static void print( HSQUIRRELVM hvm, const SQChar* format, ... ) { va_list args; va_start( args, format ); vprintf_s( format, args ); va…

sourceforgeアクセス記念

はみがきさんの助言でやっとこ会社からsourceforgeへアクセスできました。記念に最近の調子を画像で表してみました(なんのこっちゃ)この画像はsourceforgeにupしてリンクしてみました。画像もあげ放題ですな。#実は作業中のソースもあがってますがハング…

squirrelを使ってみた

http://svn.sourceforge.jp/svnroot/shive/sandbox/sqtest/test000.cpp以前luaを使っていたのですんなり入れそう。 APIセットはluaを踏襲して完全に+αした感じになってます。配列、クラスなどが増えているのと、スロットの初回代入の違いなどを覚えればOK…