こんにちは、ブラウンソースです。
私は現在マビノギのエンジン移行作業をしています。
ミレシアンの皆さんに私が行った作業の中から「背景モデリングの移植」についてお話ししたいと思います。
エンジン移行のプロセスが気になる方々にとってこの話が少しでもお役に立てれば幸いです。
いつも通りの朝、温かいコーヒーを飲みながらぼーっとしていた私はふと目が覚めました。
マビノギがアンリアルに引っ越すとき、プレイオネにあるエリンの建物や物をすべて移さなければならないのですが
その仕事を私が担当することになったからです。
20年近い間、マビノギはプレイオネを使用してきました。
なので、その引っ越し作業は簡単ではないことは明らかでした。
そして次第に目の前が真っ暗になりました。
もちろん、最終的にUnreal Engineでの建物や物は美しく、きれいに新しく建てられる予定です。
しかし、そのためには下描きが必要です。
数多くの下描きをすべて新たに作成するのはそれだけでも大きなコストがかかりますので
より少ないコストでプレイオネにあるエリンをそのまま移し、下描きにする方法を見つけなければなりませんでした。
<プレイオネワールド制作プログラムで見たタラの建物>
マビノギをそのまま移す作業を計画する際に、まず心配だったのは
「プレイオネ専用のワールドデータファイルとモデリングファイルをUnreal Engineで使えるか」でしたが。
残念ながら「プレイオネ専用」なのでそれは不可能でした。
そんな中、3つのアイデアが浮かびました。
1つ目は、「Unreal Engineのコードを修正し、プレイオネ専用ファイルを読み込ませる」というものでした。
しかし、このようにエンジンコードを修正すると、エンジンのバージョンを上げるたびに
修正したコードとアップデートされたコードが衝突する可能性があります。
そうすると、衝突したコードを修正する必要があります。
また、他のアイデアに比べて作業コストも大きいので下描きを作るための方法としてはベストではないと思いました。
2つ目のアイデアは「Unreal Engineが読み込めるようにプレイオネ専用ファイルを修正する」というものでした。
しかし、この方法にも問題がありました。
マビノギでオブジェクトを作成する際、モデリング作業は商用プログラムを使用します。
その後、プレイオネエンジンが読み込めるように私たちが独自に開発したプログラムを使用して変換します。
不要なデータは削除し、必要なデータの一部は最適化のために予め計算しておくのです。
しかし、この時削除されるデータの中に、Unreal Engineで必要な値がありました。
削除されたものを除き、残ったデータでも3Dモデルを構成することはできますが
原本と著しく異なるため、この方法も最善ではありませんでした。
3つ目のアイデアは、「専用ファイルに変換する前の原本モデリングデータをUnreal Engineに移す」というものでした。
Unreal Engineは商用3Dモデリングプログラムで作成したファイルを簡単に読み込むことができます。
したがって、変換前の原本さえあればプレイオネと同じような形式でUnreal Engineにアップロードできると思いました。
原本データをUnreal Engineにアップロードする試みは成功しました。
商用3Dモデリングプログラムで原本データをUnreal Engineが読み込めるファイルに出力し、
これをUnreal Engineから呼び出してみると、想像していたよりもずっといい感じでした。
しかし、この方法も完璧ではありませんでした。
プレイオネの痕跡がまだ残っていたからです。
マビノギオブジェクトの3Dモデルを作業する際、オブジェクトの形態を構成することに加えて
ゲーム内の相互作用のためのデータも一緒に追加します。
しかし、このデータは下描きでは必要ありませんでした。
むしろこのデータによって下描きの形が違って見えることもありました。
そのため、この不要で下描きの邪魔になるデータを削除する方法を見つけなければなりませんでした。
<Unreal Engineで衝突ボックスとピボットメッシュがそのまま表示されるダンバートン広場の街灯>
アイデアを具体化しながら、「自動化」についても一緒に考えていました。
原本モデリングデータをUnreal Engineに移すためには、
そのファイルを3Dモデリングプログラムで読み込んでから
Unreal Engineが読み込めるファイルに出力する必要があります。
問題はこのプロセスが短くてシンプルでもファイルの数が多すぎるので、
すべてのファイルを人が一つずつ手動で行うには時間がかかりすぎるということです。
物理的な時間を考えると、自動化は絶対に必要でした。
マビノギで使用している3Dモデリングプログラムには自動化をサポートするスクリプト言語があります。
使用者がモデリングプログラムで行いたい作業や動作を予めスクリプトで作成しておけばボタンをクリックするだけで、
その作業を何度も繰り返させることができます。
このスクリプトを使ってファイルごとに手動で行わなければならなかった出力作業をプログラムが勝手に行うように
自動化すると同時に下描きの不要なデータも一緒に削除しました。
また、原本モデリングデータのテクスチャもUnreal Engineで読み込めるように
ピクセルフォーマットを変換する必要がありますが、この処理もスクリプトで一緒に行うようにプログラムしました。
<Unreal Engineに移したティルコネイル銀行>
「問題を全て解決したかも?」と思いましたが…そうではありませんでした。
マビノギの膨大なオブジェクト数が再び足かせとなりました。
移した3Dモデルを下描きとして使うためには、Unreal Engineで作ったエリンに配置してみる必要があります。
しかし、プレイオネ専用のワールドデータファイルはUnreal Engineが読み込むことができません。
そのため、プレイオネでの位置、方向、サイズを一つずつ確認しなければなりませんでした。
この作業はオブジェクトの種類ごとに一つだけ行う、先ほど説明した作業より数も多く、手間もかかりました。
また、Unreal Engineで処理しなければならないため、3Dモデリングプログラムのスクリプトも使えませんでした。
悩んでいたところ、あるアイデアを思いつきました。
「専用のワールドデータファイルからオブジェクトの種類、位置、方向、サイズのデータを抽出することができれば
それをUnreal Engineで配置する際に使えるのでは?」と。
プレイオネのエリンワールドを構成する際は、マビノギが独自に開発したワールド作成プログラムを使用します。
商用プログラムで作成した3Dモデルデータをこのワールド作成プログラムに取り込んで配置する、という感じです。
その後、配置状態を最終的にワールドデータファイルに作成します。
独自に開発したプログラムには慣れていて、
データファイルの内容は「2つ目のアイデア」を具体化する過程ですでに確認しました。
そのため、配置に必要なデータをワールドデータファイルから抽出するようにプログラムを修正することができました。
あとは、抽出したデータをUnreal Engineに読み込ませて3Dモデルを自動的に配置させるだけです。
この問題はエンジンに機能を追加することで解決しました。
自動配置機能はUnreal Engineにすでにある機能だけで実装したため、エンジン修正よりも比較的コストも少なく、
コード衝突のリスクも低かったです。
<下描きとして使うためにUnreal Engineに移したダンバートン>
これらの過程を経て私の「下描き制作の自動化」作業は一段落しました。
今は背景モデラーの方々が下描きを基に新しいエリンを一生懸命作っています。
高画質に生まれ変わったエリンを見ていると、目の保養になります。
私の作業によって完成されるわけではありませんが、
エリンが生まれ変わる過程に少しでもお役に立てることに大きな喜びと誇りを感じています。
マビノギのUnreal Engineへの引っ越しが終わるまでまだまだやるべきことがたくさんあります。
技術的に解決しなければならない問題もたくさんあります。
道のりは平坦ではありませんが、新しいマビノギにミレシアンの皆さんを招待するその日まで最善を尽くします。
ありがとうございます。
『Writer ブラウンソース』