HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0223
LRIKIゲームエンジン Lumino の紹介と意見募集10解決


LRIKI

リンク

2021/2/23(Tue) 16:29:13|NO.92329

こんにちは、LRIKI と申します。

HSPプログラムコンテスト2020では、自作のゲームエンジンとHSPを組み合わせたゲームを応募させていただきました。
https://dev.onionsoft.net/seed/info.ax?id=1955
改めて、お世話になった方々にお礼申し上げます。

さてこのたびはそちらのゲームエンジン Lumino がギリギリ公開できるようになってきましたので、改めてご紹介させていただきたいと思います。
概要や開発状況は次のページをご覧ください。
https://github.com/LuminoEngine/Lumino/blob/master/README.md

インストールとチュートリアルは次のページから始めることができます。
https://luminoengine.github.io/articles/documents/getting-started/getting-started-hsp3.html

内容はまだ最低限ですが、チュートリアルを追うことで何となくプラグインの使用感はつかめると思います。


■hgmig3/hgimg4とどう違う?

良くも悪くもこれひとつでゲームを作り上げるためのプラグインです。
・ノードを使った3D表示の機能はほぼ同等です
・イベントリストに相当する機能はありません(計画中)
・ピクセルパーフェクトな2Dは苦手ですが、3D空間の中で2Dキャラクターを動かすことは得意です
・3DモデルファイルはFBXや独自形式ではなく、glTF形式を標準的に使用します(VRMも対応中)
・OpenGLES・DirectX9ではなく、Vulkan・DirectX12で動きます
・シェーダ言語はHLSLです

その他、特徴的なシステム
・3Dスプライトや軌跡を表示できるパーティクルシステム
・HTML/CSSのように柔軟に外観をコントロールできるGUIシステム
・キーコンフィグや様々なデバイスを統一的に扱える入力システム
・オーディオミキサーのようにエフェクトをコントロールできる音声システム
・ファイル形式を問わず素材をパッキング・暗号化して配布できるアセット管理システム
・C/C++ や Ruby にも対応しているため、他の言語を学ぶときにもこのライブラリが利用できます


■試す際に問題となりそうな点 & 直近の修正予定

冒頭で "ギリギリ" と書きましたが、試せるレベルにはなっているものの、課題が山積みです。
・大量の機能に対してドキュメントの作成が追いついていません
・レンダリングエンジンの最適化が間に合っておらず、描画が重いです
・エラーメッセージが不親切です
・デフォルトでは物理ベースレンダリングで動きますが、若干計算が間違っていそうです(少し暗い)

またコンテストへ応募したゲームの開発に必要な機能のみ超特急で開発したため、それ以外の開発で使うにはまだまだ不具合が潜在しているものと思います。
すぐにでも使って何か作りたいという方がいれば、サポートについて考えますのでご連絡ください。(多分 Discord を使うと思います)


■【本題】プラグインを開発すること自体への意見募集

現在 Lumino HSP 版の開発にどれだけの時間を割くべきか悩んでおり、「そもそもこのような大きなプラグインを HSP ユーザーが求めているのか?」が気になっています。

私も何年も前に hgimg3 等を使ってゲームを作っていたことがあり、このプラグインはその時に感じた不満やアイデアの多くをベースに作成しています。しかしその頃とはコミュニティの状況が変わっているかもしれません。
肌感覚でも構いませんので、「特にhgimg4で困ってないなぁ」、「こんな機能があれば使いたい」、「Luminoを使って開発してみたいものがある」等ありましたら、ご意見いただけると非常に助かります。

良い方向に動きそうであれば、改めてフィードバックや開発者の募集等もさせていただきたいと考えています。

※一応の補足ですが、このプラグインを有償化する予定はありません。今後も OSS として開発を進めていくつもりです。



この記事に返信する


Velgail

リンク

2021/2/24(Wed) 22:30:44|NO.92340

LightNote(古っ)、Lumino 0.1あたりを触ったことがあったので、懐かしく思いました。
サウンドプラグインとしての機能がかなり使いやすかったのを覚えています。

まだTBD状態ですし、おそらくサウンドプラグインの切り出しはなされないのかなとちょっと残念(?)に思いながら、
HSPをサポートしていただけるというそれだけで、HSPという言語界の活性化につながることを期待しています。

(3Dモデルはコストが高いのでちょっと手を出しにくいな〜 なんて思っているので、多分本体のグラフィックエンジンは使わずじまいになりそう…… C++だとしても、ですが)



youdai

リンク

2021/2/26(Fri) 18:53:36|NO.92354

Lumino 0.10.0ライブラリの感想を書きます。

批判的な記述が多くなってしまいましたが、Luminoそのものには大変期待しています。
将来的には普及する可能性が十分あるライブラリだと思います。

●PC環境

CPU Core i7 860S 2.53GHz
メモリ 8GB(Dual) DDR3
グラボ GeForce GT740(2GB DDR3)
ディスプレイ 1024*768(フルカラー)

●3DライブラリとしてのLumino

HSP3のライブラリとしてではなく、横断的に他の3Dライブラリと比較した場合の
Luminoの印象を書きます。
自分が分かる範囲の、実際に利用している3Dライブラリとしては、以下のものになります。

・HGIMG3(HSP3)
・HGIMG4(HSP3)
・DXライブラリ(C++/BCC5.5)
・Panda3D(Pyton2,Python3)

この中でLuminoと機能的に近いものは、DXライブラリやPanda3Dだと思いました。
DXライブラリやPanda3Dは所謂「ゲーム関連全部入り」のライブラリであり、
導入すれば即使えるというメリットがあります。

ただ、HSP3の拡張ライブラリとしてLuminoを捉えた場合、
HSP3の標準ライブラリや比較的普及した外部拡張ライブラリと機能重複する部分が多々あり、
それらの重複したライブラリはLumino上から実装する意味はないと思いました。
例えば、サウンドや入力デバイス関連は必要ないと思いました。

●HSP3のライブラリとしてのLumino

HSP3というスクリプト言語上のLuminoとしてみた場合、Luminoのコマンドは長過ぎると思いました。
HSP3で標準的に利用されているエディタはHSP3フルセットに同梱されるhsed3です。
hsed3はコード補完機能が実装されていないので、長いコマンドを入力することには向いていません。
恐らく、C++版のLuminoと命令を統一したいと考えてのことでしょうが、
C++とHSP3は言語的に大きく異なるスクリプト構造をしているので、
統一しようとするのは無理があるかなと思います。

またコマンドが長いと、一見すると難しそうなコマンドに見えるという問題もあります。
Luminoはこのコマンドの見た目ほど難しい構造をしていないライブラリだと思います。
難しさとしては、かつて利用されていたEasy3Dライブラリ程度が理解できるなら
使えるライブラリだと思います。(ただし、これは.hsを流して読んだ程度の印象です)
この部分は非常に勿体ないなと思いました。

ただ上記の意見はあくまで初心者向きの話であり、このコマンドの長さの部分については
Luminoを中〜上級者のみをターゲットにしたライブラリと考えているならば、
現状でもこれで構わないと思います。
中〜上級者は恐らく、マクロでLuminoを利用していくと思われます。

●MITライセンスについて

Luminoの配布ライセンスはMITライセンスとのことですが、これは非常に素晴らしいと思いました。

●座標系について

Luminoの座標系は左手系座標ということですが、今現在の主流は右手系です。
その理由はBlender等のモデリングツールや、FreeCAD等の3DCADツールが右手系であるからです。

恐らく、DirectXの座標系に合わせたということなのでしょうが、
左手系は現在使いやすいものではありません。

HSP3のHGIMG3が左手系なのは描画がDirectXであるということと、
リリースした時代的に左手系だったからであって、
左手系そのものが好まれているわけではありません。
実際に自分が今HGIMG3で本気で作品を作るとしたら、
まず座標系をマクロで右手系にしてから使うことになると思います。

また現在でも左手系のレンダラーとしてPOV-Rayとその関連ツールがありますが、
これもPOV-Rayがリリースされた時代背景が関係しています。
またPOV-Rayはスクリプトで座標系を右手系に変更できるので、許容されているという面もあります。

なので、もし座標系に拘りがないとしたら、POV-Rayのようにスクリプト上で
座標系を変更できたらいいなと思いました。
それともすでにできるのでしょうか?
コマンドリファレンスを読んだ限りではよく分かりませんでした。

●Luminoの要求動作環境の高さと機能について

Luminoの要求する動作環境を車に例えると、HSP3のHGIMG3は軽自動車、HGIMG4は常用車、
LuminoはF1カーといった印象です。

Luminoは要求スペックの高さの割に、実装されている高度な機能の中に
使いたいものが少ないのが気になりました。
Luminoに実装されている高度な機能としては、

・SSR(スクリーンスペース反射)
・鏡面反射

がありますが、これらはかなり重たい機能です。
恐らく、これらがLuminoの要求動作環境を高くしている原因だと思われます。

Luminoの機能は実装されている機能全体としては豪華だと思うのですが、
実際に利用される機能と要求スペックとの差に、かなり大きなズレがあると思います。
日本ではDXライブラリが、欧米ではPanda3Dが普及している理由は
要求スペックがライブラリを利用する側の要求する機能とマッチしているからだと思います

Luminoに実装されている高度な機能の例としてあげたSSR、鏡面反射ですが
これらはゲームを作る上では必須の機能では、現在ではまだないと思います。
むしろこれらを実装すると動作が非常に重くなってしまうので、
仮に機能としてエンジンに実装されていても使わないか、
ユーザー側で機能をオフにできるコンフィグをつけなければならなくなると思います。
恐らく市販のゲームでもオフにできるコンフィグは必ずついているものだと思います。
上記の高度な機能は映像の分野では当たり前のものですが、
ゲームの3Dライブラリとして利用する場合、まだ重たい機能だと思います。

ただ、それはゲームで実装する場合の話であって、研究目的で自己完結する利用方法であれば
利用できる機能だと思います。

もしゲームエンジンとしてLuminoを発展させたいのであれば、
例えば以下のような機能があるといいと思います。
ただ、この場合恐らく、全面的な改修が必要になってしまうと思います。

・DirectX9.0cで動作すること
・ピクセルシェーダー2.0で動作すること
・上記が動作する程度のPCスペックで動作すること
・SSRではなく動作パフォーマンス重視の近似SSR
・動作パフォーマンス重視の近似SSS

●なぜパフォーマンスを重視するのかについて

ゲームのライブラリを利用する側は、動作パフォーマンスと機能のせめぎ合いの中で
自分にとって有用な機能を取捨選択しながら制作します。

ゲームを作成する上でライブラリを利用する側が重視するのは、
描画としての機能より動作パフォーマンスだと思います。

例えばHGIMG4だと同時に256個のオブジェクトを60FPSで描画できるPCなら、
HGIMG3ではその3倍の768個のオブジェクトを描画できます。

これはゲーム性そのものに関係してくることなので、
ライブラリを利用する側としては最も重視しなければならない要素だと思います。
もしその時、制作したいゲームが大量のオブジェクトを同時に表示することになるなら
今でもHGIMG3を利用するでしょう。
それほどに動作パフォーマンスというものは重要になっています。

●モデルにglTFが使える事について

モデルにglTFが使えることは非常に良いと思いました。
Blenderから直でモデルを出力できるのは便利だと思います。
ただLuminoの.hsのコマンドリファレンスや、
Githubで公開されているTIPSを読んだだけでは
モデルを表示できる段階まで自分は進めませんでした。

●リファレンスやサンプルが不足していることについて

これはご自身でも自覚していると思うのですが、
Luminoにはリファレンスやサンプルが深刻に不足しています。
これだけで何かを実際に作成するのは不可能だと思いました。

また、上記の理由でGithubの概略からしかLuminoの機能を憶測するしかありません。
この感想自体もGithubの概略から憶測して書いたものです。

●3Dライブラリを利用する側としてみた場合のLumino

HSP3のHGIMG4の魅力はこれから発展していく途上にあるライブラリであるということです。
HGIMG4のターニングポイントは恐らく、Gameplay3Dのデモで公開されている3Dライブラリの
機能がHSP3上で全て実装された後どうなっていくのかという点です。
そこで開発終了なのか、それ以上を目指していくのかで大きく異なった展開になるでしょう。
また現状でも、シェーダーを自作すればかなり高度な表現ができることが分かっています。
動作も軽快です。

DXライブラリはすでに十分完成されたライブラリです。
シェーダーを自作すればHDRIとそれを反映したスペキュラー等の高度な表現も実装できそうです。
動作も軽快です。

Panda3Dについては自分からはすでに十分完成されたライブラリに見えるのですが、
公式としてはもっと拡充していく予定のようです。開発もかなり活発に行われています。
これもDXライブラリと同じく、高度な表現はシェーダーを自作すれば実装できそうです。
動作も軽快です。

それに対してLuminoはどうなるのか。
まず現状としてLuminoは自分のPC環境では満足に動作しないでしょう。
そうなっていくと研究することですら難しいと思います。

現状すぐに作品を制作するに当たっては、自分ならHGIMG4かPanda3Dを使います。
それはLuminoがどうというのではなく、コマンドの習熟度が理由です。

もし今後Luminoの要求動作スペックが低くなり、リファレンスが充実して、
研究することも可能になればLuminoが選択肢の中に入ることも十分あると思います。

またゲームを配布する際も要求動作スペックが低い方がより多くの人に
ゲームをプレイして貰うことができます。
これはとても重要なことです。
現状では仮にLuminoのライブラリで制作して配布したとしても、
満足な環境でプレイできる人は非常に限られると思います。

これからLuminoがHSP3ユーザーに利用されていくのかどうかについては、
Lumino for HSP3ライブラリがどうという問題ではなく、
Luminoライブラリそのものとしての機能如何にかかっていると思います。



TOMATO

リンク

2021/2/26(Fri) 20:34:46|NO.92357

個人的な意見です。異論は"認めます"。

>DirectX9.0cで動作すること

2021年にもなって、DirectX9.0cなのはどうなんだろう…とは思いました。
DirectX9.0c は 2004年ぐらいにリリースされているので、かれこれ17年前ですよね。
https://forest.watch.impress.co.jp/article/2004/07/30/directx90cjp.html

ゲーム配信プラットフォームの「Steam」を使用しているユーザー調査によると、
2021年現在「DirectX12対応GPU & Windows 10」の組み合わせのシェアは80%近くあります。
https://store.steampowered.com/hwsurvey/Steam-Hardware-Software-Survey-Welcome-to-Steam?l=japanese

Lumino が DirectX12 にしたのも至極当然とは思いました。



youdai

リンク

2021/2/26(Fri) 22:00:37|NO.92358

>DirectX9.0cで動作すること
自分のグラボでも12対応なのですが機能的にはDX10で、実際に満足に動くのはDX9.0c程度の機能です。
これについては自分のグラボに合わせて考えました。
オンボやCPUにチップインされているGPU程度の環境を考えるとあんまり間違った意見ではないと思ってます。
DXライブラリでもDirectX9.0cに対応しています。
ユーザー調査に関してはあまり信頼性のおけるデータではないと思います。
そもそもSteamを利用するユーザーであれば高機能のグラボを持っていて当然ですから。

ただTOMATOさんのご意見も間違いではないと思います。
自分の意見は一部の自分のようなロースペックユーザーの意見だと思ってください。



youdai

リンク

2021/2/26(Fri) 22:02:46|NO.92359

間違いました。
実際には機能的にはDX11で動作的にはDX10でした。
GT740はDX12に対応してませんでした。



X

リンク

2021/2/26(Fri) 23:52:10|NO.92362

>課題が山積み
もうそれはそうだろうなとしか言えないくらいです。
ちょくちょくサイトも拝見させていただいてはいたのですが、あぁHSPには無理だろうなって思うくらい凄いものを作られていたので。
E3Dのようなものを作りたいとおっしゃっていたことを記憶していますが、本当に作り上げてこられて
コンテストで名前をお見掛けして何というか自分のことのように感激してました。
リファレンスが出来上がることに期待できる楽しみができました。



Velgail

リンク

2021/2/27(Sat) 23:37:38|NO.92364

動作要求について異論。

確かに、DX12を要求する、ということは少し水準が高いようにも見えます。DX9が汎用性でベストであるというのは一見正しいです。
ですが。

そこに上げた「DXライブラリ」の存在、忘れていませんか?

DXライブラリは汎用DX9系ラッパーライブラリとして著名です。ここの界隈にLuminoが殴り込んだとしても誰も見てくれません。

また最近、実際のゲームでDirect3D 9Ex脱却の動きがあります。
・FF14はVer3.0でDX11を導入してVer5.0でDX9を切り
・PSO2はEP6大型アップデート6にてDX9エンジンからDX11エンジンへ(PSO2:NGSエンジンへ)変更

DX12のライブラリは上記の周りのゲームの現状から見ると「最先端すぎる」という気はあります(DX11ベースのライブラリが良かったのでは と)
しかし、DX9のライブラリを今更作る価値があるかと言われればNO。DX11以上のライブラリとしてLuminoが発展するほうが良いと思います。
上記ゲームがDX11対応必須としていくことは、今後のPCの利用者がDX11前提でゲームをしてくれることにも繋がります。
DX12を採用することで、開発を楽にキレイな画面を作れるというメリットが有るならDX12だって受け入れられます。
というか、そもそもHaswell時代以上ならIntelCPUですらDX12対応しているようですしね。

悪態:
今次世代エンジン搭載PSO2が動かないようなスペックのPCで重いだのガタガタ言われても、ゲーム開発者も困る。
そういうゲームのほうが大多数になる以上、「ゲームエンジンの最適化度合いは重要」ですが、DX12だから何か問題があるわけでもないでしょう。



LRIKI

リンク

2021/2/28(Sun) 02:23:00|NO.92365

> Velgail さん、X さん

覚えていただいていて恐縮です!ありがとうございます!

確かに以前も「グラフィックいらないからサウンドプラグインとして力入れてほしい」といった意見もいただきました。やっぱりそっちの方が期待大きいのかなぁ…
ちなみに切り出しはやる予定です。例えば Lumino のうちサウンドとインプットの機能だけ使う、といったこともできるようにします。


> youdai さん

ありがとうございます!
とても真剣に評価いただいたものと思います。大変助かります。

おっしゃっていることを漠然と感じていましたが、改めて Lumino 自体とその周辺状況を含めた問題について認識できました。
対策に向けて、参考にさせていただきます。


なお現状でできそうな回答ですが、Lumino は DirectX12 世代よりも古い API には対応しません。
対応するものは DirectX12, Vulkan, Metal(予定), WebGPU(予定) です。

理由としては大きいものは次の通りです。
・同じ3Dシーンを描画する速度を測った結果、OpenGL・DX9 は Vulkan・DX12 と比べて最低3倍以上オーバーヘッドが乗った
・AppleがOpenGLを非推奨とした
・新旧世代を混在させるとメンテ難易度が跳ね上がる
・新世代のシェアも、一般的とは言えないまでも「まだ早い」とは判断できないくらいに広がってきた

※Windows10 であれば、GPUが無くCPU内蔵グラフィックスすら対応してなくても、ソフトウェアドライバで DirectX12 を動かすことができます。(Lumino がこれを使うように設定できるようにしないとダメですが…)

また(少し暴論かもですが)上記のように様々な問題を持つ旧APIに対応していた間は開発のモチベを失うことが多く、それでは対応環境云々以前に元も子もないかなということで、このようにしています。

今はまだ私一人のリソースだけで開発している状態なので、この辺りが落としどころかなと思っています。



法貴優雅

リンク

2021/2/28(Sun) 12:39:49|NO.92369

ライブラリの使用感を無責任に書かせてもらいますと

●ネガティブ
重たいです。サンプルのテキスト表示すら起動時に間があります。
命令が長い。好みの問題かもしれませんが命令文1つ1つが長いです。
サンプルが少ない。もっとできることのアピールが欲しいです。

●ポジティブ
ポテンシャルは高い(高そう)。サイトのスクリーンショットを見る限りできることが多そう。
ワンパッケージ。これも好みの問題かもしれませんが、ひとつで色々できるのは良いと思います。

●その他
私的には他の方が言っておられるDX9やDX12であることのこだわりはありません。
それよりも基本的な動作が軽いことの方を重要視しています。
率直に「天泣のライトレイン」はスゴイと思いましたので、ライブラリの開発を
頑張って頂きたいとは個人的には思います。

●テスト環境
Windows10Pro64ビット
CPU Core i5 3470
メモリ 8GB
グラボ GeForce GT1030
ディスプレイ 1920x1080

以上、ライブラリを使用した際の無責任な感想でした。
開発頑張ってください。



LRIKI

リンク

2021/3/15(Mon) 21:46:02|NO.92484

すみません、返信にすこし時間が空いてしました💦

> youdai さん・●座標系について

いろいろ考えた結果、右手座標系も対応することにしました。
背景は次のページにまとめましたので、興味がありましたらご覧ください。
https://github.com/LuminoEngine/Lumino/issues/193


> コマンド(命令名)の長さについて

少しずつ対策はしているのですが、抜本的には難しいと思います。
Lumino には大量のコマンドがありますが、略したらその分名前衝突しやすくなってしまうので…。

私自身HSPを積極的に触っていた時期こそありましたが、多分今では "HSPらしい" API を考えるのが無理になっている気もしています。
もう少しマトモに動くようになってきたら、API の提案も受け入れていきたいと思います。


> 法貴優雅 さん

それでもフィードバック助かります!

重さは粛々と改善中です。ほかの方にもありましたが、やはりサンプル、サンプルですね…。



ONION software Copyright 1997-2023(c) All rights reserved.