同人サークル ぐれーすけーる
東方Projectは上海アリス幻楽団様の著作物です。
将棋と、ゲームエンジンAIMSと、きふわらべ☆ww\(^▽^)/




きふわらべ をご存知だろうか☆ww
━━━━━

ちゆり「 きふわらべ をご存知だろうか☆ww 」


夢美「 将棋のルール通りに指せない将棋エンジンね 」


ちゆり「 きふわらべのプログラム、ごちゃごちゃ しているんだぜ☆ww
          
          すっきりさせたい☆!
          
          『将棋』と『画面』、まったく異なる2つのプログラムを 分割したい☆ww!しょうぎとがめんまったくことなるふたつのぷろぐらむをぶんかつしたいワラワラ
          
          
          それが 今回の記事のテーマだぜ☆」


夢美「 将棋の『画面』は全部任せられるプログラム、
          『将棋所』しょうぎどころ を使いなさいよ! 
          
          あるものを使いなさいよ! 」


ちゆり「 ゲーム画面も作りたいんだぜ☆ww
          『将棋』と『画面』について説明するんだぜ☆ww 」




将棋を ご存知だろうか☆ww
━━━━━

ちゆり「 氷の心を持たなければならない☆!

          将棋しょうぎ という スポーツ をご存知だろうか☆ 」


夢美「 陸上競技なのかしら 」


ちゆり「 ゲームや スポーツというと、みんなでワイワイ楽しむ というイメージがあったんだが、 

          将棋は違うしょうぎはちがう ということは 小学生の頃から知っていた☆ww 
          
          出合ったみんなの 夢や 希望を 粉砕していく☆ のが将棋だぜ☆ 」


夢美「 競技って そんなものじゃない 」


ちゆり「 ゲーム内容げーむないよう は、 自分と相手で 1個ずつ持っているボス駒を、 先に取った方の勝ちだぜ☆ 」


夢美「 風船割りのように言うのね 」


ちゆり「 その風船を、他の駒を使って ガチガチに固めがちがちにかため たり、 
          逆に バサバサと捨ててばさばさとすてて いくことで、自分の風船を守りつつ、相手の風船を 1手でも早く先にいってでもはやくさきに 割る☆ 
          
          このゲームは 30分~2時間、 2人で交互に100の手番を回すぐらいで終わるんだぜ☆ 」


夢美「 時間がかかるのねぇ 」


ちゆり「 その時間は、400万回遊んでも、おんなじゲーム展開には まずならないよんひゃくまんかいあそんでもおんなじげーむてんかいにはまずならない ぐらいの
          広さで 遊べる☆
          
          プロですら 将棋という広場は 探検しつくしていないんだぜ☆
          
          オンラインゲーでもないのに、「攻略本」というものが年々、更新される☆ これは驚異的だぜ☆
          これを、ゲームの底が深い、奥が深い、と表現する☆ 」


夢美「 サウジアラビアの油田みたいね。 
         いつ掘りつくされるのかしら? 」



ちゆり「 コンピューターでも、あと50年以内には 掘りつくされないだろう、と言っている人もいるし、

          少なくとも 地球にある原子の数と同じだけ 記憶を持てないと全部見れないから 先は長い と言っている人もいる☆ 

          将棋盤の前に座ったときの これからどう遊ぼう、という 新鮮な気持ち は、1つの楽しみだぜ☆

          毎回、新鮮☆まいかいしんせん まあ、粉砕されるんだが 」







画面 をご存知だろうか☆ww
━━━━━



ちゆり「 画面というのを ご存知だろうか☆ww 」


夢美「 画面は、画面よ!がめんはがめんよ

         なにがあるってのよ! 」



ちゆり「 タイトル画面、 キャラ選択画面、 ゲーム画面☆  という感じで、

          1つのゲームの中にも まったく違うことをするための画面が いくつもあるな☆ 」


夢美「 将棋に キャラ選択画面とか 無いのよww!しょうぎにきゃらせんたくがめんとかないのよ 」
ちゆり「 付けたいんだぜ☆ww!つけたいんだぜ 」


ちゆり「 ゲームエンジンAIMSは、

              キャラ選択画面に飛ぶ、
                ↓           ↓
              ゲーム画面に飛ぶ、  いや、設定画面に飛ぶ
                ↓
              結果発表画面に飛ぶ、 
          
          といった 画面の行ったりきたりが、得意がめんのいったりきたりがとくい なんだぜ☆
          
          
          他にも、
          
              ゲーム画面を残したまま、(ゲームを1時停止して)
                ↓
              メニュー画面を出したり、
                ↓              ↓
              別のメニュー画面に飛ぶ、  いや、ゲーム画面に戻る
          
          といった サブ画面の表示/消去も、得意さぶがめんのひょうじしょうきょもとくい なんだぜ☆ 」


夢美「 ゲームエンジンだからね 」
ちゆり「 適材適所てきざいてきしょ なんだぜ☆ww 」


ちゆり「 ゲームエンジンAIMSで ビデオゲームの枠組みびでおげーむの枠組み を作り、
          将棋画面が始まると、将棋エンジンを起動して コンピューター対局が始まる、
          みたいなことを やりたいんだぜ☆」

夢美「 やればいいじゃないの 」


ちゆり「 それがだな☆それがだな
          ゲームエンジンAIMSは、 別プログラムと 通信 するような
          作りになっていないんだぜ☆ 」


夢美「 じゃあ ダメじゃないの 」


ちゆり「 そこを今、他の人に助けてもらおうとしているところそこをいまほかのひとにたすけてもらおうとしているところ なんだぜ☆w 」




通信 をご存知だろうか☆ww
━━━━━


ちゆり「 通信をご存知だろうか☆? 」


夢美「 送信と、 受信よ! 」


ちゆり「 将棋エンジンも、文章を 送信したり、受信したり しているんだぜ☆ 
          そのお便りを 読んだり、返信を送ってくる 相手は、 将棋サーバーしょうぎさーばー と呼ぶ 」


夢美「 きふわらべに 将棋サーバー なんか付いてないわよ 」


ちゆり「 きふわらべでは、

              将棋エンジンを きふわらべ が、

              将棋サーバーを わたし   が、

          やっている☆w 」


ちゆり「 わたしが きふわらべに向かって

              わたし          きふわらべ
              『起きろよ』 →

          とメッセージを送ると、

          きふわらべは 『起きろよ』とは何なんだぜ☆

                         ← 『むくり☆』

          と返信☆

          わたしは 『むくり☆』とは何なんだぜ☆

              『7七歩』  →

          と返信☆

          きふわらべは 『7七歩』か☆  

                         ← 『2四歩』だぜ☆

          と返信する☆

          わたしは 『2四歩』とは何なんだぜ☆

              『わたしの勝ちだ』  →

          と返信する☆

          きふわらべは 何が『わたしの勝ちだ』なのかなんだぜ☆  

                         ← 『やーめた』

          と返信する☆

          勝ちか 負けかは、将棋サーバーである わたし が決めるしょうぎさーばーであるわたしがきめる んだぜ☆ 」


夢美「 かんじんの部分を 手動でやっているのね 」


ちゆり「 違うんだぜ、ちょっかいだけを 手動でやっているんだぜ☆ 
          自動でやりたいところは、自動 でやっている☆w


          将棋エンジンも、 将棋サーバーも、
          どちらも、かんじんな 『将棋』と『通信』だけやっているしょうぎとつうしんだけやっている、 と言えるんだぜ☆


          次の1手を指図つぎのいってをさしずしたり、 ルール変更を指図るーるへんこうをさしずしたり、

          にんげんは、
          コンピューターがやっているあいだに割り込んで、ちょっかいを出したいんだぜ☆!こんぴゅーたーがやっているあいだにわりこんで、ちょっかいをだしたいんだぜ 」


夢美「 じゃあ、ちょっかいを出しなさいよ 」


ちゆり「 にんげんは やりたい放題エラーするし、あれやりたい、これやりたいと すぐ膨らむし☆
          にんげんが触るプログラムを作る方が 細かくて 要求がどんどん増えて すぐ複雑になる大仕事こまかくてようきゅうがどんどんふえてすぐふくざつになるおおしごと なんだぜ☆ww 」


夢美「 将棋所では満足できない? 」


ちゆり「 細かくて 要求がどんどん増えて すぐ複雑になる大仕事な部分を
          じぶんで 作りたいんだぜじぶんでつくりたいんだぜ wwww 」


夢美「 じゃあ作りなさいよww! 」




インターフェース というのを
ご存知だろうか☆ww
━━━━━


ちゆり「 細かくて 要求がどんどん増えて すぐ複雑になる部分を
          ゲームエンジンAIMS でやりたいんだぜ☆ 」


夢美「 やりなさいよww 」


ちゆり「 今は、

              ・棋譜の入力
              ・画面切替、指し手のマウス入力

          のどちらも C#プログラム でやっているのだが、これを、

              ・棋譜の入力               C#フォーム
              ・画面切替、指し手のマウス入力  ゲームエンジンAIMS

          と、少しだけ役割を 分けたいんだぜ☆ 」



夢美「 なんの得があるのよ 」


ちゆり「 画面の切替、指し手のマウス入力は ゲームエンジンAIMSが得意なので、
          適材適所なんだぜ☆ww

          潜水艦を動かすには原子力発電、 目覚まし時計には単三マンガン乾電池☆
          モノには、手ごろなサイズというものがあるんだぜ☆ 」



夢美「 具体的には どう実現するのよ 」




具体的には どうやるのか☆ww
━━━━━

ちゆり「 ビデオゲームの途中に 将棋エンジンとの通信が始まればいいんだぜ☆びでおげーむのとちゅうにしょうぎえんじんとのつうしんがはじまればいいんだぜ 」


通信は、つぎの間で行うものとするぜ☆
C#将棋エンジン  ←→  C#将棋サーバー  ←→  ゲームエンジンAIMS
                                 (A)


問題にしているのは、 上図(A) の通信なんだぜ☆




(A)のゲームエンジンAIMS側でやりたいもの
======================================

・C#将棋サーバー(別プロセス)を起動する

process_start( "./KifuWarabe/Server.exe" )


・C#将棋サーバー(別プロセス)へ、メッセージを送る

send( "7七歩" )


・C#将棋サーバー(別プロセス)からの、メッセージを毎フレーム調べる

function gui_OnStep
  message = receive() -- "2四歩"
  ~略~
end


(A)のC#将棋サーバー側でやりたいもの
===================================


・ゲームエンジンAIMS(別プロセス)へ、メッセージを送る

send( "2四歩" )


・ゲームエンジンAIMS(別プロセス)からの、メッセージを毎フレーム調べる

while(true)
{
  message = Receive() -- "7七歩"
  ~略~
}


ちゆり「 がんばれば、作れそうじゃないか☆? 」




そして 作った☆ww
━━━━━

ちゆり「 そして、サンプル・プログラムを作ってみたんだぜ☆ 」


StdProxyAIMS_Kaizo.7z
(Windows用。7zipで解凍してくれ)














   またのお越しをお待ちしております