ソラマメブログ
プロフィール
ぺんぎん
ぺんぎん
どもっす( ◎v◎ )
ぺんぎんっす。

「ぺんぎんさん」でいいっす。
「ぺんさん」でもOKっすよ。
何だって良いんっすけどね。
[個体名:Naoya Bellic]
(非商用)
※カテゴリー別のRSSです
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 1人

  

Posted by at

2009年06月23日

GetFreeMemoryで見てみたっす

パッケージのイメージが全く浮かばないっす・・・
馴染みのないゲームっすからねぇ。
現物展示しておいて、近くに販売BOXを置くっすかね?
パッケージにまで長々と説明は書きたくないっす。
むーん・・・
どうもぺんぎんっす( ◎v◎ )


Dots and Boxesで使った容量を見てみたっす。
単に気になっただけっす。

defaultステートのstate_entryの最初に
llOwnerSay((string)llGetFreeMemory());
と入れてみたっす。
もう抜いてあるっすよ。

結果
メイン: 37648
サブ1: 60610
サブ2: 60610
Monoコンパイルしてあるっすから、消費量は64KBから
引けば求められるっすね。


listが割と多めっすから、もうちょっと使ってるかと思ってたっす。
対局者(stringとkey)が入るとしても、「そんなもん」で済んだっす。  


Posted by ぺんぎん at 21:53Comments(1)裏話

2009年06月18日

長くなったっすけど、1.02完成っす

Dots and Boxesは、ひとまず完成っす。
パッケージ作らないとっすね。
どうもぺんぎんっす( ◎v◎ )


こうなったっす。
ちなみに[環境設定]>[表示]のオブジェクトは最低で撮影してあるっす。
スカルプは一切使ってないっす。
テクスチャも2枚(上部256×256、裏1,024×1,024)だけっす。
貼ってあるのはゲームをする上で関係ない部分っす。
出してすぐ遊べるっすね。

プリム数は26っす。
ドット:16
ボックス:9
ルートになっている大きな板:1
の合計26プリムっす。
ラインはボックス部分のプリムを変形して表現してるっす。
地味なんっすけど、この部分は見どころっす。

スクリプトは合計3本っす。
ゲームの進行に関することは全てメインスクリプトが行ってるっす。
あとの2本はフローティングテキストの表示をしてるだけっす。
フローティングテキストの自由度が増せば、1本で十分なんっすけどね。
青・緑とそれぞれ色が違えてあるっすから、スクリプトも別々っす。

イライラの元となる盤面の初期化は超高速っす。
テクスチャの切り替えは必要なくって、色を変えてるだけっすからね。
初期化の進捗状況はフローティングテキストで表示してるっす。
とはいっても、ほとんど気付かないんっすけどね・・・


このゲームは「暇つぶしとしては、なかなか良い」って感じのものっす。
ルールも簡単っすからね。
サクサクっと遊ぶには良いかもっすね。  


Posted by ぺんぎん at 21:23Comments(0)裏話

2009年06月16日

Dots and Boxesの中身っす

別のパズルの解の存在条件調べてるっす。
出題がテキトーでも大丈夫なのか調べておかないとっす。
具体的には係数行列のランクを見るっす。
手計算するのは面倒すぎなので、コンピュータにやってもらうっす。
まあ、せっかくなのでLSLで書いてみるっす。
修行っすね。
どうもぺんぎんっす( ◎v◎ )


Dots and Boxesのスクリプトについてっす。
stateの組み立てを簡単に書いておくっす。


default
{
  state_entry()
  {
    フローティングテキストを消したりする;
  }
  touch_start(integer total_number)
  {
    盤面の初期化;
    state 参加者待ち;
  }
}

state 参加者待ち
{
  touch_start(integer total_number)
  {
    // 2人目がなかなかtouchしない時のためにtimerとか・・・
    // その他にもいろいろ処理してるっすけど、省略

    if( 対局者2名がtouchした )
    {
      state 対局の準備;
    }
  }
  timer()
  {
    すでにtouchした1人目の情報を初期化;
  }
  on_rez(integer start_param)
  {
    llResetScript();
  }
}

state 対局の準備
{
  state_entry()
  {
    手番を決定後、対局者情報をリンクメッセージで飛ばす;
    state ドット選択;
  }
  on_rez(integer start_param)
  {
    llResetScript();
  }
}

state ドット選択
{
  state_entry()
  {
    どっちの手番なのかをSayしたり;
    timerかけたり;
  }
  touch_start(integer total_number)
  {
    if(llDetectedKey(0) == 手番のプレイヤーのkey)
    {
      if(正しい2つのドットをtouchした)
      {
         state ライン引き;
      }
      else
      {
         いろいろやる;
      }
    }
  }
  timer()
  {
    // 放置とみなして・・・
    llResetScript();
  }
  on_rez(integer start_param)
  {
    llResetScript();
  }
}

state ライン引き
{
  state_entry()
  {
    ラインを引く;
    if(ボックス獲得しなかった)
    {
      手番を入れ替える;
    }
    if(終局した)
    {
      結果をSay;
      llResetScript();
    }
    state ドット選択;
  }
  on_rez(integer start_param)
  {
    llResetScript();
  }
}




state ドット選択で微妙な点っす。
if(llDetectedKey(0) == 手番のプレイヤーのkey)
としてるっすけど、コレ、妨害にも使えちゃうっすね。
連打してれば妨害可能っす。
でも、小学生がやるようなゲームを妨害するとかいう、
そんな心の狭い人はいない、という考えでこのカタチっす。

あとはstate 対局の準備は関数で良いんじゃない?とかっすね。
これはstate ライン引きにも言えるっすね。
ここの部分、気持ち悪さを感じたってだけで、state分離したっす。

必要な変数が取得できたあとに、別のtouchがあると
変数の中身が上書きされたりしないかなぁ・・・とか心配してるっす。
いや、きっちりフラグ管理すれば大丈夫なのは分かってるっす。
でもモヤモヤしてる感じっす。

なので、いっそのことstate_entryしかないstateに移って、
touchの心配をしなくても良いようにしてみたっす。


・・・修行しますっす。  


Posted by ぺんぎん at 21:54Comments(1)裏話