Submit Search
Upload
Luaを使ったキャラクタのスクリプティング
•
1 like
•
882 views
T
Takaya Kakizaki
Follow
1/25の第5回Aiming飲み会で発表した資料です。
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 12
Recommended
【Unite 2017 Tokyo】DIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくり
【Unite 2017 Tokyo】DIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくり
Unite2017Tokyo
エターナらないゲーム開発
エターナらないゲーム開発
Kohki Miki
E2E test on Nuxt.js with SSR
E2E test on Nuxt.js with SSR
ikko ohta
DIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくり
DIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくり
Unity Technologies Japan K.K.
SQL Serverでデータ連携をする
SQL Serverでデータ連携をする
ssuser6a2c40
VertexTextureFetchの活用について
VertexTextureFetchの活用について
Hajime Sanno
第7回テックヒルズ『Game Engines!!~どのゲームエンジンを選ぶ?~』資料
第7回テックヒルズ『Game Engines!!~どのゲームエンジンを選ぶ?~』資料
CROOZ, inc.
Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係
yy yank
Recommended
【Unite 2017 Tokyo】DIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくり
【Unite 2017 Tokyo】DIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくり
Unite2017Tokyo
エターナらないゲーム開発
エターナらないゲーム開発
Kohki Miki
E2E test on Nuxt.js with SSR
E2E test on Nuxt.js with SSR
ikko ohta
DIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくり
DIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくり
Unity Technologies Japan K.K.
SQL Serverでデータ連携をする
SQL Serverでデータ連携をする
ssuser6a2c40
VertexTextureFetchの活用について
VertexTextureFetchの活用について
Hajime Sanno
第7回テックヒルズ『Game Engines!!~どのゲームエンジンを選ぶ?~』資料
第7回テックヒルズ『Game Engines!!~どのゲームエンジンを選ぶ?~』資料
CROOZ, inc.
Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係
yy yank
C++勉強会
C++勉強会
mitsutaka_takeda
僕と Python と 時々 NetBeans
僕と Python と 時々 NetBeans
Yoshiori Shoji
クラッシュフィーバーのシステム構成
クラッシュフィーバーのシステム構成
Tomotsune Murata
Cocos2d-x&CocosCodeIDE&Luaで個人開発始めました
Cocos2d-x&CocosCodeIDE&Luaで個人開発始めました
Yasuhiro Matsuda
Kinect 入門
Kinect 入門
Ryo Suzuki
CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"
CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"
Ryo Suzuki
CG 論文講読会 2013/5/20 "Clustered deferred and forward shading"
CG 論文講読会 2013/5/20 "Clustered deferred and forward shading"
Ryo Suzuki
BigQueryで集計するシステムを作って分かったKPI集計ツール作成
BigQueryで集計するシステムを作って分かったKPI集計ツール作成
(shibao)芝尾 (kouichiro)幸一郎
Processingによるプログラミング入門 第2回
Processingによるプログラミング入門 第2回
Ryo Suzuki
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発
Ryo Suzuki
20161129_npstudy_JunosAutomation
20161129_npstudy_JunosAutomation
Tatsuya Naganawa
[CEDEC2012]ネットワークゲームの不正行為と対策
[CEDEC2012]ネットワークゲームの不正行為と対策
gree_tech
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
「iPhone 6s/6s Plus」発売前後の検索実績からみる、インターネットユーザー動向
「iPhone 6s/6s Plus」発売前後の検索実績からみる、インターネットユーザー動向
Yahoo! JAPAN Marketing Solution
第1回 始めてみよう Web 動画 〜 基礎編 まずは iPhone から
第1回 始めてみよう Web 動画 〜 基礎編 まずは iPhone から
Katz Ueno
Html5で作るiPhoneアプリケーション2010
Html5で作るiPhoneアプリケーション2010
だいすけ ふるかわ
(エンジニアから見た) 最近のスマートウォッチ事情
(エンジニアから見た) 最近のスマートウォッチ事情
Tomoya Yamamoto
HTML5で作るiPhoneアプリケーション
HTML5で作るiPhoneアプリケーション
だいすけ ふるかわ
<Yahoo!プロモーション広告>「iPhone 6」発売後はどうなる? 関連キーワード検索傾向
<Yahoo!プロモーション広告>「iPhone 6」発売後はどうなる? 関連キーワード検索傾向
Yahoo! JAPAN Marketing Solution
デブサミ2009: iPhone開発者座談会
デブサミ2009: iPhone開発者座談会
masayoshi takahashi
「禍つヴァールハイト」のハイスペックサウンド演出とは? / GTMF2019
「禍つヴァールハイト」のハイスペックサウンド演出とは? / GTMF2019
Game Tools & Middleware Forum
Core Animation 使って見た
Core Animation 使って見た
OCHI Shuji
More Related Content
Viewers also liked
C++勉強会
C++勉強会
mitsutaka_takeda
僕と Python と 時々 NetBeans
僕と Python と 時々 NetBeans
Yoshiori Shoji
クラッシュフィーバーのシステム構成
クラッシュフィーバーのシステム構成
Tomotsune Murata
Cocos2d-x&CocosCodeIDE&Luaで個人開発始めました
Cocos2d-x&CocosCodeIDE&Luaで個人開発始めました
Yasuhiro Matsuda
Kinect 入門
Kinect 入門
Ryo Suzuki
CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"
CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"
Ryo Suzuki
CG 論文講読会 2013/5/20 "Clustered deferred and forward shading"
CG 論文講読会 2013/5/20 "Clustered deferred and forward shading"
Ryo Suzuki
BigQueryで集計するシステムを作って分かったKPI集計ツール作成
BigQueryで集計するシステムを作って分かったKPI集計ツール作成
(shibao)芝尾 (kouichiro)幸一郎
Processingによるプログラミング入門 第2回
Processingによるプログラミング入門 第2回
Ryo Suzuki
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発
Ryo Suzuki
20161129_npstudy_JunosAutomation
20161129_npstudy_JunosAutomation
Tatsuya Naganawa
[CEDEC2012]ネットワークゲームの不正行為と対策
[CEDEC2012]ネットワークゲームの不正行為と対策
gree_tech
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
「iPhone 6s/6s Plus」発売前後の検索実績からみる、インターネットユーザー動向
「iPhone 6s/6s Plus」発売前後の検索実績からみる、インターネットユーザー動向
Yahoo! JAPAN Marketing Solution
第1回 始めてみよう Web 動画 〜 基礎編 まずは iPhone から
第1回 始めてみよう Web 動画 〜 基礎編 まずは iPhone から
Katz Ueno
Html5で作るiPhoneアプリケーション2010
Html5で作るiPhoneアプリケーション2010
だいすけ ふるかわ
(エンジニアから見た) 最近のスマートウォッチ事情
(エンジニアから見た) 最近のスマートウォッチ事情
Tomoya Yamamoto
HTML5で作るiPhoneアプリケーション
HTML5で作るiPhoneアプリケーション
だいすけ ふるかわ
<Yahoo!プロモーション広告>「iPhone 6」発売後はどうなる? 関連キーワード検索傾向
<Yahoo!プロモーション広告>「iPhone 6」発売後はどうなる? 関連キーワード検索傾向
Yahoo! JAPAN Marketing Solution
デブサミ2009: iPhone開発者座談会
デブサミ2009: iPhone開発者座談会
masayoshi takahashi
Viewers also liked
(20)
C++勉強会
C++勉強会
僕と Python と 時々 NetBeans
僕と Python と 時々 NetBeans
クラッシュフィーバーのシステム構成
クラッシュフィーバーのシステム構成
Cocos2d-x&CocosCodeIDE&Luaで個人開発始めました
Cocos2d-x&CocosCodeIDE&Luaで個人開発始めました
Kinect 入門
Kinect 入門
CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"
CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"
CG 論文講読会 2013/5/20 "Clustered deferred and forward shading"
CG 論文講読会 2013/5/20 "Clustered deferred and forward shading"
BigQueryで集計するシステムを作って分かったKPI集計ツール作成
BigQueryで集計するシステムを作って分かったKPI集計ツール作成
Processingによるプログラミング入門 第2回
Processingによるプログラミング入門 第2回
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発
20161129_npstudy_JunosAutomation
20161129_npstudy_JunosAutomation
[CEDEC2012]ネットワークゲームの不正行為と対策
[CEDEC2012]ネットワークゲームの不正行為と対策
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
「iPhone 6s/6s Plus」発売前後の検索実績からみる、インターネットユーザー動向
「iPhone 6s/6s Plus」発売前後の検索実績からみる、インターネットユーザー動向
第1回 始めてみよう Web 動画 〜 基礎編 まずは iPhone から
第1回 始めてみよう Web 動画 〜 基礎編 まずは iPhone から
Html5で作るiPhoneアプリケーション2010
Html5で作るiPhoneアプリケーション2010
(エンジニアから見た) 最近のスマートウォッチ事情
(エンジニアから見た) 最近のスマートウォッチ事情
HTML5で作るiPhoneアプリケーション
HTML5で作るiPhoneアプリケーション
<Yahoo!プロモーション広告>「iPhone 6」発売後はどうなる? 関連キーワード検索傾向
<Yahoo!プロモーション広告>「iPhone 6」発売後はどうなる? 関連キーワード検索傾向
デブサミ2009: iPhone開発者座談会
デブサミ2009: iPhone開発者座談会
Similar to Luaを使ったキャラクタのスクリプティング
「禍つヴァールハイト」のハイスペックサウンド演出とは? / GTMF2019
「禍つヴァールハイト」のハイスペックサウンド演出とは? / GTMF2019
Game Tools & Middleware Forum
Core Animation 使って見た
Core Animation 使って見た
OCHI Shuji
Macアプリのインストーラ作成ツールSwift版
Macアプリのインストーラ作成ツールSwift版
Akira Hayashi
世界をすこしだけ前に進めるということ
世界をすこしだけ前に進めるということ
Yukei Wachi
WebSocket+Akka(Remote)+Play 2.1 Java
WebSocket+Akka(Remote)+Play 2.1 Java
Kazuhiro Hara
Cocos2d-x v3.2を利用してシューティングゲームを作ろう!
Cocos2d-x v3.2を利用してシューティングゲームを作ろう!
Tomoaki Shimizu
Docker meetup tokyo_public_r001
Docker meetup tokyo_public_r001
cyberblack28 Ichikawa
GREE Tech Conf 2022 GREE VR Studio Laboratory - UXDev R&D Summary 2022 #GREETC
GREE Tech Conf 2022 GREE VR Studio Laboratory - UXDev R&D Summary 2022 #GREETC
GREE VR Studio Lab
Stack2017 自動化困難な状況での活動方法
Stack2017 自動化困難な状況での活動方法
Tatsuya Ishikawa
GCP・GKEで作るスケーラブルなゲーム開発環境
GCP・GKEで作るスケーラブルなゲーム開発環境
Yasutomo Uemori
cocos2d-xとCocosBuilderでゲームを作ってみよう
cocos2d-xとCocosBuilderでゲームを作ってみよう
Tomoaki Shimizu
Scalatronで楽しく学ぶ関数型プログラミング
Scalatronで楽しく学ぶ関数型プログラミング
Jun Saito
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
Satoshi Yamafuji
モバイルゲームビルドパイプラインとChatOps
モバイルゲームビルドパイプラインとChatOps
KLab Inc. / Tech
CoronaSDKのご紹介
CoronaSDKのご紹介
Takuro Fukamizu
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
開発未経験の私がBotをつくってみた
開発未経験の私がBotをつくってみた
Aika Yamazaki
20141218ironic advent
20141218ironic advent
Yasuhiro Arai
Practical game development with Stingray
Practical game development with Stingray
Naoji Taniguchi
20150421 Geeks Night @ Money Foward
20150421 Geeks Night @ Money Foward
Naoki Shimizu
Similar to Luaを使ったキャラクタのスクリプティング
(20)
「禍つヴァールハイト」のハイスペックサウンド演出とは? / GTMF2019
「禍つヴァールハイト」のハイスペックサウンド演出とは? / GTMF2019
Core Animation 使って見た
Core Animation 使って見た
Macアプリのインストーラ作成ツールSwift版
Macアプリのインストーラ作成ツールSwift版
世界をすこしだけ前に進めるということ
世界をすこしだけ前に進めるということ
WebSocket+Akka(Remote)+Play 2.1 Java
WebSocket+Akka(Remote)+Play 2.1 Java
Cocos2d-x v3.2を利用してシューティングゲームを作ろう!
Cocos2d-x v3.2を利用してシューティングゲームを作ろう!
Docker meetup tokyo_public_r001
Docker meetup tokyo_public_r001
GREE Tech Conf 2022 GREE VR Studio Laboratory - UXDev R&D Summary 2022 #GREETC
GREE Tech Conf 2022 GREE VR Studio Laboratory - UXDev R&D Summary 2022 #GREETC
Stack2017 自動化困難な状況での活動方法
Stack2017 自動化困難な状況での活動方法
GCP・GKEで作るスケーラブルなゲーム開発環境
GCP・GKEで作るスケーラブルなゲーム開発環境
cocos2d-xとCocosBuilderでゲームを作ってみよう
cocos2d-xとCocosBuilderでゲームを作ってみよう
Scalatronで楽しく学ぶ関数型プログラミング
Scalatronで楽しく学ぶ関数型プログラミング
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
モバイルゲームビルドパイプラインとChatOps
モバイルゲームビルドパイプラインとChatOps
CoronaSDKのご紹介
CoronaSDKのご紹介
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
開発未経験の私がBotをつくってみた
開発未経験の私がBotをつくってみた
20141218ironic advent
20141218ironic advent
Practical game development with Stingray
Practical game development with Stingray
20150421 Geeks Night @ Money Foward
20150421 Geeks Night @ Money Foward
Luaを使ったキャラクタのスクリプティング
1.
Luaを使ったキャラクタの スクリプティング 2017/01/25 アカツキ クライアントエンジニア 柿崎
2.
2 2005年 名古屋大学工学部電気電子工学科卒 組込みOSの研究やったり、Javaでガラケー向けにゲーム作ったり 2005年ヤマハ入社 研究開発やったり、製品開発(楽器ではない)をする 2015年アカツキにジョイン ・情熱プログラマー ・エンジニアチームキャプテン ・不具合撲滅職人 自己紹介
3.
3 とあるcocos2d-x開発プロジェクトの話 リアルタイムのゲームモードを新しく開発していました 最初はキャラクターを適当なアニメーションで動かしていましたが リリースへ向けて大幅に手を加えることになりました 経緯
4.
4 return Sequence::create(Easeout::create(TargetedAction::create(getCharacter(), MoveBy::create(0.15f,
Vec2(50,20))), CallFunc::create([this] () { getCharacter()->setMovie(..); }), DelayTime::create(0.1), TargetedAction::create(getEffect1(), Show::create()), nullptr); 初期バージョン Sequence直打ちつらいorz
5.
5 • lwfを使う • 今回はリアルタイム向けのため途中でイベントが挟まると破綻するた め除外 •
cocos studioを使う • 今からデザイナーさんにcocos studio使ってもらうのはちょっと間に 合わない • 独自で定義したクラスを使えない • Luaを使う • 最悪プログラマー(自分)が頑張ればなんとかなる 選択肢 よし!Luaスクリプトエンジンを作ろう!
6.
6 1.5秒Aを移動 その後Aの画像をA2に変 更 その後エフェクトB表示 設計思想 Lua Sequence::create(…) 中間モジュール(C++) Cocos2d-x Luaで書いた各アクションを中間モジュールに割り当てて、それをcocos2 d-xのActionに変換する形を取りました。 cocos2d::Actionと1対1に対応させてしまうと、初期バージョンとやってい ることが変わらないため、モジュールを構造化しました。
7.
7 親子構造でsequenceとspawnを表現する 各ノードはTargetNodeとActionが定義される 親子ノードはsequenceで実行されて、兄弟ノードはspawnで実行される 基本構造 spawn sequence
8.
8 HEADポインタ A B start(A) C D after(B) branch(A, C) after(D) HEADポインタを導入することで直感的な シーケンスの記述を可能にしました 1 2 3 4 1 2 3 4
9.
9 #define SET_CONST(L, name)
{ lua_pushinteger(L, name); lua_setglobal(L, #name); } SET_CONST(luaStack->getLuaState(), DASH); SET_CONST(luaStack->getLuaState(), GUARD); SET_CONST(luaStack->getLuaState(), ATC_KICK_1); SET_CONST(luaStack->getLuaState(), ATC_KICK_2); マジックナンバー撲滅 マジックナンバーはLuaの変数を 定義することで減らしました
10.
10 start(easeOut(moveBy(TARGET_CHARACTER, 0.15, 50,
20), 1.5)) // キャラを0.15秒移動(easeOut) after(setMovie(TARGET_CHARACTER, ATC_KICK_1)) // キャラをKICK_1に変更 after(delay(0.1)) // 0.1秒待ち after(setVisible(TARGET_EFFECT1, true)) // Effect1を表示 結果 good • 読んでわかるコードになった(気がする) • 基本的なアニメーションは実現できて、デザイナーの意図する動きを 短期間で実現できた more • 設計がエンジニア寄りで非エンジニアの人に書いてもらえないかも • 本当はLuaは一度だけ実行して後は使い回せるようにしたかった
11.
11 という機能を年末年始で作り ました
12.
12 ご清聴ありがとうございました!