[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 08/27 05:33 / Filesize : 124 KB / Number-of Response : 600
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

むしろjavascriptでゲーム作ろうぜ



1 名前:名前は開発中のものです。 mailto:sage [03/03/20 23:45 ID:8HB++g/p]
だめ?

584 名前:名前は開発中のものです。 mailto:sage [2011/08/15(月) 13:54:53.71 ID:bohVflxm]
JavaScriptでゲーム作るとき、
メインループは、どう書いてる?

俺のは、こんな感じ。

var timer;
var interval = 1000/50;

window.onload = function()
{
clearTimeout(timer);
timer = setInterval(loop, interval);
draw();
};

585 名前:名前は開発中のものです。 mailto:sage [2011/08/17(水) 03:39:57.10 ID:NP/VSZdL]
俺はこうだな

var timer,theday;
var wtime=0;

window.onload = function(){
clearTimeout(timer);
for(;;){
theday=new Date();
if(theday.getTime()-wtime>17)break;
};
wtime=theday.getTime();
timerid=setTimeout("ruup()",15);
//処理
};

setTimeoutがいい加減だから短めにとって予定時間まで空ループ

586 名前:名前は開発中のものです。 mailto:sage [2011/08/17(水) 09:55:52.84 ID:ZLcNjWKh]
実行してないけど、今考えた。

ttp://ideone.com/exWRh

参考:
ttp://www.tnksoft.com/reading/classgame/engine/01/015.php

587 名前:名前は開発中のものです。 mailto:sage [2011/08/17(水) 17:47:19.15 ID:YQYx4WBX]
メインループ>>528ではこんな感じの実装にしてる。

呼び出しはHTMLから<body onLoad="main()"></body>で

function main() {
  var fps = 60; //fps
  var oldtime = Date.now();
  var framenum = 0;
loop();
function loop() {
    //処理

    if (framenum > fps) framenum = 0;
    newtime = Date.now();
    if (framenum == 0) oldtime = Date.now();
    framenum++;
    targettime = Math.round(oldtime + framenum * (1000.0 / fps))
    waittime = (targettime - newtime <= 0) ? 1 : targettime - newtime ;

    setTimeout(main_routine, waittime);
  }
}
予定時間に合うようにsetTimeoutの間隔を調整しながらループさせてる。

588 名前:名前は開発中のものです。 mailto:sage [2011/08/17(水) 19:12:38.33 ID:HH5glzfw]
どれもセオリーから外れてるよ
パフォーマンスが最高なのは、最短時間でtimeout回して(これからはrequestAnimationFrameだけど)
前回からの経過時間でfpsを算出するvfr。
ビジーループなんて絶対にやってはいけない。

589 名前:名前は開発中のものです。 mailto:sage [2011/08/17(水) 21:28:52.95 ID:317iFgtY]
未だに空ループでウェイトをとる人間がいたとは驚きである

590 名前:名前は開発中のものです。 mailto:sage [2011/08/17(水) 21:41:02.89 ID:YQYx4WBX]
requestAnimationFrameってのがあるんだ。知らなかった。
試してみるよ。

591 名前:584 mailto:sage [2011/08/19(金) 15:12:41.72 ID:rMERX9g9]
つまり>>584は、こうなるわけだな。

window.onload = function(e)
{
function anima()
{
requestAnimationFrame(anime);
draw();
}
anima();
};

でも、これだとFPSを指定できないな・・・。
もう少し調べて改良してみよう。


592 名前:名前は開発中のものです。 mailto:sage [2011/08/19(金) 21:49:35.63 ID:rMERX9g9]
遅くなったけど、
これか!

window.requestAnimFrame = (function()
{
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(/* function */ callback, /* DOMElement */ element)
{
window.setTimeout(callback, 1000 / 60);
};
})();



593 名前:名前は開発中のものです。 mailto:sage [2011/08/20(土) 15:58:36.23 ID:x55/0vDO]
こんな感じかな?(ブラウザ別対応部分は端折ってる)

window.onload = function() {

var oldtime;
var newtime = Date.now();
main_routine();

function main_routine() {

    oldtime = newtime;
newtime = Date.now();

    update(newtime - oldtime); //前回からの経過時間に応じたゲーム進行処理
    draw(); //ゲーム描画処理

requestAnimationFrame(main_routine);
}
  function update(elapsedTime){}
  function draw(){}
}

594 名前:名前は開発中のものです。 mailto:sage [2011/08/25(木) 22:52:26.42 ID:QKHlbpkj]
グラディウス
html5-gradius.appspot.com/

595 名前:名前は開発中のものです。 mailto:sage [2011/08/26(金) 16:37:20.02 ID:rUzy1Sx0]
すっげ・・・
さすがに1面だけか

596 名前:名前は開発中のものです。 mailto:sage [2011/08/26(金) 17:13:07.12 ID:ctJIj+c5]
>>594
操作方法を教えてください。

CTRLを押下したらすげー滑らかに動くんだけどどういうこと?


597 名前:名前は開発中のものです。 mailto:sage [2011/08/26(金) 20:09:58.24 ID:SUBaQPS8]
(行番号:cynthia.js)
70: function handleKeydown (e) {
73: switch (e.keyCode) {
75: case 17: turboState = true; break;
で、ゲームループが
230: setTimeout(arguments.callee, t < 33 && !turboState ? 33 - t : 0);

こうなってるから、Ctrlキー押したらノーウェイトで動くんだろ。

それにしても完成度の高いプログラムは素人には色々勉強になるな。ありがたい。

598 名前:Perl忍者 [2011/08/26(金) 23:07:08.58 ID:YC3MR/cb]
お前らはほんとにゴミだな
所詮jsガキのかじり

ごみごみゴミゴミギオゴミゴミゴmゴイgモgミ

死ね

599 名前:名前は開発中のものです。 mailto:sage [2011/08/27(土) 04:36:55.08 ID:MFAFR1Ny]
俺がjavascript覚えたてのころ作ったのとえらい違いだ

www42.atwiki.jp/syugyou?cmd=upload&act=open&pageid=240&file=vvv.html






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<124KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef