Submit Search
Upload
自作音楽ゲームの開発と設計
•
Download as PPTX, PDF
•
2 likes
•
2,970 views
D
Daisuke Mizuno
Follow
どっかん名古屋2018用 LT資料
Read less
Read more
Software
Report
Share
Report
Share
1 of 30
Download now
Recommended
私がPowerAppsで楽器アプリを作り続ける理由
私がPowerAppsで楽器アプリを作り続ける理由
Junichi Kodama
Ansibleの最近の動向を追ってみた
Ansibleの最近の動向を追ってみた
KeijiUehata1
Ubuntuの前に、Linuxってそもそも何?
Ubuntuの前に、Linuxってそもそも何?
Hidetsugu Takahashi
Ubuntu hour 01
Ubuntu hour 01
Hidetsugu Takahashi
勉強会初心者のための勉強会(study4bg)第1回
勉強会初心者のための勉強会(study4bg)第1回
azk0305
Ansible specでテストをする話
Ansible specでテストをする話
KeijiUehata1
ラクス共通Ansibleコードテンプレートを作った話
ラクス共通Ansibleコードテンプレートを作った話
KeijiUehata1
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
Kazuhito Miura
Recommended
私がPowerAppsで楽器アプリを作り続ける理由
私がPowerAppsで楽器アプリを作り続ける理由
Junichi Kodama
Ansibleの最近の動向を追ってみた
Ansibleの最近の動向を追ってみた
KeijiUehata1
Ubuntuの前に、Linuxってそもそも何?
Ubuntuの前に、Linuxってそもそも何?
Hidetsugu Takahashi
Ubuntu hour 01
Ubuntu hour 01
Hidetsugu Takahashi
勉強会初心者のための勉強会(study4bg)第1回
勉強会初心者のための勉強会(study4bg)第1回
azk0305
Ansible specでテストをする話
Ansible specでテストをする話
KeijiUehata1
ラクス共通Ansibleコードテンプレートを作った話
ラクス共通Ansibleコードテンプレートを作った話
KeijiUehata1
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
Kazuhito Miura
Python製BDDツールで自動化してみた
Python製BDDツールで自動化してみた
KeijiUehata1
JuliaTokyo #3 Speech Signal Processing in Julia
JuliaTokyo #3 Speech Signal Processing in Julia
Ryuichi YAMAMOTO
UE4 Grass Interaction
UE4 Grass Interaction
Itsuki Inoue
!Utau用 弱音ハクライブラリ
!Utau用 弱音ハクライブラリ
Masahiko Nakamura
ダイソーで売ってるアレをアレしてみた
ダイソーで売ってるアレをアレしてみた
Koichiro Iwao
Introducing libpd -Pdをアプリのサウンドエンジンに-
Introducing libpd -Pdをアプリのサウンドエンジンに-
Yoichi Hirata
ライフログ、時系列メモ
ライフログ、時系列メモ
鉄次 尾形
フリー音源でヘヴィーなギターを作る
フリー音源でヘヴィーなギターを作る
Moyashigroove
既存サーバを後からAnsibleで構成管理する
既存サーバを後からAnsibleで構成管理する
KeijiUehata1
プログラム初心者がCocos2d xで ゲームを作った話
プログラム初心者がCocos2d xで ゲームを作った話
tetu_fs
Introduction of diy keyboard
Introduction of diy keyboard
Hiroshi Higuchi
音楽で理解する情報科学のいろは
音楽で理解する情報科学のいろは
kthrlab
うでのかい第1回
うでのかい第1回
拓海 岡本
【出張ヒストリア2017】新しいUnreal AudioEngineでインタラクティブサウンドコンテンツはどこまでつくれるか!?
【出張ヒストリア2017】新しいUnreal AudioEngineでインタラクティブサウンドコンテンツはどこまでつくれるか!?
historia_Inc
最近の進捗
最近の進捗
Takuya Sakurai
音ゲーマーの憂鬱
音ゲーマーの憂鬱
monochrojazz
Traktor sharemeeting2 20120323_touchosc
Traktor sharemeeting2 20120323_touchosc
mutameso
More Related Content
What's hot
Python製BDDツールで自動化してみた
Python製BDDツールで自動化してみた
KeijiUehata1
JuliaTokyo #3 Speech Signal Processing in Julia
JuliaTokyo #3 Speech Signal Processing in Julia
Ryuichi YAMAMOTO
UE4 Grass Interaction
UE4 Grass Interaction
Itsuki Inoue
!Utau用 弱音ハクライブラリ
!Utau用 弱音ハクライブラリ
Masahiko Nakamura
ダイソーで売ってるアレをアレしてみた
ダイソーで売ってるアレをアレしてみた
Koichiro Iwao
Introducing libpd -Pdをアプリのサウンドエンジンに-
Introducing libpd -Pdをアプリのサウンドエンジンに-
Yoichi Hirata
ライフログ、時系列メモ
ライフログ、時系列メモ
鉄次 尾形
フリー音源でヘヴィーなギターを作る
フリー音源でヘヴィーなギターを作る
Moyashigroove
既存サーバを後からAnsibleで構成管理する
既存サーバを後からAnsibleで構成管理する
KeijiUehata1
プログラム初心者がCocos2d xで ゲームを作った話
プログラム初心者がCocos2d xで ゲームを作った話
tetu_fs
Introduction of diy keyboard
Introduction of diy keyboard
Hiroshi Higuchi
音楽で理解する情報科学のいろは
音楽で理解する情報科学のいろは
kthrlab
うでのかい第1回
うでのかい第1回
拓海 岡本
【出張ヒストリア2017】新しいUnreal AudioEngineでインタラクティブサウンドコンテンツはどこまでつくれるか!?
【出張ヒストリア2017】新しいUnreal AudioEngineでインタラクティブサウンドコンテンツはどこまでつくれるか!?
historia_Inc
最近の進捗
最近の進捗
Takuya Sakurai
音ゲーマーの憂鬱
音ゲーマーの憂鬱
monochrojazz
Traktor sharemeeting2 20120323_touchosc
Traktor sharemeeting2 20120323_touchosc
mutameso
What's hot
(17)
Python製BDDツールで自動化してみた
Python製BDDツールで自動化してみた
JuliaTokyo #3 Speech Signal Processing in Julia
JuliaTokyo #3 Speech Signal Processing in Julia
UE4 Grass Interaction
UE4 Grass Interaction
!Utau用 弱音ハクライブラリ
!Utau用 弱音ハクライブラリ
ダイソーで売ってるアレをアレしてみた
ダイソーで売ってるアレをアレしてみた
Introducing libpd -Pdをアプリのサウンドエンジンに-
Introducing libpd -Pdをアプリのサウンドエンジンに-
ライフログ、時系列メモ
ライフログ、時系列メモ
フリー音源でヘヴィーなギターを作る
フリー音源でヘヴィーなギターを作る
既存サーバを後からAnsibleで構成管理する
既存サーバを後からAnsibleで構成管理する
プログラム初心者がCocos2d xで ゲームを作った話
プログラム初心者がCocos2d xで ゲームを作った話
Introduction of diy keyboard
Introduction of diy keyboard
音楽で理解する情報科学のいろは
音楽で理解する情報科学のいろは
うでのかい第1回
うでのかい第1回
【出張ヒストリア2017】新しいUnreal AudioEngineでインタラクティブサウンドコンテンツはどこまでつくれるか!?
【出張ヒストリア2017】新しいUnreal AudioEngineでインタラクティブサウンドコンテンツはどこまでつくれるか!?
最近の進捗
最近の進捗
音ゲーマーの憂鬱
音ゲーマーの憂鬱
Traktor sharemeeting2 20120323_touchosc
Traktor sharemeeting2 20120323_touchosc
自作音楽ゲームの開発と設計
1.
だいふく a.k.a. Daisuke
Ohnuma
2.
はじめに スライド公開予定です LT枠なので気を楽にして聴いてください
LT枠なので質疑応答は終わってから UE4成分そんなに多くないかもしれん
3.
自己紹介 だいふく a.k.a.
Daisuke Ohnuma (@dfk_ohnuma) 社会人2年目 なのにアラサー UE4は仕事では使ってない Blog 「大福未来研究所」 http://dfkfuturelab.hatenablog.com/ (そろそろ更新しないと)
4.
今回話す内容 UE4で音楽ゲームを自作した際の 開発・設計事例およびTips
5.
今回話さない内容 UE4の基礎知識 音楽の基礎知識
音ゲー向けの曲の書き方
6.
アジェンダ 自作音楽ゲームの事例紹介 コアシステムの仕組み
譜面データの設計 音楽ゲームとしての実装 音楽ゲーム制作時の工夫 処理負荷の軽減 処理のタイミング調整 感想・まとめ
7.
自作音楽ゲームの事例紹介 実際に見てみてくださいどうぞ
8.
自作音楽ゲームの事例紹介 6レーン ボタンを押すとクラップ音
曲のテンポは最初から最後まで一定が原 則
9.
自作音楽ゲームの事例紹介 譜面エディタもUE4で作りました
10.
自作音楽ゲームの事例紹介 譜面が量産できる、修正できる、 見ながら作れる とても大事なこと
音楽ゲームを作る上で、 譜面エディタは必須 譜面エディタと本編でデータの遣り取りを することを想定した譜面データ設計をする 必要性
11.
コアシステムの仕組み コアシステム→ 音楽ゲームの必須要素
譜面読み込み機能 楽曲情報管理 入力受付 ゲームごとにコアシステムを継承して 各機能関数をオーバーライド コアシステムを使い回すことができる
12.
コアシステムの仕組み 譜面データの読み込み データテーブル(CSV互換)で譜面データ を用意
楽曲情報管理 曲名、テンポなどの情報を保管 入力受付 譜面の判定対応も含む
13.
譜面データの設計 構造体SequenceDataStruct 汎用性重視
14.
譜面データの設計 Command コマンド。各行はここに書かれたコマンド 次第で意味が変わる
StringArg1、Arg2 FloatArg1、Arg2 引数枠 様々な音楽ゲームを制作する際に対応でき るよう 枠を多くしてある どれを使っても使わなくてもいい
15.
譜面データの作成例 コマンドTITLE StringArg1:曲名
StringArg2:サブタイ コマンドArtist StringArg1:作者名 StringArg2:サブ作者名 コマンドBPM FloatArg1:曲のテンポ FloatArg2:曲のオフセット (譜面再生開始と曲再生開始のタイミング差) コマンドLEVEL StringArg1:この譜面がEASYかNORMALかHARDか StringArg2:難易度数値 コマンド欄が数字 コマンド:何小節目の譜面配置か StringArg1:レーン番号 StringArg2:譜面コード その他:ゲームによって用途が変わるはず
16.
音楽ゲームとしての実装 譜面データ読み込み関数
17.
音楽ゲームとしての実装 継承先でオーバーライドするのはここだけ
18.
音楽ゲームとしての実装 音楽的なタイミング テンポがいくつで
何小節目の 何分音符の何個目なのか (例)BPM128、3小節目 3/4 コンピュータ的なタイミング 何秒なのか これらをお互いに翻訳できるようにする →エディタも作りやすくなる
19.
音楽ゲームとしての実装 譜面オブジェが置かれている時刻 =「楽曲開始からその小節の頭までの時 間」+「小節の頭からの経過時間」
楽曲開始からその小節の頭までの時間 =「1小節にかかる時間」×「小節数」 =「4分音符1つの時間×4」×「小節数」 =(60÷「BPM」×4)×「小節数」 小節の頭からの経過時間 譜面コードから計算(次ページ)
20.
音楽ゲームとしての実装 譜面コードのしくみ 1行で1レーンの1小節分を表現できるように
実時間(秒)ではなく音楽的な考え方ができる コードの文字数=小節の分割数 1=音符、0=休符 ○ 2=ロングノート とかに拡張可
21.
音楽ゲームとしての実装 譜面コードのしくみ 例:「1111」 ○
4文字あるので1小節を 4つにわけます ○ 「1」が音符、「0」が休符 として考えると、 4分音符が4つ並んでる ことになります。
22.
音楽ゲームとしての実装 譜面コードのしくみ 例:「10110110」 ○
8文字あるので1小節を 8つにわけます ○ 「1」が音符、「0」が休符 として考えると……
23.
音楽ゲームとしての実装 小節の頭からの経過時間 =(1小節の時間÷譜面コードの文字数) ×譜面コードの何文字目か = (60÷「BPM」×4) ÷譜面コードの文字数 ×譜面コードの何文字目か
全部譜面データから引っ張り出せる情報
24.
音楽ゲームとしての実装 判定の仕組み 譜面配置時に、譜面オブジェに自身の 「置かれている時刻」を記録する
楽曲の開始時の時間を記録する ○ 現在時刻-楽曲開始時刻=経過時刻 入力があったとき、 (経過時刻-オブジェの置かれている時刻) を計算して絶対値を求める →数値の範囲を見て判定が決まる
25.
音楽ゲームとしての実装 判定の仕組み:注意 あくまでも時間主体で考えること
見た目で判定を作ってはいけない ○ 速い曲なら判定が厳しい、とかになってしま う 当たり判定で判定しないこと
26.
音楽ゲーム製作時の工夫 処理負荷の軽減 使えるものは使い回す
サウンドはすべてAudioComponentで使い回 す エフェクトもParticleSystemComponentで使 い回す 譜面オブジェはオブジェクトプーリングで 使い回す
27.
音楽ゲーム製作時の工夫 処理負荷の軽減 オブジェクトプーリング ○
生成と削除をnew/deleteで行うのではなく ある程度作っておいたオブジェクトの Active/非Activeを切り替える形で生成と削除 をしてるように見せかけながらコストを減ら す ○ 詳しくはググって
28.
音楽ゲーム製作時の工夫 処理のタイミング調整 楽曲第一!
楽曲・譜面再生中はできるだけロード処理をさせ ない 譜面読み込み→楽曲読み込み→効果音読み込み →エフェクト読み込み まで全部完了して、 やっと楽曲開始 叩いたあとのオブジェもメモリから消すのは曲が 終わってから
29.
まとめ 音楽ゲームは「ゲーム本編」「譜面エディタ」 両方作れるのがベター なのでエディタを作ることを前提とした 譜面データの設計ができるといいですね
だいたいの音楽ゲームの根っこの仕組みは同じ なので自分で作るときは共通部分は使い回せるようにする といいと思います 楽曲プレイ中は余計な処理が走れば走るほど ストレスになる なので処理不可の軽減と処理のタイミングについては 考えて実装しましょう
30.
おわり
Download now