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
必殺技ロジックの実装を半自動化する機構を作った話
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
akatsukinewgrad
March 05, 2021
Programming
2k
0
Share
必殺技ロジックの実装を 半自動化する機構を作った話
akatsukinewgrad
March 05, 2021
More Decks by akatsukinewgrad
See All by akatsukinewgrad
2023/1/25_QAテスター meet up!
akatsukinewgrad
0
160
成果発表資料.pdf
akatsukinewgrad
0
2.2k
広大なフィールドを気持ちよく駆け抜けるための技術.pdf
akatsukinewgrad
0
640
正規表現とReDoS.pdf
akatsukinewgrad
0
620
Unityで大量のオブジェクト_を吹き飛ばしたい.pdf
akatsukinewgrad
0
680
新卒2年目が思う1年目の学び.pdf
akatsukinewgrad
0
600
障害訓練の取り組みについて.pdf
akatsukinewgrad
0
770
7分でわかるアカツキゲームス
akatsukinewgrad
0
630
Bitcoinだけでスマートコントラクト.pdf
akatsukinewgrad
1
1.1k
Other Decks in Programming
See All in Programming
UaaL×Androidアプリのメモリ計測 — Memory Profilerの先へ
rio432
0
120
Building on Bluesky's AT Protocol with Ruby
mackuba
0
110
AIを導入する前にやるべきこと
negima
2
330
20年以上続くプロダクトでも使い続けられる静的解析ツールを求めて
matsuo_atsushi
0
140
ローカルLLMでどこまでコードが書けるか / How much code can be written on a local LLM
kishida
2
320
Cache-moi si tu peux : patterns et pièges du cache en production - Devoxx France 2026 - Conférence
slecache
0
330
GitHubCopilotCLIをはじめよう.pdf
htkym
0
330
Structured Concurrency, Scoped Values and Joiners in the JDK 25 26 27
josepaumard
1
140
クラウドネイティブなエンジニアに向ける Raycastの魅力と実際の活用事例
nealle
2
250
エラー処理の温故知新 / history of error handling technic
ryotanakaya
7
1.8k
AIと共に生きる技術選定 2026
sgash708
0
130
Terraform言語の静的解析 / static analysis of Terraform language
wata727
1
140
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
33
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
10k
Context Engineering - Making Every Token Count
addyosmani
9
870
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
A better future with KSS
kneath
240
18k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
HDC tutorial
michielstock
2
650
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
280
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
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を作れる
半自動化の恩恵 • エンジニアは新しく増える効果の実装に集中できる ◦ 他の作業と並行してやるので、コンテキストスイッチを切り替えるのが大変だった • ベーシックな必殺技の実装ならエンジニア不要 • コードジェネレートに使われるコードは全てテストされている ◦
生成時点でユニットテスト完了扱い、効果としての組み合わせに完全に注目できる ◦ ついでに人為ミスの可能性も減る
まとめ • 継続的になんらかのコストが発生するようなものは、 ◦ 専属の人がいないとどうしようもない部分はできるだけ減らそう! ◦ 減らせなくても負担が軽くなるようにしよう! ◦ 仕組みはドキュメント化しよう!