TheoryOfContraints official blog -13ページ目

リスペクト




個人的に昔のゲームのビデオを見ている。今作っている落ち物パズルゲームで、凄くリスペクトしてます
(≧▽≦)



メモリー管理

C++のメモリー管理がウザいのでgolangでゲームを作ってますが

c++でも、pascalやgolang的にmakeで動的にメモリーを押さえて配列変数を使って

配列変数をdeleteし、その後、しかるべきタイミングでガベージコレクタではなく、メモリーのデフラグをかませれるのではないか?と

削除したメモリーの部分を詰めて、メモリーの後ろを空けて、そこに配列変数を置いてゆくと

デフラグはガベージコレクタよりかは負荷が強いけど、ゲームならしかるべきタイミングでデフラグをかますのが効率的なのでは、と思った

まぁ、golangで良いですけど



games.pdbrec.com業務連絡20170326

とりあえず、ブロックを数えて消して、連鎖する所まで作った

結局、ブロックの周りにブロックが3つあるか調べて

・縦長の場合は消さない
・L字型だったら縦にブロックが伸びているか調べる

で消すブロックを調べてます

バグなく動いていて、実装こそ正義!

ちゃんと連鎖も組めるし、遊んでいて面白いので、アニメやリアルさを追加していく作業へ移行しますよ

ゲーム本体は出来上がった



games.pdbrec.com業務連絡20170324

ブロックの数え方を思案する

まず、横に並んでいるブロックの塊を調べ、横に並んでいるフラグも立てる

次に縦にブロックを調べ、横長のブロックの塊が縦に繋がっていたら、それらの塊を一つにまとめる

全ての塊を数えたら、「横に並んでいるフラグ」が見つかる「3つ以上ブロックが集まっている塊」を消す

と落ち物パズルが作れるな、と思う



games.pdbrec.com業務連絡20170223

昨日は大阪デザイナーセンターでデザイナー向けマニュアルと雑誌をいくつか見て

その後、梅田のジュンク堂でgolangのマニュアルを探す

落ち物パズルゲームのブロックの数え方は、再帰を使わなかったら、「セルオートマトンでブロックを数えるチューリングマシンの実装」だなと思った

ブロックの数え方のアルゴリズムの問題は再帰を使わなかったら、面白い問題だ



games.pdbrec.com業務報告20170321

とりあえず、Xorshiftの乱数ルーチンには

 

i  =  i % x

 

的な奴を追加してBASICのRNDな関数へ変更した

 

%は余りを求める記号でx=10なら、iをxで割るあまりなので0から9までの10パターンがルーレットで出てくるので、10面体サイコロと同じ奴になる

 

あとは、プログラムをリファクタリング=推敲して、本物のゲームに見える風に変更

 

 

 

 

 

games.pdbrec.com業務報告20170320

ブロック積み込み処理とxorshiftを使った乱数処理を作りました

 

-------

package Gos

    import (
        "math/rand"
        "time"
    )
    
    var xorshift int32

 

    func init() {
        rand.Seed(time.Now().UnixNano())
        xorshift = rand.Int31n(2147400000) + 1 // fuzzy at funny.
    }

 

    // Original. http://excamera.com/sphinx/article-xorshift.html
    func RndXorshift() int32 {
        xorshift ^= (xorshift << 13)
        xorshift ^= (xorshift >> 17)
        xorshift ^= (xorshift << 5)
 

        // abs mean 絶対値.
        var i = xorshift
        if (i < 0){ i = -i; }
         
        return i
    }

-------

 

とりあえずは動いている

 

 

 

 

golangの循環参照問題

golangのpackageで発生する、相互のpackageを見るとエラーになる問題

結局、package間のメッセージを送る、メールっぽいメッセージpackageを作れば良いのかな?って思った

メモ



games.pdbrec.com業務報告20170317

とりあえず、適当な画像データで画像表示してブロックが動くところまでは作った

 

適当な仮画面ですが、北海道町起こしゲーム「美瑛」(だったっけ?)の画面っぽい

 

ゲームモードの方は、ゲームモードのパラメーターpackageを作って、ゲームループpackageがそのパラメータを見てモードを分岐して、ゲームの本体packageはパラメーターpackageの関数でゲームモードを変更するシステムで動いている

 

 

 

 

ノイズ

ルーレット=乱数を数学的に発生させるのは難しい

サイコロでも、分子や電子の偏りでパーフェクトな乱数を発生させるのは難しい

完全にデタラメな物の一つはブラウン運動だ。テレビの砂嵐の粒の動きは完全なデタラメ

テレビの砂嵐は空気中の電波のノイズなので、ノイズは完全なデタラメな訳だ

なので、アナログなノイズ発生装置をデジタルにサンプリングして数値化すれば、完全な乱数をハードウェア的に実現するのではと思いました

メモ