2012年1月10日火曜日

コルーチン(Coroutin)について

コルーチンをUpdateから呼ぶときに、ちょっと調べたのでメモ
コルーチンのウィキペディア

シューティングの弾などで一定時間経ったら自動消滅させる手法で、まず変数でタイマーを使うのが思いつくのですが、そういえばWaitForSecondsとかのコルーチンがあったなぁと思いだして、これを使ってみることにしました

追記
Destroyメソッドが第二引数に時間を指定できるので、Destroy(gameObject, 3.0f)をStartメソッドで呼んでおくのが一番スマートですね

最初のコード
void Update(){
 Kill();
}

IEnumrator Kill(){
yield return new WaitForSeconds(3.0f);
Destroy(gameObject);
}

実行すると、Killが実行されていない・・・
どうやらUpdateからコルーチンを呼ぶときには
StartCoroutin("Kill");
なんてものを使わないといけないらしい

void Update(){
  CoUpdate();
}
void CoUpdate(){
 StartCoroutin("Kill");
}
IEnumrator Kill(){
  yield return new WaitForSeconds(3.0f);
  Destroy(gameObject);
}

で3.0秒後に消滅してくれるようにできました

コルーチンの仕組みはもっと調べておきましょう・・・


2012年1月4日水曜日

プログラマが知るべき97のこと

プログラマが知るべき97のこと」を読み終えました

私はゲーム会社でプログラマとして働いて、二年が経ち今年から三年目になります
コーディングルールやC++言語テクニックな本を読むことは多かったのですが、この手の本は読んだことがなかったので、大掃除息抜き用に購入しました。

十数人のチームでプログラミングしています。この本に書かれていることには頷くばかりでした。
特に心に響いたものは

ボーイスカウトルール コミットするときには前よりもより綺麗なソースコードにする
1万時間の訓練 エキスパートになるにはそれくらいの訓練が必要になる
魔法に頼りすぎてはいけない 誰かがうまくいくようにしている
DRY原則 繰り返しを避けること
ハードワークは報われない
その場しのぎが長生きしてしまう
単一責任原則

この辺りでした。
後はテストの重要性やコードは他人のために書く、振る舞いもカプセル化すべき、正しい使い方を簡単に、誤った使い方は困難に、とかはコーディングルールと被って改めて認識しなおされたってところです。

プログラミングして数年経ったり、新人のときだったりに読むと良い指針になるんじゃないかなぁ。

C++のテクニック本を読むのも大事ですが、仕事はチームワークなのでこういう内容もしっかり知って実践していきたいですね

2012年1月2日月曜日

プロセッサを支える技術を読みました

あけましておめでとうございます
大掃除用に技術書を五冊購入しまして、その一つ「プロセッサを支える技術」を読み終わりました

内容はプロセッサCPUとは何か、プロセッサ開発の歴史からどうやって高速化されてきたか
身の回りにある各種プロセッサの進化方向を考えると言った内容です。

プログラマ的には、キャッシュやL1キャッシュがどうメモリ上のアドレスを認識しているのか、が読んでて面白かったところです。昔の基本情報技術者試験に出てくる言葉をしっかり説明してくれてますし、回路図も載ってて理解しやすいかなぁと思います。

プログラミングの高速化テクニックみたいなことも、ちょっとだけ載っていたりします。最適化してくれない部分とか。それがボトルネックになることはないと思うので、何か知ってればいいことがあるかも?
GPGPUもちょっと載ってますが、この辺はちゃんとした本を読むといいでしょう。

ポインタとか使ってるけど、アドレスからメモリにアクセスして実際にデータをどうやって取得してるのかとか、知ってて損はしないですし、400Pぐらいなので一日かからず読めます。
ちょっとプログラミングの手を止めて、読むにはちょうどいいです。
このガジェットでエラーが発生しました