Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
必殺技ロジックの実装を半自動化する機構を作った話
Search
akatsukinewgrad
March 05, 2021
Programming
0
2k
必殺技ロジックの実装を 半自動化する機構を作った話
akatsukinewgrad
March 05, 2021
Tweet
Share
More Decks by akatsukinewgrad
See All by akatsukinewgrad
2023/1/25_QAテスター meet up!
akatsukinewgrad
0
150
成果発表資料.pdf
akatsukinewgrad
0
2.1k
広大なフィールドを気持ちよく駆け抜けるための技術.pdf
akatsukinewgrad
0
600
正規表現とReDoS.pdf
akatsukinewgrad
0
590
Unityで大量のオブジェクト_を吹き飛ばしたい.pdf
akatsukinewgrad
0
640
新卒2年目が思う1年目の学び.pdf
akatsukinewgrad
0
560
障害訓練の取り組みについて.pdf
akatsukinewgrad
0
730
7分でわかるアカツキゲームス
akatsukinewgrad
0
590
Bitcoinだけでスマートコントラクト.pdf
akatsukinewgrad
1
990
Other Decks in Programming
See All in Programming
Tinkerbellから学ぶ、Podで DHCPをリッスンする手法
tomokon
0
120
手が足りない!兼業データエンジニアに必要だったアーキテクチャと立ち回り
zinkosuke
0
630
ローターアクトEクラブ アメリカンナイト:川端 柚菜 氏(Japan O.K. ローターアクトEクラブ 会長):2720 Japan O.K. ロータリーEクラブ2025年12月1日卓話
2720japanoke
0
730
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
130
sbt 2
xuwei_k
0
270
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
6
2.9k
UIデザインに役立つ 2025年の最新CSS / The Latest CSS for UI Design 2025
clockmaker
18
7.4k
手軽に積ん読を増やすには?/読みたい本と付き合うには?
o0h
PRO
1
170
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
6
2.2k
ハイパーメディア駆動アプリケーションとIslandアーキテクチャ: htmxによるWebアプリケーション開発と動的UIの局所的適用
nowaki28
0
420
C-Shared Buildで突破するAI Agent バックテストの壁
po3rin
0
380
生成AIを利用するだけでなく、投資できる組織へ
pospome
1
310
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
97
6.4k
Typedesign – Prime Four
hannesfritz
42
2.9k
A Tale of Four Properties
chriscoyier
162
23k
For a Future-Friendly Web
brad_frost
180
10k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Context Engineering - Making Every Token Count
addyosmani
9
500
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Designing for Performance
lara
610
69k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.2k
Automating Front-end Workflow
addyosmani
1371
200k
Transcript
必殺技ロジックの実装を 半自動化する機構を作った話 きょーま @Akatsuki
自己紹介 • 2018年 新卒入社(2021年4月で4年目) • クライアントエンジニア ◦ 新機能作ったり、バグ直したり、たまに企画書いたり • 趣味はゲームとお絵描き
最近は毎日1冊以上ラノベ読んでる
毎回エンジニア実装が必要な必殺技を どんなフローで運用しているのか という話をします
必殺技とは • 特定のキャラが持ってる • 条件を満たすと発動できる • 個性を出すためキャラごとに条件・効果が違う • 例 ◦
このキャラのターンの時、攻撃力+3000、速度+1000 ◦ このキャラのターンで敵を倒した場合、ターン終了時に特定のスキルを付与 ◦ ※ 実際には存在しない架空の必殺技です
必殺技ができるまで 1. 運用チームが大体の内容を議論 2. エンジニアと検証チームで実現方法を議論 3. エンジニアが実装、新機能がある場合は検証 4. バランス調整 5.
リリース! ίίͷ
なぜ毎回エンジニア実装が必要なのか • 必殺技は、ゲームロジックの中ならなんでもできるって思想で作られている • つまり、仕組みとしてあまり型が決まっていないので、 多少効果が変わろうが、毎回新しいことをしようが大体は実現できる • もし、実装無しでパラメータ入力だけでできるようすると、 ある程度型を固めないといけない =
できることが減る、望むところではない • とはいえ、毎回似るようなところは考えなくていいようにしたい
必殺技はどのように実装されているのか • 1つの必殺技につき1つのスクリプトファイルがあって、条件と効果を記述 ◦ 条件は既存のものの組み合わせだけである程度実現可能 ◦ 効果はベーシックな効果と今まで存在しなかった効果に分けられる • 本当に毎回考えないといけないのは、今まで存在していなかった効果の部分 ◦
スクリプトを生成して、条件とよく使う効果の部分は機械的に実装できる
どこを自動化するの? • ベーシックな部分を自動化 ◦ 条件は汎用的なものが多いので、ほぼ全てパラメータで対応可能 ◦ 効果は値をいじる系全般はパラメータで対応可能 • 例 ◦
このキャラのターンで、このスキルを発動させた時 : ここはパラメータで可能 ◦ 攻撃力+3000、速度+1000 : ここもパラメータで可能 ◦ この必殺技で敵を倒した場合、 ランダムな相手のキャラの全能力-20% : ここは幅が広すぎて無理
どうやって自動化したの? • Jenkinsでパラメータを入力したらリポジトリにPRが飛ぶように自動化 ◦ 元々Jenkinsを使った運用フローがあるのでメンバーが理解しやすい ◦ パラメータはどんな条件にするか、どの効果をどんな値にするかなど ύϥϝʔλ ʢखಈʣ 1VMM3FRVFTU
Ϛʔδखಈ
Jenkinsで何やってるの? • シェルスクリプトでコードジェネレート ◦ 雛形を元に、sedコマンドでパラメータに対応するタグを置換 ▪ Attack = <PARAM_ATTACK> みたいなのを
Attack = 3000 に置き換える • Github CLIでPR化 ◦ Githubをコマンドラインから操作できるようにする公式ツール ◦ 去年の9月にv1.0がリリースしたばかり! ▪ https://github.com/cli/cli ◦ gh pr create -t “タイトル” -b “説明文” -B “対象ブランチ” でPRを作れる
半自動化の恩恵 • エンジニアは新しく増える効果の実装に集中できる ◦ 他の作業と並行してやるので、コンテキストスイッチを切り替えるのが大変だった • ベーシックな必殺技の実装ならエンジニア不要 • コードジェネレートに使われるコードは全てテストされている ◦
生成時点でユニットテスト完了扱い、効果としての組み合わせに完全に注目できる ◦ ついでに人為ミスの可能性も減る
まとめ • 継続的になんらかのコストが発生するようなものは、 ◦ 専属の人がいないとどうしようもない部分はできるだけ減らそう! ◦ 減らせなくても負担が軽くなるようにしよう! ◦ 仕組みはドキュメント化しよう!