JavaScriptへの不信からエンジンを作り直し、JaiでPolygon v2をリリース
Rewriting a Commercial Engine in Jai
Polygonjs作者が、8年かけて育てたthree.js/TypeScriptベースのエンジンをJaiでゼロから書き直した理由を語る。JavaScriptではメモリの解放を確認できず、ガベージコレクタによるフレーム落ちも避けられない。Jaiならメモリとパフォーマンスを完全に制御でき、WebAssemblyからネイティブまで展開可能。約300ノードとレンダラを自作する2年間の苦闘を経てv2が公開された。
もしテストスイートがメモリリークの場所を教えてくれず、リークがあるかどうかさえ分からないなら、あなたは目隠しで走っているようなものだ。
HNでの議論
38- program_whiz
Jaiに対する私の意見は、いくつかの便利さを備えた言語ではあるが、結局のところそれを優先する強い理由はない、というものだ。zigやodinなどと同様、基本的にはシンタックス上の便利さをいくつか加えただけのCに過ぎない。
最初は評価した設計上の選択肢もあるが、それらは特定のゲームの書き方に非常に強く適合しており、汎用目的とは言えない(同じ設計上の選択肢は他の領域では非常に制限的だ)。
コンパイラの速さは確かに評価するが、結局のところ私は離れてしまった。シンタックスのわずかな改善は、膨大なツール、ライブラリ、ドキュメント、サポートなどを失うことを正当化しないからだ。
この言語は慣習的にもかなり風変わりで、それはJon Blowのスタイルによるものだと思うが、(カスタムゲームエンジンだけでなく)より広いプログラミングの経験を持つ人にはかなり奇妙に感じられるかもしれない。
もちろん、どんな貢献や提案も、典型的なJBの丁寧さと魅力で迎えられる :)
ここで人々が挙げる欠点はすべて、彼がいかに天才かを理解していないだけであり、実はそれらは機能なのだ!
- Twey
JBの当初の主張は、少なくとも私が理解した限りでは、LLVMなどの言語ツールのおかげで、今や誰でもPLのバックグラウンドなしに自分の好みに合わせた言語を素早く作れるようになり、したがって言語が存在を正当化するために必要な新規性と汎用性のハードルは過去に比べて劇的に下がった、というものだった。残念だが、彼の個人的な言語が12年経ってもクローズドベータであるという事実は、いくつかの点でその主張に対するかなり強い反証だ。
- manuisin
これを試してみたい。しかし、SDKを使うにはまずJaiベータにサインアップする必要があるのだろうか?
他にもいくつか質問がある:
- 開発環境は依然としてウェブファーストなのか、それとも二次的なターゲットなのか?
- three.hsの最高の点の一つは、適切に設定すればHMRによる超高速のフィードバックループで、リフレッシュや状態の損失なしに1秒以内に実行中のアプリに変更が反映されるのを確認できることだ。ここでも同様のことは可能か?
- PBRサポートはどの程度完全か?
- ライトプローブやライトプローブグリッドはサポートされているか?それは主にマテリアル/シェーダー関連のコードなので、プロジェクトの要件に基づいて追加することは不可能ではないはずだ。
- 例の中にスケルトンメッシュのサポートも見当たらなかったが、それは可能か?
- また、WebXRサポートはどの程度実現可能か?
- frading
これは、かつて販売し商業プロジェクトを出荷していたエンジンを、思い切って書き直すに至った理由のまとめだ。
- matja
Jaiのマニュアル、あるいは他の言語との比較情報はあるのだろうか?リソースを見つけるのが難しいと感じている。Wikipediaのページもないし、ウェブ検索ではいくつかの動画とランダムなgithubプロジェクトがリストされるだけだ。