おまいら最強の麻雀プログラムしてみろよ Part2
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2007/07/27(金) 21:47:50層の薄いこのカテゴリーなら、将棋やオセロよりも
ずっと簡単にその地位を手にいれられるぞ!
0002デフォルトの名無しさん
2007/07/27(金) 21:51:59乙なんだが、せめて前スレくらい貼って欲しかった…
あと、Part2よりも2本場とかのほうが麻雀らしかったかも。
まぁとにかく乙
00031
2007/07/27(金) 21:52:05前スレ おまいら最強の麻雀プログラムしてみろよ
http://pc11.2ch.net/test/read.cgi/tech/1169642436/l50
まうじゃん的空間
http://www.amy.hi-ho.ne.jp/ishihata/maujong/
0004デフォルトの名無しさん
2007/07/27(金) 21:52:45おまいら最強の麻雀プログラムしてみろよ
http://pc11.2ch.net/test/read.cgi/tech/1169642436/
00051
2007/07/27(金) 21:53:34<参考サイト>
とつげき東北HP
http://www.interq.or.jp/snake/totugeki/
まったりプログラミング日誌
http://kmo2.cocolog-nifty.com/prog/
あらのHP
http://ara.moo.jp/
デジタル麻雀論
http://www.jan-x.jp/
0006デフォルトの名無しさん
2007/07/27(金) 22:38:46C#で作りたいのだが型がどう対応するのかさっぱり分からん。
でもC#の生産性に慣れるとC++で組む気にはならんね。
調べてみるしかないか。もしやり方わかったら報告するよ。
0007デフォルトの名無しさん
2007/07/27(金) 22:41:31> 一手一秒だとしても画面で動かして終局まで1分程度かかります
> 1000局の統計を取ろうとしたら、17時間かかるんです
だから、それが画面有り無しでどう関係するの?と聞いているのですが。
各自作成DLLが 一手一秒なら、画面なくてもそれなりに時間、かかるよね?
0008デフォルトの名無しさん
2007/07/27(金) 22:43:47まうじゃんDLL作っても試行する部分がなきゃ駄目なんだって・・・
まうじゃんルールで、もっと簡単にDLL作れるメイン部分を頼む・・・
0009デフォルトの名無しさん
2007/07/27(金) 22:45:360010デフォルトの名無しさん
2007/07/27(金) 22:46:30例えば一手100ms以内としても
まうじゃんだと画面で動く部分で時間がかかるんですよ
制限時間はある程度統計がとれる程度に制限した方がいいので1秒とは限らないです
0011デフォルトの名無しさん
2007/07/27(金) 22:50:18> 一局数秒で終わる。
って書いたの読んだ?
それを試して、それでも問題だと言っている?
0012デフォルトの名無しさん
2007/07/27(金) 22:50:53/::i|::l::ト、ヽ::、:::ヽ:、::::::\::ヽ::::l::::ヽ::i:::i:::!
/:/:!:::!:|::ヽ:\ヽ::::、:\::::ヽ:::ヽ!::::::i::|:::!::!
!ハ::|::::i::l:|心、:ヽ::\:ヽ_\、\:::ヽ:::|!::|:|i 駄目だ こいつ・・・
i、:!:|:、N{、ヒjヽゝ\ヾイ ヒj >、ヽi:、|!:|:l
ヽ:!::トヽ ̄ l! ` ` ̄´ |::l::|:|j:,!:! 早くなんとかしないと・・・
ト、::! u j |::/lj:::!リ
ヾ、 丶 - u リイ:|リ
リヽ ‐、ー- 、_ /イ:::i
rー'"ト:l゙、  ̄ ./ , |::!
/ ヘ ヾ ヽ、 _,. ' / |:'
いままでこのAAがこれほどぴったり来るやつは見たことなかったぜ
0013デフォルトの名無しさん
2007/07/27(金) 22:52:28どこにノーウェイトモードの設定があるんだよ?いずれにしても画面表示がある限り鈍いんだ
0014デフォルトの名無しさん
2007/07/27(金) 22:52:440015デフォルトの名無しさん
2007/07/27(金) 22:54:01「試行」と「思考」を勘違いしてないっすか?
思考する部分のDLLを作るんじゃないの?
0016デフォルトの名無しさん
2007/07/27(金) 22:54:430017デフォルトの名無しさん
2007/07/27(金) 22:55:59まうじゃん本体で思考DLLを動かすと鈍いってことです
0018デフォルトの名無しさん
2007/07/27(金) 22:56:100019デフォルトの名無しさん
2007/07/27(金) 22:58:490020デフォルトの名無しさん
2007/07/27(金) 23:01:37ホストプログラムができたらまたどうぞ。
ルールは、非常識なものでなければ(もしくは多少の変更が効けば)、
何でもいいよ。
では、さようなら。
002111
2007/07/27(金) 23:03:31>>13
「まうじゃん」GUI画面の「オプション」→「進行速度」→「ノーウェイト」って
違うのか?
これデフォルトは、「速い」なんだけど。
「オプション」で「自動了解」もチェックすれば、自動対局するし、
「ログ出力」すれば結果も見れるけど。
0022デフォルトの名無しさん
2007/07/27(金) 23:08:5011は別人だろ
0023デフォルトの名無しさん
2007/07/27(金) 23:12:37002411
2007/07/27(金) 23:22:15#別人でしょ?、ってことじゃなくてね。
#使えそうでしょう?
0025デフォルトの名無しさん
2007/07/27(金) 23:28:06使えそうだね
0027デフォルトの名無しさん
2007/07/28(土) 00:00:49まうじゃんルール
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4777.txt
ルール(仮)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4765.txt
0028デフォルトの名無しさん
2007/07/28(土) 00:01:32テンパイチェックと点数出力だけはもうすぐできそうだけど
0029デフォルトの名無しさん
2007/07/28(土) 00:02:300030デフォルトの名無しさん
2007/07/28(土) 00:03:42ホストプログラムがある方。
0031デフォルトの名無しさん
2007/07/28(土) 00:05:25どういうルールに基づくんでしょうか??
0032デフォルトの名無しさん
2007/07/28(土) 00:08:10・日本語の読解力が無い
・まうじゃんのノーウェイトモードすら見つけられない程の低スキル
も特徴に加えてくれ。
0033デフォルトの名無しさん
2007/07/28(土) 00:08:14あー、自分のAI用のだよ。紛らわしくってごめんね
>>28の書き込み見ればわかると思うけど、ホストプログラム作れるほどの能力ないや、dllとかわかんないし
一応、東風荘第一ルールに基づいて組んでる。クイタンありなしと裏ドラありなしはdefineの部分で変更可能
別に可変にすればいいだけだからとりあえず組んじゃってる
0034デフォルトの名無しさん
2007/07/28(土) 00:11:42・麻雀をまったく知らない
も追加
0035デフォルトの名無しさん
2007/07/28(土) 00:11:52C/C++の場合、他者と対戦しようと思ったらDLLがいちばん簡単、それ以外はもっと複雑になると思われ。
0036デフォルトの名無しさん
2007/07/28(土) 00:12:36これなら相互比較することで点数計算の間違え等を発見できますから・・・
0037デフォルトの名無しさん
2007/07/28(土) 00:13:18・牌ではなく駒と呼ぶ
も追加ね!
0038デフォルトの名無しさん
2007/07/28(土) 00:17:45お前が>>33を見習わなきゃいけないのは
>別に可変にすればいいだけだからとりあえず組んじゃってる
↑ここだ
そこらへんはよくわからないからちょっと聞くかも。できるだけ自分で調べるけど
とりあえずこういう企画は一人が組みだせばみんな始めてくれるような気がしたから、
自分プログラミング全然だけど組み始めてみた。続いてくれる人いるならうれしい
役判定が作業過ぎて入力が面倒だよぉorz
004033
2007/07/28(土) 00:19:080041デフォルトの名無しさん
2007/07/28(土) 00:19:36ところで、麻雀の確率とかからの検証とかの論文とかを
いっぱい紹介したサイトがあったと思うんだけど
どこだったっけ?
誰かブクマしてない?
0042デフォルトの名無しさん
2007/07/28(土) 00:19:45C#でも、DLLは作製可能
0043デフォルトの名無しさん
2007/07/28(土) 00:21:40麻雀牌にICチップ埋め込んだらいろいろできそうだね。
これをフリーで悪用されるデメリットはあるけど、
・自動点数計算 .. おすすめ★★★★★
・自動牌譜記録 .. おすすめ★★★
・牌効率分析画面 . おすすめ★★★★
・待ち牌画面表示 . おすすめ★★★★★
・向聴数画面表示 . おすすめ★★★
・ツモ切りLED点灯 おすすめ★★★★
・ツモ予告演出 . . . おすすめ★★★★★
wktkしてきた。
0044デフォルトの名無しさん
2007/07/28(土) 00:22:30beの紹介文にいろいろ突っ込みどころがあるのは置いとくとして…
>とりあえずこういう企画は一人が組みだせばみんな始めてくれるような気がしたから、
>自分プログラミング全然だけど組み始めてみた。続いてくれる人いるならうれしい
その意気だ!!宇宙麻雀みたいにグダグダ言ってるやつよか1億倍上!!ガンガレ!!
0045デフォルトの名無しさん
2007/07/28(土) 00:24:20画像認識で十分いけると思うんだよね
これならイカサマ無いし今の全自動卓にも
アドオン可能だし
伏せ牌がコンピュータにわかるってのは
やっぱりイヤだな
004633
2007/07/28(土) 00:25:04ならこのまま組み続けていいのかな、ありがと
>>44
beは突っ込んじゃだめっ
とりあえずがんがる、できたらソースうpしたほうがいいのかな
0047デフォルトの名無しさん
2007/07/28(土) 00:25:45うpキボン
0048デフォルトの名無しさん
2007/07/28(土) 00:27:03(・∀・)ヘー
0049デフォルトの名無しさん
2007/07/28(土) 00:27:040051デフォルトの名無しさん
2007/07/28(土) 00:29:13誰かのdllにそういうのを出力する機能をつければおk
0052デフォルトの名無しさん
2007/07/28(土) 00:31:330053デフォルトの名無しさん
2007/07/28(土) 00:34:56http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4771.txt
0054デフォルトの名無しさん
2007/07/28(土) 00:36:16一種の数牌のみ0枚から14枚までのあがりの可能性のあるやつだ
0055デフォルトの名無しさん
2007/07/28(土) 00:36:45で?
ゴミはイラナイから
005611
2007/07/28(土) 00:39:09>>21で、
> 「ログ出力」すれば結果も見れるけど。
と書いたのに・・・
「ゲーム開始」でgrepするとこんな感じ。
mm.log(1): 07/27/07 22:08:46 ゲーム開始
mm.log(827): 07/27/07 22:09:06 ゲーム開始
mm.log(1524): 07/27/07 22:09:22 ゲーム開始
mm.log(2496): 07/27/07 22:10:19 ゲーム開始
終わりはこんな感じ。
<ゲーム終了>
1位 なきのりう 34400点
2位 面対子 31600点
3位 ぴこたん 23000点
4位 Dummy K.I. 19000点
集計が大変とか、ログが大きそうとか、そういう問題?
005711
2007/07/28(土) 00:41:37・・・
・・・
Dummy K.I. : <捨て牌 : 発>
なきのりう : <捨て牌 : 白>
ぴこたん : <捨て牌 : 二索>
面対子 : <捨て牌 : 東>
Dummy K.I. : <ロン>
四五六七八九�C�D�E�V�V東東
ドラ : 四索
裏ドラ : 九筒
<役>
リーチ 1飜
40符 3飜 1300点
<点数>
ぴこたん : 23000 + 0 = 23000点
面対子 : 32900 - 1300 = 31600点
Dummy K.I. : 15700 + 2300 = 18000点
なきのりう : 35400 + 0 = 35400点
0058デフォルトの名無しさん
2007/07/28(土) 00:49:12そのテーブルの価値は、砂粒1つぐらいの意味しかない。
俺はそのテーブルの必要性を感じていない。
0059デフォルトの名無しさん
2007/07/28(土) 00:56:40>砂粒1つぐらい
すげー過大評価しすぎwwwww
こんな糞テーブルの存在意義なんて
砂粒すら満たないよ
0060デフォルトの名無しさん
2007/07/28(土) 00:57:56せめて東風荘形式でログだせよ
それ以上にはやくソースだせよ
0061デフォルトの名無しさん
2007/07/28(土) 00:59:27受けるデータは個々の点数と捨て牌、ドラ、自分の手牌、ツモでOK?
で出力は捨て牌とリーチ、鳴き(ロン)でOK?
0062デフォルトの名無しさん
2007/07/28(土) 01:02:00006311
2007/07/28(土) 01:06:55言っている意味が分からないのだが?
もっと詳しく説明してくれるかい?
>>56、>>57は、「まうじゃん」の設定で、「まうじゃん」がログを出力してくれる、という話だよ?
既に「まうじゃん」にそういう機能がありますよ、と私は言いたいのだが、
なにがご不満ですか?
006461
2007/07/28(土) 01:07:48場所によっては規約にかかりそうだけど
0065デフォルトの名無しさん
2007/07/28(土) 01:26:25それでもすると思うけど
0066デフォルトの名無しさん
2007/07/28(土) 01:31:340067デフォルトの名無しさん
2007/07/28(土) 02:11:24コンピュータも参加できるネット麻雀インフラを整えて
公開すればいいじゃないか
0068デフォルトの名無しさん
2007/07/28(土) 02:23:05反応は冷たいよ
0069デフォルトの名無しさん
2007/07/28(土) 03:48:15前スレでアップされたやつ落とせた?
すぐに落とせなくなっていた。どうしたのだろうか。
>>63
おれは>>60ではないのだが、東風荘形式であれば、すでにたくさん存在する東風荘のツールが使えるのがいいと思う。
牌譜の再生、成績統計、分析ツールの作成が必要ない。
MJSimのAIを作る人が出てきたのは、そのためじゃないかな。
>>33
>>6とは別人?
ホストも新規にC#(.NET)で作るの?
(>>6と同じ人なら)C#でDLLを作れるけど、例えば、まうじゃんのDLLを直接は作れないと思うので、その場合は、
まうじゃん本体→ブリッジ的なDLL(これはC++で作る)→C#のDLL
みたいにする必要はあるな。
0070デフォルトの名無しさん
2007/07/28(土) 04:04:10.NetのDLLもネイティブDLLも読み込む形にしやすいと思う。
0071デフォルトの名無しさん
2007/07/28(土) 04:10:28せいぜい数万パターンにしかならないんじゃないか?
色違いや字牌を同一視したり上下逆にすれば
0072デフォルトの名無しさん
2007/07/28(土) 04:18:15数字19、2〜8、白発中、東南西北のコーツトイツは同一視し
トイツ 8通り、 順子 21通り、コーツ8通りで全部登録しても5Mバイトしか食わない
国士無双、緑一色、四槓子の判定をまずやって、
三槓子、チートイツ、三色同刻、場自風の加算を求めてから
データベースを引けばいいんだ
0073デフォルトの名無しさん
2007/07/28(土) 04:25:48上がり形のみの組み合わせじゃなくて
0074デフォルトの名無しさん
2007/07/28(土) 04:29:15一種の数牌だけで40万あるぞ
849 名前:287[sage] 投稿日:2007/07/25(水) 10:56:42
>>846
やってみたけど、微妙に結果が違うな。なんだろ。
面子の組み合わせは保持してないが、こういう結果になった。
a) 一種類の数牌で、ルール上出現する(各4枚以下、計14枚以下)組み合わせの数
405350
0075デフォルトの名無しさん
2007/07/28(土) 04:40:42たとえば数牌が2枚のときは 意味の上での組み合わせは
2つの牌の距離分、つまり8パターンしか種類は無いよね。
アルゴリズム上、1,8 も 2,9 もほぼ同一視できるという考え。
牌の組み合わせ数ではなく、牌同士の距離のパターンで
考えればパターン数はぐっと減る
0076デフォルトの名無しさん
2007/07/28(土) 04:53:02って感じでパターン分けすれば 思考ルーチンにもそのまま使える情報に
なる。多分なると思う。なるんじゃないかな。
0077デフォルトの名無しさん
2007/07/28(土) 04:59:37パターン認識の初歩だた。 何も目新しくなかった・・・orz
0078デフォルトの名無しさん
2007/07/28(土) 07:31:48今朝はじめてこのスレに来た者です。
当方、AI作成中でして、氏のソースをぜひ参考にさせていただきたいのですが
再アップお願いできないでしょうか?
0080デフォルトの名無しさん
2007/07/28(土) 09:58:16GUIとかならC#のうまみは理解できるんだけど。
0081デフォルトの名無しさん
2007/07/28(土) 10:23:030082デフォルトの名無しさん
2007/07/28(土) 10:49:54349のうpしたやつ持ってるけど
オリジナルの部分は、↓これだけかと
//ひたすらツモ切り
case MJMSG_TSUMO:
//ツモ切りする
Player->Action.Type = MJACTION_SUTEHAI;
Player->Action.Sutehai = 0;
break;
0083デフォルトの名無しさん
2007/07/28(土) 11:43:55牌番号0-33を渡せば麻雀プログラムって出来るよね?
0084デフォルトの名無しさん
2007/07/28(土) 12:05:01と番号づければツモとそうでない状態が統一的に扱えるぞ
0085デフォルトの名無しさん
2007/07/28(土) 12:40:55ピンズ:11〜19
ソーズ:21〜29
のように10とか20欠番にして数字と1の位そろえた方がプログラム組む上で直感的でわかりやすくないか?
それも16進数でやれば違った種類の牌はつながらないから、
メンツの分解を統一的なアルゴリズムでやれてプログラムが簡単になると思うのだが。
マンズ:0x11〜0x19
ピンズ:0x21〜0x29
ソーズ:0x31〜0x39
東南西北:0x41,0x51,0x61,0x71
白発中:0x81,0x91,0xA1
みたいなかんじで。
(字牌がとびとびなのはメンツ分解のときに順子を作らないって判定をプログラムに組み込まないようにしたいから)
0086デフォルトの名無しさん
2007/07/28(土) 13:01:25そんな事は各人がやればいいことで、管理元からの情報を変換してやればいいだけだな
内部の情報まで統一する必要は無い
0087デフォルトの名無しさん
2007/07/28(土) 14:23:28>>84にレスしただけだ。偉そうに分かり切ったことを。
0088デフォルトの名無しさん
2007/07/28(土) 14:42:48MJSimは落とせたんだが、作者は今どうしてるのだろうか。349氏によれば信頼のおける人とのことだけど。
まとめサイトみたいなの作って、そこにこういう実行ファイルなりソースなりを置くようにしたいんだけど作者の許可を得る方法がないからなあ。
0089デフォルトの名無しさん
2007/07/28(土) 14:44:270091デフォルトの名無しさん
2007/07/28(土) 16:24:020093デフォルトの名無しさん
2007/07/28(土) 16:50:56リバーシ1はコードにforeを使う奴
009486
2007/07/28(土) 16:55:28あぃ、了解。
話戻すけど、MJSimはCOMが鳴きたい牌があるときは捨て牌を知らせる時に同時に知らせてるの?
捨て牌毎にメッセージ受け取って帰す形?←こっちが一般的?
0095デフォルトの名無しさん
2007/07/28(土) 21:03:06右が捨てた牌 1
対面が捨てた牌 2
左が捨てた牌 3
と駒番号を渡して、思考プログラムの応答を待てばいいと思うぞ
ツモも捨て牌も番号の違いしか無くなる
ポンやチーやドラや牌列の得点は尋ねると教えてくれるようにする
0096デフォルトの名無しさん
2007/07/28(土) 23:19:10彡;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ヽ
イ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;r''ソ~ヾ:;;;;;;゙i,
t;;;;;;;リ~`゙ヾ、;;;;;;;;;;;;;;;;;;;;ノ i,;;;;;;!
゙i,;;;;t ヾ-‐''"~´_,,.ィ"゙ ヾ;;f^! / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ト.;;;;;》 =ニー-彡ニ''"~´,,...,,. レ')l. < おまえは何を言っているんだ
t゙ヾ;l __,, .. ,,_ ,.テ:ro=r''"゙ !.f'l. \____________
ヽ.ヽ ー=rtσフ= ; ('"^'=''′ リノ
,,.. -‐ゝ.>、 `゙゙゙゙´ ,' ヽ . : :! /
~´ : : : : : `ヽ:. ,rf :. . :.: j 、 . : : ト、.、
: : : : : : : : : : ヽ、 /. .゙ー:、_,.r'゙: :ヽ. : :/ ヽ\、
:f: r: : : : : : : : !丶 r-、=一=''チ^ ,/ !:: : :`丶、_
: /: : : : : : : : :! ヽ、 ゙ ''' ''¨´ / ,i: : : l!: : : : :`ヽ、
〃: :j: : : : : : : ゙i `ヽ、..,,__,, :ィ":: ,ノ:: : : : : : : : : : : :\
ノ: : : : : : : : : : :丶 : : ::::::::: : : : /: : : : : : : : : : : : : : : :\
0097349
2007/07/29(日) 00:09:58初歩的なAIだけど、それなりに強いと思う。
みんなGETしてくれ!
何故かって?、ここ数日で新しい方法論のAIアイデアが出てきて
作りたくなったから、尚且つ、対戦相手がいるといいから。
問題は時間だが・・・、今度は最速+戦略を目指そう。
MJSim自体のメンテは出来ないので、あるがままで使うしかない。
それで文句があるやつは無視。
点数計算のミスは極僅かだろう、その僅かが気になるAIなど当面
誰も作れないと思われ。私も無理だ。
MJSimの作者さん。もし見ていたら許してくださいませ。
0098349
2007/07/29(日) 00:17:57詳細はAIInterfaceV1.txtを参照。
インターフェースは簡単だが、渡されるデータ構造はそれなりに複雑である。
単純にいって、
1.コール簡単、データー複雑
2.コールが複雑、個々に渡されるデーターは簡単
の2種類だが、結局複雑さはどちらも同じ麻雀の処理は複雑なもの。
作製はMJSimAI.cpp内のCASE:部分を書くだけ。
case MJMSG_TSUMO:
がツモった時の処理。
case MJMSG_REACTION:
が他家が棄てた時の処理
自分が南家の時。
親が棄てたら case MJMSG_REACTION: が呼ばれ。
ツモが来たら case MJMSG_TSUMO: が呼ばれ
自分のス棄て case MJMSG_REACTION: が呼ばれる。
西が棄てたら case MJMSG_REACTION: が呼ばれ。
北が棄てたら case MJMSG_REACTION: が呼ばれ。
この繰り返しです。
case MJMSG_GAMESTART:break; //東風戦開始時
case MJMSG_GAMEEND:break;
case MJMSG_KYOKUSTART:break; //局開始時
case MJMSG_KYOKUEND:break;
は試合の開始や終りです。
0099349
2007/07/29(日) 00:23:41↓
http://uproda11.2ch-library.com/src/1118241.zip.shtml
MJSimを実行すれば、東風荘の麻譜データーが出力される。
0100349
2007/07/29(日) 00:24:170101349
2007/07/29(日) 00:38:14OOPしたい場合は多少のテクニックが必要。
ネット上でも探せば見つかるだろう。
私は、CASE:文から先をOOPとして作製している。
0102349
2007/07/29(日) 00:42:44ソース見たら、特別テクニックなど必要なかった。すまぬ。
(何かと思い違いをしたようだ・・・・)
0103名無しさん@そうだ選挙に行こう
2007/07/29(日) 00:52:44キタワ*・゜゚・*(n‘∀‘)η*・゜゚・*ァ !!!!!
あの頃の議論ができるなんて久し振りで、
ウレしすぎる!!!!!!!!!!
0105名無しさん@そうだ選挙に行こう
2007/07/29(日) 01:13:25ありがたくいただきますた。
>>90
やつは今のところ100%ageているぜ。
0106名無しさん@そうだ選挙に行こう
2007/07/29(日) 01:17:320107名無しさん@そうだ選挙に行こう
2007/07/29(日) 01:19:000108名無しさん@そうだ選挙に行こう
2007/07/29(日) 01:23:59どんなに攻撃してもダメージを感じてないような。
0109名無しさん@そうだ選挙に行こう
2007/07/29(日) 01:25:03MJSim自体のソースはないですか?
0110名無しさん@そうだ選挙に行こう
2007/07/29(日) 01:26:170111349
2007/07/29(日) 01:28:41自分の手から可能な役の点数と可能性を計算して期待値をだし、最良を選ぶ。
リャンシャンテン以下が可能ならば、リャンシャンテン以前と以下で
ロジックを変える方法。
オセロで言う所の完全読みに入る前と後のようなもの。
(完全読みとは性格が違いますが)
0113349
2007/07/29(日) 01:33:10・モンテカルロ法による危険牌の割り出し
・モンテカルロ法による山牌の予測。
今度組み込みたいかも。
0114名無しさん@そうだ選挙に行こう
2007/07/29(日) 01:40:38期待値が出せん
0115349
2007/07/29(日) 01:41:29うう〜〜仕事が忙しくて寝ます。おやすみ〜
011678
2007/07/29(日) 01:54:02モンテカルロによる当たり牌や山牌予想は大筋でできてますよ。
比較対象が少ないので評価は曖昧になりますが
山牌読みは少なくとも「見えてる枚数での予想」より高精度で読めます。
危険牌読みは、麻雀打ちの直感の範囲内では、そこそこ的を得た
予想ができているように見えます。
現在は乱数に擬似乱数を用いているのですが、この乱数に工夫を加えることで
さらに高精度予想ができるのでは?とも考えております。
精度向上に+αでもっともっとネタがあるのですが、それは出し惜しみということでw
011786
2007/07/29(日) 11:49:41>>105再び了解w
とりあえずは見えている牌をカウントしてやる&勝手読みで相手の手持ち牌を求める
位しか浮かばないなあ。自分と似た思考になるのは間違いない
不明の牌から得点の高くなる可能性のある牌を見つける、とか?(速度が・・・)
0118名無しさん@そうだ選挙に行こう
2007/07/29(日) 12:43:07>1.コール簡単、データー複雑
>2.コールが複雑、個々に渡されるデーターは簡単
まうじゃんだと、誰が何をしたかのみをパラメータにセットした状態で呼び出され、わかりやすいのだが。
MJsimの場合は、常に卓全体とプレイヤー全員の状態がそのまんま送られてきて、
誰が何を捨てたか知るにも、牌を捨てたAIの河の配列を見に行かないといけないみたい。
・・・まあ、それもある意味わかりやすいとい言えんこともないか。
0119名無しさん@そうだ選挙に行こう
2007/07/29(日) 12:47:27ソースに目も通さずにこんなこと聞くのはどうかと思うけど時間がないので
その方式だと、誰かがリーチしたときにどれが安全牌なのかを確かめるときに、途中で鳴きが入ると厳しくない?
0120名無しさん@そうだ選挙に行こう
2007/07/29(日) 13:02:47>鳴かれた牌はマイナスの値になる。
>-19は19(9ピン)が鳴かれた。
だってさ。
MJSim.hより。
誰に鳴かれたのかはわからんみたいね。
0121名無しさん@そうだ選挙に行こう
2007/07/29(日) 13:34:040122名無しさん@そうだ選挙に行こう
2007/07/29(日) 13:34:46012386
2007/07/29(日) 13:38:17ブンブン丸は好みじゃないんだけどな。
0124名無しさん@そうだ選挙に行こう
2007/07/29(日) 13:48:050125名無しさん@そうだ選挙に行こう
2007/07/29(日) 13:54:41あぼんしやすい
0126名無しさん@そうだ選挙に行こう
2007/07/29(日) 13:56:26ホストから送られるデータ
(a, b)の二つのペア
a=0 ツモ 、a=1右側 a=2 中央 a=3左側 a>=4 他者のあがりなど、bは牌番号をセットされる
例えば、対面が1を捨てたならば、(2, 1)が送信される
ホストへ返却するデータ
(a, b)の二つのペア
a=0 手牌を捨てる 、a=1 ロン a=2 ポン a=3 カン a=4 チー a>=5 オプションを尋ねる(ドラなど)、bは牌番号をセットされる
ホストが聞かれると答えるもの ドラ表示牌、自風、場風、他者のポン、チー状態、得点など
0127名無しさん@そうだ選挙に行こう
2007/07/29(日) 13:58:10「宇宙麻雀理論」とか「リバーシ1」とかいう奴のカキコミは
完全に消し去りたい。
実力もないくせにスレをどんどん汚していく。
0128名無しさん@そうだ選挙に行こう
2007/07/29(日) 13:59:180129名無しさん@そうだ選挙に行こう
2007/07/29(日) 13:59:380130名無しさん@そうだ選挙に行こう
2007/07/29(日) 13:59:580131名無しさん@そうだ選挙に行こう
2007/07/29(日) 14:04:430132名無しさん@そうだ選挙に行こう
2007/07/29(日) 14:08:19入出力が単純でもルールを自分で定義してもいいから、早く作ってくれ。
0133名無しさん@そうだ選挙に行こう
2007/07/29(日) 14:12:490134名無しさん@そうだ選挙に行こう
2007/07/29(日) 14:16:18自分が動かせる(捨て牌やポンなど)ときのみデータを送信するようにした方がいいな
オプションで残り牌数や、他者の状態を聞けるようにすればいいので
0135名無しさん@そうだ選挙に行こう
2007/07/29(日) 14:22:50賛成だ。早く作ってくれ。
書き込むのは出来上がってからでいいよ。
0136名無しさん@そうだ選挙に行こう
2007/07/29(日) 14:33:290137名無しさん@そうだ選挙に行こう
2007/07/29(日) 15:01:34待ちを達成したってことはアガれなかったのね
0138名無しさん@そうだ選挙に行こう
2007/07/29(日) 18:48:500139名無しさん@そうだ選挙に行こう
2007/07/29(日) 19:21:52なんて作ったら面白そうだな
0140名無しさん@そうだ選挙に行こう
2007/07/29(日) 19:58:060141名無しさん@そうだ選挙に行こう
2007/07/29(日) 20:02:190142デフォルトの名無しさん
2007/07/29(日) 20:54:450143デフォルトの名無しさん
2007/07/29(日) 21:24:480144デフォルトの名無しさん
2007/07/29(日) 21:39:032の2失敗したら自主的に引退するAIキボンヌ
0145デフォルトの名無しさん
2007/07/29(日) 21:45:000146デフォルトの名無しさん
2007/07/29(日) 21:56:28PC「ボウヤ オレハ ジュクカラ キエルゼ」
そのAI最高なんだけどw
0147デフォルトの名無しさん
2007/07/29(日) 22:09:12nyに放流してからHDDフォーマットしないと駄目だろ
0149349
2007/07/29(日) 23:03:220>>116
いいね〜〜、ぜひ実装して検証してみたい。AI作るのが先だけどね。
>>118
データーアクセスのための、基本ルーチン出来ると思う、と言うかあります。
公開してみようかな。
0150デフォルトの名無しさん
2007/07/29(日) 23:32:360共通ルーチンを上げてくれ
0151349
2007/07/29(日) 23:43:510>おまいら基礎が大事だ 役、基本点がもとめられずに思考できるかよ
私なら出来るぞ、できないのか?
>共通ルーチンを上げてくれ
君の望むルーチンは皆無だ、諦めろ。
0152デフォルトの名無しさん
2007/07/29(日) 23:53:060ストレートに言おう。
何かが出来なければXXができないと、いいわけを言う人間は、もっとも無能な人間が言う言い訳だ。
他のせいにして自分がさも出来るのに、他のせいで出来ないという見苦しい言い訳だ。
他人のせいにすると楽だからな。
世のAIの殆どは、役も基本点も全然無いか、極一部だけ持っているに過ぎない。
それでも、立派にAIは作製可能である。
0153デフォルトの名無しさん
2007/07/29(日) 23:53:170ツモ切りとか、ランダム打ちは出来るけどさ・・・
点数出せなきゃ最強のやつは作れんよ
動くやつは誰でも作れるが
0154デフォルトの名無しさん
2007/07/29(日) 23:59:410アドバイスをやろう。
役はリーチ、ピンフ、タンヨウだけでやれ。
ついでに役牌を考慮しただけで、立派なAIが作製できる。
もちろん符も計算するな。
もしこれで、君のAIが出来れば、立派に動作する。
みんなも感心するAIになる可能性が有る、すぐ作れ。
0155デフォルトの名無しさん
2007/07/30(月) 00:01:030156デフォルトの名無しさん
2007/07/30(月) 00:01:130言いから動くやつを作れ!
最強はそれから考えろ!!!!!!
これ以上、最強を言い訳にするな!!!!!見苦しい!
0158デフォルトの名無しさん
2007/07/30(月) 00:03:22無駄
0159デフォルトの名無しさん
2007/07/30(月) 00:23:41メンゼンでの役の確率が計算してあるがそれぞれ一致してない・・・
役を正確に求めることと、その確率を求める事は困難であるといえると思う
複数人での一致を確かめて進めるべきだと思う
http://www.ix3.jp/hiii/02mahken/1-02yaku.htm
http://majanjan.com/4/45/
http://homepage2.nifty.com/rally_tate/mj/3-9.htm
0160デフォルトの名無しさん
2007/07/30(月) 00:29:05正確な点数計算はとても複雑で計算時間も掛かる、君が望むような速度は不可能だ。
もちろん、魔法のテーブルなど現在の環境では不可能だ。
結局は限定した内容で最良を考えるしかない。
この、限定された環境で最良を考えるのが楽しい。
君はテーブルをガンガンスペックダウンしたではないか。
何故、点数計算はスペックダウンしないのだ?
最強など誰も作れない、でも、作ってみる事がいい。
MJSimのサンプルAIを理解して、改良が出来れば。
それで立派に麻雀AIが作れるようになる。
必要ならアドバイスもしよう、説明もしよう。
・・・・うぐ、上で349って出てしまった、バレバレ orz
0161デフォルトの名無しさん
2007/07/30(月) 00:31:07七対子
3.2% (ひいいの麻雀研究)
2.4% (勝ち組の麻雀 理想雀士をめざして)
11.7% (麻雀を科学する 数理と確率による麻雀の必勝法)
ジュンチャン
0.35% (ひいいの麻雀研究)
0.4% (勝ち組の麻雀 理想雀士をめざして)
0.05% (麻雀を科学する 数理と確率による麻雀の必勝法)
0162デフォルトの名無しさん
2007/07/30(月) 00:31:13まったく思わん。
違ってて当然、理由も有る。理解できないだろ?
0163デフォルトの名無しさん
2007/07/30(月) 00:32:06で、だから何?お前が指摘すれば
つーか、ウンコな指摘しかできないウンコさんが
いなくていいから出て行ってもらえる
0164デフォルトの名無しさん
2007/07/30(月) 00:33:40ちなみに>>159は今後コテとトリップ付けろよ、NG指定しやすいから。
0165デフォルトの名無しさん
2007/07/30(月) 00:34:38でも、テーブル方式は爆発しない方法で作れるよ
0166デフォルトの名無しさん
2007/07/30(月) 00:34:55データーを取る環境と母体が違うから、違ってて当たり前。
0167デフォルトの名無しさん
2007/07/30(月) 00:35:55理解してまつ。
0168デフォルトの名無しさん
2007/07/30(月) 00:35:580169デフォルトの名無しさん
2007/07/30(月) 00:38:17データベースを作れば5Mバイトしか食わない
例外として、国士無双、緑一色、四槓子の判定をやって
三槓子、チートイツ、三色同刻、場自風の役の加算を求めてデータベースを引けばいい
0170デフォルトの名無しさん
2007/07/30(月) 00:40:40本人は理解していないかもだが、分かる人には分かっていた。ありがとう。
0171デフォルトの名無しさん
2007/07/30(月) 00:41:03もういいよ、ウザイだけだから。
ソースも出さずに、使えもしないウンコ仕様だけ
書かれても、スレが汚くなるだけだから
0172デフォルトの名無しさん
2007/07/30(月) 00:41:54もし間違っていたら、強くないのに強いと判定されてしまう
確認のために複数人の一致は必要
0173デフォルトの名無しさん
2007/07/30(月) 00:45:33⊂⌒( ・ω・) うん そうだね
`ヽ_っ⌒/⌒c
⌒ ⌒
0174デフォルトの名無しさん
2007/07/30(月) 00:46:59ついに他人の悪口を言い始めた。
だから、おまえもMJSimを動作させて、お前が言う
「複数人の一致」のために点数計算の確認して
やれって言ってるんだよ。
それが出来ないなら、このスレに2度と来るな
0175デフォルトの名無しさん
2007/07/30(月) 00:50:42もっと効率いい方法があるだろ。
そもそも、>>169の方法だと
大して多くは無いが無駄だらけで気分が悪い
0176デフォルトの名無しさん
2007/07/30(月) 00:55:38俺、役確定や上がり確定じゃなくて、手分析でテーブル使うぞ。
0177デフォルトの名無しさん
2007/07/30(月) 01:00:28オレもそうだよ。ていうか役判定にだけテーブル使うなんて
もったいなさすぎ
0178デフォルトの名無しさん
2007/07/30(月) 01:01:41かわいいな
0179デフォルトの名無しさん
2007/07/30(月) 01:04:04やっぱりそうか、考える事は同じだな。
しかしだ、実装で差がつくと思う。 どんな実装になるか興味があるな。
0180デフォルトの名無しさん
2007/07/30(月) 01:07:1114枚の牌を調べ、役が出来ていたらbreakして、
役が出来ていないなら見えていない牌の中から、ランダムに一枚加えて
どれか一枚を捨てたら、役が出来るならその駒に役の得点を加算する
さらに、もう一枚ランダムに加えて、どれか二枚を捨てたら
役が出来るなら、その駒たちに役の得点/2を加算する
これを終局まで試行する
そして制限時間がある限り、はじめからやり直して得点の加算を続ける
すると、役が揃いやすい捨て牌に得点が集まります
0181デフォルトの名無しさん
2007/07/30(月) 01:10:04糞仕様の話はいらないから早くソースあげてね。
それに、早くMJsimに実装してくれないか?
0182デフォルトの名無しさん
2007/07/30(月) 01:11:480183デフォルトの名無しさん
2007/07/30(月) 01:15:15数牌のメンツ分解数も、単独では正解にたどり付けなかったかもしれない
自分の解答よりも、他人の解答の正解率が高いだろうから
だれか飜数計算を上げてくれないかと思っているところである
0184デフォルトの名無しさん
2007/07/30(月) 01:17:110185デフォルトの名無しさん
2007/07/30(月) 01:18:07ついにお前の本音が出たな。
俺もそう思ったよ。
つまり、お前がプログラム出来ないから、お前の糞仕様に
付き合ってくれる奴を探して、このスレを荒らしていたんだろう
つか、プログラミング苦手なら、このスレに来るなよ
0186デフォルトの名無しさん
2007/07/30(月) 01:19:44018778 ◆7rnrw5KbzE
2007/07/30(月) 01:21:05言いますね〜(笑)アドバイス的確すぎやしませんか。
相当麻雀AI作成に熟知しているようにお見受けします。
私もアドバイス欲しいくらいですよ。
私もAIを組みましたので、牌譜あげてみます。
まだ鳴きも降りも教えてないのでドヘタゼンツ君ですがね・・・
ttp://uproda11.2ch-library.com/src/1118570.zip.shtml
0189デフォルトの名無しさん
2007/07/30(月) 01:23:560190デフォルトの名無しさん
2007/07/30(月) 01:28:30いや、飜数計算は基礎なんだよ
ここをおろそかにしたまま、各自が独自のMJSimの思考エンジンを作り出すようになっては
たまたま、MJSimで計ったら強かった弱かったってなってしまうんだよ
0191デフォルトの名無しさん
2007/07/30(月) 01:28:440192デフォルトの名無しさん
2007/07/30(月) 01:30:46見ました、ずいぶんまともなAIですね。素晴らしいです。
聞いちゃうけど、オリジナル? サンプルの改変ですか?
答えたくなければ答えないでOKです。
もし私で、答えられる事が有ったら何でも聞いて下さい。
0193デフォルトの名無しさん
2007/07/30(月) 01:31:09は?なんだそのウンコな反論は。
誰も、飜数計算をおろそかにしてないい。
お前の力で早くMJSimの飜数計算が正しいor
間違っていることを証明しろって言ってるの
出来ないなら何も書くな、糞野郎
0194デフォルトの名無しさん
2007/07/30(月) 01:36:02それとも、それで差が付くほどの立派なものを組んだのか?
後々問題になるだろうが、それほどのものは出てないな
0195デフォルトの名無しさん
2007/07/30(月) 01:40:00もう1段検索を深くすることです。
それと、見えている牌から、見えない牌を割り出し、それの確率を入れると
もっと強くなります。
0196デフォルトの名無しさん
2007/07/30(月) 01:46:53時間が少ないので、すぐ庭答えられないかも。(出来る範囲で)
AIの性格付けも、単純であれば比較的楽に出来るかも。
明日休みだけど、フラフラでもう寝まつ・・・Zzzzzzzz
019778 ◆7rnrw5KbzE
2007/07/30(月) 01:48:14完全オリジナルですね。いくらか下積みがあって、牌譜化環境等もできあがってて、
最近ここが盛り上がってきたので、作ってたプログラムをいくらか形整えて
打たせたのが>>187です。
>答えられる事が有ったら何でも聞いて下さい。
ではお言葉に甘えて。
>>187のAIは、14枚の牌形から、
打牌候補を切り、1枚ツモり、打牌候補を切った時点で、評価関数を呼び出して
元の14枚牌形から打牌を選択しています。所謂一手先読み、になります。
これをN手先読みにすることが可能なのですが、現状の処理スペックだと
一手先読み・・・一回の打牌選択あたり0.001秒
二手先読み・・・一回の打牌選択あたり約2秒
となってしまい、現実的な処理時間では二手先読みが限界となっています。
そこで、単刀直入に申し上げますと、>>192氏のAIの性能(できればその手法も)
断片的でもいいので教えていただきたい。
サンプルでは、ターツ毎の評価をしていたようですが、今作成中のAIの路線も
その方針でいくのでしょうか?
0198デフォルトの名無しさん
2007/07/30(月) 02:15:19捨て牌を選んで、それごとに残っている牌からまたツモるとやっては分岐数が多すぎます
>>180なら分岐は無いです すぐに終盤になります
0199デフォルトの名無しさん
2007/07/30(月) 02:17:34まだ、お前の糞仕様を薦めてるのか。
お前の糞仕様の方が分岐が多いぞ。
それも気付かないのか、糞野郎
0200デフォルトの名無しさん
2007/07/30(月) 02:20:57概要としては、
f=予測値を決めておき、それより評価が良ければ、その枝はそこで読むのをやめ上位ルートへ戻ります
fを超えるのが無かったら、もっとも評価の高い手の得点を上位ルートへ戻します
0201デフォルトの名無しさん
2007/07/30(月) 02:25:51だからその分岐にどれだけ負荷かける気だよ。
「麻雀」と「プログラム」知らない奴が思いつきで書くなよ、糞野郎が
0202デフォルトの名無しさん
2007/07/30(月) 02:26:18ネックは4シャンテン前後なので塔子で分割してなら、それ用の評価関数を用意。
(例:単騎<辺塔子<間塔子<両塔子<対子<刻子<順子)
で、面子候補それぞれに対して加算して求めてましたね。4シャンテンで最大100通り行くかどうか位
(※ただし、面子候補に単騎が二つ以上ある場合は別の方法にしてました。)
これだけだと不満なので、残り枚数や色、三色などの評価もしたい所ですけど
0203デフォルトの名無しさん
2007/07/30(月) 03:41:10普通に聴牌目指してひたすら不要牌切るだけ
相手の聴牌気配とか感じるのはそこまで出来た後の話だ
0205デフォルトの名無しさん
2007/07/30(月) 04:34:594シャンテン以上、ということはほとんどの状態で
孤立牌・不要牌が複数あるので、場風と手牌の偏り具合から
機械的に(=別の評価関数で)捨て牌選択が可能です。
というか、まずそれなりのものを作ってから順に次に取り組めよ
0206デフォルトの名無しさん
2007/07/30(月) 04:39:06土台を完成させろよ。 話はそれからだろ。
七対狙いオンリーの思考ルーチンでも
対戦用ライブラリのAPIに必要なエッセンスが
半分以上つまってんだからさー
0207202
2007/07/30(月) 04:57:17これのメリットは手役の嗜好を作りやすい事。最強かと言われると・・・
汚いソースだし書き換えるの面倒だから作り直してるさ〜
0208349 ◆XrG.ETMFv6
2007/07/30(月) 14:43:19//========================================================================
// 手牌分析クラス
//========================================================================
class CTatsu : public CBase
{
public:
//
// 評価用データ Analyze(void); で設定される
//
bool m_FuritennF; // フリテンフラグ
int m_TenpaiNo; // 後幾つでテンパイ
YAKU m_YakuType; // 現在の役タイプ
int m_YakuNo; // 役の藩数
int m_YakuNotoN; // 役まで後N枚の役の藩数
int m_TurtuNo; // ターツの数
int m_MachiNo; // 牌の待ち数
int m_TotalPoint; // 合計ポイント
int m_outHai; // 評価するときに排除した牌
int m_AtamaNo; // 頭の数
int m_AtamaHai; // 頭の牌番号
UCHAR m_MachiHai[PTBLMAX]; // 待ち牌データ
int m_tehaiP[PTBLMAX]; // 手牌のポイント
private:
//
// ターツ評価用データ
//
CMentu *m_pMD; // 親メンツデータポインタ
int * m_ptehaiNAnko; // 元の手牌 コーツを取り除いてる
int * m_ptehai; // 評価する手牌、面子と頭を取り除いてる
0209349 ◆XrG.ETMFv6
2007/07/30(月) 14:43:58void init(); // 初期化する。
int Analyze(CMentu *pmentu,int ahai); // ターツ評価
void AnalyzeNoHai(int no); // 数字牌の分析
bool tehaiCompar(CTatsu *pTD); // 手牌の優劣を比較、自分が低い:true, 以外:false
bool tehaiComparTenpai(CTatsu *pTD); // テンパイ時の手牌の優劣を比較
void TenpaiMachiHai(); // テンパイの時の待ち牌作成
bool chkFuriten(); // フリテン試験
virtual bool chkThis(); // 自己オブジェクトの試験
virtual void DispData(); // データ表示
//
// 役の分析
//
void AnalyzeYaku(void); // 役の分析
bool AnalyzeYakuHai(void); // 役牌 場風、自風、白発中
bool AnalyzePinfu(void); // ピンフの分析
bool AnalyzeTanyou(void); // タンヨウの分析
bool Analyze34Anko(void); // 3アンコ4アンコの分析
bool AnalyzeToitoi(void); // トイトイの分析
bool Analyze112233(void); // イーペーコ
bool chk123(int hno); // イーペーコイーシャンテン試験
bool AnalyzeChitoi(void); // チイトイの分析
bool AnalyzeKokushi(void); // 国士の分析
private:
int getTenpaiNoAnalyze(); // テンパイまでの必要牌計算
int getKey(int * st); // キーの作成
};
0210349 ◆XrG.ETMFv6
2007/07/30(月) 14:51:28public:
char m_BlockNo; // ブロック番号 −1:空き 0〜:ブロックNO
CHai m_tehaiw; // 面子頭引き後の手牌
int m_TotalPointAll; // 合計ポイント
int m_TotalPoint; // 合計ポイント
int m_TotalPoint3; // 合計ポイント
int m_TotalPoint2; // 合計ポイント
char m_MachiHaiNo3; // 面子牌の待ち種類数
char m_MachiNo3; // 面子牌の待ち枚数
char m_MachiHaiNo2; // 面子牌の待ち種類数
char m_MachiNo2; // 面子牌の待ち枚数
char m_AtamaHai; // 頭牌が有る時の牌NO
// 解析結果データ
char m_outhai; // 排除された牌
int m_AType; // 分析タイプ
char m_TenpaiNo; // 後幾つでテンパイ
char m_TenpaiTsNo; // シャンテンに対する余分のターツ数
bool m_FuritennF; // フリテンフラグ
YAKU m_YakuType; // 現在の役タイプ
YAKU m_YakuTypetoN; // 役まで後N枚の役タイプ
char m_YakuNo; // 役の藩数
char m_YakuNotoN; // 役まで後N枚の役の藩数
char m_TurtuNo; // ターツの数
char m_T_XX_n; // リャンメンの数
char m_TX_X_Xn; // 2カンチャンの数
char m_TX_Xn; // カンチャンの数
char m_TXX_n; // ペンチャンの数
int m_AtamaNo; // 頭の数
int m_tehaiP[PTBLMAX]; // 手牌のポイント
UCHAR m_MachiHai3[PTBLMAX]; // 面子待ち牌データ
UCHAR m_MachiHai2[PTBLMAX]; // ターツ待ち牌データ
0211349 ◆XrG.ETMFv6
2007/07/30(月) 15:06:29見れば分かる通り、分析のし過ぎではないかと思うほど分析しています。
これは当初、初めてAIを作る上で人間の考える通りに動くAIが目標でしたから。
探索ツリーは
14枚の牌
↓
↓-----------------------↓
構造1・・・・・・・・・・・・・・・・・・・構造N
↓
捨てるパターンの数
↓-----------------------↓
A牌捨て・・・・・・・・・・・・・・・・・N牌捨て
↓
仮定のツモ牌
↓-----------------------↓
14枚の手牌1・・・・・・・・・・・・・14枚の手牌N
↓
↓-----------------------↓
構造1・・・・・・・・・・・・・・・・・・・構造N
↓
捨てるパターンの数
↓-----------------------↓
A牌捨て・・・・・・・・・・・・・・・・・N牌捨て
これでようやく一手先読み。
のような探索ツリーです。非常に込み入った構造で尚且つ、分析結果がけた違いに増えます
1つの手配の分析は、総てのターツパターンを出します、その数は数十から200を越える時も。
例えば 2334 は 234と3 23と34 24と33 の3種類に分類。(とても簡単な例)
0212349 ◆XrG.ETMFv6
2007/07/30(月) 15:20:31先読みが浅いのでスピードが速いく、それなりに強いのではないかと思います。
初めて作ったため、いろいろな試みをしています。初盤にペンちゃんや13のようなカンちゃんを
嫌うようにしてたり。私が思うような牌の切り方に近いようにしています。
その結果、ソースは膨大となり各所にバグがゴロゴロしているのではないかと思います。
雀譜を見れば分かると思いますが、面白い切り方をしたり、とんでもない牌を切ったりします。
まだまだ未完成です。
本ちゃんは二手先まで読んでいました、3手先までも作ったのですが、二手先とほぼ同じ感じです。
0213349 ◆XrG.ETMFv6
2007/07/30(月) 15:37:39役は、上にあるように、ピンフ、タンヨウ、3アンコ、トイトイ、イーペーコ、チイトイ、国士
までしか分析していません。しかし、後幾つで役が確定するかも分析しています。
難しい所の一つに、役を目指すとフリテンが増えてしまうのが悩みどころでした。
最終的な手の評価関数はそれなりなのですが、最適化までには至らず、残念でした。
先読みについて
先読みが深いほど強いと思っている方もいるかもしれませんが。それは間違いだと
私の直感が宣言しています。それなりに理由もあるのですが、まだ、説得力があるほどの
論理的構築ができていません。参考程度に検討してください。
何処までの先読みがベストなのかは検討の余地が有ります。妄想では3手先も有れば
十分ではないかと思っています。
0214349 ◆XrG.ETMFv6
2007/07/30(月) 16:09:16サンプルソースの様な手牌構造を理解せずに、評価関数で優劣を決める方法は
過去の物です。いろいろ欠点が有ります。
例えば、122334 の場合1が来たら4を捨てるのですが、中の数字を好む式だと
1を捨ててしまうかもしれません。(サンプルAIは4を捨てる)
例えば 2334は234の面子を優先して3を捨ててしまうかもしれません。
23と34の2ターツと考えた方がいい場合もあります。
例えば12のペンちゃんでテンパった時、有効牌が1枚しかなかったら、場合によっては
12を捨ててシャンテン数を下げても持ちを変えたほうが上がりには速いはずでしょう。
(簡単な例)
等々いろいろ有りますが、手配の構造を理解していないと解析が出来ません。
次世代AIには、手牌構造を分析するのが必要ではないかと言えます。
0215349 ◆XrG.ETMFv6
2007/07/30(月) 16:25:47問題は時間なのですが・・・、過去のAIは>>197のご指摘のターツ毎の評価(分析)が
主であるかもしれません。
次回は、人間の様にではなく、最速に速く上がれるAIを目指します。これは
最高に早くテンパルとは意味が違います。分析方法ですが、前はターツが主では
あったかもしれませんが、今回は牌の構造に焦点を当てたいと思っています。
あいまいな表現で申し訳ありません。以前のAIの分析内容を見て分かる通り
またも、複雑な事をやろうと画策しています。
作った結果、過去のAIに負けるかもしれませんが (大汗
振り返ってみて、過去のAIはいい経験になっています。いや、あの時はとても苦労した
のですが、結果に落胆した・・・・orz、 今度は己に勝つ!
021678 ◆7rnrw5KbzE
2007/07/30(月) 18:27:03詳細な解説ありがとうございます。参考になることは数多いですが、その中でも
>先読みが深いほど強いというわけでもない
という示唆は非常に興味深い。
http://ara.moo.jp/mjhmr/statall.htm
あら氏のシミュレーション結果(↑)を見ると
先読みが深いほど好結果がでていますよね。
すると、349氏のAIにおいて、先読みがさほど影響を及ぼさない原因に
評価関数の指向が関与しているのではないでしょうか。
というのはたとえば
56m2367p3488s東南西北
という手牌があったとして、これをターツ毎評価にぶち込んだ場合
「役に平和がつく(有力だ)」という評価ができると思います。
でも実際、平和がつくと確定するのは、和了形にして4手先、
テンパイ形にして3手先になります。
つまり手牌自体は1手先までの形しか予想していないけれど、
ターツ毎評価によって、部分的にはもっと先の形まで予想している、ということになります。
その結果、手構造自体の先読みの意義が薄れているのではないでしょうか?
もちろん、そうなるのは評価関数が優れているためでしょう。
021778 ◆7rnrw5KbzE
2007/07/30(月) 18:32:25私の場合一打0.01秒程度なのですが、これだけ込み入った分析をした場合、やはり
いくらか時間をくってしまうのでしょうか?
0218デフォルトの名無しさん
2007/07/30(月) 18:53:32たいして高速化にもならんとは思うが、一応賛成。l
で、MJexeIO.DLLという東風荘をプログラムから操作するDLLと同じ関数にしたらどうかな。
東風荘でも動かせるしね。
関数仕様はこれ。
ttp://www.interq.or.jp/snake/totugeki/MJexeIODLLfunc.htm
まずは、全部は必要ない。
MJSimのデータ仕様は、無駄が多いし、わかりづらいと思う。
例えば、対戦相手の手牌のフーロしていない部分とかも見えるが(当然無効だが)、そんなの必要ない。
0219デフォルトの名無しさん
2007/07/30(月) 19:21:15相手の手牌等のデーター領域はあっても中身は0で見えないようになってる。
卓で見える物しか見えない。
0220デフォルトの名無しさん
2007/07/30(月) 19:32:09インターフェース用DLLを誰かが作ればいいんだけどね。私は時間がとても・・・
MJSimで、1つのAIに、2つのAIを繋げて動作を比較するツールを作ってる。
これ公開するから、参考に誰か作ってくれないかな? と期待。
MJSim
↓
動作比較DLL
↓ ↓
AI1 AI2 (読み込まれた2つのAI
0221デフォルトの名無しさん
2007/07/30(月) 19:38:29ホストも「まうじゃん」
じゃなかったんだけ?
0222349 ◆XrG.ETMFv6
2007/07/30(月) 19:56:28時間については計算したことがありません。どの様に算出しましたか?
ダミーなら多分0.01以下ではないかと思います。
MJSimの実行が1秒間に100回以上しているので。
また、本ちゃんの二手先でも、けっこう速いのです。
手が染まっている時は遅いのですが、そうでない時は
ダミー並とは言いませんが、早いです。
分析する必要があるのか無いかは、事前にチェックされ枝狩りされています。
手配の状況でスピードは数十倍以上違い産ます。
分析の種類が20-30以内の時と、200近くの時のその先の枝の数を想像してみてください。
極端に解析時間が違います。
読みについては後でまた。
022378 ◆7rnrw5KbzE
2007/07/30(月) 20:18:52切り番時、14枚の手牌+周辺情報(場に見えている枚数、ドラ等)を与えて
打牌選択関数を呼び出してから、その結果が出るまでにかかった時間を計ってます。
実質1手打つのにかかる時間ですね。ただしリーチ後のものは除いています。
ちなみに今計った所、一手あたり平均0.0087秒でした。
2手先で十分早いとなると相当なものですね。私の場合平均2秒ほどかかってしまいますから・・・
枝かりが甘いのかなぁ・・・
0224aa ◆BmUbLWewsM
2007/07/30(月) 20:27:45には、説明不十分でした。
>分析の種類が20-30以内の時と、200近くの時のその先の枝の数を想像してみてください。
>極端に解析時間が違います。
データ数がそのまま時間ではないです。
データー数が多いと言う事は、不必要な分析がどんどん増えてくるのです。
説明は難しいのですが、同じ構造を何度も見つけてしまうのです。
そのため、重複排除やその他の時間がかかります。
おっと、>>223の時間はダミーのですか?
計測ありがとう。
0225202
2007/07/30(月) 20:46:41そうするとどうしてもメンツ構成(塔子や単騎を含む)の分析が必要になるんだよなぁ
でも、もしかすると牌効率最優先の方が強いかも分からないので、今それをどうしようか
考え中・・・
0226349 ◆XrG.ETMFv6
2007/07/30(月) 21:02:37>あら氏のシミュレーション結果(↑)を見ると
シミュレーションの0−3の違いはなんでしょう?
探したのですが見当たりません。
022778 ◆7rnrw5KbzE
2007/07/30(月) 21:09:26失礼、計測した平均時間は私のやつです。
0〜3は、それぞれそのシャンテン数未満のときに和了形まで予想して
点数計算を行う。それ以上の場合は簡易計算で済ますというものらしいです。
詳細は
http://ara.moo.jp/mjhmr/simulation.htm
0228349 ◆XrG.ETMFv6
2007/07/30(月) 21:31:59質問です。
>先読みが深いほど好結果がでていますよね.。
先読みが深いほど好結とは、どの部分を指しているのでしょう?
期待値の値ですか?
私はきた位置の計算自体に疑問を感じているのです。
もし意見が違うのであれば、話してみたいです。
0229349 ◆XrG.ETMFv6
2007/07/30(月) 21:34:02○期待値
0230デフォルトの名無しさん
2007/07/30(月) 22:05:19これを毎日徹底した自己管理で行えば Bカップ程度なら3年で育つ
0231デフォルトの名無しさん
2007/07/30(月) 22:07:17俺はCもあれば十分だと思ってる。Fなんざぁただの脂肪の塊としか思えん。
023278 ◆7rnrw5KbzE
2007/07/30(月) 22:14:32好結果の指し示すのは期待値の話です。
ただし、期待値が高いことが、好結果である必要十分条件ではないことに、
私も同意します。あくまで、期待値を一つの指標として挙げたまでです。
あら氏の期待値の重要性が実戦で崩れる要因として重大だと考えられる
ものを挙げてみます。
1.18順の到達順目(=猶予順目)が保証されていること
あら氏の期待値は、あくまで局が18順完了できる(かつテンパイ料を考慮しない)
条件下でのものでした。しかし実際は18順完了できることは
それほど多くなく、全体の85%程度は和了による終了(自家和了含む)になります。
となると、実際では条件下等によって、到達可能な順目は変わってくるはずです。
たとえば、「ダブリーがかかった1順目」という条件下では、そうでない1順目よりも
平均到達順目が小さくなり、守備を考慮しないとしても戦略が変わってきます。
仮に100順分ツモ打牌が許されるなら、全局ヤクマン狙いが正着(=期待値高)になるでしょう。
しかし、18順で全局ヤクマン狙いの戦略では期待値は高くならないでしょう。
同様に、猶予順目が違うならば、戦略も変わってくるはずです。
023378 ◆7rnrw5KbzE
2007/07/30(月) 22:16:52あら氏の期待値はあくまで、面前のみを対象としたものでした。
この条件では、喰い仕掛けを考慮しないため、「役をつけるためにシャンテンを落とす」
ということは少なくなります。
しかし喰い仕掛けを考慮すれば
123368m246p22688s ドラ2s
というような場面から、打1mとしてクイタン狙いは有力手です。
当然、これはフーロを想定するからこそ有力手なのであり、フーロを考慮しない
期待値評価で打1mが選択されることはないでしょう。
フーロを想定するならば、喰い仕掛け可能な役を狙う意味が大きくなります。
3.守備を考慮していない
守備を考慮しなければ、ちょっとでも効率アップが考えられる牌は残すべきです。
しかし中終盤で、ほとんど効率が変化せず、かつ将来危険になるような牌は
残すべきではないでしょう。また、相手から攻撃が入った場合、各牌に失点指標
を導入しなければなりませんが、それも考慮されておりません。
0234デフォルトの名無しさん
2007/07/30(月) 22:26:09・攻撃は何もなくても組みやすい
・守備は何かないと組みにくい
・俺よえぇ
こんなとこか
0235デフォルトの名無しさん
2007/07/30(月) 22:32:28ルールは東風荘(第一)またはまうじゃんまたは今回作成したオリジナルルール
023678 ◆7rnrw5KbzE
2007/07/30(月) 22:32:56守備を組むとっかかりには、結構各人の判断基準で強弱つくと思いますよ。
そういう面で、麻雀打ちとして強い人は有利になるでしょう。
<テーブル>は私の中に・・・
0237デフォルトの名無しさん
2007/07/30(月) 22:36:36単純化したオリジナルルール
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4765.txt
トンプウ荘ルール
http://mj.giganet.net/yaku.htm
0238349 ◆XrG.ETMFv6
2007/07/30(月) 22:38:14詳しい説明ありがとうございます。
私は特に、次の点が実際と合わないと考えています。
あら氏の一人麻雀では、相手がいません。
したがって4人いる場合明らかに計算式が違います。
あら氏
期待値=自分の牌を見ただけの期待値。
4人麻雀
期待値=自分の期待値 ー 遅れた上がり順目分の他人の上がり期待値。
こらが本当の期待値です。あら氏のは一人麻雀での数値です。
いわゆる、0と3では、平均テンパイ順目が 0=11.56 3=11.76
3の方がテンパイが遅い、そして何より平均和了順目が 13.82 14.46と
0.64順ほど遅いのです。これは私にとっては大きなマイナス要員です。
コンピューター麻雀の場合、手の雰囲気が似てきます。だからこそ
こちらが上がりそうなら、他の3人もあがりそうだと考えるのが普通でしょう。
その場合の0.64順遅れは、最強を作る上でマイナスだと考えます。
AI対戦の場合、他より少しでも速く和了する事が重要だと考えているからです。
その考えからすると、和了が速い0の方がいいのかもしれません。
0239デフォルトの名無しさん
2007/07/30(月) 22:40:39数字19、2〜8、白発中、東南西北のコーツとトイツは同一視したときに
正しい飜数を返すプログラムを作ろうぜ
これで多くは判定できるよ
なぜならば、2のコーツと3のコーツを同一視しても、
それは別物であることは枚数から明らかだからだ
0240デフォルトの名無しさん
2007/07/30(月) 22:44:42なぜならば、敵は3人いるからだ
自分のあがる確率より、他人のあがる確率は3倍も多い
防御は重要
0241202
2007/07/30(月) 22:48:44とりあえず形になるのですが、理想とするシャンテン数には届かないです。
(理想←手牌+ツモる予定の16牌(17牌)でのシャンテン数)
理想が高すぎるのもあるのですが平均1シャンテン位は低いです(中盤12〜14巡目辺り)
0242デフォルトの名無しさん
2007/07/30(月) 22:49:393シャンテンくらいから期待値計算で考える子にしてみたんだけど、
2シャンテンから考える子は正常に動いたのに、3シャンテンまでがんばらせてみたら
なんか動かなくなっちゃった。これだからバグはいくないorz
0243デフォルトの名無しさん
2007/07/31(火) 00:22:300244デフォルトの名無しさん
2007/07/31(火) 00:34:37だってもう飽きたんだもんww
0245デフォルトの名無しさん
2007/07/31(火) 00:39:082手先まで読めてて、さらに1シャンテン下げるのは流石にムリでは・・・
鳴いてもなんでもいいから形だけシャンテン下げるだけならなんとか。
0246デフォルトの名無しさん
2007/07/31(火) 00:56:18犬のフンは無視するのが一番
0247デフォルトの名無しさん
2007/07/31(火) 01:06:32あれ?自分なんか間違えてるかな?
2シャンテンから考える子は大体10ms以内とかだった気がするんだけど
0249202
2007/07/31(火) 01:26:29いや、これは一手先読みだけですね。1牌切った状態でのシャンテン数が良くなる
候補の牌枚数をカウントして(有効牌数)、枚数が一番優秀な時の牌を切っていくだけ。
理想のシャンテン数というか究極が、引く予定の牌を含めた30枚でのシャンテン数として考えてます。
当たり前ですが究極には近づけませんw(エスパー能力があれば・・w)
有効牌数がそのまま塔子構成にも関わるので、そっちの評価は入れてないですね
0250デフォルトの名無しさん
2007/07/31(火) 01:51:170251デフォルトの名無しさん
2007/07/31(火) 02:08:040253デフォルトの名無しさん
2007/08/01(水) 13:59:26役→Post
牌→Tile
役牌→Yacpai
ううむ・・
0254デフォルトの名無しさん
2007/08/01(水) 14:06:49あと、役牌よりは字牌だろうね。
0255デフォルトの名無しさん
2007/08/01(水) 18:40:17多々あります。辞書を引きながら決めるなら↑の表記にした方が楽です。
0256デフォルトの名無しさん
2007/08/01(水) 18:52:10人が書いたソースでTaitoruとか使ってたら、そいつのコードは1行たりとも信用しない。
0257255
2007/08/01(水) 19:22:04PostTileなんて変にやられると逆に可読性が落ちそう。命名規則だけは保って欲しいな
>>256
それは流石に同意w
0258デフォルトの名無しさん
2007/08/01(水) 19:27:34奴の事か
0259デフォルトの名無しさん
2007/08/01(水) 19:46:51なんか幼稚っぽく見えるかもだがorz
0260デフォルトの名無しさん
2007/08/01(水) 20:15:430261255
2007/08/01(水) 20:17:270262デフォルトの名無しさん
2007/08/01(水) 20:22:30あがりの際の翻数を入れるint型変数なら IAgariHon
0263デフォルトの名無しさん
2007/08/01(水) 20:29:26この時にある程度の整合性を考える。ソースは上げるまでは自分だけのもんだしw
0264デフォルトの名無しさん
2007/08/01(水) 20:36:110265デフォルトの名無しさん
2007/08/01(水) 20:35:530266デフォルトの名無しさん
2007/08/01(水) 20:42:17今気づいた正しくするなら IAgariHan だな
翻を変換するときに「はん」ではなく「ほん」で変換してるから
間違えてしまったみたい
0267デフォルトの名無しさん
2007/08/01(水) 20:49:32今実際に組んでる人どれ位いるのかな?
自分は今忙しくて凍結中 orz。ネタだけが増えていく・・・
0268デフォルトの名無しさん
2007/08/01(水) 20:51:070269デフォルトの名無しさん
2007/08/01(水) 21:37:27(ちなみに、 honors は「字牌」のことです)
あと、プログラムを作成する上でわからない用語が、「捨て牌」です。
Table が真っ先に浮かんだのですが、なんかしっくりこないし・・・
0270デフォルトの名無しさん
2007/08/01(水) 21:51:01ローマ字はなんか抵抗があるんだよなあ
0271デフォルトの名無しさん
2007/08/01(水) 21:54:240272349 ◆XrG.ETMFv6
2007/08/01(水) 23:06:04ゆっくり作ってるが何時出来る事か、完成したら面白い話が出来るかもしれない。
誰かAIをUPしませんか? 78さんAIをUPしませんか?
過去のAIならUP出来るけど、何処まで何を修正していたか、全然覚えて無い。
最終ビルドしたDLLならUP可能。
0273デフォルトの名無しさん
2007/08/01(水) 23:28:04個人的に燃料投下(DLLUP)して欲しいです。
0274349 ◆XrG.ETMFv6
2007/08/01(水) 23:58:21>>72さん >>211の構造間違えてます。調べて最UPしまつ、申し訳ない。数年前の話なので。
ネタ投下してみる。
構造の分析について
正確な点数計算は総ての手牌構造を出す必要が有る。
ちょっとだけめんどう。
テンパイして無い手をターツまで含めた手牌構造の総てのパターンで出そうと試みる。
とても大変。
手が染まっている手では、爆発的にパターンが増え、同じ構造を何度も検出する。
私のAIでは、考えられる総ての切り口で構造を取り出しているため、同じ構造を
何度も検出していまう。これの重複を検出するため、構造のキーデータを計算し
ソートして有効な構造のみ取り出している。
>>209に有る int getKey(int * st); // キーの作成 これがそう
一種の枝狩りかな。
また、まじめにプログラムでターツを取り出すと、多分とても大変。
したがって、パターンデーターを持って、高速化している。
高速のために極一部の構造までは検出できない欠点ももっている。
事実上問題はないと判断したため、省いた。
私のAIの実装内容その1 でした。
0275349 ◆XrG.ETMFv6
2007/08/02(木) 00:05:13・パターンデーターでの分析は、とても高速だった。(参考までに)
その実装方法は説明せず。皆さんに疑問を投げつけて、もっといい方法が出るのを期待。
実は欠点があってね、あの時はそれしかなかった。
0276273
2007/08/02(木) 00:24:19ただ、塔子などを考えるとまだまだ隙の多い気がしますね。自分のものは
0277349 ◆XrG.ETMFv6
2007/08/02(木) 23:55:36パターンデーターはいい方法論だと思うね、もっともっと良くなると思う。
標準化するほど一般化するかも。まあ、実装方法はいろいろ出てきていいと思う。
その中で、色々なアイデアが出たほうがいい。
ネタ投下その2
高速化の一つとして実装したのが。前分析データーの再利用。
私の分析ツリーは総てデーターでツーリー構造のまま残っている。
したがって、次のツモの先の分析データーが存在している。
それを再利用している。毎回既に広がったツリーの一手先を読むだけで
数手先を詠む事と等しい。しかし、多少スピードUP程度かな。
そうそう
明らかに関係しない牌をツモった場合は、前分析ツリーで簡単に意味が
無いと判断できるので、ツモ捨てしている。この方が高速化にはとても効いている。
単発の字牌とか、手牌より意味も無く離れたパイとかね。
手の重みでその辺も固まってくるし、前の分析データが利用可能なので。
この枝狩りは大きいかも。
0278349 ◆XrG.ETMFv6
2007/08/02(木) 23:59:52もちろん、もっといい方法は多々あるでしょう。無ければ新しいAIを作ろうとは思わないし。
ネタになるか参考にだしているにすぎない。ウザかったら言って、辞めるから。
0279349 ◆XrG.ETMFv6
2007/08/03(金) 00:13:27物凄いメモリーの確保と廃棄が行われているのが理解できると思う。
オブジェクトの生成と廃棄では遅いと思い。高速メモリー管理ツール
を最初は使用していたが、それでも遅いかと思い、完全にそれ専用の
メモリー管理を実装した。これ以上の速さは無理なほど速くなったと思う。
メモリーの廃棄は1ステップ、確保は最短で確保。
どんなに良い物でも、専用にガリガリにチュンナップしたものが早いのは
当たり前と言う事で。
この辺は正直、趣味に走ってます、あははははは・・・・暇人だ・・・・
データーツリー構造の管理も趣味だよな〜・・・・orz
趣味が理解できる人だけ読んでちょ。
0280349 ◆XrG.ETMFv6
2007/08/03(金) 00:29:10しかしだ、そんなに強くないAIであった(泣き
(実はもっと色々組み込んであるんだよ、戦術の話一言も触れて無いし・・・・・・orz)
私の落ち込みは、想像できるだろうか・・・・・・・・・
だって、結果が最速が強そうだったから。今度は最速でGOだ。
0281349 ◆XrG.ETMFv6
2007/08/03(金) 00:30:48○戦略
0282デフォルトの名無しさん
2007/08/03(金) 00:33:120283349 ◆XrG.ETMFv6
2007/08/03(金) 00:40:13↓
ttp://uproda11.2ch-library.com/src/1119634.zip.shtml
PW=MJSimAI
0285デフォルトの名無しさん
2007/08/03(金) 00:43:10手短に3行でまとめろ
0286デフォルトの名無しさん
2007/08/03(金) 00:51:550287デフォルトの名無しさん
2007/08/03(金) 00:53:40いや、自分は面白いと思って読んでる。
だらだらでも何でもいいから好きなように書いてくれ。
0288273=286
2007/08/03(金) 00:59:52それぞれの牌種は独立なので牌種ごとに捨て候補の牌と評価値を保持(上位2つずつ位)させて
引いた牌の種類の所だけ更新する。
と言う方法も浮かんだが、手役を絡むと面倒かも。
捨て牌を選ぶ時に有効牌のリストを用意させてしまうと言う手もあるかな?(それ以外は計算せずに、
もしくは切り上げた計算をして、ツモ切りとか。←自分の思考に近い方法)
0289デフォルトの名無しさん
2007/08/03(金) 03:04:25http://reachmahjong.com/
>>349
落とせません><
029078 ◆7rnrw5KbzE
2007/08/03(金) 03:33:282chのような平均的に「できの悪い」人間が多く集まる空間では
著しくできの良い人間を貶めようと働くことがしばしばあります。
>>282や>>285のような者がそうです。彼らは「できの良さ」を披露されると
怨恨感情を発火させて反発し、呪詛を垂らします。
このような連中の発言を真に受けることは愚行に他なりません。
いったい氏の書き込みと>>282のウザいとの感情に、なんの関係がありましょう。
〜>>280で語ってきたことは、我々にとって役に立つ・おもしろいものだと
判断されたからこそ書き込んでくださったのでしょう。
その判断は正しい。この水準での具体的なコーディング上の工夫を
詳細に説明した記載はいったいどこにあるというのでしょうか。
かのまったり麻雀のブログですら無かったことです。
氏は麻雀AIの分野について現時点で世界一「ためになる」レスをしてくれていた。
これは自覚されてもよいことかと。
そしてAIをDLしそこねた・・・再UPを!(泣)
0291デフォルトの名無しさん
2007/08/03(金) 03:58:100292デフォルトの名無しさん
2007/08/03(金) 05:35:492chで自分語りする奴ほどうざいのもいないぞ。
029378 ◆7rnrw5KbzE
2007/08/03(金) 06:13:49確かに、君のような無能な人間が際限なく自分語りを繰り返してきたのが
君にとっての2ch像なら、この類ほどうざいものはないだろうね。
ところで、君が抱く個人的心情(=2chで自分語りする奴はうざい)を吐露する
ことそれ自体が、「無能の自分語り」に帰着してしまっていることに自覚的かな?
君は「自分語りはうざい」という見地から見てうざいし、ためにならない発言をする
奴はうざいという見地からも輪をかけてうざいし、識者に対する怨恨が垣間見られて
醜くうざいね。
349氏のような優秀な人材が、君のような無能の心情や能力水準に合わせる必要が
どこにあるというのだね?むしろ、2chや君にしてはいささかレベルが高くなった
このスレにおいて、『うざい』と形容されがちなのは君のような立場だということを自覚したまえ。
0294特に「自覚したまえ」の辺り
2007/08/03(金) 07:37:240295デフォルトの名無しさん
2007/08/03(金) 08:43:18349の書き込みは歓迎だが、
>>277-280の連投に関しては、どうかと思う。
これからは少し熟考して簡潔に纏めてみては?
0296251
2007/08/03(金) 09:15:510297デフォルトの名無しさん
2007/08/03(金) 09:24:440298デフォルトの名無しさん
2007/08/03(金) 10:51:100299デフォルトの名無しさん
2007/08/03(金) 12:42:58どうかと思う、だけでは難癖のように取られてしまうかも
内容のある長文もあれば、内容のないものもあるわけで
内容がないと思うなら、どこを、なぜ纏めたほうがいいかも添えてあげなよ
どうかと思うから、ではなく、こう思うから、のほうが意図が伝わるかと
0300デフォルトの名無しさん
2007/08/03(金) 12:51:02目糞鼻糞
0301デフォルトの名無しさん
2007/08/03(金) 12:54:340302デフォルトの名無しさん
2007/08/03(金) 14:06:140303デフォルトの名無しさん
2007/08/03(金) 14:59:210304デフォルトの名無しさん
2007/08/03(金) 15:02:37自己紹介ですか?
0305349 ◆XrG.ETMFv6
2007/08/03(金) 15:36:13↓
ttp://uproda11.2ch-library.com/src/1119634.zip.shtml
PW=MJSimAI
MJSimの実行環境及びサンプルAIを再度UP
↓
http://uproda11.2ch-library.com/src/1119738.zip.shtml
PW=MJSimEXE
0306349 ◆XrG.ETMFv6
2007/08/03(金) 15:49:42私はMJSim作者さんに恩義が有ります。2chはそんなに見ないのですが。
たまたま見た時、麻雀ホストを作る話が出ていて、気軽な気持ちで参加したわけです。
当時、私からの話は曖昧な事が多く、もっと具体的な話を期待されているのが分かっていましたが、
作ってる状態の時はなかなか出来ませんでした。
いや、理解はしていたけど、なかなか出来ませんでした。MJSimの出来は素晴らしく
何らかの形で恩をお返しで着ればと思っていました。
いま昔できなかった事を、解説と言う形で公開して、お返しが少しでもできれば嬉しいです。
公開私信失礼しました。
0307349 ◆XrG.ETMFv6
2007/08/03(金) 15:54:07↓
http://uproda11.2ch-library.com/src/1119740.zip.shtml
0308349 ◆XrG.ETMFv6
2007/08/03(金) 16:26:40ネタその3 評価関数について。
>>209の
>bool tehaiCompar(CTatsu *pTD); // 手牌の優劣を比較、自分が低い:true, 以外:false
>bool tehaiComparTenpai(CTatsu *pTD); // テンパイ時の手牌の優劣を比較
評価関数は2つ持っている。それはテンパイになるまでの評価関数と
テンパイになった時の評価関数である。簡単に言うと、テンパイになった時
何を捨てれば一番いいかとそれ以前では違うと考えたからです。
麻雀をやっていれば分かりますが、テンパイの時何を捨てればいいのか考えるでしょう。
それ以前と明らかに性格が違うと考えたからです。
テンパイ時の評価式は
1.役が多い方を選ぶ
2.待ちが多い方を選ぶ
3.ポイントが多い方を選ぶ
上の順番の優先順位です。今思うと1,2逆の方が良かったかも・・・
テンパイ以前の評価式は、ずいぶん悩みました。分析データーが9種類も評価してた、
何をどのような優先順位でやるのかを。今見ると役が優先ぽいですね〜
これじゃテンパイ率が低くなってしまう、残念。
スピード有利の確信は徐々に育っていきましたから。
それに、戦略追加作業がけっこう大変で、そちらに頭が切り替わってたし。
今思うと、平均上がり点はそんなに高くなかったような・・・・・
0311349 ◆XrG.ETMFv6
2007/08/04(土) 00:02:07戦略について、今までの話が戦術とすると、これからの話が戦略になります。
戦略として、分析していた物
1.見える牌から、見えない牌の算出。
(これは、戦術時点で計算していた、待ち有効牌の算出に)
2.相手の河や場の状況から、他家おきの牌安全度計算。
(当時のAIはテンパイ即リーですから、他者のリーチがあって、
自分の戦略モードに従い、降りや回しで使用していた。)
場の分析
1.局目
2.親、子、場風自風
3.自分の順位
4.各順位との点差
5.順目
6.各家のリーチ一発の時
7.各家のテンパイ(リーチ)状況
8.もっと有ったような気もするけど忘れました。(見るの大変だし)
等のデータから、戦略を決定しそれにしたがって動作する。
AIの戦略動作モードの公開↓。
NON = 0, // 全つっぱ
OGO = 1, // 全つっぱ
OM1 = 2, // 面子以外から危険度最小の降り牌を探す。TYPE1
OM2 = 3, // 面子以外から危険度最小の降り牌を探す。TYPE2
OM3 = 4, // 面子以外から危険度最小の降り牌を探す。TYPE3
OMB = 5, // ターツからAN_Bランク以上の降り牌を探す、なければ全牌検索で最安全牌を切る
OMA = 6, // ターツからAN_Aランク以上の降り牌を探す、なければ全牌検索で最安全牌を切る
OS = 7, // ターツからAN_Sランク以上の降り牌を探す、なければ全牌検索で最安全牌を切る
ORA = 8, // べた降り
ORB = 9, // 安牌を作成してべた降り
戦略については、試作的な意味合いが強く、研究や最適化までには達していなかった。
以前書いたように途中で終わったし。
0312349 ◆XrG.ETMFv6
2007/08/04(土) 00:09:37枝狩りについて多少詳しく話しています。
もし何か疑問が有ったら、話せる範囲で話しますので、お聞きください。
0314デフォルトの名無しさん
2007/08/05(日) 23:50:04http://pc11.2ch.net/test/read.cgi/gamedev/1105332492/
0315デフォルトの名無しさん
2007/08/07(火) 23:20:070316デフォルトの名無しさん
2007/08/11(土) 12:57:210317デフォルトの名無しさん
2007/08/11(土) 15:14:260318デフォルトの名無しさん
2007/08/11(土) 15:18:21手を
動かせ
0319デフォルトの名無しさん
2007/08/11(土) 17:02:43リバーシ1
0320デフォルトの名無しさん
2007/08/13(月) 22:35:22皆言いたいことだけ言って、まともなソース
も挙げずに逃げたか?
0321デフォルトの名無しさん
2007/08/13(月) 22:50:02検証する気は無い
0322デフォルトの名無しさん
2007/08/13(月) 22:53:18「 ま と も な 」
ソースは一つも上がっていない
0323デフォルトの名無しさん
2007/08/13(月) 23:20:520324デフォルトの名無しさん
2007/08/15(水) 10:24:300325デフォルトの名無しさん
2007/08/17(金) 13:58:470326デフォルトの名無しさん
2007/08/17(金) 14:25:54もう飽きた
0327デフォルトの名無しさん
2007/08/28(火) 01:09:300328デフォルトの名無しさん
2007/08/28(火) 15:19:24この熱しやすさと冷めやすさは
0329デフォルトの名無しさん
2007/08/28(火) 19:22:20結局、前スレの途中から、ここまでで、何か進んだのかな?
誰か3行でまとめてくれ。
0330デフォルトの名無しさん
2007/08/28(火) 23:34:54だ
け
0331デフォルトの名無しさん
2007/08/29(水) 18:47:37母親にも勝てない
0332デフォルトの名無しさん
2007/08/29(水) 22:08:34テンパイしてくれませんorz
ごく稀にテンパイする程度なのでまだまだ要改良
0333デフォルトの名無しさん
2007/08/30(木) 17:41:41深さ優先探索が理解できるなら、一人麻雀で20%の和了率を超えるのなんて簡単。
この程度ができないんじゃあプログラマとは呼べん。
誰かがココにソースをUPしてくれるのを待ってないで自分で作れよ。
0334デフォルトの名無しさん
2007/08/30(木) 23:58:33証拠を見せろよ
0335デフォルトの名無しさん
2007/08/31(金) 00:06:41トップを取れるかどうかはともかくとして。
0336デフォルトの名無しさん
2007/08/31(金) 07:38:440337デフォルトの名無しさん
2007/08/31(金) 08:47:090338デフォルトの名無しさん
2007/09/03(月) 01:19:550339相互リンク
2007/09/30(日) 18:33:30なぜ最近の犬学生は麻雀できない奴が多いの?
http://ex23.2ch.net/test/read.cgi/campus/1191128147/l10
★★★ 学校で麻雀を教えるべきだ ♪♪♪
http://school7.2ch.net/test/read.cgi/edu/1190440186/l10
なんで最近の若者は麻雀できない奴が多いの?
http://money6.2ch.net/test/read.cgi/mj/1159088315/l10
0340デフォルトの名無しさん
2007/10/02(火) 00:49:330341デフォルトの名無しさん
2007/10/02(火) 00:52:510342デフォルトの名無しさん
2007/11/06(火) 08:37:13だからもちろん深さ優先探索なんてさっぱり知らないけど
麻雀のAIってどんなんなん?
他家テンパイでまもりに入ってる状態なら、カベ、スジ、リーチ牌付近、ドラ筋付近
等を把握しなきゃなんないんだろ?
ゲーム開始時点なら、まぁ無難に、他風牌、浮いてる端牌から切ってそんで・・・
って、言っても他風牌と端牌が大けりゃチャンタもあるしジュンチャンあるし
三色見れそうなら浮いててもおいとく事もあるし・・・・・・
こういう模索をプログラム化するのがアルゴリズムを作るって事なんだろうな〜
挑戦してみようかな・・・
とりあえずAIがメンタンピンのみを模索するアルゴリズム
めんどくせーな
0343デフォルトの名無しさん
2007/11/09(金) 03:58:160344デフォルトの名無しさん
2007/11/09(金) 22:59:20人間が切るのが遅くなったら聴牌疑うとか
自莫切りばっかり繰り返してたら聴牌疑うとか
あとwebカメラつけて目線追うとかしなくて大丈夫?
0345デフォルトの名無しさん
2007/11/09(金) 23:05:240346デフォルトの名無しさん
2007/11/10(土) 20:03:04牌効率極めてから言えや
0347デフォルトの名無しさん
2007/12/06(木) 19:09:05最強麻雀プログラムに必要なレシピ
・線形計画法および動的計画法の知識
・集合、郡、環の知識
・統計確立
0348デフォルトの名無しさん
2007/12/07(金) 22:41:34大きいところから入りすぎるから先に進まないwwww
0349デフォルトの名無しさん
2007/12/16(日) 01:58:000350デフォルトの名無しさん
2007/12/16(日) 02:06:10>>347が完成させる雰囲気ゼロ
0351デフォルトの名無しさん
2007/12/16(日) 16:53:210352デフォルトの名無しさん
2007/12/24(月) 01:03:500353デフォルトの名無しさん
2007/12/28(金) 13:48:060354デフォルトの名無しさん
2007/12/30(日) 21:40:150355デフォルトの名無しさん
2008/01/02(水) 15:53:560356デフォルトの名無しさん
2008/01/02(水) 18:09:17ならインターフェースのレフェレンスだけ欲しい人はいらんだろ。
ttp://members.jcom.home.ne.jp/hennano/maujong/java/
0357デフォルトの名無しさん
2008/01/03(木) 03:21:28とりあえずルールが比較的少ない 「単細胞遊戯 マイクロ王!」
とかあたりを対象にしたAPIがあるとうれしい
0358デフォルトの名無しさん
2008/01/03(木) 14:32:49http://kmo2.cocolog-nifty.com/prog/
http://doranizm.hp.infoseek.co.jp/
http://kmkz.jp/mtm/?load=mahjong
0359デフォルトの名無しさん
2008/01/07(月) 21:32:48将棋や囲碁は神の領域(最善手)を目指しているが
麻雀の場合は実際の人間の真似をしようとしている感じ
0360デフォルトの名無しさん
2008/01/07(月) 22:02:090361デフォルトの名無しさん
2008/01/07(月) 23:08:46麻雀の場合、神は人に勝てないからな
0362デフォルトの名無しさん
2008/01/07(月) 23:24:420363デフォルトの名無しさん
2008/01/08(火) 06:17:030364デフォルトの名無しさん
2008/01/08(火) 16:17:05完全情報ゲームとそうでないものを同列に扱ってどうする
0365デフォルトの名無しさん
2008/01/08(火) 20:09:50バックギャモンやポーカーなんかでは以前から使われてるそうだから
同列に扱ってもいいかも
0366デフォルトの名無しさん
2008/01/09(水) 01:46:53麻雀はしてない
そればかりかAI同士で勝負できないように作っておきながら自分のが最強と主張してる
0367デフォルトの名無しさん
2008/01/09(水) 08:11:390368デフォルトの名無しさん
2008/01/09(水) 08:23:08咲マージャンマダー?
0369デフォルトの名無しさん
2008/01/09(水) 22:18:38ロンよりショーコ
P�Uでいいだろ
0370デフォルトの名無しさん
2008/01/10(木) 21:42:09脱衣マージャンを全自動化すれば良くね!?
つまり、ユーザーインターフェース作らなくて、
APIだけしか公開しないの
そーすれば、最強のプログラム麻雀を作らないと
女の子を脱がせられない
これよくね?wwwww
0371デフォルトの名無しさん
2008/01/10(木) 21:57:09それとも口だけ?
0372デフォルトの名無しさん
2008/01/10(木) 21:58:19プログラムできても
萌え絵が描けないwwwww
書いてくれるなら作ってもいいよwww
0373デフォルトの名無しさん
2008/01/10(木) 21:59:500374デフォルトの名無しさん
2008/01/10(木) 22:01:26ローカルルールは知らないwww
プログラム板ってここしか見てないからなwwww
0375デフォルトの名無しさん
2008/01/11(金) 09:21:260376デフォルトの名無しさん
2008/01/12(土) 00:48:460377デフォルトの名無しさん
2008/01/12(土) 00:52:210378デフォルトの名無しさん
2008/01/12(土) 00:55:380379デフォルトの名無しさん
2008/01/12(土) 01:05:240380デフォルトの名無しさん
2008/01/12(土) 01:08:16そっちに力いれずに
普通にプログラム作れよwww
0381デフォルトの名無しさん
2008/01/12(土) 20:03:06ワッフル ワッフル
0382デフォルトの名無しさん
2008/01/13(日) 10:04:09とつげき東北のDLL使用条件に、「麻雀ゲームの重要な技術に
かかわる機能を持つソフトウェアに利用することはできません」
とある。
この文って、とつげき東北がDLLの利用条件としてあるだけで、
東風荘のルールとしては無いですよね?
0383デフォルトの名無しさん
2008/01/13(日) 21:03:41ハンゲは禁止
0384デフォルトの名無しさん
2008/01/19(土) 15:55:300385デフォルトの名無しさん
2008/02/08(金) 17:41:090386デフォルトの名無しさん
2008/02/26(火) 08:47:090387デフォルトの名無しさん
2008/03/02(日) 18:46:090388デフォルトの名無しさん
2008/03/16(日) 11:22:590389デフォルトの名無しさん
2008/03/23(日) 13:06:030390デフォルトの名無しさん
2008/04/08(火) 21:03:15条件付けしたりとかで気楽にAI組める”プログラム”無いのかな、と思ったら無いのな
天鳳とか対人のが充実してるから不要なのかな、そうだよな
公式で紹介してるようなサンプルAIじゃ物足りないなぁ・・・orz
0391デフォルトの名無しさん
2008/04/08(火) 21:03:360392デフォルトの名無しさん
2008/04/08(火) 23:18:060393デフォルトの名無しさん
2008/04/09(水) 22:47:190394デフォルトの名無しさん
2008/04/09(水) 23:21:180395デフォルトの名無しさん
2008/04/10(木) 23:51:280396デフォルトの名無しさん
2008/04/11(金) 00:35:390397デフォルトの名無しさん
2008/04/11(金) 00:51:55確定情報がないのにそこからの試行をどういう条件で行うかを考えなきゃいかんな。
やっぱり無理っぽいと思うな。
0398デフォルトの名無しさん
2008/04/14(月) 12:29:48どういう手牌でどう打つかというアルゴリズム(モデル)は何にせよ必要
このモデルに(不完全な)確定的なヒューリスティクスを使うより
良さそうな打ち方(複数)に適当に確率割り当てるだけにして
後はランダムシミュレーションで最終的な期待値が最大になる手を
選ぶ方が良いかも知れない
ゲームの長さは100のオーダーだから9路の囲碁と大差ないし
0399デフォルトの名無しさん
2008/04/14(月) 12:38:260400デフォルトの名無しさん
2008/04/14(月) 22:59:410402kmo2
2008/04/19(土) 15:23:17全く枝狩りをしないと結局天和と同じ程度の確率でしか上がれないから、
時間がかかってしまってゲームとしてはほとんど意味をなさないです。
かといって思いっきり枝狩りしてしまうと、
あらさんの一人麻雀練習機とか私が作った奴とほぼ同じで
単純に遅いだけになってしまう。
囲碁で使っているUCTを使って、UCB1に新たにノード追加する一手目の部分は
全幅探索で以降枝狩り強化っててはありそうです。
やってみたいですが、それでも、ゲームに組み込めるほどの実用に耐える速度は出ないでしょうね。
0403kmo2
2008/04/19(土) 15:31:04モンテカルロ囲碁がうまくいくけど
モンテカルロ麻雀がうまくいかないのは、
適当に打っていてもゲームが終わるかどうかが大きな要素です。
麻雀は混乱から秩序を作り出すゲームなのです。
囲碁みたいに適当に打っていても盤面が埋れば勝ち負けが決まるゲームとは違います。
なのでかなり強度に前方枝狩りをしてやらねばならないのですが、
そこまで強く枝狩りするくらいなら、
モンテカルロなんか使わずに統計データから確率計算したほうが
計算量が少なくて実用的です。
0404デフォルトの名無しさん
2008/04/19(土) 15:33:35「決め打ち」が格好いい漫画といえば、
0405デフォルトの名無しさん
2008/04/19(土) 15:39:200406デフォルトの名無しさん
2008/04/19(土) 15:46:17ランダム打ちはやめた方が良い。
ランダム牌杯でやった方が良い。
たとえば、残り牌からランダムで20枚の牌列を生成して、最も速い手数であがれる捨て牌をカウントしていく。
0407デフォルトの名無しさん
2008/04/19(土) 15:48:350408kmo2
2008/04/19(土) 15:50:18打牌選択についてはMCがあまり実用的でないとは思いますが、
私は相手のリーチ時のアタリ牌読み、
鳴き仕掛けの点数の高さや役の読みには使えるかもしれません。
やり方はとつげき東北さんが山読みテストをしたときのアルゴリズムと
同様になるでしょう、
問題は人間はある程度意思を持って役を狙ってくるので、
染め手など人間プレイヤーなら注意する相手の挙動を認識しにくいこと。
私はここら辺は、スパムメールフィルタのアルゴリズムに使われる、
ベイジアンフィルタと似たようなやり方で対処しています。
捨てパイの特徴的なパターンを洗い出し、それを単語に見立て、
スパムメールか否かを判断するのと同様に、
相手の手牌が危険かどうか判断しています。
0409デフォルトの名無しさん
2008/04/19(土) 15:52:47牌勢を読むのか。面白い試みだなぁ。
0410デフォルトの名無しさん
2008/04/19(土) 15:56:22相手の手を読むのは、効果低いと思うよ。
鈍くなるし、相手が変則的な打ち手かどうかは、
経験的にはわかっても一局程度では不明だろうし。
0411kmo2
2008/04/19(土) 16:04:27思うとかではなくて実際やってみれば、
どんなときに効果があって、
どんなときの効果がないのかが良くわかります。
鳴き仕掛けについては結構使えますよ。
0412デフォルトの名無しさん
2008/04/19(土) 16:12:40相手がテンパイかどうかすら捨て牌から認識することは困難と思う。
ややランダムになるかもしれないが。
リーチ後や、単騎待ちとか危険牌が確実にある場合のみ判定した方が
総合的には強くなると思う。
確定的でない事に時間を掛けるより、確実な事の方が良いだろうって事。
0413kmo2
2008/04/19(土) 16:19:46自分で読み直して意味不明でした。すいません。
>鈍くなるし、相手が変則的な打ち手かどうかは、
>経験的にはわかっても一局程度では不明だろうし
打ち方が、いわゆる「鈍くなる」というのは確かにあります。
実際最初に作った奴は無駄に警戒しすぎになってしまい没にしました。
なので、予想点数の危険度で、閾値を決めて、対処してます。
相手の変則的ってのも確かに対処しずらいです。
ただ、実際問題、プロリーグのようなものがあって、
同じ相手と打っているなら別ですが、
ネットやフリー雀で打ってる場合、
超一流の人間雀士でもそこまで個別に対処してないようです。
それに、麻雀は、乱数に支配されるからそれほど自由に打てず、
将棋などと比較して、気風が出にくいので、
割とあまり考えなくても、ソコソコうまくいってしまう感じはします。
実際問題、相手の特徴がわかるだけのデータも集まりませんしね。
特徴がわかるほど何度も遊んでくれるゲームを作った後に考えることにしてます。
0414kmo2
2008/04/19(土) 16:23:37>確定的でない事に時間を掛けるより、確実な事の方が良いだろうって事。
これもご意見後もっともで、
初期のバージョンは実際そのようにしていましたが、
その後、408で書いたアルゴリズムを組み入れました。
そして、実際やって強くなりました。
ちなみに、
聴牌しているかどうかを0,1で判断して対処すると色々まずいので、
0〜1の間で確率として推定して、自分の手牌と比較して期待値で打牌を
選択しています。
0415kmo2
2008/04/19(土) 16:24:570416デフォルトの名無しさん
2008/04/19(土) 16:28:42最初からテンパイかもしれないし、どうやっても役になりそうに無い場合もあるし
始めに配られた牌によって上がりは左右されると思う。
それは捨て牌からはわからないけど…
0手目既にテンパイとは認識出来ない。
0417kmo2
2008/04/19(土) 16:35:30麻雀で全勝するプログラムなんてありえないんで、
1000試合やって平均がよければそれでよしとするしかないですね。
0418デフォルトの名無しさん
2008/04/19(土) 16:39:15相手三人の最初のテンパイの確率が判らないのが困る所。
まともな打ち手ならば、手が進むごとに確率は上がっていくけれど
初めが1%だったのか95%なのかでずいぶん違う。
これは捨て牌からは読み取れないと思う。
0419デフォルトの名無しさん
2008/04/19(土) 16:50:50テンパイしていて一周以内にあがれる確率が50%だとしても役で1000点や3万点と幅がある為。
安い手でロンされても大したことがない。
0420kmo2
2008/04/19(土) 16:52:19最初の聴牌の確率ってのが何のことかわかりませんが、
牌譜から巡目毎の聴牌率のデータが求められるので、
私は、そこから色々割り出しています。
個別のケースはそりゃわかりませんが、それがわかったら、
麻雀というゲームが成立しないんで、余計に困ってしまいます。
そのための確率でしょう。
捨てパイの特徴も確率的に処理してます。
どうしてもわからない部分は無視して自分の都合で上がりを目指しますが、
それはコンピュータでも人間でも一緒だと思います。
0421デフォルトの名無しさん
2008/04/19(土) 16:58:22配られた牌によっては、既にあがっていたり、テンパイしている可能性もあるって事。
捨て牌が多くなってきた終盤ならば、捨て牌を解析する意味はあるかもしれないとは思うけど。
0422デフォルトの名無しさん
2008/04/19(土) 17:03:02あがり牌と役の得点も予測しないといけないとは思う。不確定な要素が多すぎると感じる。
0423kmo2
2008/04/19(土) 17:39:17序盤は無視しても良いのかもしれませんね。
ただ、データとってみると、
序盤の捨てパイの方が役や点数との関連が強くでる傾向はあります。
0424デフォルトの名無しさん
2008/04/19(土) 18:00:54捨て牌から待ち牌を予測する研究というのは
無駄にはならないから
0425デフォルトの名無しさん
2008/04/19(土) 18:11:24例えば一手2秒以内だとして捨て牌予測に500m秒使ったら、それだけで1.5秒も使ってしまう。
捨て牌を決めるより圧倒的に計算時間がかかると思う。
0426デフォルトの名無しさん
2008/04/20(日) 19:29:490427デフォルトの名無しさん
2008/04/20(日) 19:30:100428デフォルトの名無しさん
2008/04/20(日) 22:27:43それが時間の問題だけなら、大した問題じゃないよ
アルゴリズムか実装をグツグツ煮詰めて速くするか
計算機が速くなるのを待てばいいだけ
もちろんすごいオーダーの計算になるなら話は別だけど
0429デフォルトの名無しさん
2008/04/20(日) 22:30:59一般的な思考ルーチンでもやってる。
その場合、常に候補を検証し続けて 候補をソートしといて
時間切れ時に一番有効そうだったやつを採用する
0430デフォルトの名無しさん
2008/04/20(日) 22:56:20でも大した効果でも無いと思う。時間が限られているなら自分の役に専念した方が強いと思う。
0431デフォルトの名無しさん
2008/04/20(日) 23:38:20あとは役作りに専念した方が効率はいいな。 どうせ読みきれるもんでもなし。
その先のことは 行き詰ってから考えた方がよさそうだ
0432デフォルトの名無しさん
2008/04/20(日) 23:40:25リーチ一発目はそれなりに長考したほうがよさそう
あのディープブルーもパニックタイム用意してたし
0433デフォルトの名無しさん
2008/04/21(月) 00:01:59そもそもの始まりは、テンパイ不明のときに捨て牌を読むかどうかだったはず。
0434デフォルトの名無しさん
2008/04/21(月) 00:17:52できるだけ早い上がりを目指すのが結局一番いい様な気がする
ある程度確率が計算できるならという条件で
ただ先読みなしで打牌を一つだけ選ぶというアルゴリズムで
良いのを作るのはかなり大変なんじゃないかと思う
だから確率だけ決める様にして後はUCTに任せる方が強いプログラムが
作れるんじゃないかと思うのだが
計算時間を心配している人がいるけど一局100手以下なんだから問題ない
全てのシミュレーションが流れちゃう様だと問題だけど
あ,手(捨て牌)は高々14通りだから前向き枝刈りは(多分)要りません
長文スマソ
0435デフォルトの名無しさん
2008/04/21(月) 00:51:58強くても1手に10秒とか掛かってたら
0436デフォルトの名無しさん
2008/04/21(月) 01:02:08並列化でもすればいいじゃない
0437デフォルトの名無しさん
2008/04/21(月) 01:44:47思考時間なぞどうとでもなる
0438デフォルトの名無しさん
2008/04/21(月) 01:47:27そもそもパニックタイムが10秒程度なら十分許容範囲だから例えにならない
0439デフォルトの名無しさん
2008/04/21(月) 05:04:10牌と、親と風渡したら点が高速に求まれば開発は楽なのだが。
紙はいないものか? まうじゃんは使いこなすのが難しい。
0440デフォルトの名無しさん
2008/04/21(月) 05:59:42ラッパー作って下さい
http://www.geocities.co.jp/SiliconValley-PaloAlto/4984/knetmaj/index.html
http://www.vector.co.jp/soft/win95/game/se316229.html
0441デフォルトの名無しさん
2008/04/21(月) 11:28:46これにあわせるのが一番かな グラフィックONで対戦になるから速度は遅いけど
0442デフォルトの名無しさん
2008/04/21(月) 20:15:29単純に役判定するだけなら速いけど、全ての役とか符の数え方を試して
比較っていう風にしたら遅くなってしまった。
俺の力不足なだけダケド
0443デフォルトの名無しさん
2008/04/21(月) 20:21:37点がつくとき役と符計算に時間掛けても正確な方が良い。
0444デフォルトの名無しさん
2008/04/21(月) 20:30:39何手目で上がりかどうやって調べたらいい?
これら次と同じ事だが。
例えば20枚の牌でいずれか6枚取り除いたら上がりかどうか
高速に判定する方法ある?
0445デフォルトの名無しさん
2008/04/21(月) 20:50:34先に面子出来てるかどうか判定してからやれば速いね。そういえば。
でもAIとか作る事考えると「どう打てば高い点数になるか」ってのを考えるときに
やっぱり何回も呼んじゃわないかな?
0446デフォルトの名無しさん
2008/04/21(月) 21:05:29役ありの時500ms (50倍かかるとした) なら、平均約10msのパフォーマンスになる。
0447デフォルトの名無しさん
2008/04/21(月) 21:55:05正確には 10 * 0.98 + 500 * 0.02 = 19.8 ms
0448デフォルトの名無しさん
2008/04/21(月) 21:58:120449デフォルトの名無しさん
2008/04/21(月) 22:00:120450デフォルトの名無しさん
2008/04/21(月) 22:04:000.1ミリ秒=100ナノ秒で判定しなければいけない。
0451デフォルトの名無しさん
2008/04/21(月) 22:07:280452デフォルトの名無しさん
2008/04/22(火) 00:00:51http://jamong.s285.xrea.com/
ここに向聴数求めるプログラム置いてあった。
かなり速い
0453デフォルトの名無しさん
2008/04/22(火) 01:27:38それとも最近の勢いに引きつけられてきただけか。
0454デフォルトの名無しさん
2008/04/22(火) 01:30:51出るに出れないのは俺だけじゃないはず
0455デフォルトの名無しさん
2008/04/22(火) 01:31:340456デフォルトの名無しさん
2008/04/22(火) 06:10:37アイデアはあるんですけどプログラム、デバックが苦手なんです
他人にあがられる確率は自分より3倍程度高いので
自分があがりにくい場合は安全牌を切った方が良いのですが
それは後回しにして自分の牌を揃える方法について記載します
13枚持っていて、一つ牌が配られて14枚持っているとします ここで上がっていれば勝ちです
残りの出てくる可能性のある牌をランダムに生成して、
15枚持っているとしていずれか一枚捨てたときに上がりになるならばその牌に1をカウントします
上がりにならないなら16枚目をランダム生成していずれか2枚捨てたら上がるならばその牌に1/2をカウントします
これを繰り返すと、上がりやすい牌にカウントが集まります
ここで牌を捨てたときにあがりがあるか判定する方法は、特殊な役満は除外(起こりえないとします)すれば
チートイと通常の役だけになります チートイは直ぐに判定出来るので通常役について説明します
0457デフォルトの名無しさん
2008/04/22(火) 06:35:360458456
2008/04/22(火) 07:11:51テンパイにせず別のあがりを狙った方があがりやすい事があります
テンパイにならない捨て牌も考えると総当たりになって膨大な計算が必要になってしまいます
20枚のうち6枚捨てる場合の数は、単純計算で、38760通りになります
これでは何度も試行出来なくなります
実は簡単に求める方法が見つかっていません
0459デフォルトの名無しさん
2008/04/22(火) 07:25:54例えば、小さい順にジュンツが見つかれば確定し、次にコーツ確定し、残りでトイツが作れるか調べてみる方法、
大きい順のジュンツ、次にコーツ、最後にトイツと調べる方法など
判定方法を限定しておけば処理は速いですが・・・
0460デフォルトの名無しさん
2008/04/23(水) 23:20:4599%努力しろよ
0461デフォルトの名無しさん
2008/04/24(木) 23:08:070462デフォルトの名無しさん
2008/04/24(木) 23:19:27http://www.amy.hi-ho.ne.jp/ishihata/maujong/iface.html
0463kmo2
2008/04/25(金) 01:08:19前向き枝狩りいれないと、
本当に単なる天和シミュレータになってしまいます。
数億回の試行回数でも足りません。
UCT以前に最初の1回を上がるだけで大変。
マアジャンは混沌から秩序を作り出すゲームだからランダムにやってると
ぜんぜん上がれないんですよ。
0464デフォルトの名無しさん
2008/04/25(金) 02:58:43探索のときに指し手を選択しないで、ランダムに牌が配られたときに、
役がそろいやすい牌を選べばいいと思う
0465デフォルトの名無しさん
2008/04/25(金) 06:56:12せっかくコンピューターつかうんだから全部の手を調べて絶対上がれる手
とか調べれば?
0466デフォルトの名無しさん
2008/04/25(金) 08:34:13配牌時に一九字牌が無い状態で国士無双が上がれる
確率を求めることに意味が無いことくらいは理解してるよな?
0467デフォルトの名無しさん
2008/04/25(金) 08:57:54まーじゃんやったことないし。
0468デフォルトの名無しさん
2008/04/26(土) 01:49:58ある程度のパターンはDBに入れちゃえばよくね?
序盤のグッダグダな分は字牌整理ルーチンに任せるとかして
ある程度先の見えた牌勢を適当に数億パターンくらいにしぼって。
ツモの流れとか無視することになるけど、そのあたりの改造は
モノが出来てからのお楽しみにとっとくのがいい
0469デフォルトの名無しさん
2008/04/26(土) 02:00:540470デフォルトの名無しさん
2008/04/26(土) 13:20:410471デフォルトの名無しさん
2008/04/27(日) 06:52:380472デフォルトの名無しさん
2008/04/27(日) 07:58:31相手が固定だと、相手の待ちや役わ予測しやすい人間の方が有利かもしれない。
0473デフォルトの名無しさん
2008/04/27(日) 08:00:180474デフォルトの名無しさん
2008/04/27(日) 09:57:430475デフォルトの名無しさん
2008/04/27(日) 10:23:19それからコンパイラの実装というフェイズでなら、君ならやれる。
(と、最後は他力本願
0476デフォルトの名無しさん
2008/04/27(日) 10:28:180477デフォルトの名無しさん
2008/04/27(日) 11:39:55打ち方がワンパみたいなジレンマが
難しい話だな
0478デフォルトの名無しさん
2008/04/27(日) 11:48:050479デフォルトの名無しさん
2008/04/27(日) 20:16:410480デフォルトの名無しさん
2008/04/27(日) 22:41:36http://pc11.2ch.net/test/read.cgi/gamedev/1105332492/
0481デフォルトの名無しさん
2008/05/06(火) 11:38:050482デフォルトの名無しさん
2008/05/08(木) 00:05:310483デフォルトの名無しさん
2008/05/08(木) 00:10:160484デフォルトの名無しさん
2008/05/09(金) 21:19:360485デフォルトの名無しさん
2008/05/09(金) 22:51:530486デフォルトの名無しさん
2008/05/09(金) 23:00:20効率の良い打ち方を超えるのは神でも不可能と
市川も言ってただろ?
0487デフォルトの名無しさん
2008/05/10(土) 00:22:31作ってよ(はぁと)
0488デフォルトの名無しさん
2008/05/10(土) 02:19:39そんなことは言っていない。
イカサマはあくまで手段だって言ってる。
0489デフォルトの名無しさん
2008/05/10(土) 10:44:320490デフォルトの名無しさん
2008/05/10(土) 10:54:360491デフォルトの名無しさん
2008/05/10(土) 12:38:470492デフォルトの名無しさん
2008/05/10(土) 17:19:370493デフォルトの名無しさん
2008/05/27(火) 09:59:46http://pc11.2ch.net/test/read.cgi/tech/1211790540/
0494デフォルトの名無しさん
2008/05/30(金) 21:26:04立直
一発
自摸
海底摸打
翻牌
混老頭
混一色
対々和
三暗刻
三槓子
ドラ
の11個が最高?
0495デフォルトの名無しさん
2008/05/30(金) 23:07:160496デフォルトの名無しさん
2008/05/30(金) 23:55:29立直 + 混老頭 + 対々和 の条件だけで
四暗刻になってしまう気がするw
0497デフォルトの名無しさん
2008/05/31(土) 01:04:250498デフォルトの名無しさん
2008/05/31(土) 01:17:211111東東東東白白白白中中發發 ロン發
ダブルOPENリーチ、ハイテイ、ダブ東、白、發、小三元、対々和、
三暗刻、三槓子、混一色、混老頭、ドラ32。
(リーチ一発とハイテイは複合しないように思われるのでダブルリーチに変えました)
140符55翻、約3京点かな・・・
符と役満
http://www.geocities.co.jp/SiliconValley-PaloAlto/8370/majan/majantalk.html
0499デフォルトの名無しさん
2008/05/31(土) 04:18:43その点数、場ゾロ忘れてないか?
0500デフォルトの名無しさん
2008/05/31(土) 06:20:310501デフォルトの名無しさん
2008/06/07(土) 19:35:39大した指摘ではないな
0502デフォルトの名無しさん
2008/06/08(日) 10:05:260503デフォルトの名無しさん
2008/06/08(日) 14:03:36カンしてダブリーは無しのところの方が多い。
0504デフォルトの名無しさん
2008/06/08(日) 14:05:51簡単なDLLぐらいなら作れるけど、もちオープンソースで
0505デフォルトの名無しさん
2008/06/08(日) 14:58:58DLLの作り方をまとめて解説サイトを作成する
0506デフォルトの名無しさん
2008/06/08(日) 14:59:430507デフォルトの名無しさん
2008/06/08(日) 14:59:53他の言語での思考ルーチンとの橋渡しをするインターフェイスを作って
0508デフォルトの名無しさん
2008/06/08(日) 15:16:14C/C++/C#/Java/VB/Delphi使いの俺が居る
お前不要
0510デフォルトの名無しさん
2008/06/14(土) 11:13:500511デフォルトの名無しさん
2008/06/14(土) 20:15:09この辺の仕様はいかがでしょうか?
これでも使いにくいというなら牌データ構造はお任せします。
まうじゃん」対戦相手プラグイン インターフェース仕様
http://www.amy.hi-ho.ne.jp/ishihata/maujong/iface.html
MJexeIO.DLL(東風荘画面入出力用ダイナミックリンクライブラリ) 開発者マニュアル
http://www.interq.or.jp/snake/totugeki/MJexeIODLLfunc.htm
第10回 麻雀の役を判定す
http://itpro.nikkeibp.co.jp/article/COLUMN/20070516/271225/?P=2&ST=develop
http://itpro.nikkeibp.co.jp/article/COLUMN/20070516/271225/
0512デフォルトの名無しさん
2008/06/14(土) 20:20:21「誰も手軽に使える牌データ構造」
を考えてよwww
0513デフォルトの名無しさん
2008/06/14(土) 21:38:000514デフォルトの名無しさん
2008/06/15(日) 01:49:59意味不明。ちゃんとした日本語で書いてよ
0515デフォルトの名無しさん
2008/06/15(日) 01:54:580516デフォルトの名無しさん
2008/06/20(金) 22:03:14引数
牌:'M1M1M1M2M3M4M5M6M7M8M9M9M9',上がり牌:'M1',属性:(自莫/嶺上/嵌貫/ロン),親:True/False
戻り値
符点,翻数,点数
0517デフォルトの名無しさん
2008/06/20(金) 22:22:400518デフォルトの名無しさん
2008/06/20(金) 23:17:10まだ足りないかもしれない。あった自風・場風・場の点棒、場の1000点棒の数。
まだ有るか?
0519デフォルトの名無しさん
2008/06/21(土) 00:09:59チョンボしてるかどうか
0520デフォルトの名無しさん
2008/06/21(土) 04:00:10属性の嵌張はいらない
こっち側で判断させる方が良い
ツモロン嶺上搶槓で分ければ良いんじゃないかな
0521デフォルトの名無しさん
2008/06/21(土) 10:08:510522デフォルトの名無しさん
2008/06/21(土) 10:57:46wwww
なんでコンピューターマージャンで多牌すんだよ
どんなバグだらけのプログラムなんだよwwww
0523デフォルトの名無しさん
2008/06/21(土) 11:43:440524デフォルトの名無しさん
2008/06/21(土) 16:42:450525デフォルトの名無しさん
2008/06/22(日) 02:47:020526デフォルトの名無しさん
2008/06/22(日) 03:04:120527デフォルトの名無しさん
2008/06/22(日) 03:38:55前に進まないしプログラムも上がる気配も無い
本当にここはプログラム板か?
少なくとも>>508は何かリアクションしろよwww
0528デフォルトの名無しさん
2008/06/22(日) 10:12:56つhttp://itpro.nikkeibp.co.jp/article/COLUMN/20070516/271225/
0529デフォルトの名無しさん
2008/08/01(金) 06:44:150530デフォルトの名無しさん
2008/08/19(火) 02:30:29実装を考えてみるといろいろとめんどくさそうだなあ
0531デフォルトの名無しさん
2008/08/21(木) 00:45:14手牌、河をしっかり定義しておけば
そんなに手間は掛からない
0532デフォルトの名無しさん
2008/08/21(木) 01:03:02ほう
0533デフォルトの名無しさん
2008/08/22(金) 08:20:51http://www.amy.hi-ho.ne.jp/ishihata/maujong/iface.html
0534デフォルトの名無しさん
2008/08/23(土) 01:29:00一番得になる役の組み合わせを探す辺りか
0535デフォルトの名無しさん
2008/08/23(土) 06:55:30まうじゃんとか、http://www.jan-x.jp/とか見ると、
やっぱ需要がないんだろうなー
0536デフォルトの名無しさん
2008/08/23(土) 17:32:061局をざっくりと
(処理概要)
-----
1. 洗牌・配牌
2. 任意のプレーヤーのツモ処理
3.ツモ後の動作
3-1. ツモアガリならばアガリ処理→局終了
3-2. 任意のプレーヤーの捨牌
3-3. 任意のプレーヤーのカン処理→「リンシャンツモ」として、2の処理にもどる
4. 捨牌後の他プレーヤーからのリアクション(チー・ポン・カン)確認
5. リアクションがあれば、そのリアクション処理
6. 流局していないか確認→流局ならば局終了
7. 2のツモ処理にもどる
-----
という流れで処理すれば、若干特殊な処理もあるが、
ほぼほぼ実装は終了している。
意外と難しいのは、AI処理の方。
0537デフォルトの名無しさん
2008/08/23(土) 17:53:31>可能な上がり方を列挙して待ち牌を調べる。
全ての牌に対してしらみ潰しに調べた方が早い
テンパイチェック・待ちチェックは下記ページを参照
http://www.interq.or.jp/snake/totugeki/mjcom_p0.htm
>一番得になる役の組み合わせを探す辺りか
11122233388899
という組み合わせならば、
111 222 333 888 99
123 123 123 888 99
という順子と見るか、暗子として見るかを比較して
高い方を採用すれば良いはず
0538デフォルトの名無しさん
2008/08/23(土) 18:05:23数年前「MJsim」なるもので、麻雀のAI対戦を行ったことがある
MJsim実行環境
http://www.rupan.net/uploader/download/1219482153.zip
需要が無いことも無いと思うがな…
0539デフォルトの名無しさん
2008/08/24(日) 03:46:44ID が不正です.って言われちゃいました。
0540デフォルトの名無しさん
2008/08/24(日) 07:10:38MJsim実行環境
http://uproda11.2ch-library.com/src/11112772.zip.shtml
0541デフォルトの名無しさん
2008/08/24(日) 10:14:08どうもありがとうございます。
無事ダウンロード出来ました。
動かして見ましたが、きちんと動いているようです。
前スレは見れないのですが、>>97によるとバグがあるのでしょうか?
どちらにしても、機能を追加したい場面も出てくるでしょうから
ソースが使えないのは痛いですね。
対戦システムはオープンソースとして開発するのが一番だと思います。
0542側近中の側近 ◆0351148456
2008/08/24(日) 12:20:06「最強の麻雀」「プログラム」?
「最強の」「麻雀プログラム」?
どっちだろ?
「最強の麻雀」なら宇宙麻雀だけどね。
0543デフォルトの名無しさん
2008/08/24(日) 12:45:48そのあたりは話がややこしいので
実は、
「製作した人」
「前にzipにまとめてアップしてくれた人(>>97)」
「私」
がそれぞれ別人なんです。
公開当時はちゃんとソースも公開されていたのですが、役判定部分ソースが
別で公開されていたソース(現在は非公開)を使用して、
著作権がグレーな状態で、今回もソース公開していません。(私も持っていません)
「製作した人」が今はいないので、今後は「一から作り直す」方が早いでしょうね
0544デフォルトの名無しさん
2008/08/24(日) 15:42:55なるほど、了解です
車輪の再発明になってしまうので、出来ればやりたくないものですね
まったり麻雀やまうじゃんの人にお願いして
オープンソース化してもらうという手もあるかと思いますが、どうでしょう?
0545デフォルトの名無しさん
2008/08/24(日) 16:22:30オープンソース化してください ><
0546デフォルトの名無しさん
2008/08/24(日) 17:04:54そんなに難しいものではないので自分で作った方がいいですよ。
0547デフォルトの名無しさん
2008/08/24(日) 17:05:06>前スレは見れないのですが、>>97によるとバグがあるのでしょうか?
得点計算で100点単位で切り上げられないバグは既知。
それ以外にもバグはあるはず
0548デフォルトの名無しさん
2008/08/24(日) 17:08:28即答ありがとうございますw
私の同意見です。
「車輪を再生産」する気負いがあれば、「AI評価用の対戦システム」の
製作はそんな難しくないはず。
wikiとか使って、みんなで分担して開発すれば、そんなに大した
仕事量ではないと思いますよ
0549デフォルトの名無しさん
2008/08/25(月) 00:00:18まったり麻雀の人?まうじゃんの人?
0550デフォルトの名無しさん
2008/08/25(月) 00:09:53こういう奴ほど決まってゴミを生産するんだよな
0551デフォルトの名無しさん
2008/08/27(水) 21:27:09ひとつくらいは自分で車輪以外の部品を作ってみろ
話はそれからだ
0552530
2008/08/27(水) 22:19:280553デフォルトの名無しさん
2008/08/27(水) 22:20:560554デフォルトの名無しさん
2008/08/27(水) 22:25:500555デフォルトの名無しさん
2008/08/27(水) 23:09:550556デフォルトの名無しさん
2008/08/28(木) 00:27:570557デフォルトの名無しさん
2008/08/28(木) 02:14:590558デフォルトの名無しさん
2008/08/28(木) 02:19:120559デフォルトの名無しさん
2008/08/28(木) 02:27:060560デフォルトの名無しさん
2008/08/28(木) 02:31:440561デフォルトの名無しさん
2008/08/28(木) 02:35:45麻雀いらなくね?
0562デフォルトの名無しさん
2008/08/28(木) 02:40:02( ) ゛ さぁ麻雀しようぜ
゛/ω\
0563デフォルトの名無しさん
2008/08/28(木) 10:11:22( ) ('A`)>>562
( )Vノ )
| | | |
0564デフォルトの名無しさん
2008/08/28(木) 18:21:370565デフォルトの名無しさん
2008/08/29(金) 00:24:50おまいら最強の脱衣プログラムしてみろよ
0566デフォルトの名無しさん
2008/08/29(金) 00:35:55玉ねぎが主役か?
0567デフォルトの名無しさん
2008/08/29(金) 01:41:51ゲーセンに行って、筐体の前に座って、100円入れて、スタートボタンを押す
配パイが終わって、さあ、と思ったところで
相手が天和
そしてゲームオーバー
さすがスーパーリアルなだけはあるよね
0568デフォルトの名無しさん
2008/08/29(金) 06:28:020569デフォルトの名無しさん
2008/08/30(土) 11:50:17これってRでいうとどの程度のものなの?
0570デフォルトの名無しさん
2008/08/31(日) 01:29:010571デフォルトの名無しさん
2008/08/31(日) 01:51:200572デフォルトの名無しさん
2008/08/31(日) 01:55:23また、>>544にもあるようにソースに対してのニーズは非常に高い
0573デフォルトの名無しさん
2008/08/31(日) 02:01:590574デフォルトの名無しさん
2008/08/31(日) 02:07:200575デフォルトの名無しさん
2008/08/31(日) 13:15:120576デフォルトの名無しさん
2008/08/31(日) 13:20:48気前のいい>>575ですね
期待してるので早急に上げろよ。
期限は今日中
0577デフォルトの名無しさん
2008/08/31(日) 13:29:060578デフォルトの名無しさん
2008/08/31(日) 13:29:160579デフォルトの名無しさん
2008/09/03(水) 00:34:13あまり需要のないものは作りたくないんですが、
もし対戦システムがあって、大会みたいなことをやるとしたら
参加してみたいっていう人はいます?
0580デフォルトの名無しさん
2008/09/03(水) 00:43:100581デフォルトの名無しさん
2008/09/03(水) 01:38:42需要あり
0582デフォルトの名無しさん
2008/09/04(木) 00:31:42ノ
0583デフォルトの名無しさん
2008/09/04(木) 00:39:02参加はしてみたいが、特技「三日坊主」が発動するので
ほぼ乱数打ちで参加するでしょう
0584デフォルトの名無しさん
2008/09/04(木) 00:40:030585デフォルトの名無しさん
2008/09/05(金) 00:44:370586デフォルトの名無しさん
2008/09/05(金) 00:45:180587デフォルトの名無しさん
2008/09/05(金) 00:54:400588デフォルトの名無しさん
2008/09/05(金) 01:03:55需要はあったか?産業革命以前に生産機械の需要はあったか?文字すらなかった先史
時代に書籍の需要はあったか?答えはNON NON。真のイノベーションは誕生するまで
誰もその重要性に気がつかない。
0589デフォルトの名無しさん
2008/09/05(金) 01:07:24で、作るの?作らないの?
0590デフォルトの名無しさん
2008/09/05(金) 01:10:280591デフォルトの名無しさん
2008/09/05(金) 08:36:210592デフォルトの名無しさん
2008/09/05(金) 22:03:16チートイを狙うアルゴリズムなら戦局に与える影響なんて皆無だから
もっと他に書く必要のある処理を考えた方がいい
0593デフォルトの名無しさん
2008/09/05(金) 22:42:4430秒は無理w
0594デフォルトの名無しさん
2008/09/05(金) 22:46:400595デフォルトの名無しさん
2008/09/05(金) 23:11:54int tmp[3] = {0, 0, 0, };
for(int i = 0; i < 34; i++){
switch(tehai[0][i]){
case 1: ++tmp[0]; break;
case 2: ++tmp[1]; break;
case 3: ++tmp[2]; break;
case 4: return 0;
}
if((tmp[0] > 2)||(tmp[2] > 1)){ return 0; }
}
if(tmp[1] == 7){ return 1; } //ho
return 2; //reach
}
30byooooooooooooo!!
0596デフォルトの名無しさん
2008/09/05(金) 23:52:58んで、全ての役の中で一番面倒臭いのが平和という罠
0597デフォルトの名無しさん
2008/09/07(日) 00:33:240598デフォルトの名無しさん
2008/09/07(日) 00:38:170599デフォルトの名無しさん
2008/09/07(日) 04:46:430600デフォルトの名無しさん
2008/09/07(日) 11:14:540601デフォルトの名無しさん
2008/09/07(日) 14:05:38これを速度を考慮しつつ綺麗に実装するのが難しい
符を高く取るが平和があれば優先するみたいなのとか
0602デフォルトの名無しさん
2008/09/07(日) 19:52:45和了判定+α程度の計算量だから大したこと無い
それより3〜2シャンテンぐらいからの手牌の選び方がムズいだろ
その点数計算と和了確率計算を同時にしなきゃいけないんだぞ
0603デフォルトの名無しさん
2008/09/09(火) 00:27:55>一番得になる役の組み合わせを探す辺りか
11122233388899
という組み合わせならば、
111 222 333 888 99
123 123 123 888 99
という順子と見るか、暗子として見るかを比較して
高い方を採用すれば良いはず
0604デフォルトの名無しさん
2008/09/09(火) 00:33:07ツモ
トイトイ
www
0605デフォルトの名無しさん
2008/09/11(木) 09:56:15っていっても、どうやって外部のAIクラスを読ませるのかがよく分かって無いんだけど
0606デフォルトの名無しさん
2008/09/12(金) 02:22:20http://www.amy.hi-ho.ne.jp/ishihata/maujong/java/mjai_iface.html
http://www.amy.hi-ho.ne.jp/ishihata/maujong/java/javadoc/current/jp/gr/java_conf/ishihata/mj_ai/package-summary.html
0607デフォルトの名無しさん
2008/09/12(金) 06:46:28どうやって外部にあるクラスを認識させるかがよくわからないというわけで。
フォルダの位置とか。
0608デフォルトの名無しさん
2008/09/12(金) 07:31:240609デフォルトの名無しさん
2008/09/12(金) 08:12:30カズタマイズとかも楽かと思ったんだが…
C++はDLLの作り方全然わからん
どっちがいいんだろ?JavaとC++。
0610デフォルトの名無しさん
2008/09/12(金) 08:41:03DLLは頑張って勉強する。
0611デフォルトの名無しさん
2008/09/12(金) 08:45:53良いと思います
0612デフォルトの名無しさん
2008/09/12(金) 09:57:56ドラをどうするとか。
06130.0.0.0
2008/09/12(金) 10:41:340614デフォルトの名無しさん
2008/09/12(金) 12:50:37今、wxWidgetいじってたら
wxWidgetのLibとdll作る過程でもう躓いてる…
SDlなら余裕なんだが。AI用に色々リアルタイム出力しないといけないと思うし…
ほんと、この辺は弱い、弱すぎる。
ルールはとりあえず、
237にある
ttp://mj.giganet.net/yaku.htm
でいいんでないかと思う。
0615デフォルトの名無しさん
2008/09/12(金) 13:19:45日本プロ麻雀連盟競技ルール|日本プロ麻雀連盟
http://www.ma-jan.or.jp/guide/game_rule.php
0616デフォルトの名無しさん
2008/09/12(金) 15:31:56wxWidgetは入らないですからunixでもmacでもwindowsでもコンパイルできる
コマンドラインの判定ルーチンをお願いします。
DLLやGUIはわかる人がやります
0617デフォルトの名無しさん
2008/09/12(金) 15:38:33プロルールお願いします。
0618デフォルトの名無しさん
2008/09/12(金) 15:47:48これだけの時間やっていまだにどうしようもない
コマンドラインも全然わからんから(たぶん文字列だよな)
とりあえずSDLで組むわ。
でも、もう今日は力尽きた…
0619デフォルトの名無しさん
2008/09/12(金) 15:52:02コマンドライン = 標準C/C++ という意味です。
役と得点計算が標準C/C++で書いてあれば発展すると思います。
0620デフォルトの名無しさん
2008/09/12(金) 23:04:15ttp://diary.jp.aol.com/eddwgcfnr/451.html
>当社の麻雀は、プログラム上、配牌の操作を行っておりますが、
>より楽しい演出とご理解頂ければ幸いです。
>今後とも天鳳を宜しくお願い致します。
0621デフォルトの名無しさん
2008/09/13(土) 06:50:500622デフォルトの名無しさん
2008/09/14(日) 19:32:24とりあえずこんなの書いて見ました
0623デフォルトの名無しさん
2008/09/14(日) 22:04:25一人麻雀練習機で延々遊んでしまったぜw
判定部分は十分じゃね?
0624デフォルトの名無しさん
2008/09/14(日) 22:33:44一日で進みすぎワラタ
GJ
0625デフォルトの名無しさん
2008/09/15(月) 01:38:230626デフォルトの名無しさん
2008/09/15(月) 09:25:270627デフォルトの名無しさん
2008/09/15(月) 23:24:05あ、久しぶり。ってどこかでお会いしました?
>>623-625
ま、あんまり期待しないでいて下さい
0628デフォルトの名無しさん
2008/09/15(月) 23:30:45日本プロ麻雀連盟競技ルール|日本プロ麻雀連盟
http://www.ma-jan.or.jp/guide/game_rule.php
0629デフォルトの名無しさん
2008/09/16(火) 01:08:20がんばってね
0630デフォルトの名無しさん
2008/09/20(土) 14:06:470631デフォルトの名無しさん
2008/09/20(土) 15:12:22( ゚ω゚ ) お断りします
/ \
((⊂ ) ノ\つ))
(_⌒ヽ
ヽ ヘ }
ε≡Ξ ノノ `J
0632デフォルトの名無しさん
2008/09/20(土) 16:17:44それから好きな言語で実装するのが良いと思う。
プロトコルの仕様はSMTPやPOP3みたいな感じで、
将来的にはRFCに登録。
0633デフォルトの名無しさん
2008/09/21(日) 00:18:27もっと使えそうなのがあるだろ
0635デフォルトの名無しさん
2008/09/21(日) 03:23:530636デフォルトの名無しさん
2008/09/21(日) 05:49:01理解力なさ過ぎて吹いたw
0637デフォルトの名無しさん
2008/09/22(月) 00:12:420638デフォルトの名無しさん
2008/09/22(月) 00:39:280639デフォルトの名無しさん
2008/09/22(月) 01:07:10USI(Universal Shogi Interface)プロトコルとは、将棋GUIソフトと思考エンジンが通信するために、
Tord Romstad氏によって考案された通信プロトコルです。USIの原案は、以下で読むことができます。
http://www.geocities.jp/shogidokoro/usi.html
0640デフォルトの名無しさん
2008/09/22(月) 09:20:38言語に依存しないようにプロトコルの策定からやるの?
inetd形式で棋譜つき雀卓サーバでも提供しようかと思ったけど
4人で1卓じゃそのままじゃむりか。人間も参加できるようにするなら観戦もいる?
0641デフォルトの名無しさん
2008/09/23(火) 00:48:19スレは長いが口だけ野郎が多いから
0642デフォルトの名無しさん
2008/09/23(火) 00:53:19http://bon4714.0web.cjb.net/BQjara/
0643デフォルトの名無しさん
2008/09/23(火) 01:22:370645デフォルトの名無しさん
2008/09/23(火) 01:51:12>570 == >572 == >574 == >576 == >630 ==>637 == >639 == >641-642
0646デフォルトの名無しさん
2008/09/23(火) 12:48:510647デフォルトの名無しさん
2008/09/23(火) 15:18:11コマンド
【名前】自模牌要求
【コマンド名】PaiReq
【方向】cl - > sv
【コマンド概要】プレイヤーからサーバへの自模牌要求
みたいなな感じであげていって、あとはそれぞれシーケンス描いてみてダメな部分・足りない部分を要らない部分の
追加修正削除をわいわいやってみたらなんとかでっちあげられるんじゃね
0648デフォルトの名無しさん
2008/09/23(火) 17:51:15仕様
・AI同士のみでひたすら対戦。
・東風荘のログを出す。
・AIは、.NETのDLLとして製作する。
ルール
・東風荘ルールがベースで、一部変更。
・カンなし。アンカン、ミンカン両方できない。
・チートイツなし。
・役満なし。
・親のノーテンで流れる。
0649デフォルトの名無しさん
2008/09/23(火) 18:36:35プロトコルの策定をしてほしい
そうすればクライアントに取り掛かれるから
サーバサイドとしては
1.開始時にクライアントからの接続待ち
2.卓の配置、親の決定
3.河および山の情報が変わるたびにクライアントに通知
4.4つ(固定よりも可変のほうがいいかも?)のクライアントからの返信を待つ
くらいかな?補足ヨロ
他に
風牌とかドラ(表示?)牌のリクエストは不定期で受け付ける?
他家の点数リクエストは不定期で受け付ける?
河の情報はすべて再送信する?差分だけにする?
待ち時間は最大何秒(何ステップ?)にする?
途中でクライアントが放棄または接続が切れた場合はどうする?
一局終了ごとに譜(なんて呼ぶんだ?)を送信する?
ノーテンリーチは可能?
リーチ後の見逃しは可能?(高目をツモるため)
フリテンリーチは可能?
0650632
2008/09/23(火) 19:12:37意外に興味ある人もいるのかな?
SourceForgeにプロジェクトでも立てようかと思ったけど、SFって
Wikiは使える?
0651デフォルトの名無しさん
2008/09/23(火) 19:15:11SFは早まるな
0652デフォルトの名無しさん
2008/09/23(火) 19:19:47クライアントの作り直しになる可能性があるな
0653デフォルトの名無しさん
2008/09/23(火) 19:22:50もうちょっとほぐしてみた。
こんな感じで叩き台になりますかね。
・マッチメイク
別途
・対戦サーバ
すでにマッチメイクが済んでいることとする。
各クライアントは対戦に必要なキーを含む情報をサーバに送る事で参加する。
1、開始時にクライアントからの接続待ち
2、席順、親の決定
3、配牌、自摸/打牌、チー、ポン、カン、和了などのアクションを必要なクライアントに通知
5、クライアントからのACKを待って次に進む
4、ACKにはチー、ポン、カン、ロン、チャンカン、チョンボアピール※などを乗せる
6、和了まで繰り返す
7、和了時、点数の計算、終局判定
8、配牌に戻る
※他のクライアントのアクションについてチョンボであるとサーバーに告げるコマンド
・不定期なりクエストに応じてサーバーからクライアントに通知される情報
クライアント情報、風牌、ドラ表示牌、他家の点数、河の情報
・ルールで決定、または選択ルールとしてマッチメイク時に対戦希望クライアントに通知
選択ルール、ローカルルール
待ち時間、クライアントが放棄または接続が切れた場合の処理(チョンボ扱い、ツモきりモード、ランダムきりモード)
ノーテンリーリなど、クライアントが指摘できないものについて、サーバーでは判定しない(流局時に露呈するものは除く)。
0654632
2008/09/23(火) 19:32:32スマン、早まってプロジェクト申請しちまったw
>>652
個人的にはオープンリーチは無しが良いかと。
>>653
チョンボは面倒が多いので、不可にしてしまう方が良いと思います。
ノーテンリーチに関しては、クライアントからリーチのコマンドがきても
サーバが認めない等。
確かにノーテンリーチは戦術として使えなくもないので、禁止するのは
微妙かもしれませんが、チョンボってのは色々問題を孕んでいるので
起きないに越したことはないかと。
0655デフォルトの名無しさん
2008/09/23(火) 21:01:01競技麻雀路線で行くにしてもプロ団体でも採用するルールが異なってるし、雀荘路線で行くなら赤の使い方が当然絡んできるし。
どうでもいい三文プログラム書くより、本気ならまず統計的分析から開始するのが本筋だと思うけど?
0656デフォルトの名無しさん
2008/09/23(火) 21:06:38まずは麻雀を打てることが大事だ
0657デフォルトの名無しさん
2008/09/23(火) 21:16:08現段階では板違い
http://money6.2ch.net/mj/
ここで思う存分統計的分析してきてくれ
0659デフォルトの名無しさん
2008/09/23(火) 21:35:35wikipedia より
牌譜(ぱいふ、はいふ)とは、麻雀の自摸や打牌などの動作(摸打)、点数の得失などを記録したもの。野球のスコア、囲碁・将棋の棋譜などに相当する。
http://ja.wikipedia.org/wiki/%E7%89%8C%E8%AD%9C
0660デフォルトの名無しさん
2008/09/23(火) 22:14:50自分で勝手な妄想で判断するなよ、統計的な裏付けの有る読み、打ちをするプログラムが最強に最も近いのは当たり前だろ?
逆に言えば、理論的な根拠の無い打ち方をするプログラムになにか意味が有るのか?
0661デフォルトの名無しさん
2008/09/23(火) 22:25:240662デフォルトの名無しさん
2008/09/23(火) 22:32:17上を見るんだ
0663デフォルトの名無しさん
2008/09/23(火) 23:28:260664648
2008/09/24(水) 01:05:01http://migumi94.nobody.jp/dennoso/
まだ作ってないところも多く、バグバグだがこんなもんということで。
0665デフォルトの名無しさん
2008/09/24(水) 01:20:200666デフォルトの名無しさん
2008/09/24(水) 09:48:06http://act0.net/cgi-bin/source/up0280.txt
0667デフォルトの名無しさん
2008/09/24(水) 09:51:03ルールによっても変わってくるし。
でもいちいち可能性のある手の点数をサーバに問い合わせるのは無駄か?
0668デフォルトの名無しさん
2008/09/24(水) 10:10:52慎重に作るべきところで最も重要なところといえる。
0669デフォルトの名無しさん
2008/09/24(水) 10:25:34じゃぁそこのロジックはオマエらに任せた。
手牌を渡すから、得点と役を返すファンクションでもクラスでもいいから作ってくれ
頼んだぞ
0670デフォルトの名無しさん
2008/09/24(水) 10:31:20風と局、ツモやロンの区別とその牌、晒してるかとか海底とかリーチとかどういう風に渡せばいいものか・・
0671デフォルトの名無しさん
2008/09/24(水) 11:13:16鳴き
ツモorロンorチャンカンorリンシャン
局・風
リーチorWリーチ・一発
天・地・人和
海底or河底
(八連荘)
こんだけあれば役得点計算できるかね
0672デフォルトの名無しさん
2008/09/24(水) 12:20:22大変そうだな。
>667
まず、ゲーム開始前に手と得点の一覧表を
サーバーに問い合わせると言うのはどうかね?
0673デフォルトの名無しさん
2008/09/24(水) 18:40:02目次うp
0674デフォルトの名無しさん
2008/09/24(水) 19:54:340675632
2008/09/24(水) 21:15:15Wikiにざっとコマンド案とかを書いてみた
http://sourceforge.jp/projects/openmj/wiki/FrontPage
実装は今から頑張ります(^^;
とりあえずRubyで麻雀ライブラリを書いてから、サーバプロセスを作る予定
0676デフォルトの名無しさん
2008/09/24(水) 22:07:27字牌の表記が東風荘と違うんだけど、天鳳か何かだとそうなの?
0677632
2008/09/24(水) 22:23:21いや、別に他のに合わせる必要もないかと思って気にもしなかった。
ということで、中途半端に似てるくらいなら、東風荘に合わせようかと
思って調べてみたけど、東風荘は字牌は漢字表記?
だとしたら、それはイヤだな。
0678デフォルトの名無しさん
2008/09/24(水) 22:33:01自分の下家がチーで鳴いたのか
ツモなのか判別できない気がするのですが…
0679デフォルトの名無しさん
2008/09/24(水) 22:47:42動作確認で牌譜再生ツールを使うと思うんだけど、nz表記用のを一から作るのも手間だし
現段階で安定したものがあるんだから、それで再生できるよう合わせた方がいいのでは?
・・・まあnz⇔漢字の変換ツールを作ればいいだけの話か。字牌の表記はお任せします
0680デフォルトの名無しさん
2008/09/24(水) 22:52:28いわゆるASCIIコードの範囲内の方がいい
0681632
2008/09/24(水) 22:59:57どういうケースでしょうか?
Wikiにも書いた通り、サーバから送られてくるのが
「実際に起きたこと」なので、サーバから下家がツモった
(tsumoコマンドがきた)ならツモ、chiコマンドがきたなら
チーとなる想定なんですが。
>>679
牌符は別にプロトコルに合わせる必要はないので、
東風荘フォーマットとかで出力するのは問題ないです。
>>680も言っている通り、ネットワークを通すプロトコルでは
漢字は問題を起こしやすいので、できれば避けたいです。
0683デフォルトの名無しさん
2008/09/24(水) 23:02:13それとryukyokuでクライアントにtenpaiかnotenかを返させてますけど、
不正申告がないようサーバ側でチェックするなら不必要な気がします
0684632
2008/09/24(水) 23:09:04いえいえ、色々抜けはあると思うので指摘して頂けるのは
嬉しいです(^^
>>683
「局」という言葉が正しくは何を指すのかが良くわからないのですが、
いわゆるサイコロ振って配牌取って、誰かが上がるまでを1局と呼んでます。
なので、言葉が混在してわかりにくくなってますがkyokustartについては
683さんの理解している通りです。
流局時にテンパイ/ノーテン宣言をクライアントに返させているのは、
テンパイしててもノーテンと宣言したい場合があるからです。
上がり止めなしのオーラストップ目とか。
当然、ノーテンなのにテンパイと宣言してもサーバ側では認めません。
0685632
2008/09/24(水) 23:12:45赤牌が表示牌の場合に対応できなかった。
0686デフォルトの名無しさん
2008/09/24(水) 23:23:080687デフォルトの名無しさん
2008/09/24(水) 23:24:150688デフォルトの名無しさん
2008/09/24(水) 23:26:54職場にこんなこと言いだす奴がいたら絶対殴ってるわw
0689デフォルトの名無しさん
2008/09/24(水) 23:27:14それは無しって事になってるのでは?
0690632
2008/09/24(水) 23:39:00リンシャンというか、和了役の通知でしょうか?
今のところ入ってません。さすがにマズいかな?
とりあえずkyokuendで点数の増減だけで済ませようかなと
甘く考えていたんですが、ちょっともう一度考えてみます。
>>687
手牌はサーバ側で管理するので多牌、少牌は不可能です。
0691デフォルトの名無しさん
2008/09/24(水) 23:48:130693デフォルトの名無しさん
2008/09/24(水) 23:58:43楽になることってどういう扱い?ツモったときの山牌の残り枚数とか
今はkyokustartで親を通知してもらってるけど、これなんかも
gamestartを作って最初に誰が親かを通知してもらえればいらない気が
0694デフォルトの名無しさん
2008/09/25(木) 00:07:49手牌から出したのかのフラグがあるといいかも
0695691
2008/09/25(木) 00:10:41いえ、設計者の趣味の範囲なので、とくにどっちがいいという訳では無いです。
もし必要ならカンしたプレーヤーの直後のツモはリンシャンって処理するだけだし。
ただ、仕様としては、どっかに明記してあった方がいいかなと。
0696632
2008/09/25(木) 00:11:37特に指針は決めてないんですが、基本的にはセッションは1局単位で
完結するようにしようと思ってます。
途中接続が切れた場合も、局の途中では戻れないが、次の局から
戻れる、みたいな。
なので、局が始まるときには、クライアントがその局の処理をするのに
必要な情報は渡すという感じです。
で、同じ面子で複数のセッションを繰り返すことで、半荘が成立すると。
ただこの辺はこれから実装して行くにつれて、色々変わって行く予感が
します(^^;
0697デフォルトの名無しさん
2008/09/25(木) 00:13:12同じ種類の牌で手出しすることもあるけど、それはツモ切りではなくなるよね
0698632
2008/09/25(木) 00:20:18ちょっと現状では必要性が感じられないので、
いったん保留とさせて下さい。
>>694
ああ、そうですね。それはあった方が良いな。
ありがとうございます。
個人的には空切りはキライなので、ツモ牌と同じものを
切ったらサーバ側でツモ切り扱いしたいんだけど、さすがに
それはマズいですよね(^^;
オカルトシステムNo.65「空切りは勢いを消す!」やw
0699632
2008/09/25(木) 00:23:18なるほど!それは考えつかなかった。
ちょっとプロトコルを通す情報が(人間から見て)わかりにくくなるけど、
そうすれば確かにツモ切り判定はわかりやすいですね。
0700デフォルトの名無しさん
2008/09/25(木) 00:42:330701デフォルトの名無しさん
2008/09/25(木) 00:46:19ベタオリ処理で手出しから筋見てる部分があるので
空切りはツモ切り扱いでも構わなかったり(汗
それだと自分と同じベタオリ処理してる相手がいる場合のみ
立直側になったときにちょっと有利になるくらいかな?
ま、どっちでもいいです
0702632
2008/09/25(木) 01:13:40自分としては、強いAIを作るための環境でもあるつもりです。
ただ、無駄に遠回りしているとは思います(^^;
もしスレ違いだという声が多ければ移動しますが、せっかく
何人かの方には反響を頂いているので、できればここで
話を続けさせてもらいたいです。
>>701
普通の麻雀でも、空切りを禁止した方が知的なヨミの要素が
増えて面白くなると思います。
ただまあプロトコルでできなくするのはマズいので、何か考えます。
0703デフォルトの名無しさん
2008/09/25(木) 02:20:35プロトコルの策定は、プログラマ魂が湧き上がってくる話題で楽しいし、別に良いと思うのだが、あまり意味が無いかもしれないな。
というのも、実際はクライアント側にも共通基盤を作るはずで、
ネットワーク ---> クライアント共通基盤 ---> ユーザAI
結局プロトコルは共通基盤の開発者だけがわかっていれば良く、どちらかといえば共通基盤のIFを決めたほうがいいかもね。
0704デフォルトの名無しさん
2008/09/25(木) 02:22:110705デフォルトの名無しさん
2008/09/25(木) 02:28:42そういう意味では、とりあえずローカルで動くものを作っておいて、後でネットワーク対応にしても良いかと。
麻雀はルールや点数計算が複雑なため、これらを全員が作るのは明らかに無駄で、
クライアント側にもどうせサーバと同等以上のライブラリが必要でしょう。
0706デフォルトの名無しさん
2008/09/25(木) 02:31:39それは現実的じゃないと思うって事を言いたいのだが・・・
0707デフォルトの名無しさん
2008/09/25(木) 02:44:24管理プログラムとAIの通信方法。
0708デフォルトの名無しさん
2008/09/25(木) 02:54:39?
話がかみ合ってないかな?
wikiには、「オープンなネットワーク麻雀のプロトコルを策定し」、「TCPを介した通信」って書いてあるけど・・・
それと管理プログラムって何?
0709632
2008/09/25(木) 02:55:20まさにおっしゃる通りで、プロトコルの策定とか、わざわざ遠回りな
ことをしているのは「好きでやってる」というのが一番です(^^
そして、プロトコルを策定したとしても、クライアント共通基板(SDK的なもの)
が必要になるだろうというのは自分もそう思います。
ただ、色々なプログラムを対戦させたり、サーバ側でちょっと特殊な集計を
したいと思ったときに、共通プロトコルで動いているというのは価値が
あるのではないでしょうか。
とりあえず、前述した通り個人的に好きでやっているので、
生暖かい目で見守って、ときには意見やコードなんか頂けると
嬉しいです。
0710デフォルトの名無しさん
2008/09/25(木) 04:38:09>共通プロトコルで動いているというのは価値があるのではないでしょうか。
あってもいいと思うのだが、コース料理でいえばデザートの部類ではないかと。
実際に動くAIが出てくるかどうか。
まずは、簡単にローカルで動く環境の提供が必要と考える。
要は、まずSDKから作ってみては?という意見でした。
0711デフォルトの名無しさん
2008/09/25(木) 09:53:11こっちの話のほうが参加しやすいんだよなあ
0712デフォルトの名無しさん
2008/09/25(木) 11:07:21勝手に最強になるんじゃね?
0713デフォルトの名無しさん
2008/09/25(木) 20:20:540714デフォルトの名無しさん
2008/09/25(木) 20:28:27プロルールに基づく
http://act0.net/cgi-bin/source/up0280.txt
0715デフォルトの名無しさん
2008/09/25(木) 23:27:41日本プロ麻雀連盟、日本プロ麻雀棋士会、麻将連合
どれもルール違うだろ。「プロルール」なんてものは無い
0716632
2008/09/25(木) 23:39:10まず、プロトコル(UMP)ではルールを規定しません。
それどころか、UMPではサンマでも青天井でも可能にする
想定です。
# ぶんぶんレジデンスの100人麻雀もできるようにしたかったけど、
# 現状だとプレイヤーをアルファベット1文字で表すので無理
ルールはサーバの実装次第なので、実際に動き始めてからでも
問題ないかと。
クライアント(UI)も、UMPにきちんと対応すれば、どんなルールで
あったとしても動作するハズです。
ただし、このスレの本旨であるAIを作るとなると、ルールによって
考えなければいけないことが変わるので、そのステップまできたら
ちゃんと考えないといけないと思います。
0717デフォルトの名無しさん
2008/09/26(金) 00:38:080718デフォルトの名無しさん
2008/09/26(金) 00:38:32あーそうか。
全員がAI作成を最終目標にしてると思い込んでたから、>>710とか書いてしまったが、
例えばプロトコルだけ考える人ってのがいてもいいわけか。
>>632さんはどこまで自分で実装する予定なんかな?
0719デフォルトの名無しさん
2008/09/26(金) 01:21:110720632
2008/09/26(金) 01:30:50オープンリーチ好きな人が多いなw
同じ人?
とりあえず仕様に追加しました。
>>718
自分としては、プロトコルの策定&サーバプロセスの実装、
テスト用クライアントの作成まではやるつもりです。
できればWindows版のクライアントを作ってくれる人が
現れてくれると、すごく嬉しいです(^^
0721デフォルトの名無しさん
2008/09/26(金) 01:49:130722デフォルトの名無しさん
2008/09/26(金) 02:32:33オープンリーチは待ちのわかる牌だけ晒すルールもあるので、
晒す牌の選択はクライアント側ではないかと。
プロトコルが対応してないから採用出来ないルール、ってのは
出来るだけ無い方がいいでしょ?
0723デフォルトの名無しさん
2008/09/26(金) 02:37:48サーバーは待ちのわかる牌を自動判別出来るはずだから、サーバーが決めるんでいいじゃん。
0724632
2008/09/26(金) 02:38:05んにゃ、全部晒すかどうかもサーバ側で決定します。
どうせサーバ側では不正をチェックしなければいけないので。
一部だけ晒せばOK、というルールのサーバのときに、
すべての手牌を晒したい、というときには問題になりますが、
それに対応する必要性は感じないんですが、どうでしょうか。
0725デフォルトの名無しさん
2008/09/26(金) 02:54:15とかいう話かな。
もちろん、4,7のツモ上がり前提で。
0726デフォルトの名無しさん
2008/09/26(金) 03:31:50>それに対応する必要性は感じないんですが、どうでしょうか。
プレーヤーにとって意味ある事かどうかは、
プロトコル側では関知しないっていうポリシー
だと思ってたけど、違った?
0727デフォルトの名無しさん
2008/09/26(金) 07:28:21http://act0.net/cgi-bin/source/up0280.txt
0728デフォルトの名無しさん
2008/09/26(金) 22:13:05open<プレイヤー><手牌>で手牌全部見せたときと
鳴いた面子だけ見せたときのコマンドが一緒になると
クライアント側で牌の数チェックする手間がでるんで
手牌か面子(ポン・チー/カン)かのフラグが欲しいです
0729デフォルトの名無しさん
2008/09/26(金) 22:23:480730デフォルトの名無しさん
2008/09/26(金) 22:52:12一秒制限の早差し勝負とかもやってみたい
0731デフォルトの名無しさん
2008/09/26(金) 23:36:33サーバ・クライアント共に何回目のackかを示す情報も必要かも
0732632
2008/09/27(土) 15:12:38さすがにそんなルールは聞いたことないですが、もしかしたら
1が枯れている場合はOKとかはあるかもしれません。
>>726
おっしゃる通りです(^^;
ということで、とりあえずopenrichiコマンドに晒したい部分の手牌も
指定できるよう仕様に追加しました。
0733632
2008/09/27(土) 15:13:04openの手牌は、手牌の表記に則るので、
和了ったときは open A 1m2m3m4p5p6p7s8s9s1z1z1z2z2z
ポンのときは open A <3m3m3m>
チーのときは open A <1p2p3p>
暗槓は open A (8s8s8s8s)
となるので、クライアントでも容易に区別できると思います。
>>729
ノイズって、どういうことでしょうか?
0734632
2008/09/27(土) 15:17:57実際に運用するとなると、時間制限は必要になると思いますが、
実験段階では、ひたすらぶん回して、それこそ1打1時間とかかけたとしても
本当に強いAIが出てくるなら、それはそれで面白いんじゃないでしょうか。
>>731
コマンド形式のところにある<センテンスID>というのがそれです。
ちなみに、最初はサーバから1コマンド送るごとに必ずクライアントの
ack(okコマンド)を待っていたのですが、実装してるうちに不要な気が
してきたので、必要なとき以外はクライアントからの返答を待たない
ようにしました。
0735デフォルトの名無しさん
2008/09/27(土) 15:21:190736デフォルトの名無しさん
2008/09/27(土) 15:33:13をを、プロトコルが強化されてる、乙かれ。
0737632
2008/09/27(土) 15:37:46人間相手だと、さすがに人間の方が耐えられないだろうけど、
AI同士なら別に1打1時間かかるのもアリじゃない?
まあでも実際、将棋や囲碁に比べれば、麻雀はプレイヤーの
できることが少ないから、さすがに1打1時間はないと思うけど。
>>736
実装しながらなので、随時変更してってます(^^;
0738632
2008/09/27(土) 15:39:46SVNに随時commitしているので、興味のある方は
http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/?root=openmj
から拾って下さい。
0739デフォルトの名無しさん
2008/09/27(土) 15:47:07これを一手1時間以内でやったら、同じ回数をこなすには1200日掛かることになる。
3年以上掛けてパソコンを動かさなければ強さが判らない。
0740デフォルトの名無しさん
2008/09/27(土) 15:51:030741デフォルトの名無しさん
2008/09/27(土) 15:51:27平均応答時間程度にするとかにして、時間切れはツモぎりとかのほうがいいとはおもう。
0742632
2008/09/27(土) 15:58:26麻雀のルールの他にも決めなければいけないことは
あると思います。
それこそ制限時間とか、あるいは鳴くかどうかのラグを
情報として使うのはアリか、とか、相手のAIの傾向を
「最初から」入れておくのはアリか…等々。
いうなれば大会のルールみたいなものですね。
0743デフォルトの名無しさん
2008/09/27(土) 16:06:220744デフォルトの名無しさん
2008/09/27(土) 18:55:36733のいうノイズは、おそらく意図的な情報伝達ミスだろう
麻雀でいうなら見間違いとか切り間違いとか
ゲーム理論の研究ならノイズも必要だけど、麻雀サーバには無用な仕様だよね
0745デフォルトの名無しさん
2008/09/27(土) 19:06:320746デフォルトの名無しさん
2008/09/27(土) 20:24:35エラー処理あるいはテスト仕様としては必要かも知れないよ。
つまりクライアントやサーバーが全く期待していない
矛盾した情報を受け取った時に何を返すべきか?
意味不明だと単にエラーを返すか、通信にリトライを要求するか?
そこまで仕様として決めておくのは面倒ではあるが、
下手をすると一回の通信エラーで全体が一気に倒れかねない。
0747デフォルトの名無しさん
2008/09/27(土) 21:00:00クライアントが矛盾したロンやリーチしたら
それはそういうときの処理をした方がいいのでは?
0748デフォルトの名無しさん
2008/09/27(土) 21:28:36ダブロンとかの扱いもちゃんとしておかないと
0749デフォルトの名無しさん
2008/09/27(土) 21:50:04Amazonのおすすめに出てきて驚きました。
0750デフォルトの名無しさん
2008/09/27(土) 22:44:26誤ロン誤ツモはチョンボだろ
ノーテンリーチはかけられるようにしとかないと
戦略の幅が狭まる
0751632
2008/09/27(土) 23:31:05自分の考えでは、誤ポンや誤ロンは、麻雀とってはまったく
不要な要素だと思っています。
極端な話、山を崩すのとたいして変わらないくらいで、
コンピュータ上で麻雀を打つなら、発生させないように
するのがベストではないでしょうか。
ただ、>>750の言う通り、ノーテンリーチについては戦術として
考えることもできるので、それは悩ましいところです。
>>748
一応現状のプロトコルの仕様でもダブロンは発生させることが
できると思います。
ただ、自分が作るサーバの実装では入れるつもりはありません。
0752デフォルトの名無しさん
2008/09/28(日) 00:57:590753デフォルトの名無しさん
2008/09/28(日) 09:53:140754デフォルトの名無しさん
2008/09/28(日) 15:00:06極端な話、その仕様だとクライアント制作者は和了判定を素っ飛ばして
とりあえず毎回サーバに和了コマンド送信する処理でもいいことになる
まあ毎回でなくとも形聴取ったなら海底河底で一応和了っておけみたいな
錯和が不要という考えは分かるけど何かしら対策はした方が良さ気
0755デフォルトの名無しさん
2008/09/29(月) 02:02:32そんな心配は無用
0756デフォルトの名無しさん
2008/09/29(月) 14:42:31これの麻雀研究特集号を読んだ人いますか? どんな内容でしたか?
「麻雀のベストプレイは存在するか」が気になる
0757デフォルトの名無しさん
2008/09/29(月) 20:24:53鳴いた場合の期待値 > 鳴かない場合の期待値
の時に鳴くって考え方でおk?
0758デフォルトの名無しさん
2008/09/29(月) 20:28:24一発消しだったり、自分が上がれる確率まで含めての期待値だったり
0759デフォルトの名無しさん
2008/09/29(月) 21:13:42ま、どんなときでも期待値の高い選択をすればそれでいいわけで、
期待値が計算出来ないってのが問題ということです。
http://www.ara3.net/hmr/expect.htm
0760632
2008/09/29(月) 23:46:31> その仕様だとクライアント制作者は和了判定を素っ飛ばして
> とりあえず毎回サーバに和了コマンド送信する処理でもいいことになる
別にそれでも全然構わないと思ってるんですが、問題あるでしょうか?
0761デフォルトの名無しさん
2008/09/30(火) 01:27:00そんなのは麻雀AIじゃない
0762デフォルトの名無しさん
2008/09/30(火) 01:31:02誤ロンした麻雀AIはチョンボを取られるべきだ
なぜなら、それが麻雀というゲームのルールだから
0763632
2008/09/30(火) 01:48:11将棋の場合は二人なので、片方に対するペナルティは、
必ず対戦相手の利益になりますが、4人で打つ麻雀の場合、
あるプレイヤーに対するペナルティが、他の3人に対して公平で
ないのが問題です。
そう考えると、可能な限りペナルティが発生しないというのが
理想だと自分は思います。
0764デフォルトの名無しさん
2008/09/30(火) 01:56:28抜け道があると「UMPでは最強かも知れないけれど〜」みたいな
グタグタな流れになるので、できれば対策して頂きたいです
錯和してるのに続行は問題なんで、和了放棄とか特別ルールはどうですか?
0765デフォルトの名無しさん
2008/09/30(火) 02:04:15チョンボは親子関係なく3000オールって雀荘もありますけど、それでどうですか?
0766デフォルトの名無しさん
2008/09/30(火) 02:10:18わざとチョンボされるかもしれない問題ってのも
考えられるからルール設定の扱いにしては?
有効、無効はサーバ側で決定
局or半荘開始時にサーバからクライアントに送信される形で
0767デフォルトの名無しさん
2008/09/30(火) 02:16:02ハコテンで半荘終了であるとする
ある局で特定のクライアントがトップ目であるとき
チョンボクライアントが常にチョンボすることで
半荘のトップ目をとらせるという戦略が考えられるなぁと
0768632
2008/09/30(火) 03:29:23みたんですが、あまりに長文になってしまったので
http://sourceforge.jp/projects/openmj/wiki/chombo
に書いておきました。
0769632
2008/09/30(火) 03:37:16UMPでのサーバ/クライアントで麻雀を打てるようにする、というのが
第一にあります。
その次に、チョンボも含めたルールとか、あるいは実際にどこかにサーバを
立てるのか、どう運用するのかということを考えなければいけないと
思いますが、現状その段階についてはあまり具体的に考えていません。
# 正直、チョンボ云々より、実際サーバプログラムを作ったとして、どこで
# 動かしたら良いかの方が悩みです(^^;
もちろん議論自体は活発に行われるのは良いことだと思いますが、
とりあえず自分の現状のスタンスを表明しておきたかったのです。
0770デフォルトの名無しさん
2008/09/30(火) 18:59:55RDBMSを積極的に使ったシステムがいいなあ。
0771デフォルトの名無しさん
2008/10/01(水) 00:31:11チョンボの有無
ハコテンの有無
ノーテンリーチ、オープンリーチの有無
パオの有無
等など、、、
そんなのパーラメータ化して、サーバごとで管理できるようしろよw
2chだって"SETTING.TXT"で、板ごとの要求に合わせて
設定されてるんだし、ちゃんと参考にしとけよ
http://kobe.cool.ne.jp/r_030/2ch_jikken/SETTING.htm
sourceforge.jpで新しいプロトコルの作成を目指すなら、
それくらいの気のきいた仕様をちゃんと考えてからにしとけ
0772デフォルトの名無しさん
2008/10/01(水) 00:38:37基本姿勢が決まってないととりあえず動かすためのクライアントを作るのが難しいぞ
0773デフォルトの名無しさん
2008/10/01(水) 01:11:34簡単に定義できるような柔軟なプロトコル仕様であって欲しいということ。
基本段階で決定するような、麻雀のルール決めはサーバ管理者の
裁量に任せればいいが、プロトコルの仕様という話ならば、
どんな特殊なルールであっても、単純に組み込めるようになってないと、
そもそもプロトコルとしての意味が無い
東風荘や麻雀ファイトクラブで採用してないような
オープンリーチやフリテンリーチが固定で組み込
まれているようなプロトコルになるなら、絶対に使わないし、いらねえ
0774632
2008/10/01(水) 01:29:12つもりはありません。つまり、「クイタンあり」みたいな情報をUMPでは
流さないで済むように考えています。
クイタンありかなしかはサーバの実装次第で、クライアントの実装では、
クイタンで和了ろうとして、サーバにコマンドを送って初めてわかります。
これだと問題だ!と考える方もいると思いますが、クライアントが人間で
あれば、例えばサーバのHPとかに書いておけば良いし、AIだとしても、
どんなルールにも自動で対応するAIというのは、手間がかかるわりに
難しいので、それを考慮する必要はないと思います。
それこそAIを動かす際のオプションで指定すれば済む話です。
>>771のように、パラメータを受け渡しする方法だと、そのパラメータを
策定しなくてはならず、無数にある麻雀のルールの洗い出しとまとめが
必要になり、それこそ気の利かない仕様だと思います。
0775632
2008/10/01(水) 01:31:20そう言って下さる方が現れるのを期待していました(^^
もしよろしければ、SourceForgeの方に自分のメアドが
ありますので、そちらにメールを頂けますでしょうか?
0776デフォルトの名無しさん
2008/10/01(水) 01:39:01了解です。それでいいと思います。
クライアント→サーバ
サーバ→クライアント
で、やり取りされるアクションや情報が全て網羅されることを期待しています。
個人的な要望としては、誰かがロン・ツモで上がったときや流局のときに
手牌を倒したプレーヤの手牌情報は取得できるようにして欲しい。
この手の仕様では、サーバ側が必要とする情報だけしか定義されていなくて、
クライアントからでは情報が取ってこれないということがよくある。
ランダムに吐くログを整形して自分で作りこみをしないといけなかったりする。
それは単純化して欲しい。
0777デフォルトの名無しさん
2008/10/01(水) 01:46:22つもりはありません。つまり、「クイタンあり」みたいな情報をUMPでは
流さないで済むように考えています。
クイタンありかなしかはサーバの実装次第で、クライアントの実装では、
クイタンで和了ろうとして、サーバにコマンドを送って初めてわかります。
↑ ↑ ↑
この文章を整形して、フロントページの前提に書いた方がいいんじゃね?
このプロトコルのコンセプトがはっきりして、初めて来た人にも分りやすい
http://sourceforge.jp/projects/openmj/wiki/FrontPage
0778デフォルトの名無しさん
2008/10/01(水) 01:55:460779632
2008/10/01(水) 02:43:52FrontPageに>>776さんの「アクションや情報が〜」の言葉も頂いて
追加しておきました。
>>776
現状の仕様では、和了ったときには
say <プレイヤー> ron または tsumo
open <プレイヤー> <手牌>
agari <プレイヤー>
の順にクライアントに送られます。
流局のときには、
ryukyoku
の後に親から順に
open <プレイヤー> <手牌> もしくは
close <プレイヤー>
が送られてきます。
手牌の公開をすべてopenコマンドに統一したので、逆にわかりにくくなって
しまったかもしれません。
コマンドの定義とは別に、本来はこういうフローも定義しないといけないんですが、
まだまとめきれていません(^^;
0780632
2008/10/01(水) 02:46:58まさにその通りで、実際に動作する実装があれば、もうちょっと
具体的な話もできるようになるんですが、現在鋭意制作中で
ございます(^^;
前にも書きましたが、ソースは随時SourceForgeのリポジトリに
commitしているので、興味のある方は参照して下さい。
でもできるだけ早く、ある程度のものをリリースしたいとは思っています。
0781デフォルトの名無しさん
2008/10/01(水) 12:48:43あと、進行は全て実際と同じようにサイコロ2回振って山のどこから切り出すとか、
サイコロの出目も含めて記録したい。
山を提供するだけ、サイコロを提供するだけ、それらのやり取りを全て記録し、牌譜が出せるやつまで
別に持っていたいのだけど。(ここでDB使う)
0782デフォルトの名無しさん
2008/10/01(水) 17:21:30どうせ鋭意制作中とか言っても完成まじかで「本業or学校or卒論等が忙しくなり・・・」で結局完成しない良くあるパターンに陥るのがみえみえ。
少しは完成させてからでも遅くは無いと思うんですが、どうなんでしょうかそんへん?
0783デフォルトの名無しさん
2008/10/01(水) 17:24:050784デフォルトの名無しさん
2008/10/01(水) 18:45:22>クイタンありかなしかはサーバの実装次第で、クライアントの実装では、
>クイタンで和了ろうとして、サーバにコマンドを送って初めてわかります。
え、事前にサーバーにルールを問い合わせたりできないの?
0785デフォルトの名無しさん
2008/10/01(水) 18:56:16AI前提だと、先にルールがある気がしないでもないが。
0786デフォルトの名無しさん
2008/10/01(水) 23:04:37HELLOコマンドに乗せて最初に通達されるもんじゃないだろうか
実際の卓でも初めて打つ人とはレートとか先付けとか確認しておくよね
0787632
2008/10/02(木) 00:07:47自分の考えは>>774に書いた通りで、ルールをサーバとクライントで
通信に乗せてやりとりする必要はないと思っています。
もしそれで問題だと思うのであれば、具体的な例を示して頂けると
助かります。
ただし、>>786の言うように、helloコマンドである程度の情報を渡すのは
アリかなと思っています。しかし、それに依存したクライアントを作るのは
推奨しません。
0788632
2008/10/02(木) 00:13:31それぞれの牌にユニークなIDを振るのは、前にスレで提案頂いてから
検討してみましたが、結局止めました。
一番大きな理由は、牌の表記を現状の'1m'とかから変更するのに
良い案が浮かばなかったからです。
別に可読性は気にする必要はないのかもしれませんが、一応telnetでも
クライアントと成り得るのを目指していたので(^^;
サイの目に関しては、まったく意味がないので外していたんですが、
割れ目などを実装する際に必要になるのでUMPに追加しました。
それ以外のDBを使うという部分は、ちょっとイメージが良くわかなかったの
ですが、UMPというよりサーバの実装の話であれば、どうとでも対応できる
と思います。
0789デフォルトの名無しさん
2008/10/02(木) 00:31:21指摘事項を記載。
■「naku?」アクション後のリアクションについて
あるプレーヤーが捨牌後、残りのプレーヤーに対して
「naku?」コマンドが送信されるが、仮に3人とも「no」だった
場合に、現行の仕様では何もコマンドが返されない。
一応、3人とも「no」だった場合は、例えば
say 0 noact
みたいなコマンドは発行した方が良いのでは?
すると、クライアント側では以下のような動きになるが
どうだろうか?
sutehai?→自家捨牌(sute)→リアクション無し(say no)→下家捨牌(sutehai)→naku?
→鳴かない(no)→リアクション無し(say no)→対面捨牌(sutehai)→naku?
0790632
2008/10/02(木) 00:35:59具体的な指摘、嬉しいです!
その状況では、noactの代わりに、他家のtsumoコマンドが送られる想定です。
つまり、tsumoコマンドは自分がツモった場合でも、他家がツモった場合でも
全員に送られます。
ちなみに鳴きの処理はまだ全く手つかずなので、実装していくうちに変更に
なる可能性もあります。
0791デフォルトの名無しさん
2008/10/02(木) 00:37:05「naku?」コマンド発行したタイミングで、2人はリプライが
あったが、残る1人からのリプライが無かったときに、
リプライを返した2人はサーバからの応答が無いまま
ずっと待っていることになる。
サーバは長考しているプレーヤーに対して、再度「naku?」
コマンドを発行して催促すると同時に、残りのプレーヤーには、
wait <プレイヤー>
というコマンドを発行して、今1人長考に入っていますと、
知らせてみてはどうだろうか?
0792デフォルトの名無しさん
2008/10/02(木) 00:46:45単純化されたシステムを構築したいなら、CGIで十分だなと思えてきた。
とりあえず、サーバー内でタイマーを持たせて、
「10秒以内に返信が無いと、強制ツモ切り」という粗い感じの
仕様なら、そんなに難しくないと思う。
サーバ側から「もしもし捨牌が遅いですよ」と返信が来る様な
優しい仕様としたいなら、サーバとクライアントの双方向で通信
できるようなsocketのサンプルが無いと開発は難しい気がする
0793デフォルトの名無しさん
2008/10/02(木) 00:54:44了解です。
[鳴き無し]
tsumo <自分> <残り枚数> <牌> →sutehai?→自家捨牌(sute)→tsumo <下家> <残り枚数>→下家捨牌(sutehai)→naku?
→鳴かない(no)→tsumo <下家> <残り枚数>→対面捨牌(sutehai)→naku?
[鳴き有り]
tsumo <自分> <残り枚数> <牌>→sutehai?→自家捨牌(sute)→tsumo <下家> <残り枚数>→下家捨牌(sutehai)→naku?
→鳴かない(no)→say <上家> pon →上家捨牌(sutehai)→naku?
という流れを理解しました。
0794632
2008/10/02(木) 01:22:38タイムアウトについては大変悩ましいところです。
とりあえず、クライアントから(サーバ時間で)一定時間、返答がなければ
サーバが勝手に進行してしまうというものを考えています。
また、現状の仕様だと誰の返答が遅いのかを、他のクライアントは知る
ことができませんが、これはこれで良いかなと考えています。
0795デフォルトの名無しさん
2008/10/02(木) 05:42:54まあ内部で持つだけでやってみるか。
まったく同じ山でAIだけ差し替えて対戦とかも可能な様にやってるけど、それでいいかな。
すべての対局の山とダイスを記録してるけど、短時間に膨大な量の対戦をやると意味がなくなるかなあ。
0796デフォルトの名無しさん
2008/10/02(木) 05:45:18あとローカルで高速に動くやつ
0797デフォルトの名無しさん
2008/10/02(木) 11:03:370798デフォルトの名無しさん
2008/10/02(木) 11:08:06あと>>797の利用規約見たけど、AIで使うのは明らかに規約違反だな。
0799デフォルトの名無しさん
2008/10/02(木) 11:28:32>以上は、個人的な研究程度の範疇なら問題ありません
0800デフォルトの名無しさん
2008/10/02(木) 11:32:110801デフォルトの名無しさん
2008/10/02(木) 11:34:530802デフォルトの名無しさん
2008/10/02(木) 11:38:100803デフォルトの名無しさん
2008/10/02(木) 17:26:270804デフォルトの名無しさん
2008/10/03(金) 00:18:39例に出てるけど、クイタンがあるかどうかは終盤の打ち筋に大きく影響するから、
アガッたときにはじめてわかる、なんて仕様はあり得ないと思う。
予めAIはクイタンが認められるかどうかを知っていないと。
それならクイタンありAIとクイタンなしAIの2つを分けて作れ、って考え方なんだろうけど
初めっから多態性を切り捨てたAIなんて面白くないよね。特にム板的には。
というわけで、「採用されている」ルールだけでも通達すべきだと思うんだ。
無数にある「採用されていない」ルールは無視してね。
0805デフォルトの名無しさん
2008/10/03(金) 00:20:33牌のユニークIDがないと赤には対応できないな
'5m'を'5M'にするとかか
0806632
2008/10/03(金) 00:28:15AIクライアントを起動するときに、オプションで指定すればそれで済むと
思っているんですが、サーバに問い合わせて自動で判別する必要が
あるんでしょうか?
>>805
赤牌は、おっしゃる通りの表記で既に仕様に入ってます。
0807デフォルトの名無しさん
2008/10/03(金) 01:39:05いろんな考え方があって面白い
0808デフォルトの名無しさん
2008/10/03(金) 02:07:34いちいちオプション指定なんて面倒
0809デフォルトの名無しさん
2008/10/03(金) 02:11:18うっかり1人だけ設定間違えた、ってこともあるはず。
こういうことはしっかり確認を取れるようにしないとトラブルの元。
0810632
2008/10/03(金) 02:29:18自分はサーバとクライアントでルールをやりとりする方が
トラブルの元だと思っています。
例えば、クイタンありの場合は、サーバからhelloコマンドで
kuitan=1というオプションを渡すようにしましょう。
そしてクライアントはそれに対応しました。
ところが、他のサーバの実装ではkuitan=yesと送ってきました。
これは、サーバが悪いのでしょうか?それともクライアントが対応
すべきでしょうか?
このトラブルを回避するには、ルールを通達する場合の仕様を
決めなければなりません。
そうなると今度は麻雀のルールの多様さが問題になってきます。
ツモっても平和つくの?赤牌は何枚入ってるの?聴牌連荘?
裏ドラはあり?ダブロンは?etc...
「どうせUMPのサーバなんてお前しか作んねーよ。そんな先の
こと考えてんじゃねーよ」
という意見もあるでしょうし、おそらくそれはその通りです(^^;
が、だからこそ自分の正しいと思うように作りたいのです。
0812デフォルトの名無しさん
2008/10/03(金) 10:07:240813デフォルトの名無しさん
2008/10/03(金) 10:10:230814デフォルトの名無しさん
2008/10/03(金) 11:19:56>決めなければなりません。
実装とルールを切り離してるんだから、なにかしらルール定義ファイルがあるんじゃないのかな・・・
それ送っちゃえばいいのに。
マッチメイクサーバーとかが面倒見るのがいい気もするけど。
0815デフォルトの名無しさん
2008/10/03(金) 13:44:531024byteのパラメータの固まりをやりとりできる
コマンドを準備しておけば良いんでね?
フォーマットの中身は追々、考えるとして。
麻雀のルールは1000パラメータ以上もは無いだろう?
有りそうなら後々、長さを拡張できるようにしておく。
で、サーバーは一方的にルールを通知するだけ。
対応する、しない(できる、できない)は
クライアントの責任とする。
ルールの摺り合わせをするのはさすがに大変そうなので。
0816デフォルトの名無しさん
2008/10/03(金) 13:52:130817デフォルトの名無しさん
2008/10/03(金) 14:25:31参加しない、の返事だけはクライアントから返すようにするとか。
その後、参加しているかどうかログ見れば分かるから
あまり意味ないけど。
0818デフォルトの名無しさん
2008/10/03(金) 19:52:46東風荘みたいに「○○ルールのサーバに接続しに行く」ってのはできんのかね
0819デフォルトの名無しさん
2008/10/04(土) 23:37:26期待して待ってるんですが、その後どうですか?
0820632
2008/10/05(日) 02:39:38指定しないといけないのか…地味に面倒だな(^^;
0821デフォルトの名無しさん
2008/10/05(日) 02:47:350823デフォルトの名無しさん
2008/10/05(日) 10:55:11クライアントだけで晒す牌は自明。
0824デフォルトの名無しさん
2008/10/05(日) 12:46:31お前は相手の牌が読めるのかよww
0825デフォルトの名無しさん
2008/10/05(日) 13:03:43sutehai
と
chi
pon
kan
の経過があれば可能
0826デフォルトの名無しさん
2008/10/05(日) 13:16:58まず、それではあがった時や流局時にプレーヤーがどんな手牌
であるのか不明
つか、sutehaiとかchiとかのメッセージをサーバ間で
やりとりして、言語依存せずに麻雀のゲームを成立させることが、
このプロトコルが意図してるところだろ?
0827デフォルトの名無しさん
2008/10/05(日) 13:23:24これを読んでから言ってるの?
http://sourceforge.jp/projects/openmj/wiki/FrontPage
0828デフォルトの名無しさん
2008/10/05(日) 13:58:48麻雀は将棋やチェスと違ってプレイヤー間の意思疎通および時間経過の概念があるから
適当な考えで簡単に策定したら後で破綻しやすそうだね
個人的には錯和もチョンボも無いゲームは麻雀とは呼ばずに
麻雀モドキもしくはコンピュータ麻雀とか呼んで欲しいと思うけど
0829デフォルトの名無しさん
2008/10/05(日) 14:15:200830デフォルトの名無しさん
2008/10/05(日) 14:26:310831632
2008/10/05(日) 14:36:42> 個人的には錯和もチョンボも無いゲームは麻雀とは呼ばずに
> 麻雀モドキもしくはコンピュータ麻雀とか呼んで欲しいと思うけど
そういう意味では、自分はリアル(人間同士)の麻雀を再現したいとは
カケラも考えていません。だいたい、表情や仕草も見えない時点で全然
別物なのは皆わかってるものだと思いますが。
むしろ、そういう情報をなくすことで、より麻雀の「ゲーム」としての要素が
際立ち、そしてそこにコンピュータを使って最強のAIを作るという新たな
試みが生まれているのではないでしょうか。
その上で、チョンボは「コンピュータ麻雀」として意味があるのか、という
議論であれば、それは面白いと思います。
0832デフォルトの名無しさん
2008/10/05(日) 14:40:590833632
2008/10/05(日) 14:43:27誤魔化すことができません。
これは、本来の麻雀では小手返しのうまい人なら可能なことが
不可能になっているという意味で、チョンボを認めるかどうかなんか
よりよほど大きな問題だと思いますが、これについて一切ツッコミは
ありません。
というか、小手返しを使ってツモ切りかどうかを誤魔化せる麻雀ゲームって
存在するんですかね?
0834デフォルトの名無しさん
2008/10/05(日) 18:27:54チョンボコマンドでも定義しとけば?
0835デフォルトの名無しさん
2008/10/05(日) 22:09:26表情が見えないからこそ、牌で語るんじゃないの?
とりあえずノーテンリーチを認めない理由がわからない
0836デフォルトの名無しさん
2008/10/05(日) 22:37:020837デフォルトの名無しさん
2008/10/06(月) 00:25:59俺がチョンボとかノーテンリーチとか対応するから問題なす。
0838デフォルトの名無しさん
2008/10/06(月) 00:41:27つかノーテンリーチ認めてるところが
あるかよ
おまえ自身が異端だって気付けよ
0839デフォルトの名無しさん
2008/10/06(月) 13:40:49自分が考えたことに対する異論は片っぱしから拒否しといてつっこみがないとかあるかよ。
もう付き合ってられんわ。
0840デフォルトの名無しさん
2008/10/06(月) 19:29:03ノーテンリーチやチョンボ判定せずにサーバの救済措置で勝つAIがあるとして
それは強いAIとは言わないし、そのプロトコルはAIの強さを保証できない
0841デフォルトの名無しさん
2008/10/06(月) 21:05:16きみには強いAIは無理だからどうでもいいや
0842632
2008/10/07(火) 00:11:21チョンボとルールの伝達の件でしょうか?
それについては採用しない理由(デメリット)を説明しているつもりです。
ただルール伝達については、自分は必要がないと考えているんですが、
それを証明(?)するためにも、その仕組みでの実装を見せる必要が
あるかと思い、とりあえず議論よりも実装を頑張っている状態です。
その後、自分以外にもクライアントやAIを作ってくれる人が現れて、
やはりルール伝達があった方が問題が少なくなると思えば、仕様に
採り入れることもあります。
チョンボについては、極論すれば>>834の意見に行き着いてしまうと
思うのですが、やはりこれには抵抗を感じます。
0843632
2008/10/07(火) 00:15:32AIでチョンボというのは、それはもはやバグであり、強い弱いという
レベルとはかけ離れていると思います。
逆に、チョンボをサーバに救済してもらうことで勝てるAIなら、それは
バグを直せば強いのだから、強いAIなんじゃないでしょうか?
0844デフォルトの名無しさん
2008/10/07(火) 00:20:19ルールによってはだけどね、流局連荘だけどチョンボだと流れるとか、どっかであったはず
普通ないけどね、一応こういうのもあるよっていう情報提供って意味でw
0845632
2008/10/07(火) 00:30:37チョンボを発生させないようにする(サーバに送らない)ことも可能です。
これは、オープンなプロトコルで、クライアントを自由に実装できる以上、
防ぎようがありません。
その上で、チョンボが発生するクライアントと、チョンボを発生させない
ようにしたクライアントで対戦するというのは、どうなんでしょうか。
「コンピュータに手助けしてもらって打つなんて麻雀じゃない」という
意見もあるかもしれません。
でも、一昔前は他家の点数を覚えておくのは技術でしたが、今どきの
自動卓ならボタンを押せば表示されます。
またゲームであれば、ツモ切りかどうかを捨て牌にわかりやすく表示して
くれるものもあります。
自分としては、そういうことを総合して、リアルの麻雀とコンピュータの
麻雀は違うのだから、リアルの麻雀のすべての要素を入れる必要はなく、
そしてチョンボはコンピュータ麻雀には不要だと考えたわけです。
0846632
2008/10/07(火) 00:34:32わかります。
ですから結局>>834を認めるかどうかなんですが、実際、自分は
今までに勝とうとしてわざとチョンボするヤツを見たことがありません。
暗黙の了解で、チョンボはわざとやらない、つまり戦術ではないと
いうものだと思ってたんですが、そんなこともないんでしょうか?
0847デフォルトの名無しさん
2008/10/07(火) 00:39:49まぁ明記してくれればどっちでも自分はかまわないかな?お好きなようにっ
そこは設定できるようにしてあるしっ
0848デフォルトの名無しさん
2008/10/07(火) 00:42:43弾いたログだけは絶対に牌譜に残る仕様にしてくれよ
0849632
2008/10/07(火) 00:48:26今作ってるサーバをそういう仕様にするのは全然構わないですが、
すべてのサーバの実装はそうすべき、とするほどの意味が感じられません。
どういう用途で必要なんでしょうか?
0850デフォルトの名無しさん
2008/10/07(火) 01:27:43デバッグに有用な情報ではあるんじゃないかな。
チョンボするってのが、単にチョンボするだけの問題ってことはおそらくあまりなくて、
推論ロジック全体に影響する問題がある可能性が高いだろうし。
その一種の症候として検出するに値するものであると思うよ。
まあ、それだと全てのサーバがそうすべき、というほど強く必要なものでもないだろうけど。
0851632
2008/10/07(火) 01:36:00それは自分も考えました。
でもそうだとすると、サーバのログよりも、クライアントから不正な
返答があった場合には、サーバからerrorとかを返した上で続行
した方がクライアントのデバッグはやりやすいんじゃないでしょうか。
0852デフォルトの名無しさん
2008/10/07(火) 01:43:53>暗黙の了解で、チョンボはわざとやらない、つまり戦術ではないというものだと思ってたんですが
同意だ。
麻雀の戦術として、「この場合はチョンボしよう」というのも見たこと無いな。
チョンボは麻雀の中で、明らかに「例外」だ。
無しにできるのなら無しで良いものだと思う。
現在あるコンピュータ上の麻雀ゲームで、チョンボがあるものは多数あるため、なんとなく無いと変な気がするだけで、
無いからといって麻雀のゲーム性が損なわれることはまったく無いと考えられる。
リアルの麻雀では、山を手で崩してしまったら、なんらかの罰とかもあるわけだが、それは実装しなくて良いのだろうか。
その場合、AIが手のカーソルを牌を倒さないように避けるアルゴリズムが必要だな。
0853デフォルトの名無しさん
2008/10/07(火) 02:16:03それもそうか。
0854デフォルトの名無しさん
2008/10/07(火) 02:22:11んで、出来た?
0855デフォルトの名無しさん
2008/10/07(火) 02:49:21「完全にバグの無いプログラムの存在は証明し得ないから(悪魔の証明)」
言語が違うコンパイラが違うOSが違う加えて通信上の問題も多々ある
これ普通のマならみんな最大限警戒することだと思うけど
あなたが許したバグの責任はあなたが負うことを明示してねっ、てこと
チョンボを弾いたログは牌譜に残してね。お願いします
0856632
2008/10/07(火) 02:59:34進捗はSourceForgeのソースを動かしてもらうのが一番わかりやすいんですが、
とりあえず残る大物作業としては鳴きの処理くらいで、あとはGUIをもうちょっと
ちゃんとするのとか、バグとか、そんな感じです。
現在でも鳴けないけどツモ切り3人相手に一人打ちくらいならできます。
>>855
クライアントのバグの検出ということであれば、>>851の方法ではいかがでしょう?
牌符は東風荘と互換にしようと思ってるので、独自情報は追加できないかも。
それはそれとして、サーバのログは残すつもりですが。
0857デフォルトの名無しさん
2008/10/07(火) 03:51:37「それはそれとして、サーバのログは残す」ってどういうことなのでしょうか?
「独自情報の追加(削減?)」は不要なので普通に牌譜に記録して頂きたい
0858デフォルトの名無しさん
2008/10/07(火) 04:03:52通信記録=牌譜ではないでしょ。
0859デフォルトの名無しさん
2008/10/07(火) 09:16:04牌譜はその記録から抜き出す
これで好きな形式で牌譜も取り出せる
0860デフォルトの名無しさん
2008/10/07(火) 09:22:47後で集計を確認したり、気になった局の牌譜を再現したりできるようにしたいじゃない?
せっかくサーバー使うんだし、DB使うってのはそういうことに使えるからなんだけどね。
人間に見やすいプロトコルのために機能を削るのはナンセンスだと思ってる。
0861デフォルトの名無しさん
2008/10/07(火) 20:09:37チョンボはルールの破壊だがノーテンリーチは戦術だろう
0862デフォルトの名無しさん
2008/10/07(火) 20:17:050863デフォルトの名無しさん
2008/10/07(火) 20:49:33馬鹿がいると話が進まないな
チョンボ厨は完全スルーでいいだろ
今更こんな質問をするのもなんだけど、AI同士の優劣を判定するには多数の対局をこなさないといけない麻雀というゲームの性質上、
対局のたびにネットワークを介する方法は効率が悪いのでは?
0864デフォルトの名無しさん
2008/10/07(火) 21:51:03別にlocalhostでも使えるでしょ。
0865632
2008/10/08(水) 00:37:58牌譜を東風荘と互換にすることと、東風荘と同じ仕様(ルール)にするのは
イコールではないです。
ログについては>>858の言うように、いわゆる普通のログです。
通信だけには限りませんが。
クライアントのデバッグが目的であれば>>851の方法を提案しています。
これについてはどうでしょうか?
そういう目的のためではない、というのであれば、どうしろ、という形ではなく、
目的を教えて下さい。でないと対応できません。
0866632
2008/10/08(水) 00:41:24それも考えましたが、とりあえず東風荘形式で牌譜を出した方が
何かと便利な気がします。
で、東風荘の牌譜について調べてたんですが、どこかに仕様って
上がってます?
ざっと見た感じだと、鳴いたときに晒すメンツの情報が足りないような
気がするんですが…
0867デフォルトの名無しさん
2008/10/08(水) 00:44:290868632
2008/10/08(水) 00:54:34> 人間に見やすいプロトコルのために機能を削るのはナンセンスだと思ってる
どの部分を指摘しているかわかりません。牌を個別IDにしなかったことでしょうか?
もしそうなら、それは機能を削ったという認識はないんですが、何かこれで失った
ものがあるんでしょうか?
0870632
2008/10/08(水) 01:00:10自分もノーテンリーチだけはアリかなと思ってます(^^;
理由は、
* 流局までチョンボにならない
* 途中で上がることで防げる
という部分で、他家同士の損得に影響が少なく、またゲーム性としても
いわゆる「ブラフ」としての価値はあるかと。
もちろん、罰符は親子で同じ点数、局は流れないという条件は付きますが。
0871632
2008/10/08(水) 01:05:18>>864の言うように、ローカルでサーバも動かせば、それほどロスはないと
考えています。
ただ効率とか速度はそれほど重視していないので、それこそ何万局も打たせて
集計をとりたいという目的には向いてないかもしれません。
ちなみに、自分はAI同士ももちろんですが、AI対人間も考えてこの仕組みを
作っています。
だって、強いAIなら自分で相手したいじゃないですか?(^^
0872デフォルトの名無しさん
2008/10/08(水) 01:06:570873デフォルトの名無しさん
2008/10/08(水) 01:10:04大丈夫か?
0874デフォルトの名無しさん
2008/10/08(水) 01:10:11いつまでたってもできそうもないな。
0876デフォルトの名無しさん
2008/10/08(水) 01:16:17GUI作ってしまえばプロトコルなんてバイナリーでもかまわないわけで
0878デフォルトの名無しさん
2008/10/08(水) 01:18:590880デフォルトの名無しさん
2008/10/08(水) 01:20:06お前がか?
自己紹介
乙
0881632
2008/10/08(水) 01:23:09意見を聞くということが、言われたことをホイホイやるというのであれば
そんなつもりはカケラもありません。
リクエストについてはそれなりに理由をつけて反論しているつもりです。
ただ好き嫌いに関しては、当然ですが自分の好きを選びます。
0883デフォルトの名無しさん
2008/10/08(水) 01:34:540884デフォルトの名無しさん
2008/10/08(水) 02:07:57>ちなみに、自分はAI同士ももちろんですが、AI対人間も考えてこの仕組みを
>作っています。
逆指向なんだと思ってたので驚いた
0885デフォルトの名無しさん
2008/10/08(水) 09:43:440886デフォルトの名無しさん
2008/10/08(水) 18:05:05私が以前参加した大会でのことなのですが、初心者が多かったためか
「チョンボは取らず、手牌を立て直してそのままゲーム続行」というルールがあり、
実際に何人かが救われていました。
自動卓のボタン押しちゃったから続行不可能だとか、相手の手牌を故意に倒しやがったとか、そういうのは起こらなかったため対処が不明ですが、
これらがコンピュータ麻雀で起こることはないと思うので、局を中断して点棒をやりとりするのはナンセンスと思います。
「正しくない和了を以下の手牌で宣言した」という情報だけなら、(どうしても必要という根強い意見があるのならば、) 流してもいいかなとは思いますが。
ノーテンリーチは正常な流局の不聴として扱い、リーチ棒は一旦供託したので供託のままだったと思います。たしか101とかでしたっけ? 門前なら聴牌/不聴を問わずリーチできる団体もあったような気がします。(あそこは不聴罰符もなかったかな?)
つまり、ノーテンリーチかけられる場合、流局時の罰符には反対票入れます。
0887デフォルトの名無しさん
2008/10/08(水) 19:52:21→全ツッパAIが常勝→クライアント参加者消滅
→プロトコル死亡
0888632
2008/10/09(木) 02:26:18ありがとうございます(^^
>>884
人間同士の対局が主で、AIはついで、みたいな?
正直、そういう部分はあると思います(^^;
というか、人間かAIかというより、ネットワーク麻雀というものをもっとオープンに
したいというのが最大の目的です。
イメージ的には、好きなブラウザで、好きなサイトを見に行くような感覚で、
色々ある麻雀サーバに、好きなクライアントやAIで繋ぐ感じです。
0889632
2008/10/09(木) 02:28:23自分のことでしょうか?
どの部分についてそう思われたのですか?
むしろ、どっちかと言えば>>878で言われるように、頑固で自分の意見を
曲げない方なんじゃないかと思いますがw
0890632
2008/10/09(木) 02:39:53結局、ノーテンリーチも、チョンボで罰符を払って局を終わらせるのも麻雀の戦術と
みなすかどうかなんですよね。
101では有効だと判断すれば普通に使うんでしょうか?
ノー爆では爆岡と稲瀬さんが茶柱を追い詰めるためにノーテンリーチを使ってたし、
最近ではリスキーエッジでも吉岡が使ってて面白かったので、ノーテンリーチは
戦術とみなしても良いかなぁと思ってしまいます(^^;
ただ、やっぱり普通はそういう行為をワザとやるのは嫌がる人が多い気もします。
0891632
2008/10/09(木) 02:52:17わざわざ荒らし用のクライアントを書いてくれる人が現れるなら、
それはそれでちょっと嬉しいくらいです(^^
最初にも書いたけど、オープンなプロトコルを作りたいってのは
10年くらい前に考えて、でもそんときは2chとかなかったし、一人で
細々とやってて結局止めちゃったので、今はここで色々意見を
言ってくれる人がいて、それだけでも嬉しいです。
# 完全に構ってちゃんな発言だなw
0892デフォルトの名無しさん
2008/10/09(木) 03:15:42各メンツがどんなアクションや情報を出したかを
互いに伝達しあうことが目的ではないか?
メンツが出したアクション(毎回チョンボリーチをした、
役満でチョンボ流しをした等)がルール違反であるかは
「サーバ側で判断」すればよい。
サーバにメンツのアクションが正しく伝達されれば、
麻雀プロトコルの目的は達成できていると思うが?
0893デフォルトの名無しさん
2008/10/09(木) 03:20:29は無視でイイのではないのか?
0894632
2008/10/09(木) 03:37:22まさにその通りで、現状のプロトコル(UMP)でも、誤ツモのチョンボで
局を流すとかは、
say A tsumo
point A -8000
kyokuend
で再現可能です。
ただ、この場合他のクライアントは「チョンボが発生した」と
いうことを知ることができません。UMPにそれに該当する
コマンドがないからです。
言ってしまえば、とりあえずUMPの仕様にchomboコマンドを
追加してしまえばそれで済むんですが、できれば入れたくないと
いう自分のワガママが問題を大きくしてしまっている気もします(^^;
0895デフォルトの名無しさん
2008/10/09(木) 07:59:24まずは単純でオーソドックスなものを作ってしまうべきなように思う
仕様に問題が出ればそれから対処すれば良いし
ルールもいきなり複雑なのはAIがついていけない
0896デフォルトの名無しさん
2008/10/09(木) 10:49:12俺はこっちに期待させてもらう
0897デフォルトの名無しさん
2008/10/11(土) 00:46:390898デフォルトの名無しさん
2008/10/12(日) 21:41:010899デフォルトの名無しさん
2008/10/12(日) 21:45:02ネットワーク対応であれば
使用言語によらない
ひまわり でも なでしこ でも使える
0900デフォルトの名無しさん
2008/10/12(日) 21:56:01完成したら使わせてもらうかも
0901デフォルトの名無しさん
2008/10/19(日) 23:45:000902デフォルトの名無しさん
2008/10/20(月) 04:45:24営業「残業代は出すし。家に帰らなくていいから。今月中にできるよね。信頼してるし。お願いしたよ」
0903デフォルトの名無しさん
2008/10/20(月) 11:41:29これワロタ 麻雀ソフトのイカサマについての論争
0904デフォルトの名無しさん
2008/10/22(水) 00:08:33ちゃんとしたイカサマになる。
最も簡単といわれる積み込みも、実際の積み方を知らないで仕組むと
イカサマというよりもただ都合がいいだけのゲームになるしね。
河から牌を拾ったり、エレベーターしかけたりというのも
牌の配置(抜きやすいところにあるか、ツモ番ずれてないか、など)で
リアリティが増す
0905デフォルトの名無しさん
2008/10/24(金) 00:53:33コレ最強
0906デフォルトの名無しさん
2008/10/24(金) 09:52:100907デフォルトの名無しさん
2008/10/24(金) 21:29:490908デフォルトの名無しさん
2008/10/31(金) 18:32:54draw / discard / up / ...
0909デフォルトの名無しさん
2008/10/31(金) 22:23:020910デフォルトの名無しさん
2008/11/01(土) 00:39:220911デフォルトの名無しさん
2008/11/01(土) 01:51:45ゲーム内の名前は変えちゃダメだ
ますます麻雀もどきになってしまう
ドンジャラみたいなw
0912デフォルトの名無しさん
2008/11/01(土) 01:58:23そりゃルールは日本独自のもあるけどさ
0913デフォルトの名無しさん
2008/11/01(土) 02:00:56>>909
>>910
632が錯和無しルールを強行した結果、オープンネットワーク麻雀はスレ民に完全に見捨てられました
今後は電脳荘か、あらさんの企画が通信規約の規定に達するまで静かに見守って下さるようお願い致します
0914デフォルトの名無しさん
2008/11/01(土) 05:00:570915デフォルトの名無しさん
2008/11/01(土) 07:35:42http://mahjong.ara3.net/ymt/diary/2008101501.htm
0916デフォルトの名無しさん
2008/11/02(日) 10:41:08三着と2万点以上の差がある場合には、
配牌で7種以上のヤオチュウ牌があったら国士を狙う、
とか、
チートイの二向聴のときは、
残り枚数が一番少ない中で一番内側の牌を捨てる
とか、
そんな感じで全部ルールで決めてしまう方式。
0917デフォルトの名無しさん
2008/11/02(日) 18:59:11分りやすい解説
ありがとうございました
0918デフォルトの名無しさん
2008/11/03(月) 18:45:13ちょっと古いけどナルミみたいなのが出来たらいいな
0919デフォルトの名無しさん
2008/11/08(土) 04:54:390920デフォルトの名無しさん
2008/11/08(土) 13:53:510921デフォルトの名無しさん
2008/11/08(土) 15:21:41詳しく
0922デフォルトの名無しさん
2008/11/08(土) 19:06:12738 名前:632[sage] 投稿日:2008/09/27(土) 15:39:46
ちなみに、開発途中ではありますが、ソースコードをSourceForgeの
SVNに随時commitしているので、興味のある方は
http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/?root=openmj
から拾って下さい。
↑↑↑既に3週間放置↓↓↓
つか、9月末に公開して、10月初旬には既に放り投げてる
(dir) client/ 11 3 weeks yatsuhashi
(dir) common/ 9 4 weeks yatsuhashi
(dir) lib/ 10 4 weeks yatsuhashi
(dir) server/ 10 4 weeks yatsuhashi
(dir) test/ 7 4 weeks yatsuhashi * 点数計算とか追加
(file) Makefile 11 3 weeks yatsuhashi
0923デフォルトの名無しさん
2008/11/09(日) 14:34:080924632
2008/11/10(月) 01:41:55叩かれてますな(^^;
途中で言われたように、とりあえずモノができないと話にならないと思い、
まずは作ってしまうまで発言は控えようと思ったものの、一人になると
生来の怠け癖と飽きっぽさで、すっかりサボってしまいました。
期待して下さっていた方には申し訳ありません。
ということで、その後も特に進展はないのですが、良かれ悪しかれ気にして
下さっている方もいるようなので、まだ死んでないよという書き込みでした(^^;
0926デフォルトの名無しさん
2008/11/10(月) 01:50:11せっかくsourceforgeを使ってるんだから孤独にやらず
仲間を募り方針を示して複数人数で開発をした方が
少しずつでも進展するのでは?
強いリーダーシップと適切なアプローチの提示が必要だとは思うけど
0927デフォルトの名無しさん
2008/11/10(月) 01:56:410928632
2008/11/10(月) 02:12:48もちろん協力してくれる方がいれば嬉しいですが、それにしたって
もうちょっとできてからでないと話にならないかと(^^;
とりあえずはサーバ/GUIクライアントで麻雀が打てるレベルまでは
一人で仕上げたいと思います。
そこまではそんなに遠くない…ハズ。
>>927
久しぶりに書き込んだら早速それかw
0929デフォルトの名無しさん
2008/11/10(月) 10:13:49まあ今スレは反省会で埋めて、次スレからは新仕様の話をしようか
0930デフォルトの名無しさん
2008/11/10(月) 13:50:440931デフォルトの名無しさん
2008/11/10(月) 14:25:59初めてマルチスレッドアプリを作ったときの感覚を思い出すぜ
0932デフォルトの名無しさん
2008/11/15(土) 08:48:030933デフォルトの名無しさん
2008/11/15(土) 20:45:180934デフォルトの名無しさん
2008/11/16(日) 04:53:37トータルスコアから-100するなどの
ペナルティ制にするといいんじゃないか
0935デフォルトの名無しさん
2008/11/16(日) 15:52:53チョンボはゲームそのものは続行が原則なので
オーラスでチョンボしても本場積まずに再開です
0936デフォルトの名無しさん
2008/11/17(月) 10:47:35ttp://www.asamiryo.jp/chonbo02.html
戦略でのチョンボは防ぐ方向にしたいところではあるな。
0937デフォルトの名無しさん
2008/11/19(水) 20:46:590938デフォルトの名無しさん
2008/11/20(木) 10:36:37マウスかタッチペンでやるか?
0939デフォルトの名無しさん
2008/11/20(木) 11:21:110940デフォルトの名無しさん
2008/11/21(金) 21:48:48牌は実際にどっかに物理的に用意された物をマニピュレータで積むのだ。
0941デフォルトの名無しさん
2008/11/25(火) 22:27:21参加するならこれくらいは読んどかないと話にならん
という本があったら紹介してください
0942デフォルトの名無しさん
2008/11/27(木) 00:51:25* 一盃口の判定がバグっていたので修正
* OpenMj::ClientにPlayerクラスを追加
あたりで力尽きてるっぽい
0943632
2008/11/27(木) 01:13:40力尽きてないっすよw
クライアント(GUI)の鳴き処理(入力)をどうしようか考えてます。
赤牌なければ最大3パターンだけど、赤牌が複数種ある場合も想定
すると、晒す牌を個別に指定するのが単純だけど、UIとしては
微妙だなぁ、とか。
0944デフォルトの名無しさん
2008/11/27(木) 01:33:35いいからもう寝とけ
もう誰も期待してないから
0945デフォルトの名無しさん
2008/11/27(木) 02:54:59力尽きていても尽きていなくても、出来上がるのはゴミっつうのがアレだねえ・・・
0946デフォルトの名無しさん
2008/11/27(木) 07:59:18でも傍から見てるとあと1年は掛りそうなペースだな
0947デフォルトの名無しさん
2008/11/27(木) 09:51:090948デフォルトの名無しさん
2008/12/01(月) 15:24:490949デフォルトの名無しさん
2008/12/01(月) 16:40:28while(i < 13){ //配牌は13枚
j = kicha + kyoku;
while(j < PLAYER_CNT + kicha + kyoku){
color = (int)((rand() / ((double)RAND_MAX + 1.0f)) * 4);
num = (int)((rand() / ((double)RAND_MAX + 1.0f)) * 9);
if(!yama.Get(color, num)){ continue; }
if((color == TSUPAI)&&(num > CHUN)){ continue; }
nanikiru[j%4].SetTehai(color, num, 1);
yama.Set(color, num, -1);
++j;
}
++i;
}
0950デフォルトの名無しさん
2008/12/01(月) 22:42:55決めるわけじゃないだろ???
0951デフォルトの名無しさん
2008/12/01(月) 23:32:19でなきゃAI強化したとき本当に強くなったか検証できないだろ
0952デフォルトの名無しさん
2008/12/01(月) 23:45:01定義すりゃいいじゃん
わざわざ聞くことでもないだろ
0953デフォルトの名無しさん
2008/12/02(火) 00:04:120954デフォルトの名無しさん
2008/12/02(火) 00:06:47どっちがどっちなんか分るわけねーだろ
0955デフォルトの名無しさん
2008/12/02(火) 00:19:050956デフォルトの名無しさん
2008/12/02(火) 09:55:54席順とサイコロ振れば、配牌は自動的に決まるだろう。
0957デフォルトの名無しさん
2008/12/02(火) 14:47:490958デフォルトの名無しさん
2008/12/02(火) 23:26:310959デフォルトの名無しさん
2008/12/06(土) 21:58:050960デフォルトの名無しさん
2008/12/06(土) 22:06:26俺は雀力向上と数学の知識を身につけてる。
0961デフォルトの名無しさん
2008/12/06(土) 22:08:390962デフォルトの名無しさん
2008/12/06(土) 22:13:420963デフォルトの名無しさん
2008/12/06(土) 22:20:22それはプログラム投げ出したいいわけか?
0964デフォルトの名無しさん
2008/12/07(日) 07:12:36「WOLF RPGエディター」とは?
・高度なRPG開発が可能な、完全無料のゲーム作成ツールです。
・雰囲気はRPGツクール2000に近い。RPGツクール2000で自作システムを作りこむ際に
不満だったところがいろいろ解消されていて、かなり自由度が高いです。ただし
その分初心者には難しいかも。すでにツクール2000で自作システムを組むのに
慣れた人やRPGツクールでは物足りないけどプログラミングはちょっという方にお勧め。
・作成したゲームは自由に配布したり、コンテストに投稿することも可能。
また本ソフトを持たない人でもプレイ可能!ファイル暗号化も完備してるよ!
・要望、バグ報告などなど書き込みお願いします。
・それとマップやキャラなどのドット素材もじゃんじゃん募集中ですので
一度サイトにお越しくださいませ。
2ちゃん本スレ
http://pc11.2ch.net/test/read.cgi/gamedev/1226294070/l100
0965デフォルトの名無しさん
2008/12/08(月) 23:51:460966デフォルトの名無しさん
2008/12/09(火) 10:56:41今度は何桁切り捨てるんだろうね。
0967デフォルトの名無しさん
2008/12/09(火) 14:14:500968デフォルトの名無しさん
2008/12/10(水) 03:07:32暗槓3つと1枚の計13枚は七対子で言うと何向聴?
例えば、AAAABBBBCCCCDだとすると自作で判定させると5向聴なんだが、
実際5枚入れ替えても七対子として聴牌しない。
0969デフォルトの名無しさん
2008/12/10(水) 04:08:26多分だけど、たとえば AAEEBBFFCCCDD みたいになったときに、
CCC を対子ひとつと単騎の待ち牌とに誤認してるんじゃないかと思った。
0970デフォルトの名無しさん
2008/12/10(水) 06:00:05槓しておいて七対子は無理でしょ
手牌が AAAABBBBCCCCD なら既にテンパイでは?
0971デフォルトの名無しさん
2008/12/10(水) 07:31:310972デフォルトの名無しさん
2008/12/10(水) 07:46:21http://mahjong.ara3.net/etc/shanten/shanten2.htm
(6-3)+(7-4)=6
ですね。
0973デフォルトの名無しさん
2008/12/10(水) 07:56:08計算間違ってるよw
0974デフォルトの名無しさん
2008/12/10(水) 09:16:18うわ本当だ。そっちのパターンでも間違えた。
AAEECCCZXYWVUみたいな他がバラバラの時は正しかったから見逃してた。
>>970
11112222・・・じゃなくてAAAABBBB・・・って書いた理由を察してくれ。
その誤解を避けるために>>959はAAEEBB・・・ってしてくれたけど。
>>971
字牌でで順子が作れるやつかw
>>972
おお。同じ考え方だ。
でもそのページの一番下も14枚で考えてるだけで6向聴の間違いじゃないのかな?
実際ここから七対子狙いになんか行かないから実用上問題無いんだが、
例えば特殊なルールで七対子縛りとかあった場合にリアル麻雀では
何向聴扱いなのかなと疑問に思ったもので。
0975デフォルトの名無しさん
2008/12/10(水) 10:46:59まあすぐ流されそうだが。
0976デフォルトの名無しさん
2008/12/10(水) 21:25:46>でもそのページの一番下も14枚で考えてるだけで6向聴の間違いじゃないのかな?
AAAABBBBCCCCDDから何を捨てるかという話ですね
AAAABBBBCCCCDなら6向聴
AAAABBBBCCCDDなら5向聴
0977デフォルトの名無しさん
2008/12/17(水) 19:42:410978デフォルトの名無しさん
2008/12/19(金) 00:51:31Modified Sun Nov 16 18:27:54 2008 UTC (4 weeks, 3 days ago) by yatsuhashi
File length: 2875 byte(s)
Diff to previous 7
* 和了形判定にテーブルを用いるように
* 一盃口の判定がバグっていたので修正
* OpenMj::ClientにPlayerクラスを追加
どうよも何もここで完全に放置しているし
このスレも収束かな?
0979デフォルトの名無しさん
2008/12/19(金) 18:20:510980デフォルトの名無しさん
2008/12/27(土) 17:33:11最初から面子単位で考えていくんだよ
一筒なら、一筒二筒三筒しか考慮しない
面子に1つ足りないのも一応保持しておいて
一筒三筒だったら、あと1つで面子、と数える
こうすると、全種類の牌をいちいちツモって来なくてもいい
0981デフォルトの名無しさん
2008/12/27(土) 19:22:050982デフォルトの名無しさん
2008/12/28(日) 00:15:35一筒二筒だけとか二筒三筒だけの時にヘタすると重複したりするんで
他にも何かあった気がするが思い出せない
0983デフォルトの名無しさん
2008/12/28(日) 07:32:07一三三三四五五五七
とあったら、どうするの?
普通にテーブルで処理するのが一番高速だと思うね
実行回数が少ないなら、再帰で抜き取っても十分高速だろうし
0984デフォルトの名無しさん
2008/12/28(日) 14:34:02街牌が一枚もなければ、絶対にあがれない。
すでに表示されている牌を除いた牌全体から、ランダムで試行して最短上がりの平均取った方がマシ。
0985デフォルトの名無しさん
2008/12/28(日) 15:21:48しかしひっかけとかしないと、単純にこれだけだとなかなかあがれないかもな。
0986デフォルトの名無しさん
2008/12/28(日) 15:49:46めったに起こらないなら無視しても良い。
0987デフォルトの名無しさん
2008/12/28(日) 15:55:550988デフォルトの名無しさん
2008/12/28(日) 16:00:40そもそも、前提で
・ 全ての組み合わせて求めて、一番小さい向聴数を確実求める
・ マージャンゲームに実装するために、出来るだけ効率的に向聴数を求める。
↑の二つだけでも、アルゴリズムは全然変わってくる
0989デフォルトの名無しさん
2008/12/28(日) 16:16:26見えていない牌から期待値を求める方が価値ある
0990デフォルトの名無しさん
2008/12/28(日) 19:20:09晒されてない牌の数を数えれば
きっちり確率は出るだろう
0991デフォルトの名無しさん
2008/12/28(日) 19:31:10きっちり確率を出すだけなら、晒されていない牌を数えるまでもなく出る
さもなくば、晒されていない牌を数えてもきっちりとは確率は出ない
こんなものは、麻雀打ちとしても、麻雀プログラマとしても当たり前だろ
0992デフォルトの名無しさん
2008/12/28(日) 20:23:42本当にあるのか?
すげえ初歩的な話に終始しているようだが?
0993デフォルトの名無しさん
2008/12/28(日) 20:27:150994デフォルトの名無しさん
2008/12/28(日) 23:22:09シュンツを作ろうとする前に
その構成要素がコウツを形成するかどうかを見る
で枝分かれ分岐していく
最終的にはツリーを作る
1向聴、2向聴ぐらいなら総当りでも間に合うけど
もっとできてないと対策は欲しい
どの程度できてるかによって作戦は変わってくるはず
0995デフォルトの名無しさん
2008/12/29(月) 10:38:57レス数が950を超えています。1000を超えると書き込みができなくなります。