Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[StellarLife] 全コマンドにわたってダイス目がズレている問題を修正(+α) #494

Merged

Conversation

ViVi-shark
Copy link
Contributor

#492, #493 で言及した問題の修正(+α)です。


 以下、〚p○○〛と表記した場合、『ステラーライフTRPG(電子PDF版)』の○○ページを指す。
 『ステラーライフ』と表記した場合、同書を指す。

全コマンドにわたってダイス目がズレている問題

関連コマンド:すべて

 『ステラーライフ』では、10面体ダイスをもちいる。〚p5〛〚p8〛
 その際、(多くの一般的なTRPGとことなり)「0」表記の目を (「10」ではなくそのまま)「0」と読む 。〚p9〛

 ところが、このダイスボットの従来の実装では( BCDice の標準の機能で 1D10 を振ると、( 0 から 9 ではなく) 1 から 10 の範囲をとるので) 1D10 の結果からマイナス1することで、 0 から 9 の範囲を実現していた。
 この実装でも確率分布はもちろん変わらないのだが、 「ステラーライフの専用機能内でもちいる(そして出力メッセージにふくまれる)数字はマイナス1されたもので、生の乱数部分はマイナス1されていない状態の出力」 が発生する。

(現行バージョンの実際の出力の例)
image

 これは“乱数の出力をもとにダイスのアニメーション演出をおこなう”サービス等でおかしな状況をうみだしてしまう。

( Saipage の例)
image

 よって、これを直した。(この pull request にふくまれる差分の大部分はこれ)

その他の問題

 以下、前述の問題の修正と確認の過程で発見された、関連する問題とその対応に関する説明。

「お題表」の番号がルールブックをズレている問題

関連コマンド:

        ◆ステラーライフお題表
         ・超未来の技術 TET
         ・超未来のエンタメ ENT
         ・超未来の文化 CUT
         ・超未来の自然 NAT
         ・超未来の宇宙船内 INT

 この「お題表」は、前述の(マイナス1の)問題と同時に、別の問題で別のズレかたもしていた。

 『ステラーライフ』における 1D10 形式の表のうち、ほとんどのものは同書内で「 0, 1, 2, ..., 8, 9」という番号の並びで記述されている。(〚p73〛等)
 ところが、「お題表」にかぎっては、「 1, 2, 3, ..., 8, 9, 0 」という番号の並びで記述されている。〚p133~137〛
 そのうえで、従来の実装では(番号の並びの差異にかかわらず)同書の記述順そのままで記述したものを、同じロジック(= 0 → 9 向けのロジック)であつかっていた。

 これを直した。
 直すにあたり、コード上の項目の記述は原著にあわせたほうがリーダビリティとメンテナビリティの観点で妥当と判断し、 0 → 9 向けのテーブルクラスと 1 → 0 向けのテーブルクラスを別個につくってある。

「ランダムNPC艦表」「ランダムイベント表」のバグ

関連コマンド:

         ・ランダムNPC艦表 RNST
         ・ランダムイベント表 RET

 完全に動作がバグっていた(『ステラーライフ』の記述に沿わない動きをしていた)ので直した。〚p120〛〚p123〛
 前者については、テーブルの内容のリストに単純な誤植もあったので、それも直した。

表の結果にまぎれこんでいる余計なホワイトスペース

 単純な誤植と思われる。削除した。対象はつぎの2つ。(該当のホワイトスペース自体は3箇所)

「船名後半表」

 〚p73〛

関連コマンド:

         ・船名後半表 VNRT

「超未来のエンタメ」表

 〚p134〛

関連コマンド:

         ・超未来のエンタメ ENT

リファクタリング

  • 上記の過程で不要になったコードの削除
  • 冗長なコードを削除

テスト

 上記に必要なケースのほか、判定ルールの境界値に関するケースを追加。

ViVi added 24 commits August 18, 2021 19:54
p123

これはズレだけじゃなくて完全におかしかった。
p120

これもズレだけじゃなくて完全におかしかった。
しかも値が合体してるのが3箇所くらいあった。
元の実装は出目( 1 ~ 10 )からマイナス1していた。
が、ルールブック p9 を見るに、 1 ~ 9 については出目をそのまま読むのが正しい。
元は負の数のケースしかなかった。
@codecov
Copy link

codecov bot commented Aug 18, 2021

Codecov Report

Merging #494 (8f56013) into master (8ef80fa) will increase coverage by 0.15%.
The diff coverage is 100.00%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master     #494      +/-   ##
==========================================
+ Coverage   95.42%   95.58%   +0.15%     
==========================================
  Files         296      296              
  Lines       18932    18864      -68     
==========================================
- Hits        18066    18031      -35     
+ Misses        866      833      -33     
Impacted Files Coverage Δ
lib/bcdice/game_system/StellarLife.rb 100.00% <100.00%> (+22.44%) ⬆️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 8ef80fa...8f56013. Read the comment docs.

Copy link
Member

@ysakasin ysakasin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ありがとうございます 👍

@ysakasin ysakasin merged commit e4cf96c into bcdice:master Aug 18, 2021
@ViVi-shark ViVi-shark deleted the feature/StellarLife_fix_dice_numbers branch August 22, 2021 07:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants