Enviar pesquisa
Carregar
スクリプトエンジンをつくる話
•
1 gostou
•
3,548 visualizações
すずしめ
Seguir
KMC例会講座 2018/04/23 恋愛シミュレーションゲーム『Lilas』のスクリプトエンジンをつくったときの話です。
Leia menos
Leia mais
Tecnologia
Vista de apresentação de diapositivos
Denunciar
Compartilhar
Vista de apresentação de diapositivos
Denunciar
Compartilhar
1 de 22
Baixar agora
Baixar para ler offline
Recomendados
スクリプトエンジン作って 無双する
スクリプトエンジン作って 無双する
KLab Inc. / Tech
ゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめ
Sugimoto Chizuru
RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装
Koji Morikawa
「3Dゲームをおもしろくする技術 」のいろいろな読み方
「3Dゲームをおもしろくする技術 」のいろいろな読み方
Kouji Ohno
Machinationの紹介
Machinationの紹介
Kazuhisa Minato
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
京大 マイコンクラブ
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
コールバックと戦う話
コールバックと戦う話
torisoup
Recomendados
スクリプトエンジン作って 無双する
スクリプトエンジン作って 無双する
KLab Inc. / Tech
ゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめ
Sugimoto Chizuru
RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装
Koji Morikawa
「3Dゲームをおもしろくする技術 」のいろいろな読み方
「3Dゲームをおもしろくする技術 」のいろいろな読み方
Kouji Ohno
Machinationの紹介
Machinationの紹介
Kazuhisa Minato
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
京大 マイコンクラブ
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
コールバックと戦う話
コールバックと戦う話
torisoup
ゲームシナリオ構成法 2015版
ゲームシナリオ構成法 2015版
小林 信行
Unityでスマホアプリが作れるか?
Unityでスマホアプリが作れるか?
MakotoItoh
AutoGluonではじめるAutoML
AutoGluonではじめるAutoML
西岡 賢一郎
スマートフォンゲーム企画書制作のポイント
スマートフォンゲーム企画書制作のポイント
Tetsuya Kimura
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
【アジャイルサムライ】6章_ユーザストーリーを集める
【アジャイルサムライ】6章_ユーザストーリーを集める
Akio Terayama
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
AIによる未来のUXデサイン? 〜 ChatGPT・AIartなど 〜
AIによる未来のUXデサイン? 〜 ChatGPT・AIartなど 〜
Yoshiki Hayama
「乙女ゲームのシナリオ勉強会」講演スライド
「乙女ゲームのシナリオ勉強会」講演スライド
IGDA JAPAN
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
Takafumi ONAKA
コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!
amusementcreators
【GDM37】ゲームAIにおける意思決定と地形表現~『LEFT ALIVE』を事例に紹介~
【GDM37】ゲームAIにおける意思決定と地形表現~『LEFT ALIVE』を事例に紹介~
dena_genom
WayOfNoTrouble.pptx
WayOfNoTrouble.pptx
Daisuke Yamazaki
ハリウッド流映画脚本講座・特別編「ゲーム」は「キャラクター」がドライブする〜ヒットする、原作付きキャラクターゲームシナリオの作り方〜
ハリウッド流映画脚本講座・特別編「ゲーム」は「キャラクター」がドライブする〜ヒットする、原作付きキャラクターゲームシナリオの作り方〜
小林 信行
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Genya Murakami
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
Yoshiki Hayama
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
ユーザーインタビューからその後どうするの? 発話録からKA法(本質的価値抽出法)でインサイトを見つけよう!
ユーザーインタビューからその後どうするの? 発話録からKA法(本質的価値抽出法)でインサイトを見つけよう!
Yoshiki Hayama
レコメンドエンジン作成コンテストの勝ち方
レコメンドエンジン作成コンテストの勝ち方
Shun Nukui
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Mais conteúdo relacionado
Mais procurados
ゲームシナリオ構成法 2015版
ゲームシナリオ構成法 2015版
小林 信行
Unityでスマホアプリが作れるか?
Unityでスマホアプリが作れるか?
MakotoItoh
AutoGluonではじめるAutoML
AutoGluonではじめるAutoML
西岡 賢一郎
スマートフォンゲーム企画書制作のポイント
スマートフォンゲーム企画書制作のポイント
Tetsuya Kimura
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
【アジャイルサムライ】6章_ユーザストーリーを集める
【アジャイルサムライ】6章_ユーザストーリーを集める
Akio Terayama
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
AIによる未来のUXデサイン? 〜 ChatGPT・AIartなど 〜
AIによる未来のUXデサイン? 〜 ChatGPT・AIartなど 〜
Yoshiki Hayama
「乙女ゲームのシナリオ勉強会」講演スライド
「乙女ゲームのシナリオ勉強会」講演スライド
IGDA JAPAN
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
Takafumi ONAKA
コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!
amusementcreators
【GDM37】ゲームAIにおける意思決定と地形表現~『LEFT ALIVE』を事例に紹介~
【GDM37】ゲームAIにおける意思決定と地形表現~『LEFT ALIVE』を事例に紹介~
dena_genom
WayOfNoTrouble.pptx
WayOfNoTrouble.pptx
Daisuke Yamazaki
ハリウッド流映画脚本講座・特別編「ゲーム」は「キャラクター」がドライブする〜ヒットする、原作付きキャラクターゲームシナリオの作り方〜
ハリウッド流映画脚本講座・特別編「ゲーム」は「キャラクター」がドライブする〜ヒットする、原作付きキャラクターゲームシナリオの作り方〜
小林 信行
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Genya Murakami
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
Yoshiki Hayama
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
ユーザーインタビューからその後どうするの? 発話録からKA法(本質的価値抽出法)でインサイトを見つけよう!
ユーザーインタビューからその後どうするの? 発話録からKA法(本質的価値抽出法)でインサイトを見つけよう!
Yoshiki Hayama
レコメンドエンジン作成コンテストの勝ち方
レコメンドエンジン作成コンテストの勝ち方
Shun Nukui
Mais procurados
(20)
ゲームシナリオ構成法 2015版
ゲームシナリオ構成法 2015版
Unityでスマホアプリが作れるか?
Unityでスマホアプリが作れるか?
AutoGluonではじめるAutoML
AutoGluonではじめるAutoML
スマートフォンゲーム企画書制作のポイント
スマートフォンゲーム企画書制作のポイント
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
【アジャイルサムライ】6章_ユーザストーリーを集める
【アジャイルサムライ】6章_ユーザストーリーを集める
Pythonによる黒魔術入門
Pythonによる黒魔術入門
AIによる未来のUXデサイン? 〜 ChatGPT・AIartなど 〜
AIによる未来のUXデサイン? 〜 ChatGPT・AIartなど 〜
「乙女ゲームのシナリオ勉強会」講演スライド
「乙女ゲームのシナリオ勉強会」講演スライド
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!
【GDM37】ゲームAIにおける意思決定と地形表現~『LEFT ALIVE』を事例に紹介~
【GDM37】ゲームAIにおける意思決定と地形表現~『LEFT ALIVE』を事例に紹介~
WayOfNoTrouble.pptx
WayOfNoTrouble.pptx
ハリウッド流映画脚本講座・特別編「ゲーム」は「キャラクター」がドライブする〜ヒットする、原作付きキャラクターゲームシナリオの作り方〜
ハリウッド流映画脚本講座・特別編「ゲーム」は「キャラクター」がドライブする〜ヒットする、原作付きキャラクターゲームシナリオの作り方〜
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
ユーザーインタビューからその後どうするの? 発話録からKA法(本質的価値抽出法)でインサイトを見つけよう!
ユーザーインタビューからその後どうするの? 発話録からKA法(本質的価値抽出法)でインサイトを見つけよう!
レコメンドエンジン作成コンテストの勝ち方
レコメンドエンジン作成コンテストの勝ち方
Último
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
Último
(11)
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
スクリプトエンジンをつくる話
1.
スクリプトエンジンを つくる話 KMC例会講座 H30/04/23 1
2.
自己紹介 ▪KMC-ID: suzusime ▪京都大学理学部理学科物理科学系4回生 ▪KMCでの活動:ボドゲ・文字・プログラム・root ▪好きなキャラ: 梨花ちゃん(ひぐらし)、チノちゃん(ごちうさ)、 村上椎奈さん(ステラのまほう) 2
3.
スクリプトエンジンとは ▪ノベルゲーム・アドベンチャーゲームを作るためのもの ▪スクリプト(指示書)のようなものを解釈して、 テキストを出したり立ち絵を切り替えたり条件分岐をしたり ▪有名なやつ • 吉里吉里/KAG3: Fate/stay
night とか • NScripter:ひぐらしのなく頃に とか 3 OS ゲームエンジン スクリプトエンジン
4.
例:吉里吉里/KAG3 [wait time=200] *start|スタート [cm] こんにちは。[l][r] ごきげんよろしゅう。[l][r] 改ページしますよ。[p] [cm] 改ページしました。 4 ラベルでジャンプする 改行や改頁、クリック待ちは タグで行う http://www.ultrasync.net/dee/kr2helps/kag3doc/contents/ より
5.
例:CatSystem2 5 #file_01 //1 cg 1
ca01,1,1,1,1,1 rdraw ミネット 「えへへ……良い朝ですね?」 唇に残る柔らかな感触に、幸せな気分が滲む。 俺はくすぐったい気持ちで口端を緩めた。 ラベルでジャンプする コマンド類は別行立て 台詞の前にタブを入れて 発話者の名前を指定 空行や改行が意味を持つ http://cs2.suki.jp/manual/scene/begin/0_basic.html より
6.
Lilas 6
7.
スクリプトエンジンを自作することにした ▪既存エンジンの挙動を学ぶのつらそう ▪文字描画をいいかんじにしたいという欲望 ▪スクリプト言語の文法に「うーん」となるものが多かった ▪昔から作ってみたかった ▪ゲームエンジン部分は Altseed を使う (C#製のいいかんじのゲームエンジン) 7
8.
どうやって作るか ▪要するにスクリプト言語の実行環境を作ればよい ≒新しい言語をつくる 8 ゲームエンジン (Altseed) 実行機械字句・構文解析器スクリプト 翻訳 命令
9.
言語仕様を考える ▪KAG3 と CatSystem2
のスクリプト言語を混ぜた感じ。 LISPっぽい(と人に言われるが私はLISPをよく知らない) 9 #main_start チノ ご注文は[if true うさぎ きつね]ですか? なんちゃって…… [let a true] [let b [if $a 好き 嫌い]] あなたのことが$bです。 台詞の前にタブを入れて 発話者の名前を指定 空行や改行が意味を持つ ラベルでジャンプする これがさいきょーのスクリプト言語や!!!!
10.
試行錯誤 ▪最初は Sprache というC#向けパーサコンビネータライブラリ を使って実装しようとした •
Haskellのparsecみたいなやつ。函数型でイケイケっぽいなにか ▪挫折した • LINQよくわかんないし、そもそもライブラリが何をしているのか よくわからないまま使おうとしていたので詰んだ ▪ちゃんと勉強して伝統的手法でパーサを作ることにした 10
11.
翻訳の流れ 11 前処理 字句解析 構文解析 原スクリプト(入力) 構文木(出力) 整形済みテキスト トークン列
12.
前処理 ▪改行コードをLFに統一する処理 ▪今はこれだけ 12
13.
字句解析 ▪元のスクリプトを「トークン」という単位に分割する 13 ご注文は[if $a うさぎ
きつね]ですか? ご注文は [ if <区切り> $a <区切り> うさぎ <区切り> きつね ] ですか?
14.
文法規則を書き下す ▪トークンの組み合わせがどうなるべきかを書き下す 14
15.
LL(1)構文解析表を作る ▪この文法なら LL(1) という文法の範囲に収まっていそう →
LL(1) 構文解析を行う手続きに従ってやっていく 15
16.
LL(1)構文解析表を作る 16
17.
実装 ▪LL(1)文法は簡単に構文解析器(パーサ)が書ける文法なので、 そんなに難しくはない ▪「LL(1) パーサ」とかでググると実装例が出てくる • 「パーサ
自作」みたいなふわふわした検索語でなくて、 ちゃんと「LL(1)」と書いてやるのがポイント • 検索の前に専門用語を知っていると出てくる情報が違う • こういうのは本で調べたり周りの人に聞いたりすると良い 17
18.
実行機械をつくる ▪当初予定:アセンブリ言語のようなものの実行機械をつくる →函数呼び出しが面倒(コールスタックがどうとか) →構文木を渡したら実行できる機械にすることにした ▪フロー制御をいいかんじにするのがむずかしい • 古人の知恵~ • 言語の用途からしてラベルジャンプだけでよさそう 18
19.
現状 ▪ようやくゲームエンジンに組み込んで動作するようになった ▪まだ函数は if くらいしか組み込んでいない 19
20.
今後の展望 ▪フロー制御系とグラフィック・サウンド系の函数を実装する • まあすぐできるやろ ▪エラーメッセージを良い感じに出すようにする • 現状スクリプトの構文エラーで例外を吐いて落ちる ▪セーブ機能・既読スキップ・ログを実装する ▪函数については
C# Code Provider とかを使ってユーザー側で スクリプトとして実装できるようにすると楽かもしれない(?) 20
21.
感想 ▪実装量自体はそんなに多くないが、実装する前に考えるべき ことが多い ▪世の言語がどうなっているのかの一端が窺い知れた • 吉里吉里/KAG3の解説とか読んでいると大変そうという気分になる ▪勉強になるし面白い ▪でも時間はかかってしまった…… 21
22.
おわりに ▪Lilas絶賛開発中です! • https://lilas.kmc.jp/ 22
Baixar agora