Programming

boost::numeric::ublas::vector

http://d.hatena.ne.jp/m107/20050528/1117283017 なんか遅いらしい。せっかく今日試してみようと思ってたのにーちょっとublas::vectorのドキュメントを眺めてると、 テンプレート引数にアロケータを渡すようになってて デフォルトではstd::vectorを使うよう…

ウホッいいLuaラッパ

http://sowwa.blog4.fc2.com/blog-entry-36.html シンプルかつ必要十分な機能のLuaラッパー。 C++クラスとのbindはlunaを使えばいいだろう。 何気に初期化のところのfunctorの使い方に関心。 漏れの知能では思いつきもしなかった。

boost線形代数クラス

http://d.hatena.ne.jp/m107/20050526/ で知った。 http://www.page.sannet.ne.jp/d_takahashi/boost/ublas/index.html クォータニオンクラスがあるのは知ってたけど行列やベクトルクラスがあるのは知らなかった。 自作のベクトルクラスでも不便はしていない…

ゲーム開発とスクリプトその3

http://d.hatena.ne.jp/a_little_bit/20050519 便乗させていただきまつ。こういう、アイテムデータと振る舞いをセットにして扱いたい場合、 Luaだとこういう風に書けると思う。 Items = { "Herb", "AbaTea"......} -- ヘルス回復用の薬草 Herb={ name = "薬…

FTGLの日本語その2

toge氏の情報によると(http://d.hatena.ne.jp/toge/20050519) CharMapで指定するのは、FTGLに渡す文字列のコードではなく使用するフォントの文字コードだということらしい。 何故か漏れはFTGLが勝手に文字コード変換してくれるもんだと思い込んでいたぽい。…

ゲーム開発とスクリプトその2

keim_at_Si氏の語りが興味深いので連日便乗。 http://d.hatena.ne.jp/keim_at_Si/20050519/ ここで触れられているスクリプト仕様の、再利用性・汎用性のための一般化された設計は特殊化しづらい場合があるという問題。 漏れは今まで「汎用性の高い設計にしと…

ゲーム開発とスクリプト言語

http://d.hatena.ne.jp/keim_at_Si/20050518/に便乗。まずはkeim_at_Si氏の述べている、どこまでをスクリプトで記述するのかという問題。 スクリプト処理させると便利そうなもの ゲーム中の細かなパラメータ 敵のデータ・挙動 メニュー画面やステージ毎の処…

FTGL続き

http://d.hatena.ne.jp/i-saint/20050515 WindowsでSJIS表示できるらしいとの情報。さっそく実験してみることに。FTGLのFTCharMap.hを読むと、SJISにも対応しているようなことが書かれている。 CharMapにエンコード方式を渡してやれば良いようだ。 ところが…

ゲームオブジェクトの設計その3

コンポーネント間の相互通信についても一つ困ったことが。衝突が検知された場合、こういう仮想関数へコールバックして欲しいわけですよ。 virtual void collisionDetected(Object& target) 衝突を知らされるオブジェクトとしては、衝突した相手が誰だか知り…

ゲームオブジェクトの設計その2

昨日の続き。コンポーネントベースの設計を実装するにあたってぶつかった問題点。 まず問題になったのが、コンポーネント間の情報交換。たとえばオブジェクトが視界内にあるかどうかの判定。これは視錐台との衝突判定とみなすことができるため、できれば衝突…

FTGLで日本語表示

http://d.hatena.ne.jp/m107/20050512/1115912015 FTGLで日本語が表示できないのでは?という情報が気になって寝るに寝られず実験。 ビルドするのにFreeTypeやらglutやらが必要で思いのほか手間取ってしまった。なんとかデモプログラムをビルドして日本語表…

ゲームオブジェクトの設計

今まで悩みながらも満足の行く設計が出来たことがないんだよなぁ。ここで言うゲームオブジェクトとは、いわゆる古典的タスクシステムのタスクに相当する物で、プレイヤーや敵などのキャラクタであったり、画面を彩る派手なエフェクトであったり、特定の領域…

ソート済みstd::vector

http://d.hatena.ne.jp/toge/20050508に便乗。 連想コンテナをソート済みのstd::vectorに置き換えたほうが効率が良い場合があるというお話。 以前Effective STLを立ち読み(_| ̄|○)した時に気になって試してみたのだけれど、思ったほどパフォーマンスが出…

備忘録

ホーミングレーザーののアルゴリズム http://d.hatena.ne.jp/m107/20050505 std::vectorのパフォーマンスについての考察 その1 http://d.hatena.ne.jp/studiokingyo/20040719 その2 http://d.hatena.ne.jp/studiokingyo/20040916 MMX/SSEを使ったメモリコ…

memcpyは本当に高速か

単純コピーにはmemcpyを使ったほうが速いという話をよく聞くので、真偽を確かめるべく情報を集める。 http://www.cyborg.ne.jp/~xelf/developer/MemoryCopy.html http://d.hatena.ne.jp/kmt-t/20040629#p3 http://beautiful.homelinux.net/~sky-software/dia…

VC++7.1のSTLはクソ?

http://d.hatena.ne.jp/Cryolite/20040717 STL使いまくりストとしては非常に気になる。というかVCのSTLについて良い話しを聞いたことがないのだけれどw 7.1でもSTLがクソなのは相変わらずかぁ。いい加減STLPortに乗り換えようかなあ。 http://www.nantekott…

Luaをラッピング汁

というわけで、Luaのラッパを製作中。 luabindやluaplusのような物は大袈裟すぎる気がするのでヘッダファイル読み込みだけで使えるようなシンプルな物を目指す。 そこで、他の方が公開されているラッパはどういう実装になっているのか調査。Luna(http://www.…

LuaからC++へデータを渡す場合

LuaからC++の値を直接いじいじしたい場合。 データをLua側に持たせておくと、C++からアクセスするにはスタックを操作しなければならないし、毎回Luaへデータの問い合わせを行うのはオーバーヘッドが大きそう。 というわけで大抵の場合、C++の値を操作するた…

衝突判定その3

衝突判定でちょっと困ったことに。 現在はhttp://d.hatena.ne.jp/halo_w2/20050401#p3 の構想で、すべてのオブジェクトの状態更新が終了した段階でまとめて衝突判定を行っている。オブジェクト状態更新の順番に依存しなくなるメリットがあるんだけど、いくつ…

lua_dostringで手抜き

Luaの欠点としてよく挙げられるのが、C側からのインターフェースの使いづらさ。いちいちスタックを弄くらなくてはならない面倒がある。テーブル内のメンバに触りたい場合など特に面倒くさい。そこで任意のluaコードを実行するlua_dostringを使って手抜きでき…

Luaで日本語

Luaでコメントや文字列リテラルに日本語を使ってみる実験。 やはりgccなどと同じくSHIFT-JISの'ソ'や'表'などの2バイト目がエスケープシーケンスとみなされてしまい、正常に解釈されない。これを回避するために"表示"を"\x95\\示"と書く必要が出てきちゃう。…

ハッシュコンテナ

std::stringをキーにしたstd::mapとかをよく使うのだけど、比較・照合のコストが高い文字列の場合、二分木のコンテナだと無駄が多くてよろしくなさそう。 というわけで計算量をほぼO(1)に抑えることが出来るhash_mapやhash_setを使ってみようと思う。標準C++…

コンストラクタ/デストラクタ中での仮想関数の呼び出し

本日の_| ̄|○な失敗。 Luaのラッパクラスを作ろうと思い、LuaStateとそこから派生したLuaThreadというクラスを作った。LuaStateではデストラクタ中で後片付け関数close()を呼び出す。Luaのthreadに対してlua_closeを呼ぶと落ちるのでLuaThreadではこのclose…

boost::randomの罠

boostの乱数ライブラリであるboost::randomは、Mersenne Twister法をはじめとする複数の乱数発生器と、ベルヌーイ分布や正規分布などの複数の乱数分布があり、それらを組み合わせて使うことが出来るスグレモノ。 だけど、プログラム中で複数の乱数分布を使お…

ねちっこくLuaを触ってみる(スレッドでハマる)

Luaスレッドで制御するオブジェクトの話。オブジェクト生成時にそのつどlua_newthread()でスレッドを作成していくと10個くらいオブジェクトを作ったところで何故か落ちてしまうことが判明。 最初にスレッドをドカッとプールに作り貯めておく方式であれば落…

しつこくLuaを触ってみる

Luaのスレッド(coroutine)を使ってオブジェクトを制御してみる。このcoroutine、まさにゲームにうってつけの超便利な機能。coroutineがいったいどんなもので、どんな風に便利なのかは下記URLを参考に。 http://www.radiumsoftware.com/0303.html#030329…

描画の高速化3(VBOを使う)

toge氏の日誌(id:toge:20050420)を見て漏れ漏れもということで後回しにしていたARB_vertex_buffer_objectを試してみることに。 OpenGLではこういった拡張機能を使用する場合、使用できる拡張のリストを取得して目的の拡張が使えるのかどうかを調べ、必要な関…

もっとLuaを触ってみる。

ゲーム中オブジェクトのパラメータ設定や制御をできるように。楽しくなってきた。こいつは使いこなせればかなり使えそう。 最初は奇妙に感じたスタック操作にも慣れてきた。とはいえかなり面倒くさいので理解したらラッパを作ろう。微妙に気になるユーザーデ…

Luaを触ってみる。

前から気になっていた組み込み言語Luaを弄くりまわしてみる。下のサイトを参考にコネコネと。とりあえずLuaから設定を弄れるようにしてみた。 LuaからCの関数を呼ぶのは簡単なのに、逆をやろうとすると大変。データの受け渡しにいちいちスタックを弄るのはと…

Effective C++ 第3版(id:Cryolite:20050413)

キタ━━━(゜∀゜)━( ゜∀)━( ゜)━( )━( )━(゜ )━(∀゜ )━(゜∀゜)━━━!!!!! 超定番本でついにメタプログラミングやBoostについて言及される! 日本語訳出るのはいつだろう。