games.pdbrec.com業務連絡 20190405 | TheoryOfContraints official blog

games.pdbrec.com業務連絡 20190405

とりあえず、Go言語でのFPS処理は

 

-------

package gameos

import "time"

var fpsTimeThen       int64 = 0
var fpsTimeNow        int64 = 0


func vsyncNowTime() int64 {
    return time.Now().UnixNano()
}

func VsyncInit() {
    fpsTimeThen = vsyncNowTime()
}

func Vsync() {
    if fpsTimeThen == 0 {
        VsyncInit()
    } else {
        // Fps Time.
        var a int64
        a = 0
        if fpsCount % 3 == 0 {
            a = 1
        }
        
        fpsTimeNow = vsyncNowTime()
        
        var fpsWait    int64
        fpsWait = 16666667 - (fpsTimeNow - fpsTimeThen - a)
        
        // Fps Wait.
        if fpsWait > 0 {
            time.Sleep(time.Duration(fpsWait))
        }
        
        // Reset.
        fpsTimeThen = vsyncNowTime()
    }
}
-------

な感じ

 

GolangのsleepはNano秒単位なので、それに合わせて数値も決めています

 

ゲームのパターンってのがあって、なるべく、packageなライブラリの形でゲームのプログラムのパターンをまとめたいので。プチコンのVsyncなライブラリを作ってみました

 

とりあえず、プログラムの実装は続いてます