忍者ブログ

ぐれーすけーるブログ

ゲームプログラミングを独習中なんだぜ☆

↑同人活動☆w
ホームページ☆
『きふわらべ』のダウンロード
は、ホームページへ飛ぶ↑☆

ぐれーすけーる は、ゲーム86パーセントでお送りするんだぜ☆↑押すと最新記事に飛ぶぜ☆



第25回世界コンピュータ将棋選手権1日目に
初出場した『きふわらべ』の記事はこちら↑☆
↑東方二次創作音楽
CD78サークル分買った
積みゲー1本ずつ1ステージだけ
遊んでいく記事は別ブログへ飛ぶ↑☆
秋葉原裏通りの潰れそうなオリジナル同人
ソフト店『さんげっと』の記事はこちら☆

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

現在、新しいコメントを受け付けない設定になっています。

【将棋】めざせデジゲー博2015☆コンピュータ将棋ゲームきふわらべ頒布☆(5)  Luaの勉強を続けるぜ☆ww

2015-05-20 09:42

きふわらべの脳内完成図から見ると、スクリプト言語を使いこなすことが必要なんだぜ☆

スクリプト言語の1つ、Lua が使えるかどうか まず調査なんだぜ☆

    C:\Root_KifuWarabeその他\NLua

というフォルダーを作って、テスト環境を作ってみるぜ☆


前回の続き☆
NLua のソリューションを開いて、[追加]-[既存のプロジェクト]で、
KeraLua のプロジェクトを開けばいいと思うんだが、やってみるぜ☆


  src/KeraLua.Net45.csproj


参照の追加で、いろいろ追加するぜ☆

  C:\Root_KifuWarabeその他\NLua\KeraLua-master\src\bin\Debug\net45\KeraLua.dll



うわっ、「参照設定」が いくつかあるんだぜ☆
どうも、ローカルPCに移してきたときに パスが合わなくなったか、
環境設定がそもそも わたしと異なるみたいなんだぜ☆




10:17

NLuaTest の参照設定に KeraLua を追加すると、
コンパイル・エラーは収まったんだぜ☆



そしていつものランタイム・エラー☆





うーむ☆ ネイティブ・アプリケーションがエラーを出しているのか☆




lua52.dll の中にある、luaL_newstate というメソッドがエラーを出していると分かるな☆




10:33



これ、 Lua52.dll のソースなんじゃないか☆? 多分……☆


 

src/lauxlib.c ファイルの中に、 luaL_newstate メソッドがありそうだな☆

なんで
luaxlib.c じゃなくて、
lauxlib.c という名前なんだぜ☆? スペルミスじゃないのか☆? それとも正しい略語☆?
うーむ☆



10:40



lua_newstate メソッドか、
lua_atpanic メソッドのどちらかでエラーが起こっていると思うんだぜ☆




lua_newstate メソッドは lua/lstate.c ファイルの中に書かれてあって、
初期化をやっているんだぜ☆




lua_atpanic メソッドは lua/lapi.c ファイルの中に書かれてあって、

なにやら 古い関数をやめて 新しい関数に入替える、関数の交換をしているみたいだな☆
たいしたことしてないな☆



lua_newstate でエラーが出ている気がしないんだぜ☆
そもそも、lua52.dll を読み込むときにエラーが出ているんじゃないか☆?



10:54

[DllImport (LIBNAME, CallingConvention = CallingConvention.Cdecl, EntryPoint = "luaL_newstate")]
internal static extern IntPtr LuaLNewState ();


という場所に、エラーがある気がするんだぜ☆
まず ググってみるぜ☆



Lua52.dll は、『アンマネージド・コード』だから、 CallingConvention.Cdecl という
キーワードを付けて .dll ファイルを読み込んでいるようだな☆
.NET じゃないアプリケーションのメソッドを使う、ぐらいの意味だろうか☆

すると怪しいのは、残った DllImport と、LIBNAME なんだぜ☆
どのディレクトリーにある Lua52.dll を探しているのかなんだぜ☆?




12:05



NLuaTest.dll は testsフォルダーにあるんだが、これは実行ファイルではないので
カレントディレクトリーではないだろう☆

とはいえ、 ConsoleTest.exe も testsフォルダーの中にあったんだぜ☆
この tests フォルダーの中に Lua52.dll はなくていいのかなんだぜ☆?




そこで きふわらべに適当に入れて使っていた Lua52.dll を放り込んでみたんだが、
「間違ったフォーマットのプログラムを読み込もうとしました」と出てしまうんだぜ☆

バージョンが違うのだろうか☆?

Lua は、C++ なので、コンパイルの方法が分からないんだぜ☆




12:22

  Windows で Lua をビルドする

というページはあるんだが、これをやることで合っているんだろうか☆?
分からないので 1つ1つ できることを潰していくんだぜ☆


わたしの場合、 Lua を Windows にインストールするには、

  MinGW 64 bit 版

というものを使うみたいなんだぜ☆
ググると記事が出てきたんだぜ☆

  MinGW 64 bit 版 のセットアップ
  

説明を深く読まずに 2つのファイルをダウンロードしたんだぜ☆




とりあえず mingw-w64-install.exe をダブルクリックするんだぜ☆



12:32



なんのこっちゃか分からないんだが、 [Next >] ボタンばっかり押していれば
いいのかなんだぜ☆?


13:13

あー、Architecture が i686 になっているんだぜ☆! これではリナックスなんだぜ☆!
インストールのやりなおしなんだぜ☆!





13:29

「MSYSを起動し~」と説明があったんだが、MSYSがどれのことか分からないんだぜ☆



これでいいのだろうか☆? さっぱり分からなくても、あるボタンは押してみるんだぜ☆

うーむ☆ どうも違うようなんだぜ☆
わからないので、 mingw-get-setup.exe ファイルもダブルクリックしてみるんだぜ☆



13:46



こんなのが出てきたんだぜ☆

出てくるボタンは どんどん押してしまおう☆ww




これでいいのかなんだぜ☆?




ここぐらいしか、それっぽい 押すところ がないんだが☆




14:06



こんなダイアログボックスが出てきたんだぜ☆

いつ入ったのか知らないんだが、

  C:\MinGW\msys\1.0\msys.bat

というファイルができていたんだぜ☆ ダブルクリックしてもいいのだろうか☆?



14:09



これは MSYS なのだろうか☆? MINGW32:~ と書いてあるんだが☆



14:13

MSYSは、こっちにページがあるな☆

このツールは GNUライセンス なんだろうか☆
このツールで作られていると思われる lua は何ライセンスなんだぜ☆?




14:18

  • インストール後、"C:\Program Files\mingw-w64\x86_64-4.9.2-posix-seh-rt_v3-rev1\mingw64\bin" をパスに追加する。
   (http://www.geocities.jp/penguinitis2002/computer/programming/MinGW-w64.html)

という説明書きがあったんだぜ☆
環境変数にセットすればいいのだろうか☆?

わたしのPCの中を見てみると、似たようなフォルダーは次のような感じだったんだぜ☆

   C:\Program Files\mingw-w64\x86_64-4.9.2-posix-seh-rt_v4-rev2\mingw64\bin

うーむ☆怪しい☆あとで考えよう☆



14:27

どうも、Windowsで Linuxのコンパイラーが使える、みたいな感じかと思うんだが、
64ビット版ではなくて、32ビット版(MINGW32:~)が断ちあがっているのが
気になるんだぜ☆


ソースからコンパイルするのではなくて、2015年5月分の Lua52.dll が落ちてないか
探してみるぜ☆



14:35



ダウンロードした lua の中を見てみると、
 ・android
 ・iOS
 ・WindowsPhone
用のものは入っているんだが、Windows7/8 のものがどれか分からないんだぜ☆



14:40



Lua のホームページを見たんだが、リンクをクリックしたあとがあるので、
今もっている Lua52.dll は、ここからダウンロードしたはずなんだが☆

バージョンが1個古いのか、 lua-5.2.3 で、 2014年7月27日なんだぜ☆



NLua の開発環境を持ってきてコンパイルする、という案は いったん中断するぜ☆



14:48

NLua の開発環境をまったく用意しないで、
NLua を使うだけ、というのはできるのだろうか☆?


まず NLua のページを調べるんだぜ☆



これだと思うんだが……☆(^_^)




ダウンロードしてみると……あれ☆? 新しくなっているんだぜ☆ 最新版か☆



15:05

まず、 NLua.dll と KeraLua.dll は C# で作られていることが分かった☆
そして、 lua52.dll は C++ で作られていて、アンマネージド・コード だということが分かった☆

だから、 NLua.dll と KeraLua.dll は、Visual Studio 2012 の[参照設定]に追加できるが、
lua52.dll は [参照設定]に追加できない☆

では、アンマネージド・コード は、どのフォルダーに置いておけばいいんだろうか☆?
開発環境のデスクトップPCでは .exe と一緒に入れておけば動くんだが、
ノートPCだと動かないんだぜ☆



15:41



こんな感じになるんだぜ☆ ツイッターで質問を投げていると、

ノートPCに
 『Visual C++ ランタイム 2010 x86版 / x64版』
 『Visual C++ ランタイム 2012 x86版 / x64版』
を入れてみてはどうか、と聞いたんだぜ☆

これらのファイルのうち、「再頒布可能パッケージ」という名前が付いていれば、
自作ゲーに添付して配布しても OK らしいんだぜ☆
インストーラー、どうするんだぜ……☆?

試してみるぜ☆



16:00



いらいら☆ww



16:18



はひょー☆! 動いたんだぜ~☆

lua52.dll を動かすには『VC++2013ランタイム 再配布可能パッケージ』で
『インストール』をする必要があったのか☆ww


成果 あり なんだぜ☆!
微速微進、遅々前進なんだぜ☆



16:54

次のテーマは、

    きふわらべが、
    棋譜ツリーのノードとして持っている局面データが でかすぎる

という問題の解決に当たりたいんだぜ☆


棋譜ツリーは、 符号 だけ持っていればいいんだぜ☆
今、きふわらべは 局面を持っている☆

2手 だけでも 900局面もあるんだぜ☆ それを駒1個1個 場所を覚えている☆
これを止めて、指し手だけ 記憶するようにして、
局面データが必要なときは 覚えておくか、初手から再現するようにしたいんだぜ☆



17:02



やろうとすると、 7七 には歩があるんだが、駒がないというエラーになって
いるんだぜ☆

7七から7六へ歩を動かしたあとには 確かに駒はないんだが、
データを見ると 駒はあるはずなんだぜ☆



17:15



エラーメッセージを詳しくしてみたんだが、「あるんだが ない」と言っているな☆
もっと詳しく見てみるんだぜ☆



18:17



どうも データ は合ってるみたいなので、
棋譜ツリーをいじったことで、プログラムの方に 何か 不具合が起こっている気が
するんだぜ☆

Assertを書いてみるかなんだぜ☆

時間がかかりそうなんだぜ☆ww 次へ行くぜ☆ww



18:24

MultiPV 5 を入れようとしているんだが、
指し手が5つ並んでいるだけで、どれがいい手なのか 判断を入れていないんだぜ☆

評価値も調べて、一番評価値が高い手を選びたいんだぜ☆ww




//書きかけ

拍手[0回]

PR

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

ブログ内検索

PR



絶版・品切れ本を皆さまからの投票で復刊させる読者参加型のリクエストサイト
復刊ドットコム

ネイフィールウォーター

応援フリーエリア

デジゲー博
むずでょは、第1回から毎年 出展しているんだぜ☆

ウサギのように新品入荷☆
カメのようにまだ置いてある既刊☆

同人ソフト一押し店 さんげっと
むずでょは、さんげっと を応援しているんだぜ☆

TVアニメ「Charlotte(シャーロット)」公式サイト
ニコ生の Angel Beats! 一挙放送が 面白かったので次のも応援するぜ☆ww

プロフィール

HN:
むずでょ
性別:
非公開

最新コメント

[01/02 Free Tax Marlboro Gold Regular Cigarettes Coupons 3 Cartons]
[12/30 Hot Selling Newport Regular Cigarettes Outlet 160 Cartons]
[12/29 http://www.patersonlabs.com/Marlboro/41.html]
[12/29 http://xz84.com/Marlboro/16.html]
[12/29 http://www.paragoninks.co.uk/Marlboro/93.html]

P R