Tag: ghost’

Party Parrotのゴーストを作った

 - by Don

PARTY OR DIE

キャラクタを追加する

追加キャラクタはサプリメント形式で配布されています。
ダウンロードページでサンプルとしていくつか配布しています。

キャラクタを削除する

つまみ上げて十分な高さから落としてください。

キャラクタを自作する

サプリメントの形式はcaramelldansenの仕様を踏襲しています。
違いは0.png~9.pngの10枚のPNGファイルを使用している点だけです。

install.txtの記述形式

charset,UTF-8
type,supplement
name,(キャラクターの名前)
accept,Sirocco

キャラクターの名前は特に利用していないので何でも構いません。

これらのファイルをzip圧縮して、拡張子をnarに変更します。

麻雀ゴースト正式版公開

 - by Don

雀々BARIBARI Version 1.0.0 を公開しました。

麻雀で遊ぶことができます。同時起動中のゴーストと情報をやり取りすることで多彩な演出を楽しむことができます。

動作環境

SSP
SSP/2.5.05以降でのみ動作します。
ゴーストの使い方 – SSP
初めての方はこちらを参考に導入してください。

サーバーゴースト

雀々BARIBARI
ゴースト本体。
standard
追加シェル。
雀卓用透明バルーン
上記追加シェル専用バルーン。「Nishiki-teki」フォントを使用しますのでそちらを併せてインストールしてください。

クライアントゴースト

雀々BARIBARIと同時起動させてプレイしてください。

そこそこマトモな反応を返すプレイヤーゴースト

雀-リンリン
YAYA製。何を切るかを自身で思考する。守り重視。
雀-チュンチュン
華和梨製。何を切るかを自身で思考する。攻め重視。カン大好き。
雀-ホワンホワン
里々製。何を切るかはサーバーにお任せする。

シンプルなテンプレートゴースト

処理はサーバーに委任して要所要所でそれっぽい反応を返すだけのゴースト。自作ゴーストに取り入れるならこちらがシンプルでおすすめです。

雀白
里々製。
雀発
YAYA製。
雀中
華和梨製。

他所様のゴースト

雀々BARIBARIが採用している伺か特化麻雀通信プロトコル(UKAJONG/0.2)に対応したゴースト。(2021-09-22現在で筆者が捕捉しているもの)

盤上の隅っこで
Lua栞 Kagari/Kotori 製。何を切るかを自身で思考する。

プレイヤーゴーストにおすすめのバルーン

プレイヤーゴーストだけでも3体立たせる必要があるので上向きバルーンがおすすめです。

ゴースト間会話用バルーン「ふきだし7」
はっぷん氏作の神バルーン。ゴースト間コミュニケートを想定したものなので今回の用途にぴったりです。

通信プロトコル

UKADOC Project SHIORI Eventリスト(外部)
UKAJONG/0.2から双方向での通信となります。お任せモードでサーバーがよしなにやってくれますので無理に麻雀AIを自作しなくても大丈夫です。
UMP(Universal Mahjong Protocol)
これをベースに策定していますが厳密に準拠しているわけではないです。参考程度に。

おまけ

MahjongUtil.dll
麻雀に関する機能を提供するSAORIです。雀々BARIBARIや雀-リンリン、雀-チュンチュン等に使われています。

採用ルール

以下は雀々BARIBARIが採用しているルールであり、プロトコル(UKAJONG/0.2)と関連するものではありません。

喰いタン、後付け あり(※1)
形式テンパイ あり(※1)
一発、裏ドラ、槓ドラ あり
ダブロン なし(上家優先)
喰い替え 禁止
フリテンリーチ
ツモ番無しリーチ 不可(残り牌4枚以上で可)
パオ(責任払い) 大三元、大四喜を対象とする
国士無双の暗槓での槍槓 なし
嶺上開花のツモ符 2符とする(※1)
人和 なし(※1)
緑一色の發の要否 不要(※1)
大四喜、四暗刻単騎待ち、
純正九蓮宝燈、国士無双十三面待ち
ダブル役満(※1)

※1…MahjongUtil.dllの仕様です

今後やりたいことなど

気が向いたらやる

  • 牌譜の記録・牌譜再生機能の実装
  • クライアントゴーストからの要求コマンドのバリデーション強化(今は手牌に無い牌も切れる、普通に多牌になる)

諦めた

  • 槍槓(user)。ゴーストは実装済み。半日悩んだけど諦めた。設計からやり直しが必要。
  • 九種么九牌倒牌(ゴースト)。userは実装済み。そもそもコマンドが仕様に無い。UKAJONG/0.3で追加するか。
  • 採用ルールの設定変更。そもそもやりたくない。

やれたらやる(やらない)

  • GHOST以外での(外部アプリによる)サーバーの実装。
  • もっとイケてる仕様(UKAJONG/0.3)の策定。

麻雀ゴーストのballoonを作った

 - by Don

麻雀ゴースト用のballoonを作りました。前回作った追加シェルに合わせたものとなっています。

ghost,shell,balloon3点セットのリンクを並べておきます。

雀々BARIBARI
ゴースト本体。(Assetsを展開するとnarがあります)
standard
追加シェル。
雀卓用透明バルーン
上記追加シェル専用バルーン。「Nishiki-teki」フォントを使用しますのでそちらを先にインストールしてください。

それぞれ独立してネットワーク更新に対応しています。

あとは本体の細部を整えて完成になると思います。別途各種栞による対戦相手AIの作成も検討していく予定です。

麻雀ゴーストのshellを作った

 - by Don

麻雀ゴースト用のshellを作りました。追加シェルという形にして本体とは分離しています。

もう少し弄るかもしれないのでネットワーク更新に対応させました。

サイズがだいぶ大きくて邪魔なのと、balloonでも問題なくゲームをプレイできているのでmasterはそのままにしておこうという考えです。

まだ不具合だらけですが興味のある方はお試しください。

TODO

  • 名前や点数を雀卓内に表示したい
    • 専用バルーンか…

麻雀ゴーストが副露に対応した

 - by Don

進捗報告

副露(ポン、チー、カン)を実装しました。以下に挙げる通り修正すべき箇所はたくさんあるのですが、レアケースは無視して完成を急ぐ方針なので、放置しています。

  • 副露の優先順位(ロン>ポン>チー)が未実装
  • userの副露の選択肢が他家(ゴースト)の副露宣言より優先されている
  • 槍槓未実装
  • 流し満貫未実装

優先して実装したいのはshellですね。いい加減balloonでの操作には限界があります。早いところ見た目だけでも麻雀ゲームらしくしたいところです。

麻雀ゴーストが七対子以外にも対応した

 - by Don

進捗報告

前回(初期公開時)、七対子しか対応していなかった麻雀ゴーストが国士無双および一般手に対応しました。前回からおよそ1ヶ月なので、悪くないペースで開発できているのではないかと思います(当初は数年かかると思っていた)。

対戦相手ゴースト達もネットワーク更新し、ひたすら七対子を狙い続けていたのをお任せモードに変更して一般手も狙うようにしました。

今後の予定

  • 副露(ポン、チー、カン)の実装
  • UIをballoonからshellに移管

これらが実装できたら正式公開と呼んでいいのかなと思います。まだまだ先になりそうですが。

ある程度できあがったら思考エンジンの改良もしていきたいですね。ゴースト毎に打ち筋に特徴(個性)を持たせたりして。
シャンテン数の計算等は何度も処理を呼び出す必要があり、高速化が必須だったのでSAORI化することにしました。こちらも完成したら単体で公開できるようにしたいです。
基本機能さえ高速化して提供できていれば特徴(個性)を持たせるのもゴースト(SHIORI)毎にカスタマイズ可能ではないかと考えています。
里々ではさすがにやりたくないのでお任せモードにしますが。

麻雀サーバーゴーストを作った

 - by Don

外部アプリとしての麻雀ゲームからのイベント通知を想定した麻雀クライアントゴーストは以前作ったのですが、双方向での通信(何を切るかの問い合わせ等)がやりたかったのでゴーストで麻雀ゲームを作ることにしました。まだ七対子の形式しか対応していませんが、クライアントゴーストとの双方向のやり取りは上手く動いているようなのでキリの良いところで一度晒そうと思い立った次第です。

雀々BARIBARI
麻雀サーバーゴースト。製。まだ七対子しか対応していない。
雀-リンリン
麻雀クライアントゴースト。YAYA製。何を切るかを自身で思考する。
雀-チュンチュン
麻雀クライアントゴースト。華和梨製。何を切るかを自身で思考する。
雀-ホワンホワン
麻雀クライアントゴースト。里々製。何を切るかはサーバーにお任せする。

まだおよそ麻雀と呼べるような代物ではありませんが、七対子しか対応していないが故にかえって麻雀を知らない人の方が楽しめるかもしれません。

ゴースト同士ということで通信に\![raiseother]を使用していますが、昨日の記事にある通り、今後はDirectSSTPを使用した外部アプリケーションとの情報のやり取りにも対応できるよう柔軟な仕様の策定を見据えていきたいです。

夢はどこまでも広がりますが、まずは普通の形式(七対子以外)で和了れるようにしないとですね。

ゴースト「箱入り娘」公開

 - by Don

箱入り娘

ダウンロード:箱入り娘

箱入り娘 (パズル)で遊ぶことができるゴーストです。ゴーストマスカレード3で提出したゴーストの正式公開版となります。ネットワーク更新に対応しております。バグ等があれば修正していく所存でおります。

仕様

スタンプ帳対応

プラグイン「スタンプ帳」に対応しています。クリアするとスタンプがもらえます。

イベント通知

箱入り娘は、同時起動中のゴーストに対してイベント通知をしています。

ID: OnKlotski
Reference0: バージョン (例:"klotski/0.1")
Reference1: コマンド   (例:"BROADCAST")
Reference2: コマンドID (例:"status")
Reference3: 1行目      (例:"祖母,祖父,母親,父親")
Reference4: 2行目      (例:"祖母,祖父,母親,父親")
Reference5: 3行目      (例:"華道,書道,兄弟,兄弟")
Reference6: 4行目      (例:"空白,娘,娘,和裁")
Reference7: 5行目      (例:"空白,娘,娘,茶道")
Reference8: step       (例:"116")

これにより同時起動中のゴーストは駒の配置を認識することができます。

外部から実行できる関数

辞書に定義されている関数はそのままの名前で実行できます。(ランダムに動かす例:\![raiseother,箱入り娘,moveRandom])

引数が必要な関数は、(int型やstring型であれば)Referenceを指定することで実行できるようにしたOnKlotski関数を用意しています。(娘を右に動かす例:\![raiseother,箱入り娘,OnKlotski,klotski/0.1,EXECUTE,function,moveRight,娘])

その他

作者がこのパズルを知ったのは今年の1月です。以下のTweetがたまたまTLに流れてきました。

わりと有名なパズルなのですね。知らなかった。機会があれば遊んでみたいと思っていたのですが、ゴーストマスカレード3が企画されたことで、機会は自分で作ればいいと思い、制作に至りました。自分で作ったクセに未だクリアできていません。助けて。

追記

ゴースト「しぇるずかん」公開

 - by Don

しぇるずかん

ダウンロード:しぇるずかん

フリーシェルWikiを閲覧できるゴーストです。ゴーストマスカレード3で提出したゴーストの正式公開版となります。ネットワーク更新に対応しております。バグ等があれば修正していく所存でおります。

イベント提出版からの変更点

  • 「全取得」メニューの上限値を20件から50件へ緩和
  • すべてのメニュー階層に「戻る」を追加(シェル個別ページは現在絞り込み中の作者名または属性名のアンカーを赤文字で表示することで「戻る」への代替とした)

ごーとうさんから改善案を頂けたことにより我ながら「前より使いやすい!」ってなりました。ありがとうございます。

ごーすとじてん

ダウンロード:ごーすとじてん

上記追加シェル:ねこぴょんかんけい3

2007年に作ったゴーストですが、まだなんとか動いているようなので、もしよろしければこちらもセットでどうぞ。

メニューから「format ghost data」を実行してください。完了するとインストール済のゴースト一覧が閲覧できます。「♪」マークでゴーストをコールできるのでゴーストエクスプローラ的な使い方ができるかと思います。

しぇるずかん同様、マウスホイールでパラパラとページめくりができるので使い方によっては便利かと思います。

おまけ

特殊な対応が施されたゴーストからは追加情報を読み取ることができます。(画像:ゴースト「アマイロ」)

ghostbook-page-of-amairo

ゴーストの好感度の取得

 - by Don

これを見て思いついた実装がこんなイメージ。

最初はプラグインで作ろうとしたのですが色々と障壁が多すぎて断念しました。素直にOnRequestValues/OnGetValuesを使ってごーすとじてんのデータ収集機能に含めることにしました。こういうメタ情報を扱うならこのゴーストに"似合う"だろうし。

双方向でないのはバルーンに右寄せして重ねるのが大変だったからという理由でしかありません。

以下、今回取得対象としたプロパティ名です。(※里々での対応)

#-----------------------------------------------------------
# OnRequestValues対応
#-----------------------------------------------------------
@OnRequestValues
\![raiseother,(R0),OnGetValues,(FMO0name)(loop,AddRVArg,1,(Rの数))]
@AddRVArg
(call(バイト値,1)AddRVArgExist_(単語群「(R(AddRVArgカウンタ))」の存在)(バイト値,1)(R(AddRVArgカウンタ)))
@AddRVArgExist_1
,(A0)=((A0))
#-----------------------------------------------------------
# 好感度プロパティ
# 存在しない場合は無くて良い
#-----------------------------------------------------------
#\0の\1に対する好感度 0~10までの値にしておくとバルーン内に収まるハズ
@01好感度
1
#\0の\2に対する好感度
@02好感度
2
#\0のuserに対する好感度
@0user好感度
3
#以下同様
@10好感度
4
@12好感度
5
@1user好感度
6
@20好感度
7
@21好感度
8
@2user好感度
9
#好感度を表示する際にバルーンに表示する\0のアイコンの絶対パスまたは相対パス
#相対パスは送信先から見たものなので上の階層に上がってから降りてくる
#大きさはバルーンサイズ的に30pxくらいが丁度いいと思う
@0好感度アイコン画像パス
..\..\..\your-ghost-directory\ghost\master\image\ca0.png
@1好感度アイコン画像パス
..\..\..\your-ghost-directory\ghost\master\image\ca1.png
@2好感度アイコン画像パス
..\..\..\your-ghost-directory\ghost\master\image\ca2.png
@user好感度アイコン画像パス
..\..\..\your-ghost-directory\ghost\master\image\causer.png
#特殊プロパティ
#通常">"のところを別のマークに変える 以下はハートマークのUnicode
@0user好感度マーク
\_u[0x2665]

ごーすとじてんの各ゴーストページ上部プロフィールボタン「P」の左に新しく追加した「C」ボタンから確認できます。