【Unity】テクスチャのダイシング
やること
テクスチャを賽の目に切って扱うことで容量を小さくすることができる。そのコードを書いた。
簡単なものだけどテクスチャのダイシング処理。何が美味しいかというとatlas化したときで、サンプルの1905x1920のテクスチャが2048x1024に収まる。https://t.co/t1lSIuxuuy pic.twitter.com/oNgGTgRm1S
— enu (@_enu) 2020年6月19日
コード
使い方
- UPMでインポートする(リポジトリのREADMEに書いてある)
- 対象のSpriteテクスチャをSpliteEditorで適当にSliceする
DicingImage
コンポーネントを適当なGameObject
にアタッチ(UI用)DicingImage
のSprites
にさっきSliceしてできたSpriteをひとつ放り込んでAuto Correct
ボタンを押す
参考
【Unity】麻雀ライブラリ 2
【Unity】麻雀ライブラリ
何をするライブラリなのか
麻雀のルール部分を実装したライブラリです。
卓上にある牌を管理して、鳴いたりロンしたりといったAPIを提供します。
あるのはルール部分の実装のみなので、「牌を画面に表示する」「ユーザー操作を受け付ける」「AIが打つ」といった部分は別途開発する必要があります。
使い方
半荘の開始
Game
をCreate
してルールを定める
var beforeRoundStart = Game.Create(Random.Range(0, 4), new RuleSetting() { end = new Mahjongs.Rules.EndRule() { extraRoundScoreThreshold = 30000, lengthType = Mahjongs.Rules.LengthType.東風戦, suddenDeathInExtraRound = true, }, payment = new Mahjongs.Rules.PaymentRule(30000, 20, 10, -10, -20), initialScore = 25000, redTile = Mahjongs.Rules.RedTile.赤ドラ3 } );
局の開始
var afterDraw = beforeRoundStart.StartRound();
局を進める
APIを呼ぶと戻り値としてIController
が返ってくるので、これを使ってゲームを進行していく。
// 牌を選択して捨てる var afterDiscard = afterDraw.Discard(tile, riichi: false); // 捨てられた牌を鳴く if (afterDiscard.CanChi(player)) { var afterDraw = afterDiscard.Chi(player, tile); } else { // 鳴かないなら下家へ手番を移す // このとき流局判定も行われる var afterDraw = afterDiscard.AdvanceTurn(out var roundResult, out var finishRoundStates); }
局の終わり
流局や上がりを処理するAPIは、RoundResult
を返す。
// ツモ if (afterDraw.CanTsumo()) { var roundResult = afterDraw.Tsumo(out tsumoResult); }
// ロン if (afterDiscard.CanRon(player)) { var roundResult = afterDiscard.Ron(out ronResult, player); }
// 次の局を開始する
var afterDraw = roundResult.beforeRoundStart.StartRound();
ゲームの終わり
RoundResult
がgameResult
を持っている場合はゲーム終了。
if (roundResult.gameResult != null) { // 終了処理 }
できていないこと
ローカルルールは設定で切り替えられたらいいなあ
- ダブル役満
- 国士無双の暗槓の槍槓
- オープンリーチ
- 花牌、季節牌(赤牌は実装済み)
- 九種九牌処理(流せません)
- 四家立直(流れません)
- 三家和(通常通り点の支払いが行われます)
- トビ無し(トビあり固定)
- 食いタン禁止(アリ固定)
- 喰い替え禁止(あり固定)
- 焼き鳥(なし固定)
- 八連荘(何も起こりません)
- 二翻縛り(常に一翻縛り固定)
追記
そういえば壁牌や山牌の状態については無頓着で、とりあえずシャッフルしてList
にしてある牌を前からとっていくだけというものになっています。
何がまずいかというと、鷲巣麻雀のような山牌もちゃんと管理しなきゃいけない変則ルールに対応できないんですね。要る?
追記2
鷲巣麻雀では山牌は見えずにランダムでしたね
コミケで頒布予定だったもの
アクリルフィギュア2種類。イラストは茹でピーさんに描き下ろしていただきました。
かわいいですね。
サイズ参考。
というわけで次以降サークル参加したら持っていきます。
コミケで頒布予定だったアクリルフィギュアが届いた! 描きおろしイラストで2種類。自作品のグッズは作らにゃ存在しねーぞということに気づいたのでやっていく。画像2枚目はサイズ参考ね。#magicscrolltactics pic.twitter.com/FC3VrU8cJE
— enu@C98火南カ15a (@_enu) 2020年4月29日
4月10日にMagicScrollTactics PS4リリースです
といっても特に追加要素とかはなし! 細かいバグが見つかったのを直したりとかはあるんですが(効果音まわりとか)、ゲームプレイに関して影響のある変更はありません。遊びたいハードで買おう!
ということで、これがMSTに関して現状最後の弾(正月に言ってた「やり残し」)です。なんかSwitch版からえらく時間がかかりましたが、振り返ってみれば燃え尽きてました少々。もう何回通しプレイしたか分かんない。これ以上ゲームが長くなると通しプレイが日をまたぐことになって体力精神ともにきっついなーという感じなので、開発者の皆様におきましては長いゲームにとりかかる時は正気を投げ捨てましょう。二周目とかどうすりゃええねん。
オートプレイは(デバッグ用ではなく)標準機能として実装しとくととても助かります。おすすめ。