Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
すずしめ
PDF, PPTX
3,747 views
スクリプトエンジンをつくる話
KMC例会講座 2018/04/23 恋愛シミュレーションゲーム『Lilas』のスクリプトエンジンをつくったときの話です。
Technology
◦
Read more
1
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 22
2
/ 22
3
/ 22
4
/ 22
5
/ 22
6
/ 22
7
/ 22
8
/ 22
9
/ 22
Most read
10
/ 22
11
/ 22
12
/ 22
13
/ 22
14
/ 22
15
/ 22
16
/ 22
17
/ 22
18
/ 22
19
/ 22
20
/ 22
21
/ 22
22
/ 22
More Related Content
PDF
スクリプトエンジン作って 無双する
by
KLab Inc. / Tech
PDF
CEDEC2016 「コントラスト」で考えるゲームデザイン・レベルデザイン
by
Kouji Ohno
PDF
SceneCapture2Dを使って壁の向こうを見る -気になるあの娘の部屋の壁-
by
祐稀 平良
PPTX
ゲームの楽しさを図式化する ―楽しさを網羅的に分類する「主体性構造モデル」
by
井戸 里志
PDF
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
自宅で出来る!ゲームサーバの作り方
by
光晶 上原
PPTX
Fortniteを支える技術
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
by
エピック・ゲームズ・ジャパン Epic Games Japan
スクリプトエンジン作って 無双する
by
KLab Inc. / Tech
CEDEC2016 「コントラスト」で考えるゲームデザイン・レベルデザイン
by
Kouji Ohno
SceneCapture2Dを使って壁の向こうを見る -気になるあの娘の部屋の壁-
by
祐稀 平良
ゲームの楽しさを図式化する ―楽しさを網羅的に分類する「主体性構造モデル」
by
井戸 里志
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
by
エピック・ゲームズ・ジャパン Epic Games Japan
自宅で出来る!ゲームサーバの作り方
by
光晶 上原
Fortniteを支える技術
by
エピック・ゲームズ・ジャパン Epic Games Japan
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
by
エピック・ゲームズ・ジャパン Epic Games Japan
What's hot
PDF
Unityでオニオンアーキテクチャ
by
torisoup
PPTX
ゲームエンジンの文法【UE4】No.006 3次元座標(直交座標系) ,UE4の単位,アウトライナ,レイヤー
by
Tatsuya Iwama
PPTX
プログラマが欲しい仕様書とは
by
Katsutoshi Makino
PDF
Riderはいいぞ!
by
UnityTechnologiesJapan002
PDF
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
by
Sugimoto Chizuru
PDF
ゲームAI入門(前半)
by
Youichiro Miyake
PPTX
UE4のためのより良いゲーム設計を理解しよう!
by
Masahiko Nakamura
PDF
C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜
by
UnityTechnologiesJapan002
PDF
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
Unityを使ったゲームデザイン超入門
by
小林 信行
PDF
UE4 MultiPlayer Online Deep Dive 実践編2 (ソレイユ株式会社様ご講演) #UE4DD
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
猫でも分かる UE4の新しいサンプル「Action RPG」について
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
ゲーム開発を乗りこなせ! ヒストリア流ゲーム開発マネジメント手法
by
historia_Inc
PPTX
RPGにおけるイベント駆動型の設計と実装
by
Koji Morikawa
PDF
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
by
SEGADevTech
PPTX
ゲームAI・実装事例の紹介
by
Koji Morikawa
PDF
出張ヒストリア ブループリントを書くにあたって大切なこと
by
historia_Inc
PPTX
ゲーム制作初心者が知るべき8つのこと
by
MASA_T_O
PDF
UE4で”MetaHumanを使わずに”耳なし芳一になる10の方法 | UE4 Character Art Dive Online
by
エピック・ゲームズ・ジャパン Epic Games Japan
PPTX
猫でも分かる UE4のAnimation Blueprintの運用について
by
エピック・ゲームズ・ジャパン Epic Games Japan
Unityでオニオンアーキテクチャ
by
torisoup
ゲームエンジンの文法【UE4】No.006 3次元座標(直交座標系) ,UE4の単位,アウトライナ,レイヤー
by
Tatsuya Iwama
プログラマが欲しい仕様書とは
by
Katsutoshi Makino
Riderはいいぞ!
by
UnityTechnologiesJapan002
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
by
Sugimoto Chizuru
ゲームAI入門(前半)
by
Youichiro Miyake
UE4のためのより良いゲーム設計を理解しよう!
by
Masahiko Nakamura
C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜
by
UnityTechnologiesJapan002
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
by
エピック・ゲームズ・ジャパン Epic Games Japan
Unityを使ったゲームデザイン超入門
by
小林 信行
UE4 MultiPlayer Online Deep Dive 実践編2 (ソレイユ株式会社様ご講演) #UE4DD
by
エピック・ゲームズ・ジャパン Epic Games Japan
猫でも分かる UE4の新しいサンプル「Action RPG」について
by
エピック・ゲームズ・ジャパン Epic Games Japan
ゲーム開発を乗りこなせ! ヒストリア流ゲーム開発マネジメント手法
by
historia_Inc
RPGにおけるイベント駆動型の設計と実装
by
Koji Morikawa
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
by
SEGADevTech
ゲームAI・実装事例の紹介
by
Koji Morikawa
出張ヒストリア ブループリントを書くにあたって大切なこと
by
historia_Inc
ゲーム制作初心者が知るべき8つのこと
by
MASA_T_O
UE4で”MetaHumanを使わずに”耳なし芳一になる10の方法 | UE4 Character Art Dive Online
by
エピック・ゲームズ・ジャパン Epic Games Japan
猫でも分かる UE4のAnimation Blueprintの運用について
by
エピック・ゲームズ・ジャパン Epic Games Japan
スクリプトエンジンをつくる話
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
Download