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
66
AI真乃さんとLLMの発展
showyou
0
130
k8s低価格で使う
showyou
0
260
A horror story of digdag
showyou
1
1.1k
Other Decks in Programming
See All in Programming
UbieのAIパートナーを支えるコンテキストエンジニアリング実践
syucream
2
720
Jakarta EE Core Profile and Helidon - Speed, Simplicity, and AI Integration
ivargrimstad
0
200
TanStack DB ~状態管理の新しい考え方~
bmthd
2
340
マイコンでもRustのtestがしたい その2/KernelVM Tokyo 18
tnishinaga
2
2.3k
KessokuでDIでもgoroutineを活用する / Go Connect #6
mazrean
0
110
TDD 実践ミニトーク
contour_gara
0
150
Scale out your Claude Code ~自社専用Agentで10xする開発プロセス~
yukukotani
9
2.6k
Flutterと Vibe Coding で個人開発!
hyshu
1
270
あのころの iPod を どうにか再生させたい
orumin
2
2.5k
Infer入門
riru
4
1.6k
AI OCR API on Lambdaを Datadogで可視化してみた
nealle
0
180
あなたとJIT, 今すぐアセンブ ル
sisshiki1969
1
730
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
25
1.8k
Gamification - CAS2011
davidbonilla
81
5.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.6k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
BBQ
matthewcrist
89
9.8k
The Cult of Friendly URLs
andyhume
79
6.5k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.1k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Practical Orchestrator
shlominoach
190
11k
GraphQLとの向き合い方2022年版
quramy
49
14k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
Scaling GitHub
holman
462
140k
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