メモリー管理
C++のメモリー管理がウザいのでgolangでゲームを作ってますが
c++でも、pascalやgolang的にmakeで動的にメモリーを押さえて配列変数を使って
配列変数をdeleteし、その後、しかるべきタイミングでガベージコレクタではなく、メモリーのデフラグをかませれるのではないか?と
削除したメモリーの部分を詰めて、メモリーの後ろを空けて、そこに配列変数を置いてゆくと
デフラグはガベージコレクタよりかは負荷が強いけど、ゲームならしかるべきタイミングでデフラグをかますのが効率的なのでは、と思った
まぁ、golangで良いですけど
c++でも、pascalやgolang的にmakeで動的にメモリーを押さえて配列変数を使って
配列変数をdeleteし、その後、しかるべきタイミングでガベージコレクタではなく、メモリーのデフラグをかませれるのではないか?と
削除したメモリーの部分を詰めて、メモリーの後ろを空けて、そこに配列変数を置いてゆくと
デフラグはガベージコレクタよりかは負荷が強いけど、ゲームならしかるべきタイミングでデフラグをかますのが効率的なのでは、と思った
まぁ、golangで良いですけど
games.pdbrec.com業務連絡20170326
とりあえず、ブロックを数えて消して、連鎖する所まで作った
結局、ブロックの周りにブロックが3つあるか調べて
・縦長の場合は消さない
・L字型だったら縦にブロックが伸びているか調べる
で消すブロックを調べてます
バグなく動いていて、実装こそ正義!
ちゃんと連鎖も組めるし、遊んでいて面白いので、アニメやリアルさを追加していく作業へ移行しますよ
ゲーム本体は出来上がった
結局、ブロックの周りにブロックが3つあるか調べて
・縦長の場合は消さない
・L字型だったら縦にブロックが伸びているか調べる
で消すブロックを調べてます
バグなく動いていて、実装こそ正義!
ちゃんと連鎖も組めるし、遊んでいて面白いので、アニメやリアルさを追加していく作業へ移行しますよ
ゲーム本体は出来上がった
games.pdbrec.com業務連絡20170324
ブロックの数え方を思案する
まず、横に並んでいるブロックの塊を調べ、横に並んでいるフラグも立てる
次に縦にブロックを調べ、横長のブロックの塊が縦に繋がっていたら、それらの塊を一つにまとめる
全ての塊を数えたら、「横に並んでいるフラグ」が見つかる「3つ以上ブロックが集まっている塊」を消す
と落ち物パズルが作れるな、と思う
まず、横に並んでいるブロックの塊を調べ、横に並んでいるフラグも立てる
次に縦にブロックを調べ、横長のブロックの塊が縦に繋がっていたら、それらの塊を一つにまとめる
全ての塊を数えたら、「横に並んでいるフラグ」が見つかる「3つ以上ブロックが集まっている塊」を消す
と落ち物パズルが作れるな、と思う
games.pdbrec.com業務連絡20170223
昨日は大阪デザイナーセンターでデザイナー向けマニュアルと雑誌をいくつか見て
その後、梅田のジュンク堂でgolangのマニュアルを探す
落ち物パズルゲームのブロックの数え方は、再帰を使わなかったら、「セルオートマトンでブロックを数えるチューリングマシンの実装」だなと思った
ブロックの数え方のアルゴリズムの問題は再帰を使わなかったら、面白い問題だ
その後、梅田のジュンク堂でgolangのマニュアルを探す
落ち物パズルゲームのブロックの数え方は、再帰を使わなかったら、「セルオートマトンでブロックを数えるチューリングマシンの実装」だなと思った
ブロックの数え方のアルゴリズムの問題は再帰を使わなかったら、面白い問題だ
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を作れば良いのかな?って思った
メモ
結局、package間のメッセージを送る、メールっぽいメッセージpackageを作れば良いのかな?って思った
メモ
ノイズ
ルーレット=乱数を数学的に発生させるのは難しい
サイコロでも、分子や電子の偏りでパーフェクトな乱数を発生させるのは難しい
完全にデタラメな物の一つはブラウン運動だ。テレビの砂嵐の粒の動きは完全なデタラメ
テレビの砂嵐は空気中の電波のノイズなので、ノイズは完全なデタラメな訳だ
なので、アナログなノイズ発生装置をデジタルにサンプリングして数値化すれば、完全な乱数をハードウェア的に実現するのではと思いました
メモ
サイコロでも、分子や電子の偏りでパーフェクトな乱数を発生させるのは難しい
完全にデタラメな物の一つはブラウン運動だ。テレビの砂嵐の粒の動きは完全なデタラメ
テレビの砂嵐は空気中の電波のノイズなので、ノイズは完全なデタラメな訳だ
なので、アナログなノイズ発生装置をデジタルにサンプリングして数値化すれば、完全な乱数をハードウェア的に実現するのではと思いました
メモ

