Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
STEPの割り振りをStreamlit
Search
show you
June 03, 2023
Programming
0
220
STEPの割り振りをStreamlit
ゲームのパラメータ割り振りを、PythonのライブラリであるStreamlitを使って行いました
show you
June 03, 2023
Tweet
Share
More Decks by show you
See All by show you
ラブライブ!向けのRDFを作ったよ!
showyou
0
41
AI真乃さんとLLMの発展
showyou
0
120
k8s低価格で使う
showyou
0
260
A horror story of digdag
showyou
1
1.1k
Other Decks in Programming
See All in Programming
設計やレビューに悩んでいるPHPerに贈る、クリーンなオブジェクト設計の指針たち
panda_program
6
1.8k
Deep Dive into ~/.claude/projects
hiragram
10
2.2k
Webの外へ飛び出せ NativePHPが切り拓くPHPの未来
takuyakatsusa
2
460
プロダクト志向ってなんなんだろうね
righttouch
PRO
0
170
ruby.wasmで多人数リアルタイム通信ゲームを作ろう
lnit
2
330
ニーリーにおけるプロダクトエンジニア
nealle
0
710
Hypervel - A Coroutine Framework for Laravel Artisans
albertcht
1
110
20250704_教育事業におけるアジャイルなデータ基盤構築
hanon52_
4
240
Cursor AI Agentと伴走する アプリケーションの高速リプレイス
daisuketakeda
1
130
Team operations that are not burdened by SRE
kazatohiei
1
290
XP, Testing and ninja testing
m_seki
3
220
LT 2025-06-30: プロダクトエンジニアの役割
yamamotok
0
660
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
GitHub's CSS Performance
jonrohan
1031
460k
Gamification - CAS2011
davidbonilla
81
5.3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
The World Runs on Bad Software
bkeepers
PRO
69
11k
How STYLIGHT went responsive
nonsquared
100
5.6k
Speed Design
sergeychernyshev
32
1k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
How GitHub (no longer) Works
holman
314
140k
Side Projects
sachag
455
42k
Transcript
シャニマスのS.T.E.P.最適化 Webアプリを作ってみた IM@Study 2023 しょうゆ 1
諸注意 • 当発表はしょうゆの趣味で作成しております • 本業(アイマスでいう所の副業)とは無関係となっております • ここで話す”シャニマス”は、enza版ブラウザゲームの”アイドルマスター シャイニー カラーズ”の事を指します (つい先日音ゲーのシャニソンが発表されたので念のため)
2
今日話す内容 • シャニマスのSTEPの(条件付きで)最適な割り振りを行うツールを作った • もう少し学術的な話 3
自己紹介 名前:しょうゆ JTCのデータエンジニア リングチームのマネージャ SNS: Twitter: @showyou, @shsub(こっちが趣味の話多め) mstdn.jp:
@showyou imastodon.net: @showyou (フサギコさんお世話になってます) アイマス歴: 現地参戦:シャニ3rd -> デレ10th幕張 -> 765AS幕張 -> ミリ9th -> MoIW 担当:真乃, 美希, 卯月, 愛梨 サブ:このみ、歌織 諸事情によりモバマスは初期から知ってます 4
シャニマスのS.T.E.P.とは • 育成ゲームであるシャニマスの中でも、特に育成に特化したパート • ストーリー部分は自動カット(後で見返し可能) • トレーニング等でポイントを稼いで、”成長”でパラメータを上げる • 1プレイ10分くらいで育成可能 •
現状センター以外の育成はこれ一択 • センターだけは親愛度の問題で 使えない(今のところは) そもそもグレフェスを何人プレイしてるのか 5
育成時の悩み 育成ポイントは溜まった。 で、どういう風に割り振れば属性値一番高くなるか? 6
ステータスを上げるために必要なポイント 線形になっていれば方程式を解くだけで最適解は求まる しかしS.T.E.P.は非線形に必要ポイントが上がるので、解きにくい 7
http://showyou41.win/shinystep 自動で最適化するツール作りました 8
技術的な紹介 Streamlit: pythonで軽く書くだけで、Webアプリケーションが作れるツール https://streamlit.io/ straylight.run()・・ではなく streamlit run hoge.py でWebサーバ立ち上げ可能 9
実装方法 • Streamlitで入力部分のパーツを作成 • 最適化ロジックを実装 • 結果をStreamlitで表示 • 通常、状態変更時遷移の実装が必要だが、Streamlitは勝手に対応 10
最適化ロジック 本気で対応しようとすると、後述の線形計画法等の知識が必要? ここでは簡易的に、以下の方針で対応した 1. まず上限+10をできる限り選択 -> この時の上限値 >= 上げたい能力の最大値 2.
ここから上げたい能力を上げて、ポイントが不足したら上限値を下げていく ただし能力 <= 上限は守ること 11
デモ 12
もうちょっと学術的な話 一定の制約条件の中で、値を最小化する問題を 組み合わせ最適化問題と呼ぶ 最大化はどうなんだ?って話もありそうですが、評価関数に -をつければ最大化も最小化の問題と捉え ることが可能 https://qard.is.tohoku.ac.jp/T-Wave/knapsack-with-integer-weights/ 例:ナップサック問題 重さWまで耐えられるナップサックに、価値c が最大になるように荷物を詰めたい
13 他にも工場の最適な生産計画を導出するの 等にも使われる
今回のS.T.E.P.で言うと • • • 上限 >= 属性値 を満たす最大の(属性強化回数, 上限強化回数) を見つける問題になる
ただしf_属性(x)とf_sp(x)は、右図やP8でも挙げた 非連続関数 (ちなみに属性値、上限値は 初期値 + 強化回数*10で計算可能) 14 団結力
よくある解法 普通のプログラミング言語では、動的計画法(DP)を使って解かれる事が多い 一方でPythonにはPulpなどの線形計画法(数理最適化のうち、不等式などで表現できる もの)のライブラリがあるので、使えば効率的に出せそう?(非連続だが) http://www.nct9.ne.jp/m_hiroi/light/pulp01.html 15
結論 • シャニマスのSTEPの計算ツールをStreamlitで作った ソース https://github.com/showyou/shinycolors_step_calculator • 組み合わせ最適化問題の話もした • Streamlitを使えば、最適値の計算ツールなども サクッと作れる
16
できていないところ 本来のS.T.E.P.の強化では、属性値、属性上 限以外にもSP値消費で取れる上限アップも あります。 今回はこれらの要素は計算に含めていませ ん (条件付き=>これ) 計算後に残りSPを出すようにしているので、 そのSPを使って上限アップを取得して下さい 17
で、今は? 18 あれ?
ステータスを上げるだけではグレ7には上がれない 19 ノウハウ収集・・パーフェクトリー・・
あといいわけ 20
権利絡み アイドルマスター シャイニーカラーズなどの権利は、バンダイナムコ様が保有しておりま す こういったデータの解析は怒られそうな気もしますが、S.T.E.P.に関しては全ての情報が ユーザに見えてるので許してほしい・・ 21