むしろjavascriptでゲーム作ろうぜ at GAMEDEV
[2ch|▼Menu]
579:名前は開発中のものです。
11/08/07 02:56:31.27 z30IJjBe
>>576
べつに仕事でやってるわけじゃないし、そんなこと急に言われてもなぁ

580:名前は開発中のものです。
11/08/07 04:45:01.15 03ZeyO76
本格的なゲーム作るなら他の言語の方が向いてるってのは否定しない

javascriptの何が良いってプログラミング知識なんか無くても
それっぽい物が何となく作れてしまうところだと思うわ
(IE以外の)ブラウザで動くから色々なOSの人に遊んでもらえるし
iPhone含めたスマホのブラウザで動くものを簡単に作れるとか楽し過ぎる
趣味の小規模ゲーム作りには手軽でいいと思うよjavascript

581:名前は開発中のものです。
11/08/14 10:20:27.61 Ctp//zFb
js自体言語として気持ち悪すぎる


582:名前は開発中のものです。
11/08/14 10:42:38.32 vbG8XK2n
(キリッ

583:名前は開発中のものです。
11/08/14 11:17:17.65 Hvu39sbL
「作ろうぜ」ってスレなんだから、
「Javascriptではゲーム作れない」って話題をわざわざ持ってくるのはおかしい。

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

俺のは、こんな感じ。

var timer;
var interval = 1000/50;

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

585:名前は開発中のものです。
11/08/17 03:39:57.10 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:名前は開発中のものです。
11/08/17 09:55:52.84 ZLcNjWKh
実行してないけど、今考えた。

URLリンク(ideone.com)

参考:
URLリンク(www.tnksoft.com)

587:名前は開発中のものです。
11/08/17 17:47:19.15 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:名前は開発中のものです。
11/08/17 19:12:38.33 HH5glzfw
どれもセオリーから外れてるよ
パフォーマンスが最高なのは、最短時間でtimeout回して(これからはrequestAnimationFrameだけど)
前回からの経過時間でfpsを算出するvfr。
ビジーループなんて絶対にやってはいけない。

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

590:名前は開発中のものです。
11/08/17 21:41:02.89 YQYx4WBX
requestAnimationFrameってのがあるんだ。知らなかった。
試してみるよ。

591:584
11/08/19 15:12:41.72 rMERX9g9
つまり>>584は、こうなるわけだな。

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

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


592:名前は開発中のものです。
11/08/19 21:49:35.63 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:名前は開発中のものです。
11/08/20 15:58:36.23 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:名前は開発中のものです。
11/08/25 22:52:26.42 QKHlbpkj
グラディウス
URLリンク(html5-gradius.appspot.com)

595:名前は開発中のものです。
11/08/26 16:37:20.02 rUzy1Sx0
すっげ・・・
さすがに1面だけか

596:名前は開発中のものです。
11/08/26 17:13:07.12 ctJIj+c5
>>594
操作方法を教えてください。

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


597:名前は開発中のものです。
11/08/26 20:09:58.24 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忍者
11/08/26 23:07:08.58 YC3MR/cb
お前らはほんとにゴミだな
所詮jsガキのかじり

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

死ね

599:名前は開発中のものです。
11/08/27 04:36:55.08 MFAFR1Ny
俺がjavascript覚えたてのころ作ったのとえらい違いだ

URLリンク(www42.atwiki.jp)


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4685日前に更新/124 KB
担当:undef