godai-kaihatsu / gondwana

https://gondwana.godai.co.jp/
2 stars 0 forks source link

preview-7: データセンターモジュールの実装 #118

Closed usagi closed 6 years ago

usagi commented 6 years ago

G4のデータセンターモジュールの概要

  1. 汎用のローカルストレージへのキャッシュ機能を有する
    • http(s) ソースをローカルストレージ(g4fs://var/cache/{service-name}/raw/z/y/x.{ext})へ「そのまま」キャッシュする
    • コンフィグレーションによる expired チェック方針の選択
      • 基本方針として force, every, naver を選択可能
      • サービス名ごとに辞書式で force, every, naver を上書き設定可能
      • force は常にキャッシュの更新を試みる
      • every は http に対して head して更新を確認する
      • naver は更新を確認せずローカルにキャッシュがあれば無条件に採用する
  2. G4専用の特化したデータ出力機能を有する
    • 256x256ソースのタイルから257x257のエッジ補間データを提供する機能
    • 補間済みデータもキャッシュする(g4fs://var/cache/{service-name}/g4/z/y/x.{ext})
      • 画像は webp 標高は blosc/lz4 でいいかな
    • この実装により現行しばしば発生しているタイル境界での補間動作ミスを無くし、またキャッシュ機能とあわせてタイル生成
usagi commented 6 years ago

対応開始: 4.0.7.2 release, 2018-06-28 を予定。

usagi commented 6 years ago

メインスレッドの重い処理を適度な粒度で時間分割可能な実装を施した。これにより動作中に重いタスクが発生した際にもプチフリ的に固まる事がほぼ気にならなくなる。

usagi commented 6 years ago

ついで、地表面での物理シミュレーション機能を別機能に分離する実装を施し、これまで地形の表現に必要だった計算コストをおよそ1/282に低減した。次のリリースはユーザーにとってかなり快適性の向上する嬉しいアップデートとなるだろう。

usagi commented 6 years ago

開発中の 4.0.7.2-dev からウルトラ高速化された起動とプチフリを抑えた動作:

https://vimeo.com/278106843

usagi commented 6 years ago

キャッシュシステムの実装途中だが、デバッグ中にUE4エンジンのアロケーターかどこかのポリモーフィズムが絡んでいそうな難解な不具合の糸口を発見したので、少々そちらにリソースを割いている。そちらも重要度の高いバグ修正のため、状況によっては数日割り込んで対応し、本チケットと合わせて 4.0.7.2 へ修正を結合する可能性がある。

usagi commented 6 years ago

↑の問題を解決した。原因は UE4 のガベージコレクションとオブジェクトの寿命管理に起因したもので、取り扱いにより「気まぐれ」性が現れるものだった。解決、めでたし。

usagi commented 6 years ago

どうも現状になっとくがいかないので徹夜で仕事していた。結果、2つのバグが修正された。

  1. 再現困難だが使っているとたまに落ちてしまう事があるバグ
  2. しばしばタイル間の補完が行われない事があるバグ
usagi commented 6 years ago

ヘテロLOD隣接タイル間の相互補完処理を最適化している。実行中に感じるプチフリ感はだいぶ小さくなったが、まだここが処理速度のボトルネックになっていてる。

usagi commented 6 years ago

幾つか見つかった些細なバグを潰しながら動作試験を続けている。概ねCBTリリースに耐える状態になってきたと思う。大きな問題が発覚しなければ予定通り明日には G4-4.0.7.2 としてリリースできるだろう。