第6回 DeNA ゲーム開発勉強会
https://connpass.com/event/18773/
Unity @tancoro¶
Mobage連携なしのiOS/Androidアプリ
Unity4.6の内製大型タイトル
サーバサイドはSakashoでクライアント開発に重き
Game: NGUI DnSystem
Unity4.6
NativePlugin:DeAL SakashoSDK
Unityの非同期処理:コルーチン、スレッド
+コルーチン型のJobクラス
+スレッド型のJobクラス
+結果ありのJobクラス
+Jobを直列に実行するJobクラス:SerializeJob
+Jobを並列に実行するJobクラス:ParallelJob
AssetBundleのバージョン管理
150個ぐらい使っている
AssetBundleのアセットバンドル
AssetBundleLoader
Unityサウンドシステムはミキサーなどの概念がない
Oggファイルが再生できない。
この事から、内製のサウンドエンジンDeALを採用
LeftEngineで利用されており、実績がある。
ミキサーの音量設定や再生チャネルはゲームロジックとは分断されている
Unityにネイティブプラグインとして組込むための準備
各GameObjectがDeALのサウンド再生関数を直接コールすると制御できない
DeALの関数コールは一旦スタックする事で解決
左にある家と右にある家はそれぞれ光のあたりかたが一緒であるわけがない
2D Spriteと法線+鏡面強度のmapを組合せてポイントライトによるディテール調整
ブルーム リムライティングで光の表現
ラジアルブラー カメラシェイクといった臨場感あるバトル表現
マスターデータ、レコードキーパー @shibu¶
MithrilというJavaScriptのフレームワークの本書いた
ゲームを支える要素:プログラム>プログラマ、アセット>デザイナ、マスタデータ>ゲームデザイン
ユーザーのプレイサイクルをデザインする
ステージクリア、レベルアップのテンポ
アイテムや必殺技などの性能
敵の強さの調整
会話やチュートリアルの説明
なぜレコードキーパーが複雑なマスターデータを持つのか
炎耐性とか、弱点属性とか、前後列などほぼフルスペックのメカニズムが実装されている
元ネタがあるのでコンテンツ追加の速度が早い
スクエニがIPなので文言やアニメーションの監修
開発が並列:イベント、機能追加など
マスターデータ運用で悲鳴があがる
GoogleSpreadsheetでGoogleAppsScriptで主キーや外部キーなどの仕組み
Jenkinsを使った運用の仕組みは整備されていた
データが複雑で量が多い、同時にたくさんのチームが走る
問題点
+複数人でもスプレッドシートが一つ
+エクスポートに時間がかかる
+カラム数が極端に多いシート(行が5桁に行くとブラウザが落ちる)
+GoogleAppsScriptがタイムアウト
データチェックは厳格にしているがエラーがわかりにくい
ログが大量に出力されて問題を探すのも大変
データ構造に詳しいエンジニアへの問い合わせが増える
開発規模に見合うスケール可能にする仕組みの導入
リリース時期ごとに縦に長いテーブルを分割など
これをGoで作った
リリース時期毎にテーブルをわけた
GoogleAppsScriptでデータの検証をしていた
カラム追加はイベントごとに行えるように
イベントにあわせてパラメータ変更できるように