Submit Search
Upload
ゲーム組み込み用スクリプト言語を作ってみた
•
Download as PPTX, PDF
•
3 likes
•
4,327 views
M
MASA_T_O
Follow
C#のExpressionTreeを使って作成したスクリプト言語の簡単な紹介
Read less
Read more
Technology
Report
Share
Report
Share
1 of 20
Download now
Recommended
ゲーム組み込み向け独自スクリプト言語の設計で気を付けている事
ゲーム組み込み向け独自スクリプト言語の設計で気を付けている事
Shun Moriya
金大アルゴリズム勉強会#007資料
金大アルゴリズム勉強会#007資料
Takumi Murano
スクリプト・プログラマー宣言
スクリプト・プログラマー宣言
kanemu
二求の塾 プログラミング講座(2019-08-10)
二求の塾 プログラミング講座(2019-08-10)
Atsuo Yamasaki
Programming school 02
Programming school 02
Masato Nakajima
30分で作ってRubyを体感資料
30分で作ってRubyを体感資料
松本 雄貴
磯野ー!Dartやろうぜー!
磯野ー!Dartやろうぜー!
uka yare
はじめてのChu カッコカリ
はじめてのChu カッコカリ
Masuda Tomoaki
Recommended
ゲーム組み込み向け独自スクリプト言語の設計で気を付けている事
ゲーム組み込み向け独自スクリプト言語の設計で気を付けている事
Shun Moriya
金大アルゴリズム勉強会#007資料
金大アルゴリズム勉強会#007資料
Takumi Murano
スクリプト・プログラマー宣言
スクリプト・プログラマー宣言
kanemu
二求の塾 プログラミング講座(2019-08-10)
二求の塾 プログラミング講座(2019-08-10)
Atsuo Yamasaki
Programming school 02
Programming school 02
Masato Nakajima
30分で作ってRubyを体感資料
30分で作ってRubyを体感資料
松本 雄貴
磯野ー!Dartやろうぜー!
磯野ー!Dartやろうぜー!
uka yare
はじめてのChu カッコカリ
はじめてのChu カッコカリ
Masuda Tomoaki
The Steps of Programming
The Steps of Programming
shundroidk
シナリオレビューという手法の提案
シナリオレビューという手法の提案
tuna cook
Intelli code
Intelli code
m ishizaki
初心者目線でIo t
初心者目線でIo t
Makoto Nishimura
平成26年度 マルチメディア研究同好会 ゲーム/コンピューター班 新入会員の指導・活動予定の概要
平成26年度 マルチメディア研究同好会 ゲーム/コンピューター班 新入会員の指導・活動予定の概要
Multimedia Research Club (TMCIT)
WordPress 3.8 RC1
WordPress 3.8 RC1
BREN
Javaプログラミング入門【第1回】
Javaプログラミング入門【第1回】
Yukiko Kato
第0回プログラミング講座
第0回プログラミング講座
happo31
オンライン英会話のモチベーション維持!
オンライン英会話のモチベーション維持!
civicpg
CodingTips+ 基礎編
CodingTips+ 基礎編
Yusuke Ito
複数人でSwift開発を行うには
複数人でSwift開発を行うには
Yuya Fujiwara
プログラミング教室 シーズン1
プログラミング教室 シーズン1
Yu Kohase
アクセサリ部
アクセサリ部
Tatsuya Iwanari
JXUG Windowsアプリを開発している皆さん、C#でスマホアプリ開発を試してみませんか?ハンズオン
JXUG Windowsアプリを開発している皆さん、C#でスマホアプリ開発を試してみませんか?ハンズオン
Tomohiro Suzuki
プログラミング言語は怖くない
プログラミング言語は怖くない
Shoichi Matsuda
議論を描く技術「ファシリテーショングラフィック」
議論を描く技術「ファシリテーショングラフィック」
nishikawa_makoto7
JS/Canvas Tutorial1
JS/Canvas Tutorial1
秀俊 伊藤
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
Fujio Kojima
メタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらば
Kouji Matsui
開発から見たWindowsの国際化機能
開発から見たWindowsの国際化機能
Tadahiro Ishisaka
2014年の社内新人教育テキスト #3(オブジェクト指向言語ふりかえり)
2014年の社内新人教育テキスト #3(オブジェクト指向言語ふりかえり)
Shin-ya Koga
ノーコード・ローコード開発の意義
ノーコード・ローコード開発の意義
千紘 佐野
More Related Content
What's hot
The Steps of Programming
The Steps of Programming
shundroidk
シナリオレビューという手法の提案
シナリオレビューという手法の提案
tuna cook
Intelli code
Intelli code
m ishizaki
初心者目線でIo t
初心者目線でIo t
Makoto Nishimura
平成26年度 マルチメディア研究同好会 ゲーム/コンピューター班 新入会員の指導・活動予定の概要
平成26年度 マルチメディア研究同好会 ゲーム/コンピューター班 新入会員の指導・活動予定の概要
Multimedia Research Club (TMCIT)
WordPress 3.8 RC1
WordPress 3.8 RC1
BREN
Javaプログラミング入門【第1回】
Javaプログラミング入門【第1回】
Yukiko Kato
第0回プログラミング講座
第0回プログラミング講座
happo31
オンライン英会話のモチベーション維持!
オンライン英会話のモチベーション維持!
civicpg
CodingTips+ 基礎編
CodingTips+ 基礎編
Yusuke Ito
複数人でSwift開発を行うには
複数人でSwift開発を行うには
Yuya Fujiwara
プログラミング教室 シーズン1
プログラミング教室 シーズン1
Yu Kohase
アクセサリ部
アクセサリ部
Tatsuya Iwanari
JXUG Windowsアプリを開発している皆さん、C#でスマホアプリ開発を試してみませんか?ハンズオン
JXUG Windowsアプリを開発している皆さん、C#でスマホアプリ開発を試してみませんか?ハンズオン
Tomohiro Suzuki
プログラミング言語は怖くない
プログラミング言語は怖くない
Shoichi Matsuda
議論を描く技術「ファシリテーショングラフィック」
議論を描く技術「ファシリテーショングラフィック」
nishikawa_makoto7
JS/Canvas Tutorial1
JS/Canvas Tutorial1
秀俊 伊藤
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
Fujio Kojima
メタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらば
Kouji Matsui
What's hot
(19)
The Steps of Programming
The Steps of Programming
シナリオレビューという手法の提案
シナリオレビューという手法の提案
Intelli code
Intelli code
初心者目線でIo t
初心者目線でIo t
平成26年度 マルチメディア研究同好会 ゲーム/コンピューター班 新入会員の指導・活動予定の概要
平成26年度 マルチメディア研究同好会 ゲーム/コンピューター班 新入会員の指導・活動予定の概要
WordPress 3.8 RC1
WordPress 3.8 RC1
Javaプログラミング入門【第1回】
Javaプログラミング入門【第1回】
第0回プログラミング講座
第0回プログラミング講座
オンライン英会話のモチベーション維持!
オンライン英会話のモチベーション維持!
CodingTips+ 基礎編
CodingTips+ 基礎編
複数人でSwift開発を行うには
複数人でSwift開発を行うには
プログラミング教室 シーズン1
プログラミング教室 シーズン1
アクセサリ部
アクセサリ部
JXUG Windowsアプリを開発している皆さん、C#でスマホアプリ開発を試してみませんか?ハンズオン
JXUG Windowsアプリを開発している皆さん、C#でスマホアプリ開発を試してみませんか?ハンズオン
プログラミング言語は怖くない
プログラミング言語は怖くない
議論を描く技術「ファシリテーショングラフィック」
議論を描く技術「ファシリテーショングラフィック」
JS/Canvas Tutorial1
JS/Canvas Tutorial1
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
メタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらば
Similar to ゲーム組み込み用スクリプト言語を作ってみた
開発から見たWindowsの国際化機能
開発から見たWindowsの国際化機能
Tadahiro Ishisaka
2014年の社内新人教育テキスト #3(オブジェクト指向言語ふりかえり)
2014年の社内新人教育テキスト #3(オブジェクト指向言語ふりかえり)
Shin-ya Koga
ノーコード・ローコード開発の意義
ノーコード・ローコード開発の意義
千紘 佐野
大阪DDD読書会ワークショップvol.1ガイダンス
大阪DDD読書会ワークショップvol.1ガイダンス
kumamidori
GoでMinecraftっぽいの作る
GoでMinecraftっぽいの作る
京大 マイコンクラブ
プログラミングを早くする方法
プログラミングを早くする方法
kazukiTakahashi18
勉強会 - 1
勉強会 - 1
KenjiYamasaki5
エンジニアのためのSpread Sheets講座101 - Google Apps Script -
エンジニアのためのSpread Sheets講座101 - Google Apps Script -
Yuki Katada
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
Fujio Kojima
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Koji SHIMADA
Let's join in OpsWorks world!
Let's join in OpsWorks world!
Shigeo Nakano
最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介
Ryo Iinuma
enchant.jsを使った子ども向けプログラミングワークショップ講義内容
enchant.jsを使った子ども向けプログラミングワークショップ講義内容
Yuki Tanaka
自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptx
hkharu0803
3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた
Yasushi Kato
ドメイン駆動設計の学習曲線とブレークポイント
ドメイン駆動設計の学習曲線とブレークポイント
増田 亨
2011年10月21日
2011年10月21日
nukaemon
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
増田 亨
実用Brainf*ckプログラミング入門編
実用Brainf*ckプログラミング入門編
京大 マイコンクラブ
本の紹介
本の紹介
t w
Similar to ゲーム組み込み用スクリプト言語を作ってみた
(20)
開発から見たWindowsの国際化機能
開発から見たWindowsの国際化機能
2014年の社内新人教育テキスト #3(オブジェクト指向言語ふりかえり)
2014年の社内新人教育テキスト #3(オブジェクト指向言語ふりかえり)
ノーコード・ローコード開発の意義
ノーコード・ローコード開発の意義
大阪DDD読書会ワークショップvol.1ガイダンス
大阪DDD読書会ワークショップvol.1ガイダンス
GoでMinecraftっぽいの作る
GoでMinecraftっぽいの作る
プログラミングを早くする方法
プログラミングを早くする方法
勉強会 - 1
勉強会 - 1
エンジニアのためのSpread Sheets講座101 - Google Apps Script -
エンジニアのためのSpread Sheets講座101 - Google Apps Script -
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Let's join in OpsWorks world!
Let's join in OpsWorks world!
最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介
enchant.jsを使った子ども向けプログラミングワークショップ講義内容
enchant.jsを使った子ども向けプログラミングワークショップ講義内容
自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptx
3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた
ドメイン駆動設計の学習曲線とブレークポイント
ドメイン駆動設計の学習曲線とブレークポイント
2011年10月21日
2011年10月21日
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
実用Brainf*ckプログラミング入門編
実用Brainf*ckプログラミング入門編
本の紹介
本の紹介
Recently uploaded
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
Recently uploaded
(12)
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
ゲーム組み込み用スクリプト言語を作ってみた
1.
ゲーム組み込み用スクリ プト言語を作ってみた 2013年6月1日
2.
目次 目的 言語仕様策定
作る 作った
3.
目的 細かい調整するにはスクリプト言語がいい 小規模なロジックをたくさん書くのに便利
既存言語調べるのめんどくさい 作るの楽しそう
4.
言語仕様策定
5.
基本事項 言語の開発はC#で 動作環境もC#で
1フレームで数百回走らせられる速度 コンパイル型にする
6.
方針 単純な命令は書きやすく 括弧なしでのメソッド呼び出し
オーバーロードを簡単に 名前付き引数的機能 手続き型っぽく 実装の簡単化 1種類のオブジェクトにつき1本のスクリプト
7.
実際のスクリプト 実演
8.
スクリプトでパーティクル制御
9.
作る
10.
処理の流れ ソースの文字列の読み込み プリプロセッサ
文字列をトークン分割(スキャナ) トークン : スペースで区切られた単語や改行文字 トークン列を構文に整理(パーサ) 構文を実行可能形式に変換(プロセッサ) 実行
11.
ソースの読み込み 普通のファイル読み込み 暗号化して固めたデータからの読み込みも別 途サポートした
12.
プリプロセッサ 定数定義の#defineと単純な#includeをサポー ト 入力ソースを適当に置換して実装
13.
スキャナ 入力文字列をスペースでトークンに分割 手抜き
トークンを型付けする 数値リテラルはfloat値に 演算子やタブ、改行などは対応する列挙体に その他は文字列に トークンの配列を返す
14.
パーサ コメント部分を除去 トークン列を改行を目印に行に分割
行にインデントの深さも与える 行内のカッコを再帰的にまとめる カッコで括られた部分を一塊のオブジェクト に
15.
プロセッサ基本方針 .NETのExpression Treeというライブラリを使 用
式の木構造をオブジェクトで組んでコンパイ ルすると、そのまま実行可能な無名関数を返 す! 本体側のメソッド呼び出しにはリフレクショ ンを活用
16.
プロセッサ準備 本体側のメソッドやプロパティを呼び出す準 備 1つの型につき1つの「識別子-メソッド情報」 辞書
全ての型で1つ、グローバル関数の辞書も用意
17.
プロセッサ1 トップレベルの文を1つずつパース トップレベルの文=必ず実行される文
文がどの構文かをチェック 最初の1、2単語を見て判断可能 制御文、代入文、宣言文でなければメソッド呼び 出し 実行中に使う数値型は基本的に全てfloat
18.
作った
19.
速度テスト float i =
0; float j = 0; while (i < 1000){ j = 0; while (j < 1000){ j++; } i++; } というコードを最適化なしで実行 C#ネイティブ: 10k ticks(2-3ms) スクリプト: 16k ticks(4ms)
20.
速度テスト2 中身が空で1引数のC#側関数を40万回呼び出 し C#ネイティブ:12ms
スクリプト:57ms 動的な呼び出しなのでやや遅い
Download now