Qullusrent3 独自エンジンについて考察と音楽などについて/Qullusrent3: Thoughts on the Custom Engine and Music, etc.

今回、Qullusrent3をDirectX11にリファインし、Unreal EngineやUnityなどを使わずシェーダ等を全部書いたわけだが、DirectX11は何かと難しいと最初から分かっていたので苦労も多かった。
しかし独自エンジンにすることで、シェーダを自由に書ける分やれることも多く勉強になった部分は多々ある。
まぁたぶん次作があるならUnreal Engineとか使うかもしれないが、、、。
今回シェーダは全部合わせると70を超すシェーダを製作した。
DirectX11では、描画すべてがシェーダありきで構成されており、点1つ書くだけでも必ずシェーダを通さないといけない。
いわゆるVS→PS(頂点シェーダー、ピクセルシェーダー)での描画である。
VS側で画面のどの座標に書くかをワールド座標などを取得し、PS側へ渡し、PS側で実際の画面への描画を行う。この際に、PSで計算を行い、影や効果などを求め、最終的に合成し出力を行う。
今回シェーダー以外にもボーンシステムによるキャラアニメーションも独自実装している。
mixamoでモーションデータは使用させて頂いたため、かなり工程は省けたが、ブレンダーでの融合がなかなか上手く行かなかったり、ボーンのスキニング計算によるメッシュ座標データの再計算に戸惑ったりといろいろあった。
特に今回のQullusrent3ではキャラに約20万頂点、8万以上の三角形が存在するわけで、アニメとなると、その20万頂点の座標をリアルタイムで計算し反映させないとアニメにならない。
ボーンデータから、次のアニメフレームを取得し、アニメフレームに沿ったウェイトを4ボーンで計算を行い、その結果をスキニング計算により20万頂点の座標を更新し、アニメとして成り立たせる必要がある。
最初これらをCPUで行っていた。GPUが結構大変そうだったからだ。
しかしデバッグでCPUスキニングを行うとめちゃくちゃ重いという欠点があった。そのため、最後にはGPU側へ移すことにより高速化を果たすことに成功している。
また、画面外判定や、描画順でのソートなどできる限りの最適化を行うことでステートメントマシンであるDirectX11のステートの数をできるだけ減らし、処理速度を稼いでいる。
そのため、今まで60fpsで作っていた物を120fps化させることも可能となり120fpsの精度で動かせている。
ノートPCなどでは40fpsくらいまで落ちはするが、60fpsで作られていた当時から見ると、倍の120fpsで見ているため、全体的に速くなったように思われる。
まぁ。倉庫番風パズルゲームでそこまで凝るのはどうなのかとも思ったが、どうせ作るなら、綺麗な方がいいし、高速な方がいい。
特にタイムアタックっぽい経過時間があるので、できるだけ軽くでも綺麗にを目指して今回作ってみた。
一応HDRにも対応はしているが、半透明形式であるEXR形式には対応していない。HDR拡張子には対応させたが、半透明の方はlibファイル作成がうまく行かず挫折し、pngファイルを内部でチューニングする方法を取っている。

BGMについても書いておこうと思う。
2年前のリファイン前のバージョンでは、SD-90を用い、Singer Song Writer 10にて、作曲を行った。
今回リファインするにあたりBGMも適用範囲だと考えた。
そこで、DAWで有名なCubaseを購入し、音源インストゥルメンタルもいくつか正式版を購入した。
Singer Song Writerで作ったものをmidiデータとしてはき出し、それをCubaseで読込、音色やパートの増減、微調整を行った。
DAW自体使うのが初めてで何度も音色や雰囲気などを変えてリリースの度にBGMの雰囲気が変わっていた。
タイトルやエンディングを含め全12曲の作成を終え、効果音も少しだけ置き換えたりし、私の中ではリファインたるものになったと思っている。
おまけでMIDIデータを苦労しながらmmlに変換させ、FM音源(YM2608)もおまけとしてモードを追加した。

バグはさすがに200万文字あるソースでないとは言い切れないが、リファインとしては満足となるものとなった。
あとはどうPRしていくかだが、、、、なかなかPRが上手く行かないのが現状ではある。


This time, I refined Qullusrent3 for DirectX11 and wrote all the shaders and such from scratch without using engines like Unreal Engine or Unity. I knew from the start that DirectX11 is notoriously difficult, so it was quite a struggle.
However, by using a custom engine, I gained the freedom to write shaders as I pleased, which opened up many possibilities and taught me a lot.
Well, if there’s a next project, I might probably use Unreal Engine or something…
This time, I created over 70 shaders in total.
In DirectX11, all rendering is built around shaders; even drawing a single point requires passing through a shader.
This is the so-called VS→PS (vertex shader, pixel shader) rendering process.
The VS side retrieves world coordinates and other data to determine where on the screen to draw, passing this to the PS side. The PS side then performs the actual drawing onto the screen. During this, the PS performs calculations to compute shadows, effects, etc., and finally composites and outputs the result.
Beyond shaders, we also implemented our own character animation system using a bone system.
Using motion data from Mixamo saved us a lot of work, but we encountered various challenges: the blending in Blender didn’t go smoothly, and we struggled with recalculating the mesh coordinate data due to the bone skinning calculations.
Particularly in this Qullusrent3 project, the character has approximately 200,000 vertices and over 80,000 triangles. For animation, those 200,000 vertex coordinates must be calculated and updated in real-time for the animation to function.
We needed to retrieve the next animation frame from the bone data, calculate the weights for the 4 bones based on that frame, and then use skinning calculations to update the coordinates of all 200,000 vertices to make the animation work.
Initially, we handled all this on the CPU because the GPU seemed quite strained.
However, debugging revealed a major drawback: CPU-based skinning was incredibly slow. Ultimately, we succeeded in achieving speedup by moving the processing to the GPU.
Additionally, we implemented every possible optimization, such as off-screen culling and sorting for drawing order, to minimize the number of states in the DirectX 11 state machine and gain processing speed.
This made it possible to upgrade content originally built for 60fps to run at 120fps with precision.
While performance might drop to around 40fps on laptops, compared to the 60fps standard when it was built, seeing it at double the speed (120fps) makes the whole experience feel faster.
Well… I did wonder if it was worth going to such lengths for a warehouse-style puzzle game. But if I’m going to make it, I want it to be beautiful and fast.
Especially since it has a time attack-like elapsed time feature, I aimed for something as lightweight yet beautiful as possible this time.
It does support HDR, but not the semi-transparent EXR format. I implemented support for HDR file extensions, but I gave up on the semi-transparent part because creating the lib file didn’t work out. Instead, I opted for a method that internally tunes the png files.

I should also mention the BGM.
In the version before refinement two years ago, I used an SD-90 and composed the music in Singer Song Writer 10.
When refining this time, I decided the BGM also needed updating.
So I purchased Cubase, a well-known DAW, and bought several official sound source instruments.
I exported the MIDI data created in Singer Song Writer, imported it into Cubase, and made adjustments to the sounds, added or removed parts, and fine-tuned details.
Since it was my first time using a DAW, I changed the sounds and atmosphere multiple times, so the BGM’s feel changed with each release.
I finished creating all 12 tracks, including the title and ending themes, and replaced a few sound effects. I feel this truly qualifies as a refinement.
As a bonus, I painstakingly converted the MIDI data to mml format and added an FM sound source (YM2608) mode as an extra.

While I can’t definitively say there are no bugs given the massive 2 million character source code, I’m satisfied with the refinement.
The next step is figuring out how to promote it… but honestly, promotion isn’t going very well at the moment.

 

Qullusrent3 Ver 2.64

バグ修正
設定から戻り、ゲームを始めると、設定内容が反映されないときがあるそのため、クラッシュに近い状態になることがあった。


Bug Fix
After returning from settings and starting the game, settings may not always be applied. This could cause the game to become unstable, nearly crashing.

体験版 / demo ver.
https://95.gigafile.nu/0129-ha8a418a866cd7d6bc9aee0bac18dd5e8

steam
https://store.steampowered.com/app/2983180/Qullusrent3

Qullusrent3 Ver2.62a 公開/Released

ブロック配置型パズルゲーム Qullusrent3 Ver. 2.62aを公開しました。

2023年の公開したDirectX9版のDirectX11リファイン版です。
DirectX9との変更点
・テッセレーション等を使った各種エフェクト
・ボーンシステムを用いたキャラのアニメーション
・HDRへの対応
・ジョイパッドへの対応
・SD-90で作った曲を、Cubase 14 Pro + HALion 7 + Groove Agent SE 5 + SimpleTANK 4 MAX + α(総合計10万くらい?)を用いて音色や雰囲気の変更(これはもう数回は変更掛けてより雰囲気の近いものに変更をしている)
・処理の軽減等の最適化に努める(基本軽快に動くよう、実際にノートPCでも動作可能)
・鏡ステージ追加
・120ステージまで拡張(体験版は12ステージまで拡張)
・効果音量を上げた(半分くらい再作成
・120fps対応させた(下位互換(改
・GPUスキニング対応
・機種依存修正
・圧縮前ファイル容量1.12 GB (1,202,722,963 バイト)

総ソース行数66,696行、総文字数1,986,685文字(コメント除く)。もはや一個人作成のプロジェクトというかゲームではないですね

一応完成版となり、あとはバグがあれば修正する方針で進めていきます。

体験版 https://1.gigafile.nu/0124-l88d600135272ee30b38f2457b7b58d0b

Steam https://store.steampowered.com/app/2983180/Qullusrent3 

itch.io https://office-oohara.itch.io/qullusrent3

DL Site (更新に数日かかります) https://www.dlsite.com/home/work/=/product_id/RJ01082868.html

DMM https://www.dmm.co.jp/dc/doujin/-/circle-mylibrary/detail/=/product_id=d_673549/

BOOTH https://officeohara.booth.pm/items/4604317


Block-placement puzzle game Qullusrent3 Ver. 2.62a has been released.

This is a refined DirectX 11 version of the DirectX 9 edition released in 2023.
Changes from DirectX 9
・Various effects utilizing tessellation and other techniques
・Character animation using a bone system
・HDR support
・Joypad support
・Tracks created in SD-90 were modified for sound and atmosphere using Cubase 14 Pro + HALion 7 + Groove Agent SE 5 + SimpleTANK 4 MAX + α (total cost around ¥100,000?) (This has been revised multiple times to achieve a closer match to the desired atmosphere)
・Optimized for reduced processing load (designed for smooth performance, actually runs on laptops)
・Added Mirror Stage
・Expanded to 120 stages (Demo version expanded to 12 stages)
・Increased effect volume (Reworked about half)
・Made compatible with 120fps (Backward compatible (Modified))
・Added GPU skinning support
・Fixed device-specific issues
・Uncompressed file size: 1.12 GB (1,202,722,963 bytes)

Total source lines: 66,696. Total characters: 1,986,685 (excluding comments). This is no longer a project or game created by a single person.

This is now the final version. Moving forward, we’ll proceed with a policy of fixing any bugs that are found.

demo/trial https://1.gigafile.nu/0124-l88d600135272ee30b38f2457b7b58d0b

Steam https://store.steampowered.com/app/2983180/Qullusrent3 

itch.io https://office-oohara.itch.io/qullusrent3

DL Site (Updates may take several days) https://www.dlsite.com/home/work/=/product_id/RJ01082868.html

DMM https://www.dmm.co.jp/dc/doujin/-/circle-mylibrary/detail/=/product_id=d_673549/

BOOTH https://officeohara.booth.pm/items/4604317

 

Qullusrent3 Ver 2.61d 公開/Released

Qullusrent3 Ver 2.61dを公開しました。
60fpsを基準に作っていましたが、120fpsを基準に変更しました。
効果音の一部を作り直しました。
音楽のフェードアウトや、音楽の切替時にカクッとなるところの修正。
タイトルロゴに回転するステージっぽいのが出ますが、あれのステージ切替時間をちょっと延ばしました。
それ以外にも些細な修正。
未だにアニメーションのスキニングはCPUで行っていますが、将来的にはGPUで出来たらなぁと思ってます。


Qullusrent3 Ver 2.61d has been released.
It was originally built targeting 60fps, but we’ve changed the target to 120fps.
Some sound effects have been reworked.
Fixed stuttering during music fade-outs and transitions.
The rotating stage-like effect appears in the title logo; we slightly extended its stage transition time.
Includes other minor fixes.
Animation skinning is still handled by the CPU, but we hope to move it to the GPU in the future.

 

新規ステージ「鏡」追加。Steam リリース済 Ver 2.5b6

新規ステージ「鏡」追加。

本当はもっとリアルな鏡っぽく反射を行いたかったんですが、沢山あるオブジェクトをすべての角度からとなると滅茶苦茶重くなるわけです。
なので基本的な反射しか入れていません。

1つのカメラで1つの反射をとなると、最低でも100台以上のカメラが居るわけでして、、、
いずれはちゃんとした反射を入れたいけど、どうなることやら、、、

Steam
https://store.steampowered.com/app/2983180/Qullusrent3

DL Site(更新には時間少し掛かりそう)
https://www.dlsite.com/home/work/=/product_id/RJ01082868.html

DMM(更新されてると思う)
https://www.dmm.co.jp/dc/doujin/-/detail/=/cid=d_673549/?dmmref=ListRanking&i3_ref=list&i3_ord=1

体験版
https://14.gigafile.nu/0114-r9906cd3a258ec66f7b9c3e24be29440a

english etc
https://office-oohara.itch.io/qullusrent3

Qullusrent3 対応言語追加中!

対応言語を、今までの
0: 日本語
1: 英語 (English)
2: 中国語 (中文)
3: 韓国語 (한국어)
4: フランス語 (Français)
5: イタリア語 (Italiano)
6: スペイン語 (Español)
7: ポルトガル語 (Português)
8: アラビア語 (العربية)
9: ウルドゥー語 (اردو)
10: ミャンマー語 (မြန်မာ)
11: クメール語 (ខ្មែរ)
から、拡張して、

12: ドイツ語 (Deutsch)
13: ロシア語 (Русский)
14: オランダ語 (Nederlands)
15: スウェーデン語 (Svenska)
16: ノルウェー語 (Norsk)
17: デンマーク語 (Dansk)
18: フィンランド語 (Suomi)
19: ポーランド語 (Polski)
20: チェコ語 (Čeština)
21: ハンガリー語 (Magyar)
22: ルーマニア語 (Română)
23: ブルガリア語 (Български)
24: クロアチア語 (Hrvatski)
25: スロバキア語 (Slovenčina)
26: スロベニア語 (Slovenščina)
27: リトアニア語 (Lietuvių)
28: ラトビア語 (Latviešu)
29: エストニア語 (Eesti)
30: ギリシャ語 (Ελληνικά)
31: トルコ語 (Türkçe)
32: ヘブライ語 (עברית)
33: ヒンディー語 (हिन्दी)
34: ベンガル語 (বাংলা)
35: タミル語 (தமிழ்)
36: テルグ語 (తెలుగు)
37: マラヤーラム語 (മലയാളം)
38: カンナダ語 (ಕನ್ನಡ)
39: グジャラート語 (ગુજરાતી)
40: パンジャブ語 (ਪੰਜਾਬੀ)
41: マラーティー語 (मराठी)
42: ネパール語 (नेपाली)
43: シンハラ語 (සිංහල)
44: タイ語 (ไทย)
45: ベトナム語 (Tiếng Việt)
46: インドネシア語 (Bahasa Indonesia)
47: マレー語 (Bahasa Melayu)
48: タガログ語 (Tagalog)
49: スワヒリ語 (Kiswahili)
50: アムハラ語 (አማርኛ)

まで拡張中です。

Supported languages, as before

0: Japanese

1: English

2: Chinese (中文)

3: Korean (한국어)

4: French (Français)

5: Italian (Italiano)

6: Spanish (Español)

7: Portuguese (Português)

8: Arabic (العربية)

9: Urdu (اردو)

10: Burmese (မြန်မာ)

11: Khmer (ខ្មែរ)

to the following:

12: German (Deutsch)

13: Russian (Русский)

14: Dutch (Nederlands)

15: Swedish (Svenska)

16: Norwegian (Norsk)

17: Danish (Dansk)

18: Finnish (Suomi)

19: Polish (Polski)

20: Czech (Čeština)

21: Hungarian (Magyar)

22: Romanian (Română)

23: Bulgarian (Български)

24: Croatian (Hrvatski)

25: Slovak (Slovenčina)

26: Slovenian (Slovenščina)

27: Lithuanian (Lietuvių)

28: Latvian (Latviešu)

29: Estonian (Eesti)

30: Greek (Ελληνικά)

31: Turkish (Türkçe)

32: Hebrew (עברית)

33: Hindi (हिन्दी)

34: Bengali (বাংলা)

35: Tamil (தமிழ்)

36: Telugu (తెలుగు)

37: Malayalam (മലയാളം)

38: Kannada (ಕನ್ನಡ)

39: Gujarati (ગુજરાતી)

40: Punjabi (ਪੰਜਾਬੀ)

41: Marathi (मराठी)

42: Nepali (नेपाली)

43: Sinhala (සිංහල)

44: Thai (ไทย)

45: Vietnamese (Tiếng Việt)

46: Indonesian (Bahasa Indonesia)

47: Malay (Bahasa Melayu)

48: Tagalog (Tagalog)

49: Swahili (Kiswahili)

50: Amharic (አማርኛ)

Expanding to include these languages.

 

Qullusrent3、第二次正式版公開! Ver 2.41 / Second Official Release!

Qullusrent3、第二次正式版公開! Ver 2.41。

主な修正:バグ修正、セルフシャドウ調整。

 

体験版/demo version 2025.09.21 Update
https://ppp.oohara.jp/download/Qullusrent3_multi_language_version_trial.zip
912MB

youtube
https://youtu.be/_Ojg-PcgLdE

Stearm 2025.09.21 Update
https://store.steampowered.com/app/2983180/Qullusrent3/

Qullusrent3, Second Official Release! Ver 2.41.

Main fixes: Bug fixes, self-shadow adjustments.