litediary

<12月 2008年01月 2月>
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31   
過去の記事
2015年04月  2015年01月  2014年09月  2014年07月  2014年02月  2013年12月  2013年01月  2012年12月  2012年11月  2012年07月  2012年06月  2012年05月  2012年04月  2012年03月  2012年02月  2012年01月  2011年12月  2011年11月  2011年10月  2011年08月  2011年07月  2011年06月  2011年05月  2011年04月  2011年03月  2011年01月  2010年12月  2010年11月  2010年10月  2010年09月  2010年08月  2010年07月  2010年06月  2010年04月  2010年03月  2010年02月  2010年01月  2009年12月  2009年11月  2009年10月  2009年09月  2009年08月  2009年07月  2009年06月  2009年05月  2009年04月  2009年03月  2009年02月  2009年01月  2008年12月  2008年11月  2008年10月  2008年09月  2008年08月  2008年07月  2008年06月  2008年05月  2008年04月  2008年03月  2008年02月  2008年01月  2007年12月  2007年11月  2007年10月  2007年09月  2007年08月  2007年07月  2007年06月  2007年05月  2007年04月  2007年03月  2007年02月  2006年12月  2006年11月  2006年10月  2006年09月  2006年08月  2006年07月  2006年06月  2006年05月  2006年04月  2006年03月  2006年02月  2006年01月  2005年12月  2005年11月  2005年10月  2005年09月  2005年08月  2005年07月  2005年06月  2005年05月  2005年04月  2005年03月  2005年02月  2005年01月  2004年12月  2004年11月  2004年10月  2004年09月  2004年08月  2004年07月  2004年06月  2004年05月  2004年04月  2004年03月  2004年02月 
フレームレート08/02/01 02:55
モニタのフレームレート(リフレッシュレート)は家庭用TVでも何種類かある。
日本ではNTSCという規格がメインで、59.94Hzである。
海外ではPALも多く、これは50Hzである。
PCのモニタは50〜120Hzくらいは普通に設定できるものがある。

ゲーム(に限らず画面の動くもの)を作る場合、動きをスムーズにするために表示の更新をモニタのフレームレートにあわせる。
ところが、何も考えずに「→を押したら1フレームに1ドット右に動く」のような作り方をすると、60Hzの環境と120Hzの環境で2倍も速度が違ってしまうことになる。
(携帯ゲーム機のようなフレームレート固定の環境なら問題にはならないのだが。)

そこで、この問題について考察する。
表示を更新する間隔をSYNC、画面の座標等を更新する間隔をLOOPと呼ぶとしよう。
SYNCは環境によって固定されていて、LOOPは好きに設定できる。
しかし、単純にSYNC=LOOPにすると上記の問題が起きる。
ところが、SYNC≠LOOPにすると、1SYNC中のLOOP数が一定でなくなり、一定速度で動いてるものが一瞬止まる/早く動くと言うことが起こり、カクカク動いて見える。

この問題を解決するために、単純に考えつくのは、SYNCに応じてLOOPでの処理を変えることだろう。
[実装1]
while(1)
{
    float time = GetLoopTime(); //前回の呼び出しからの経過時間を取得
    GameLoop(time);
    Draw();
    WaitVSync();
}

GameLoop(time)では、timeに応じて移動距離などを調整する。
これだとSYNCによってパッドの反応速度等は変わってしまうが、そこまで気づく人はいないと思われる。(いない…よね?)
通常時はこれで問題はないだろうと思う。
多少の処理落ちも吸収できる副作用もある。

この実装において、リプレイを再生する場合を考えてみる。
リプレイデータは、乱数の種と各フレームのtimeとパッドの入力とする。
リプレイの再生は次のような処理になる。
float t_replay=0;
float t_sync=0;
int i=0;
while(1)
{
    float time = GetLoopTime(); //前回の呼び出しからの経過時間を取得
    t_sync += time;
    while(t_replay<t_sync)
    {
        t_replay += replay[i].time;
        i++;
        if (i>=replay.len)
        {
            // リプレイ終了
        }
        SetPad(replay[i].pad);
        GameLoop(replay[i].time);
    }
    Draw();
    WaitVSync();
}


timeとreplay[i].timeが完全に一致してれば1SYNCに1LOOPが再生され、スムーズに見える。
しかし一致しなかった場合、1SYNC中に2LOOP再生されたり1LOOPも再生されなかったりして、カクついて見えることが予想される。

そこで回避策として、表示より十分早い固定レートでGameLoopを実行することも考えてみた
[実装2]
float t = 0;
while(1)
{
    float time = GetLoopTime(); //前回の呼び出しからの経過時間を取得
    t += time;
    while(t>LOOP_TIME)
    {
        t -= LOOP_TIME;
        GameLoop(LOOP_TIME);
    }
    Draw();
    WaitVSync();
}

ここでLOOP_TIMEをいくつにするか考察してみる。
家庭用TVゲームの場合は50/59.94/60Hzの何れかであると思ってよい。
これらの最小公倍数を取ってみると299700Hzとなり、明らかに非現実的である。
59.94はおおよそ60であるとして、50と60の最小公倍数の300Hzというのが現実的なところである。
しかし日本で一番多い59.94Hzについて妥協するのは得策とは思えない。
またCPU負荷の問題もある。

■実験
59.94Hzのモニタを使用し、オブジェクトを等速運動させながら、(1/LOOP_TIME)を50, 60, 70, 120, 140, 300の6段階で変更してみた。
(70,140は50Hzのモニタで60,120を再生したときを想定)
・ 50:×ガクガク
・ 60:△スムーズだが時々カクっとなる
・ 70:×ガクガク
・120:△時々カクっとなるが、60よりは違和感は小さい
・140:×50や70よりはスムーズだがカクカクする
・300:○時々カクついているはずだが、ほとんど分からない。
という結果になった。
70,140でカクカクするということは、50Hzのモニタで60,120で再生したときにカクカクするということである。
この手法をとるなら300以上にするべきであろう。

以上。

********************************************************************

実装1ではあたり判定などの処理を適当にやると、処理落ちしたときに敵の弾をすり抜けるとかいうことが起きる。
実装2のLOOP_TIME=300はCPUパワーがかなりあやしい。
実装1で毎フレーム時間を計るのをやめて、起動時にフレームレート取得してtime固定にするかな?

さて他のゲームはどうしてるんだろう…
動画は24fpsと30fps混合のときは最小公倍数の120fpsにするようだけど。

卒論/修論の季節ですね。
あどえす08/01/31 03:32
久しぶりに弄った。
本体アップデートしてなかったので1.02aにアップデート。
TodayのW+Infoとデフォの時計を消し。

・WkTASK
デフォだとタスク切り替えが貧弱なWindowsMobileだけど、
普通のWindowsのタスクバーに少し近づける。
http://soft.photoracer.net/docs/wktask.html

・CustomClock
Todayの時計表示。シンプルな時計表示用に。
(CustomClock自体はかっこいい表示も可能)
http://www.dream-seed.com/weblog/archives/2006/11/customclock_8/

・bLunch
Todayのランチャーツール。高機能っぽい。
↓の一番下
http://homepage2.nifty.com/qta/pgiko/

その他に入れてるものは
・MZ3 Mixiブラウザ
・EbIRC IRCクライアント
・SyncFTP FTPクライアント
とかとか。
もう買って半年くらいなのに全然弄ってない。

・今日のPS3
作業自体は殆ど進んでない。あたり判定(適当)を付けてみたくらい。

AQUOSの22インチフルHDモニタ(15万くらい)が届いたので繋いでみた。
DELLの6万でフルHDなモニタより高いだけあって断然使いやすいね。
リモコンもついてるしメニューもサクサク動くし。

それから打ち合わせ4時間くらい。
業務日誌 01/2908/01/30 03:01
仕事いって帰って風呂はいったら2時半。
ネタ作る暇もなかったので今日も業務日誌。

・今日のPS3
特に目新しいことは無し。
午前中と昼はサンプルから写しただけで整理されてなかったコードを整理。
夕方に打ち合わせ2時間くらい。
それからざっくりゲームっぽいものにしてみる。
自機が動かせて弾が撃てて敵が上から下に飛ぶだけ。
あたり判定はまだ無し。
オブジェクトは全部立方体。
鏡音リン・レン08/01/29 02:44
ひさびさにニコニコで漁ってみた。といっても帰ったのが0時なので2時間ほど。
リン・レン出る前くらいからあまり見なくなってたので最近の情勢が分からず。

リン・レンよりミクのほうがVOCALOIDとしては出来が良いのかな?って気がする。
http://www.nicovideo.jp/watch/sm1994140
http://www.nicovideo.jp/watch/sm1928995
このへんは良い感じ。
でも殆どは発音のつなぎが不自然でミクのほうが人間に近い感じ。
音ののびは良いんだけどねー

VOCALOIDあんまり関係ないところだと
http://www.nicovideo.jp/watch/sm1995370
http://www.nicovideo.jp/watch/sm1643344
http://www.nicovideo.jp/watch/sm1927959
このあたりが面白い&すごい。

VOCALOIDランキング見てもトップがミクだなー

今日聴いた中でベストVOCALOIDはこれ
http://www.nicovideo.jp/watch/sm2046557

・今日のPS3
フォントで文字を表示してみた。
ヘルプ見ると15くらいの手順があってナニコレと思う。
サンプルとヘルプを見ながら4時間ほど頑張ってテクスチャに"test"って描くことに成功。
これを描くために書いたコードは300行くらい。
DSは50行くらいで表示できたのに…。

それからTGAの読み込みをさくっと作って読み込んだテクスチャを貼り付けてみたり。
UVスクロールしてみたり。


・1週間連続。
というわけでなんとなく目標達成。
まぁこれからもネタを作って更新するようにするけど、無いときは書かない。
寝てた08/01/28 02:53
11時くらいに遠征組み二人を駅まで送って、まんだらけと本屋をちょっと覗いて、ラーメン食べてきた。
それから洗濯して、Amazonでかったブラックラグーンを7巻まで読んでから昼寝。
もう暗くなってたけど昼寝。
起きたら日付変わってたので殆ど書くことがない罠

まぁ日記連続更新記録を伸ばすのは1週間くらいで良いか。
オフ会08/01/27 02:53
遠征組みが二人、その他いつものメンバーが4人くらいと初めてな人が3人くらい

秋葉で遠征組みがDSのマジコン買うってことでふらふら
自分もついでに買った。
M3 Perefectもってるけど、ROM変換しないといけないのとバッテリー喰うのでいまいちだったから。
どうせなら新しいのってことでDSTTにしてみた。4380円くらい。
1個目初期不良を引いて交換。

その後、新宿に移動して全員合流してカオスなOFF
焼肉でユッケを喰いまくった。
遠征組みはうちに宿泊。

これかいてる間に俺の布団で二人寝てる罠
よっかめ08/01/26 03:43
きんようび。早くもネタ切れ
明日は秋葉いってこよ。

今日のPS3
いまいち進展なし
Cellの性能とやらはとりあえず置いておいても目的のものは作れそうなので置いておく。
ようやく表示したい位置にキューブとラインが置けるようになった。
表示したいように表示するのはまだ遠い話だ。
なんかラインをスクロールさせてキューブ飛ばして画面みてたら気分悪くなった

鯖移行08/01/25 01:58
HTTP鯖をML115のLinuxへ移行完了。
ついでにエラーとWarningを垂れ流しながら走ってたスクリプトたちを修正。
日記のほうの文字化けも解決したはず。
このままIRCとFTPも移行できると良いなぁ

今日のPS3
Cellの性能とやらを試してみる。
でもあんまり良いベンチマークを思いつかなかったので、とりあえず
for(int i=0; i<0x7FFFFFFF; i++) { }
を最適化なしで回してみた。
というか走らせるまでにやることが多くて面倒だった…。

んで、結果は30秒。めちゃくちゃ遅い。
Pen4 3.2GHzだと4秒程度。
ちなみに最適化すると一瞬で終わる。ループごと消されてる。
まぁ並列で計算できるので単純にn倍になるけど…
単純な計算能力としてはまぁあんまり早くはないっぽいね。

# 日記連続三日目 2年ぶりの大記録。
08/01/24 02:58
今日はいつも通り9時半くらいに目覚ましで起きたんだけど、眠いので12時半に目覚ましセットしなおして二度寝した。
この判断は何故か妙に早かった気がする。

12時半起床。着替えて出ようとしたら外が白い。
これは休むかな と思ったけど、別に仕事行きたくないわけじゃないので自転車に乗って出発。
滑るかなーとおもって前ブレーキ握りつつハンドルを切ってみる。
見事にこけて笑った。

・今日のPS3
昨日の午後にAmazonでポチったDUALSHOCK3が午前中に届いてた。
早速、6軸センサーをトリガーにブルブルさせて、
一度ブルブルし始めるととまらなーい とか言って遊んだ。

サンプルプログラムの立方体を5000個に増殖してみた。
2FPSしか出なかった。
8日ぶり08/01/23 01:08
日記サボりすぎなので、先週の話だけど書いておく。

ギャルゲのほうマスターアップ…はしないけど、うちでの作業は終了。
初回特典が遅れてるのでゲームの発売が延びそうです。
あ、ゲームがおまけでしたか^^;
そして発売が延びると、大人の事情によりデータをちょこっと修正しなきゃならないのでマスターアップは先送り。
でも、おまけにカレンダーってあった気がするんだよね。4月からのカレンダーだと思うんだよね。

今年度は4月に入社して9月くらいまでスイーツ(笑)プロジェクトでガッツリ
9月〜1月の4ヶ月はスイーツ(笑)もやりつつ、先週終了したギャルゲのメインプログラマ
スイーツ(笑)はまだ終らず。
入社して1本目に終ったプロジェクトでメインプログラマというちょっとネタになりそうな一年だった。まだ1年終ってないけど。

んで、スイーツ(笑)はまだちょくちょく触りつつ、今週からはPS3の開発に。
ほぼ一人でSTGを作ることになった。3D全然知らないぜー STGも作ったこと無いぜー

月曜日
この開発機、クソ重たい…。物理的に重たい…。なんでコントローラーがついてないんだろう。
先輩のモニタ奪ってトリプルモニタになった。横に並べると首が痛い。
環境作ってサンプル動かすので1日終わり。

火曜日
サンプル丸写しを動かすので一日終わり。
AmazonでDUALSHOCK3をポチっとな。
この二日で判った事:DSは簡単だ。
ホットプレート08/01/15 01:49
00:34:59 <u*****> で、山手線沿線でちょーうまいお好み焼き屋ってないですか
00:36:27 <P******> ('-')自分でツクレ
00:37:15 <w*****> 俺もくいてえな
00:37:23 <w*****> crp明日お好み焼き食おうぜ
00:37:34 >creeper< 何時?
00:37:56 <v*******> 突然勃発するお好み焼きvs広島焼き戦争!キッチンは戦場に!!!
00:38:12 <w*****> 仕事終わったらでいいんじゃない
00:41:33 <w*****> まあ
00:41:36 <w*****> 機材も材料も
00:41:38 <w*****> おまかせだから
00:41:45 <w*****> 俺は食べに行くだけなので・・・
00:41:50 <w*****> 材料費ぐらいは出そう
00:41:51 >creeper< いやいや
00:41:54 >creeper< 作るんですか
00:42:08 <w*****> 食べに行くと高いじゃない
00:42:11 <w*****> しかも混ぜる器が
00:42:14 <w*****> 表面張力で
00:42:16 <w*****> ぶちぎれますよ
00:42:20 >creeper< ホットプレート買うところからですよ

買った。


仕事は珍しくすんなり終ったので、(というか今日は祝日だけど)
17時くらいに会社出て、帰りにホームセンターへ。
選択肢が4個くらいしかなくて微妙だったけど、
今回のお好み焼きで闘えて、個人的にやりたい鍋でも闘えそうなのが1個だけ在ったのでそれを購入。
なにげに選択肢の中で一番高かったけど気にしない。9980円なり。

材料はお任せで買ってきてもらって、お好み焼きは平和に終了。
一人1000円弱で満腹。

というわけで鍋でもすき焼きでも焼肉でも何でも出来るよ。
たこ焼きはたいちょーに譲るけど。
ていうか一人じゃまず使わないアイテムだから有効活用してね。


minibbs - テスト稼動中
creeper2012/05/03 01:28
.jpからもきてるんか…
creeper2012/05/02 10:52
誰も書き込まないのにSPAMばっかりくるようになったのでhost名制限かけました。
基本的に逆引きできて*.jpにならないと弾きます
wataru2010/12/01 11:43
GT5俺がかわりにやっといてあげますよ。
q2010/12/01 10:35
消化不良すぎ
2010/10/30 01:03
netbeansだとmakeファイル使う機会があるかもしれませんね
2010/10/05 06:04
なに書き込み不可能とか直しちゃってるのこわい
creeper2010/10/04 02:58
長いことコメント書き込み不可能になってた。直しました。
ao 2007/09/30 10:54
お、良いねぃ
creeper2007/09/16 05:18
そこまで詳しくなかったので調べてみた。Wikipedia万歳
なるほど、失敗する6号機まではかぐやと同じ3t強をSBB無しの202で上げてたんですね。
SRB-Aの出力を下げてSBB追加することでとりあえず対応していたと。

今後の予定をみると、次の燃えるのは2010年の金星探査機かー
「超高速インターネット衛星WINDS」は名前には惹かれるけど都心に引きこもってる限り関係ないなー
Wikipediaの予定だとWINDSは2024になってますね。
重量的に、2024か204か新型か…
A責ダッシュ!2007/09/15 10:11
SSB使っての打ち上げって今回が最後じゃなかったかな?
まー、今回のもSRB-Aがもともとの性能を出せてれば2022じゃなくて202で上げられたかもしれないです。LE-7Aの再生長ノズルはこなれてきたようなので、元のSRB-Aが復帰すればまたちょっとづつ色々変わっていくんじゃないのでしょうか。H-IIBも控えてますしね。
creeper2007/09/12 05:55
http://lovelove.rabi-en-rose.net/blog.php?n=256

今回はcygwinのgccつかってます。
まぁ、ソース見ての通りこの問題が1:1になるのは自明で、
かつrandの結果は偶数奇数が交互に出るようなこともなく、
おかしな偏りも無かったのでOKということで。