ステラリス 開発者日記 第269回 墓穴掘りと銀河マップ

スポンサーリンク
更新情報

2022/10/4 フォーラム内のやり取りを追記


パラドックス社の公式フォーラムにステラリスの開発者日記 第269回が掲載されています。

今回は将来実装されるティヤンキの墓場という要素に関するデザインと、新しく変化する銀河マップ生成の仕組みについてのお話です。

お断り:以下はパラドックスフォーラムの内容を意訳したものとなります。
リリース後数年を経てStellarisに公式日本語が実装されたことに伴い、管理人が翻訳した開発日記登場の用語と実際にゲーム中に登場する用語・表現が一致しない事があるかと思いますがご了承下さい。
※画像等はParadoxフォーラムより引用しています。
スポンサーリンク

ステラリス 開発者日記 第269回 墓穴掘りと銀河マップ

今回の担当はステラリス コンテンツデザイナーのCheerfulGothさんです。

冒頭の挨拶

こんにちは!

私はStellarisのコンテンツデザイナーCheerfulGothです。
今日はFornaxパッチで追加されたTiyanki Grave Mound(ティヤンキの墓場)の設計プロセスを紹介できることに興奮しています。

コンセプトと企画

新参のコンテンツデザイナーがゲームのあらゆる側面に慣れることができるよう、通常はいくつかのオンボードタスクが与えられます。
Tiyanki Graveyard(ティヤンキ墓地)は新しい船が巡回するユニークな恒星系の設計と、アークサイトの作成という2つのタスクが組み合わされたものでした。

Stellarisにはすでに膨大な量のコンテンツが存在しており、新しいコンテンツデザイナーとしていちばん大変なのは、似たストーリーの繰り返しを避けることです。
今回、宇宙生物に注目することにしたのは、彼らに関連する出来事が比較的少なく、そのほとんどが何年も手つかずになっていたからです。
ティヤンキが生まれるシステムはすでにあるのですから、どこで死ぬのかを見たいとは思いませんか?

われわれのTiyanki関連のコンテンツを読み返していて私が衝撃を受けたのは、彼らを殺すことで再生性装甲を研究することができますが、彼らの優れた治癒能力は物語に影響を与えないということでした。
これは、たとえ死んでいても成長を止めない、もがき蠢く死体でいっぱいの「巨大な墓場」のようなものを私に想起させました。

メインコンセプトが決まったら、次はイベントチェーンを作る番です。
オンボードタスクに新しい宇宙戦の種類を作成する必要がありました。
そこでアークサイトを保護する静的なティヤンキ墓地を作成することにしました。
しかしティヤンキ達を傷つけないプレイヤーもいることはわかっていたので、異なるプレイスタイルに対してコンテンツにアクセスできるようにしておきたいと考えました。
そこで平和主義者がティヤンキ墓地の管理人を傷つけることなく誘い出すことができるプロジェクトが追加されました。

プロトタイプ

チームで作業するときには、異なる部門間のコミュニケーションが重要です。
私はティヤンキの死骸の球体がそれっぽく見えるようにしたかったのですが、アートチームはToxoids(DLC)の開発に忙しかったので、ちょっとしたオンボーディング作業のためにアート素材をリクエストするのではなく、すでにゲームに入っているものを試してみました。
何と言っても私たちはすでに完璧に良いティヤンキの長の死体デザインを持っています。
それをスケールダウンし惑星の周りに2つのコピーを生成しそれを触手で包んでみてはどうだろうか?

しかし、私の最初の試みは…意図しない結果をもたらしました:

ステラリスの宇宙というのは実際には平坦で、すべての惑星と宇宙船は目に見えない2D平面に束縛されています。
アンビエントオブジェクト(装飾)の座標をオフセットし、平面の上または下に表示することはできますが、通常、この種のトリックは、惑星破壊兵器が惑星の上をホバリングする場合など、一時的なVFXに対してのみ使用します。

惑星を死体で包む方法を見つけるには、ちょっとした実験が必要でしたが、最終的には成功しました!

実装

ゲーム内に実装されたコンテンツは、品質管理チームによってバグテストが行われます。
そのテスト中に不思議な問題に気がつきました。
初めて遭遇したときには墓地は問題なく見えるのです。

しかし星系ビューを閉じてから再度開いた場合…。

…なんとそれは恒星に匹敵する大きさの肉づきの怪物に膨れ上がりました!

この原因は、仲間のコンテンツデザイナーである@Caligula Caesarが発見したのですが、初期化時にオフセット装飾のサイズが正しく設定されないという不明瞭なバグであることが判明しました。
前述の通り通常、オフセットは一時的なVFXに使用するため、このバグはリリース以来一度も気づかれることがなかったのです。

最終的なアート

この時点で、アート部門は私の作品を軽い恐怖で見つめ、専用のユニークなアセットを作ることが最善だと判断しました。
墓地は問題なく見えましたが、周囲のオブジェクトを粉砕することは標準的な方法ではなく、パフォーマンスの問題を引き起こす可能性があります。
にもかかわらず、この恐ろしい混沌としたものはコンセプトアートと最終的なモデルに有用なリファレンスを提供しました。

Mod製作者向けの注意事項

私の墓地は解体されてしまいましたが、皆さんがもっとひどく忌まわしいものを作るきっかけになればと思います。
ここでは周辺オブジェクトをオフセットする方法について簡単に説明します。
イベントオブジェクトを発生させる場合は、必ずuse_3 d_location=yesを使用して、その位置を調整できるようにしてください。

コマンド

結果


entity_offset

水平軸(左または右)でオブジェクトをオフセットする。

固定値または最小/最大量の両方を取得する(while ブロックで複数のオブジェクトをランダムにスポーンするのに役立つ)。

create_ambient_object = {
while = {
count = 10
create_ambient_object = {
type = “small_dead_tiyanki_object”
use_3d_location = yes
entity_offset = { min = -10 max = 10 }
location = this
}
}
}

ランダムな水平オフセットでスポーンされたオブジェクト。


entity_offset_height

垂直軸(上または下)でオブジェクトをオフセットする。

固定値または最小/最大量の両方を取得する(while ブロックで複数のオブジェクトをランダムにスポーンするのに役立つ)。

create_ambient_object = {
while = {
count = 10
create_ambient_object = {
type = “small_dead_tiyanki_object”
use_3d_location = yes
entity_offset_height = { min = -10 max = 10 }
location = this
}
}
}

ランダムな垂直オフセットでスポーンされたオブジェクト。


entity_offset_angle

オブジェクトが生成される角度を、その生成点との関係でオフセットする。
時計を参考に考える。
ベース エンティティはピボットであり、新しいオブジェクトはその周囲に生成される。

固定値または最小/最大量の両方を取得する(while ブロックで複数のオブジェクトをランダムにスポーンするのに役立つ)。

create_ambient_object = {
while = {
count = 10
create_ambient_object = {
type = “small_dead_tiyanki_object”
use_3d_location = yes
entity_offset_angle = { min = 0 max = 360 }
location = this
}
}
}

ランダムな角度で生成されたオブジェクト。


entity_face_object

オブジェクトをターゲットに向かって自動的に回転させる。

対象: 惑星、艦隊、星、指定物。

create_ambient_object = {
type = “small_dead_tiyanki_object”
use_3d_location = yes
entity_face_object = star
}

左のグループは星の方を向くように設定されている(画面ではない)。2 番目のグループは指定物 (彼らがスポーンした惑星)に直面するように設定されている。


base_angle_towards

ベース エンティティに対するオブジェクトのデフォルトの角度を決定する。

対象: 惑星、艦隊、星、指定物。

create_ambient_object = {
type = “small_dead_tiyanki_object”
use_3d_location = yes
base_angle_towards = this
}

両方のTiyankiの角度は0°。1 つはbase_angle_towards = starに設定され、惑星のようにその「面」に合わせられる。2 番目はbase_angle_towards = this に設定され、これは角度が 180°の惑星となる。

この開発日記を作成するにあたり、ティヤンキに害はありませんでした。

銀河マップの実験

しかしこれだけではありません!
@Caligula Caesarはとてもクールなものをお見せすることができます。それは、銀河の形状の実験です。
私たちは間違えていなければ、リリース以来、利用可能な銀河の形状に何の変更も加えていません。
とにかく、私たちは物事に少しスパイスを加えたいと思い、銀河ジェネレータに新しい形を作らせることがでないかを調べました。

最初にいくつかの新しいトリックを教えました。
スクリプトで新しい銀河を定義し、パラメータを送り込むと銀河生成画面で選択できるようになりました。
このことはMod製作者がどうしてもこの開発者日記の内容では十分ではないと判断した場合、既存の組み合わせを置き換えることなく、独自の組み合わせを作成できることを意味します。
またこれまでと異なり銀河の形状が何であるかに基づくような挙動決定は行わないようにしました。
つまり現在のバージョンでは、2つの渦巻き銀河は常に2つの渦巻き腕を持っており、これらの腕の太さとねじれを調整するだけです。
腕の数を自由に設定したりお好みでリングと組み合わせたりすることができます。

その結果、いくつかの新しい形状を追加することができました。
例えば腕の数が異なる渦巻き銀河をいくつか追加することができます。

しかし、私たちにできることはもっとありました。
特に私たちは銀河の形をいくつか作りたいと思っていました。普通ではない銀河の地形や興味深い非対称なスタート地点を作るためです。
例えば2本腕の渦巻き銀河をひねることで、棒状銀河のように太くて少し曲がっている腕があるような銀河を作ることができます。

そうです、この半分ずつは1つのハイパーレーンでつながっています。

輪状銀河と渦巻銀河を組み合わせることで、「車輪型」銀河を作ることができます。

また4碗螺旋銀河のうち、1本の腕を省き「ハリネズミ」と名付けたものもあります。

さらに現実にはありえないけど、ゲーム的には面白いかもしれない「スターバースト」という図形も追加しました。

私たちは銀河の形に関連するもう一つの要素として静的銀河についても少し調べました。
これは特定のプリセットされた銀河を生成するためにMod製作者が使用するシステムで、たとえば、ある種のトータルコンバージョンModなどがこれにあたります。
ランダムな銀河(すなわち、我々が通常生成するもの)を生成するコードと、静的な銀河に使用されるコードは完全に異なることが判明しました。
これは特に銀河の生成時に問題になりました。
2つの異なるコードはおそらく過去には同じことを行っていたと思われますが、必然的にコードが分岐したため、Mod製作者は静的な銀河に関する多数の問題を報告してきました。
たとえば二次種族を使用することはできず、スターベースやセクターが自動的に発生しないなど、セットアップの開始にはいくつかの小さな問題がありました。
また、emerge_initをon_actionsとは呼ばないため、通常の銀河が生成された場合の状態とはさらに乖離することになります。

コードはまだ承認さえされていないので、このことについては話すべきではありませんが、ランダムな銀河と静的な銀河のコードをできるだけ組み合わせて、後者のいくつかの問題を解決し、将来的にはより堅牢になることを願っています。
(またMod製作者向けのプロンプトで、静的な銀河の特定のシステムのエントリに”effect={}”を指定する機能を追加しました。また静的な銀河マップを1つに制限するのではなく、複数作成できるようになりました。)。

したがって、基本的にはオーダーメイドの銀河を作るModが好きなプレイヤーにとっては、近い将来より改良されたバージョンにアクセスできるようになるかもしれません。
(次のパッチに確実に含まれるとは約束できませんが)。


以上

フォーラム内のやり取り(Q&A)

フォーラム内のやり取りで気になったものを紹介(全てを紹介するものではありません)。

Q:驚くべき新しい形のほかに、より多くの星を持つ銀河が見たい。
ハイパーリレーがあるので星が1000個じゃ足りないです。
2,000や3,000個の星があれば信じられないほどクールになるでしょう。

A:実際に検討しましたがいくつかの理由からかなり悪いアイデアであることが判明しました。
銀河マップの生成に指数関数的に時間がかからないようにするには、銀河ジェネレーターをオーバーホールする必要があります。
また特定の数を超える恒星系を持たないという前提があるコードの場所もあるため、クラッシュや興味深いバグに遭遇する可能性があります。
そして、ゲームには銀河マップが特定の物理的サイズであるといういくつかのコア仮定があり、それを解除するのが非常に困難であることが判明しました。
最後にたとえこれらの課題を克服したとしても、(現在の)巨大サイズの銀河よりも50%多い星を追加する事でパフォーマンスにかなりの影響が出てきます。


Q:ゲーム開始時にハイパーレーンに直接接続しない、分断された銀河/エリアを作ることは可能でしょうか?
例えばワームホールや、ゲーム中盤から後半にかけてのテクノロジーを必要とするような、より高ランクのハイパーレーン?で接続するといいったものです。

A:ランダムな銀河を経由するということよりも星系は常に何らかの方法で接続されていることが望まれています。
なぜならランダムさが発生した場合は厄介なことになる可能性があるからです。
しかし手動でシステムを生成することもできます(Ver3.5の銀河マップの端に1つあり完全に邪魔になっています) 。
ハイパーレーンを手動で削除することもできます。
静的銀河ではそれぞれの星がどこで生まれているのかハイパーレーンがどこにあるのかを手動で決めることができますのでそれを利用すれば実現可能でしょう。


Q:紹介された各形状の銀河の最小サイズはどのようなものでしょうか?

A:

  • 6腕銀河:スパイラル大
  • 棒状(陰陽)銀河:小さいものに有効
  • 3腕銀河:スパイラル小
  • 他は中型が必要

今回はあまり質疑応答が出ていませんでした。
以上で締めたいと思います。

感想・まとめ

以上、Stellaris 開発者日記 第269回の紹介でした。

ティヤンキ墓地について今回はデザインのお話だけでしたので、その中身がどういったものになっているのか気になるところです。

気になったのは、銀河マップの生成パターンにテコ入れすることでトータルコンバージョン系の特殊マップを使っているModは現状からさらに不安定になりそう&その解決作についてはすでに検討はされているものの、それが今回の銀河マップ生成のアップデートとともにゲームに実装されるかはまだわからないという点。

特殊な銀河マップのModの場合は安定利用できるようになるまで結構時間がかかるかもしれませんね(・_・)

何れにせよ今回紹介された要素は実際にゲームに導入されるのは数ヶ月先のことだと思われるので、内容にはまた変化があるかもしれません。

それでは( ✧Д✧) カッ!!