2011-09-21 東電の退職金とかボーナスとか

2010-08-03
■[漫画]ちいさいお姉さんが来たよ!

待に待っていた、ちいさいお姉さんの単行本が出ました!
発売したのちょっと前なのですが、体調悪くしたりで受け取るのに時間がかかってしまい、ようやく読めました。
これでいつ灯さん分が不足しても大丈夫だZE!
連載読んでる時は気にならなかったのですが、結構キャラの顔変わってますね。
特に初期の講ちゃんは目付きが怖いです。
そして同僚の紀子さんの眼力メイクが凄い。
こうやって読み返すと、作画のゆとりさんのベタ塗りが自分好みなのに気づきました。
ベルセルクや幻超二みたいな超絶黒って訳ではないのですが、なんか好きです。
とにかく、灯さんの百面相が可愛すぎて、生きるのがつらい。
本当に表情が豊かで、作者の愛が感じられていいです。
紀子さん登場の回で単行本が終わっているので、2巻はそう遠くないかも。
今から楽しみです。
2010-07-16
■[ネット]恥ずかしい

昨日のIsoparametricさんのエントリーに対する記事は、Isoparametricさんがゲーム開発をご存じないと思い込んで書いた記事ですの、今から読まれる人はを注意してください。
私が書いたような事を当然判った上で、あのスライドを書かれています。
まさに釈迦に説法。
いやー、久しぶりに恥ずかしい思いしました。
でも、この恥ずかしい記事を書いたおかげて、DSでSTLを実用的に運用していた話が聞けたのは良かったです。
次にDSに関わることがあったら、試してみたいと思います。
とはいえ、恥ずかしいのには変わりないですけど。
クーラーつけてるのに、マジ汗が止まらない。
体温測ったら37.5℃くらいありました。
それくらい恥ずかしいです。
いやもう、穴があったら埋まりたいって、こういう事を言うんだなー。
今すごい実感しています。
2010-07-15
■[技術]C++の話(本当にあった怖い話)に反応してみる

http://d.hatena.ne.jp/Isoparametric/20100712/1278898618
id:Isoparametricさんが面白いスライドを投稿されていたので、思ったことをつらつらと書いてみたいと思います。
思った事を書いているだけなので、C++のdisを反論しているわけではありません。
私が書くのはゲーム業界のプログラマーという狭い世界で生きている人間が思った事なので、一般的なC++と思わないでください。
ディレクトリ構成が機能単位でなくプログラマの名前幽霊
これ実際に見たことあります。
アセンブラを使っていて、プロジェクトの規模が小さかった時代の名残らしいです。
その頃は、この辺りを気をつけなくてもプロジェクトのソース全体が見通せるので、あまり問題にならなかったみたいですね。
私が見たのは15年くらい昔のプロジェクトのソースなんで、さすがに今はこんな事してるプロジェクトは見たことありません。
バージョン管理システムを使わない幽霊
昔はプロジェクトの規模が小さかったので使ってなかったですけど、うちでは10年前位から導入してますね。
ネットワークドライブはあるのですが、ネットワークはNetWare Lite使っているので、CSVとか使えないとかありましたが(笑)。
そろそろ分散バージョン管理も試してみたいのですが、昔と違ってプロジェクトの規模が大きくなっているので、動きが鈍くなってしまったので、難しいですね。
コミットは朝しろ 帰る前にするなと言う幽霊
コミットの谷間でたまたま通らないコードをコミットしたらしょうがないけど、どう見ても通らないソースをコミットして帰られたら、ムカつかないっすか?
いや、いるんですよ、マジで。
それは極端な例ですけどね。
あと、ビルド通らないなら分かりやすいのですが、不定アドレス塗りつぶしとか判りづらいバグ仕込まれたときに、本人居ないのはキツイっすよ
手動でビルドテストしなければならない幽霊
ゲームもマルチプラットフォーム化すると、自動ビルドテストは必須です。
ちなみにCEDEC2010の「タダで始めるゲーム開発自動化のススメ」というセッションで、Hudsonが紹介されます。
これからのゲーム開発には欠かせなくなりそうです。
まさに、やらなきゃHudson(定番ネタ)
オレオレコンテナしか信じない幽霊
これは難しいですね。
うちのプロジェクトはコンテナライブラリ自作してますし、EAもEA-STLというSTLに似たインターフェイスをライブラリ自作してますね。
例えるなら、メダカを解剖する為に自作の小型ナイフを使っている人に、中華包丁を勧める感じです。
中華包丁が便利なのはわかるけど、ゲームで使う分にはtoo muchなんですよね。
これはゲーム本体に対する話で、STLやboostを否定しているわけではなく、ツールの方ではboostもSTLもバリバリ使ってます。
C++で「よくわからんから」多重継承は禁止すべしという幽霊
禁止はやりすぎたけど、積極的には使ってほしくないですね
「C++ 設計と進化」に書かれていある「多重継承は脱出用のパラシュートである。普段はいらないが必要なときには不可欠だ」というGrady Boochの意見に賛成です。
それと、ゲーム屋しか関係なくて申し訳ないですが、__m128のようなアライン必須のメンバ変数を持つクラスが多重継承すると管理が面倒なんですよね。
設計方法によると思いますが、クラスの構造見直してテンプレートとか使うと多重継承使うの回避できることが多いので、私はあまり使った事が無いです。
なので、的はずれな事を書いていたらすいません。
C++は遅いしか言わない幽霊
確かにC++は遅くないのですが、前のエントリーにも書きましたが、遅くなる罠が埋まりやすいのが難しいんですよね。
と言っても、いまさらC言語だけでゲーム作れって言われても耐えられないかも。
Luaとか既存のものより優れたスクリプトを作れるとか言い出す幽霊
コルーチン最高ですよね!
あれ無しでAI組むとか、もう無理です。
ちなみに、GDC2010のLua tutorialのライオンヘッドスタジオのJonathan Shawのスライドで、FABLE1では自前のマクロで組んでいたAIを2からはLuaに変えた話があります。
あとは、スクエニでほぼSquirrelでゲーム作ったタイトルもありますし、これからのゲーム制作にLua等のスクリプト言語は必須かも。
GOALみたいな例もあるので、自作スクリプトを全否定するわけではないですが、上手く行くのはノーティドックみたいな天才のいる会社だけだと思います。
最初にも書きましたが、スライドの内容を否定しているわけではありません。
思った事を書いただけです。
スライドの56Pの盲目的に従うのはダメよ「なぜ」大事という言葉は金言だと思っていますし。

俺はゲーム業界を脱出した人間なので、あまり偉そうな事は言えませんです。
実用かどうかはプロジェクトメンバによりますが、
ARMでboost::arrayの展開コードなどを見るとわかりますが、
実際に通常の配列ループより効率的なarmコードを生成してくれたりします。
(通常の配列アクセスより、iteratorを使うと速く効率的なコードになります)
というかtr1のテンプレートも普通に含まれてますしね。CWとか。
あとDS上でのSTLもコンパイラが独自最適化をしてくれるので、かなり良いコードを吐いてくれます。
(ReleaseNoteに詳しい)
例えば、型が違うテンプレートコードを共用化する最適化が働いたりします。
スマートリンカも使ってないコードは除去してくれますし、
mapファイルなどで確かめてちゃんと使っているので、俺は殆ど問題とは捉えてなかったです。
ただ、諸処の動作が気に入らない、
例えばvectorならちゃんとreserveをしないと可変長故の配列拡張時にメモリの断片化を招く、なんてことはありますから、
これらを解決したvectorをprotected継承したクラスは用意したりしてましたです。
>例えば、型が違うテンプレートコードを共用化する最適化が働いたりします。
これは凄いですね。
さすがGBAの頃から歴史があるコンパイラですね。
Wiiやっていた時にCWには泣かされたので、あまり良いイメージ無かったのですが、認識を改めます。
とはいえ、DS儲からないんで、私の周りにはあの青と赤の箱がもう無いんですよね。