バージョン2リリース

Cities: Skylines

やっとHeightmap generatorのバージョン2をリリースすることができました。

予想通りコア部分の実装に苦労しました。小さいマップサイズだったら問題なかったんですが、大きいサイズになるとwasmのメモリ制限に引っかかりまくりで結局イチからやり直し。年内に間に合わなくなるところでした。やっぱりエフェクト機能を盛り込んでいることがなかなかの足かせになります。

というわけで、大きなサイズの際の分割処理の方法を根本から見直し、16kのマップまで出力させることに成功。ただし生成処理中にメモリをモリモリ食います。CS2のマップ生成においてもいったん16kサイズに拡大してエフェクト処理しているので結構な負荷です。まあエフェクトを掛けなければそんなにメモリを食うこともないです。

とにかく、生成処理におけるマップサイズについてはスケーラブルな感じにしているので、今後CS2のラージマップのMODの仕様が明確になったら割と楽に対応できるのではと思います。

さて、今回はやはり高速プレビューがうまくいったことが良かったです。条件次第では1秒程度で表示できます。WebGLはすごいね。次はエフェクト処理をWebGLでも処理できるように検討中。

まあ、前回のアナウンスの通り、水域関係の機能追加に際し必要な地理情報がMapboxには無いため、結果としてMapTilerのアカウントが必要になってしまいますが、そこはご了承ください。

今回、細かい所で仕様変更してます。詳しくはREADMEをご確認ください。不具合があったらこちらへどうぞ。あと、最初にアクセスしたら、まずはいったんリセットしてください。予期せぬ不具合が出るかもしれませんので。

ではでは。

新ver開発状況

Cities: Skylines

Heightmap generatorですが、ver2の開発もようやく折り返しです。新バージョンの主な新機能は

  • UnityやUnreal Engine向けの出力にも対応
  • プレビュー機能
  • 海洋Heightmapの読み込み
  • 沿岸と河川の傾斜を別々に設定(河川の消失issueの改善)
  • UIの見直し

等々です。水域関係の機能追加に際し必要な地理情報がMapboxには無く、結果としてMapTilerのアカウントが必要になってしまいますが、そこはご了承ください。

まだHeightmap生成やエフェクトといったコア部分の更新作業、それと、これが一番の課題なんですが、30mメッシュであるSRTMがベースであるDEMデータの高解像度マップへの対応の改善をどうするか等、しんどい部分が残っており道半ばという感じですが、なんとか年内には公開したいところです。

予定では、ラージサイズ対応以外の更新が完了したら公開しようと思ってます。

v1.0.0公開

Cities: Skylines

Heightmap generatorですが、ようやくCS2への対応も完了しv1.0.0となりました。CS2のheightmapの仕様はこれまでのようにcanvasのみでゴリゴリやるとハングしてしまうレベルですので、PixiJSを使いコア部分を大幅に書き換え。また、仕様そのものもCS1とは大幅に変わってますんで、同居させるのに苦労しました。あとはダウンロードやマップ生成の箇所をすべてWeb Workerにすると、さらにUXが改善されるかと思います(現在は一部のみWeb Wokerでやってます)。

ちなみに、Larger map modへの対応はしばらく時間がかかりそうです。いよいよcanvasの制限に引っかかってしまいそうなんで、また別のロジックを検討する必要がありそうです。さすがに16,384px四方のheightmap、テンポラリで約23,000px四方のcanvasは厳しいですね。マップの回転がなければ単純に分割管理で何とかなりそうな気もしますが、そこに回転プロセスが加わるとややこしそうなことになりそう。

CS2のHeightmap対応 続き

Cities: Skylines

CS2のアップデートに伴いエディタも更新され、エディタそのものはMod無しで使えるようになってます。早速いじってみましたが、Heightmapの仕様もこれで本決まりでしょうか。結局、今回は標高の上限が事実上無くなりました。また、先日まで気になってた「プレイアブルエリア外の地形はどうなるのか」についても仕様が判明して良かったです。それにしても、APIリクエストがとんでもなく増えますね。もしかすると、CS2のデータをDLする際には各自Mapboxのアカウントを取ってもらうことも検討しないといけないかもしれません。

その他、マップの細かい所のクオリティ面でHeightmap Generatorとしてどのようなことができるのかも考えていきたいです。

CS2のHeightmap対応についての所感

Cities: Skylines

発売してから1ヶ月近くになりますが、ようやくエディタの公開が年明けくらいになるとのアナウンスがありましたね。とはいえ、すでにModsは出回りだしてますし、私もお先にエディタを有効化してMOOBでHeightmapの仕様について調べております。

まずポイントは、Unityのアップデートにより前作とは扱いが結構異なるという点です。前回は1,081pxでしたが、今回は4,096pxとなってます。また高さは約1,024mでしたが、今回はおそらく倍の2,048mになっているようです。他にも細かい仕様の違いがありました。

さて、Heightmapの生成は複数のTerrain-RGBタイルを組み合わせていくわけなんですが、このタイルのサイズは512px、1枚のHeightmapを出力するのにせいぜい4~9枚程度でよかったんです。多くても25枚程度。これが今回は単純に64~81枚必要になってきます。これだけでもAPIリクエストの負担増は免れません。

また、ディティール面の問題もあります。前回は1px=16mでしたが今回は1px=3.5mとなっており、そもそも30mメッシュであるSRTMベースの標高データであるTerrain-RGBタイルで果たして十分なクオリティが出せるのか?という心配が。30m以上の精度しかない地域も多数ありますし。あ、日本については国土地理院データになってますね。まあ、3.5mなんて精度を世界規模で取得しようとするならAW3Dの5mメッシュくらいしか思いつきませんが。

あとは、標高の出し方もなんだかクセが。以下の画像をご覧ください。

terrain1.jpg

少しカーブを描いてませんか? これ、実験で1pxずつ0から255(8bit)の高さで描いたものをインポートしたものです。本来直線になるはずでは? 好意的に捉えるなら、標高が高くなるに従ってより強調したってことでしょうか。MOOBのコードを確認しても何か変わったことをしている感じではなかったので、これは本体の仕様なんでしょうが、ここは素直にリニアにしておいてほしかった。

エディタはまだ開発中で現在のバージョンとはまた変わってきそうですし(現に、すでに水の扱いが変わっているそうです)、リクエストしているアーリーアクセスが当たったら本格的に調査を進めていきます。

なにしろ細かい変更が多くて、同じコードの中にどうやって共存させようか悩みどころです。あと、フルマップModも準備されているようですので、それの仕様も早く知りたいものです。

Heightmap Generator

Cities: Skylines

Cities: Skylines向けのHeightmap Generatorを公開しました。以前関わってたプロジェクトをNuxt3でイチから書き直したものです。元のプロジェクトでこれ以上の新機能追加や最適化、コア部分の改修を行うよりイチから書き直したほうが早いなと思いましたので、別バージョンにした次第です。

まだ若干不具合があったりするベータバージョンですが、10月に発売予定のCities: Skylines IIへの対応も考慮して作りましたので、そのころまでにはさらにブラッシュアップしたいところです。

Terraining - Online heightmap generator for "Cities: Skylines"

ソースコードはこちら。不具合などありましたらこちらへどうぞ。

使い方はとりあえずreadmeを見ていただきたいですが、いずれ解説ページ等を書こうと思います。

自分も引っ越しました

雑記

先日AWSに引っ越しさせてホクホクしてたんですが、今度は自分が急な転勤で引っ越す羽目になりました。結局前任地は丸3年の勤務で終了です。せっかく家も建てたのに2年半しか住めずちょっと残念ですが、今度の社宅は自宅の1.5倍くらい広いので、それはそれでゆとりある生活になりそうです。

ちなみに今回は以前5年弱ほど住んでた所に戻る形になるので、家族の要望で校区も以前と同じ所にしました。まあ土地勘もあるので生活するのに違和感はないですね。逆に帰ってきた感覚すら覚えます。

なお、春休み期間中に本格的に引っ越しするので、しばらくはエセ単身赴任の状態です。機材はまだ自宅に置きっぱなしなんで結局制作活動はストップ。とりあえずMacBookでボチボチNuxtをいじって遊ぶことにします。

AWSへお引越し

プログラミング

かれこれ7~8年使っていたレンタルサーバーからS3へ引っ越しました。ついでにさくらで管理していたドメインもRoute53へ移管。これでS3 + CloudFront + Route53と、AWSで一括管理することになりました。これまで特に何も考えずFTPでアップするだけでしたが、今回の移行作業は良い勉強になりました。

さて、現在はNuxt3でgenerateした後デプロイ用に作成しているshで簡単にアップロード。VSCode上で完結するようになったのは楽ですね。まあ、GitHub Actionsでの全自動デプロイも気になりましたが、generateとデプロイはあえて分けて処理するようにしてます。

というわけで、Nuxt3への移行やAWSの対応でしばらく制作作業は完全にストップしてました。もう少しサイトをいじるか制作活動に戻るか考えものです。

Nuxt3へ移行

プログラミング

安定版も出たことですしNuxt3へ移行しました。こんな小規模なサイトですのでNuxt Bridgeを使わず新規に移設していく方法で進めることに。Vue3となり書き方が結構変わりましたが概ねコードがスッキリとした感じになって良いですね。動作も早いし。しかしながら、今回色々調べながら移行作業を進めていきましたが、検索してもrc毎に微妙に対応が異なっているようで情報が新旧入り混じってて、なかなか大変です。

とりあえず、帰宅後の空いた時間を使って約1ヶ月でデザインの見直しも含めて一旦は完了しましたが、移行作業を行っているうちにもっと手を加えたい箇所が出てきましたんで、次はそれらに着手します。

SFC音源化におけるドラムの扱い

DTM

この1~2ヶ月ほど仕事で面倒くさい案件にかかりきりでしたんで作業スピードはかなり落ちてますが、引き続きスーファミ音源化を進めてます。先日は「バトル1」が完成。

このスーファミ音源化、まず必要な音色を作ることから始めないといけませんし、8音に収める作業もしないといけませんので結構めんどくさいですね。実機での演奏を考えると波形はもう少し切り詰めてデータ圧縮しないといけないんでしょうが、その必要はないんである程度のレベルで妥協してます。実機向けだった場合は、伴奏パートや中音域以下の音色ではさらにサンプリングレートも下げたりしているみたいで、やっぱり64KBの壁は大変ですね。

なお、ドラムは全てパラで出すとチャンネルを食いすぎますんで、最低限"バスドラム+ハイハット"の音色を作っておかないといけません。それを使うとどうにかドラムは同時発音数2音で収まる感じです。また、特にドラムがそうなんですが、各音色はコンプをはじめ事前にエフェクトをかけた状態で音を作らないといけません。曲中で使ってみてイマイチだった際はまた音色作りに戻らないといけませんので、これもまた大変です。

スーファミ音源化

DTM

最近は音楽素材のスーファミ音源化に取り組んでます。久々に往年のDTMらしい作業はなかなか楽しいですね。しかしながら、今のペースではいつ完了するのか分からないんで、もっとスピードアップしていきたいところです。

色々手直し

雑記

細かいところを色々と手直ししてました。今回のデザインはアイキャッチを各所に使ってますんで、次はnuxt/imageの導入を検討したいものです。

しばらくは

雑記

この半年ほどリニューアル作業を行ってましたが、その際に得た多少の知見をしばらくの間アップしていきたいと思います。備忘録代わりですね。

リニューアル

お知らせ雑記

ここ数年完全にほったらかしてましたが、さすがに如何なものかと思い、リニューアルすることにしました。最近は基本的に単発の活動だったんで色んなことにすっかり疎くなってしまってます。

さて、リニューアルするにあたってWordpressを使うのをやめてNewt+Nuxt.jsでやることに。最初はmicroCMSを使ってましたが途中でAPIが足りなくなり、そんな折、ちょうど良さげな所を見つけてこちらへ乗り換え。Newtは2022年3月にリリースされたばかりのCMSだそうですが、かなり良いですね。なにしろ当時「Wordpressはめんどいな~」と思った記憶しかないんで、ちょっと環境を変えてみました。

それにしてもWeb制作系のトレンドの変化は激しいですね。ちなみに近年GitHubでの活動を始めて久しぶりにJavaScriptを触ったんですが、これもずいぶん変わったようで。最初はちょっと戸惑いました。とにかくまあ、Nuxt.jsはhtmlとcss、JavaScriptの見通しが良いってことで環境を構築する上で非常によろしい。

なお、今回はポートフォリオ的なものにしようかと思いますんでそう更新もしないでしょうが、以前のデータをアーカイブとして移植しつつ、またボチボチやっていこうと思います。