SVGベースのゲームのC ++ゲームライブラリ[終了]


8

ChaiScript用のクロスプラットフォームオープンソース2D RPGスタイルゲームエンジンの構築検討しています。

SVGですべてのグラフィックスを実行でき、ジョイスティック入力が必要です。また、私が使用するライブラリは、オープンソースであり、BSDライセンスと互換性がある必要があります。

私はallegroClanLibSDLに精通しています。私の知る限り、これらのライブラリにはSVGの組み込みまたは明らかな統合はありません。また、このサイトでのQt for SVGゲーム開発に関する以前の会話を知っています。

Qtを要件にすることのサイズと複雑さのため、私はQtを避けたいと思っています。また、Qtはジョイスティック入力をサポートしていないようで、SDLまたは他のライブラリも使用する必要があります。

だから私の質問は次のように要約できます:

  • 依存関係を可能な限り最小限に抑えながら(できればQtを完全に回避して)、2D C ++ライブラリでSVGとジョイスティックのサポートを取得する最良の方法は何ですか?

1
なぜSVG が必要なのですか?
AttackingHobo

SVG は必要ありません必要なルックアンドフィールを提供するのに役立ちます。エンジンをさまざまな画面サイズに簡単に拡張でき、さらにアクティブなゲーム領域を動的にズームできるようにしたい。
lefticus 2011年

1
大量のスケーリングが必要な場合、それは良い方法かもしれません。ただし、SVGまたはその他のベクター形式では、大きな欠点があり、各オブジェクトの描画には、より複雑になります。ラスターアートを使用している場合、ほとんどの描画時間はオブジェクトのサイズに依存し、変換の量にもある程度依存します。
AttackingHobo

1
SVGが2Dベクトルベースのゲームエンジンで使用するフォーマットにとって優れたアイデア(tm)である理由は、Inkscapeという言葉に要約できます。真実は、コードがゲームの半分にすぎないということです。コンテンツ制作のための優れたツールがなければ、最小のゲームを除いてすべてを成功させることはできません。
Lennart Rolland 2013年

1
あなたは、常に負荷に最初spritesheetにSVGをレンダリングすることができます
Sidar

回答:


2

libcairoのような2DグラフィックライブラリでSDLまたは別の入力ライブラリを使用できなかった理由はわかりません。

ChaiScriptについて、Luaをご存知ですか。


ルアのことを聞いたことがあります。私はChaiScriptの作成者の1人であり、言語を使用するプロジェクトに取り組むことを目指しています。その上、C ++でChaiScriptを使用するよりもLua(SWIGまたはLuaBindを考慮したイベント)のほうが作業が大幅に少なくなります。
lefticus

libcairoについて。libcairoをSDLにレンダリングするために多くの作業とかなりの数の依存関係があるようです、または何か不足していますか?
lefticus

ああ、もう一つ。SVGファイルを実際に読み込んでlibcairoでレンダリングする方法はありません。
lefticus

SVGは単なるXMLです。きっとあなたのニーズに合うsvgファイルを読むためのライブラリがあるでしょう。Cairoは高速な2Dグラフィックライブラリであり、目的の視覚スタイルを提供します。SDLでCairoを使用すると、見栄えが簡単になります。
bkersten 2011年

したがって、私が本当にSVGに設定していて、自分のレンダラーをロールバックしたくない場合、それはlibcairoを必要とするlibrsvgを意味します。または単にQt。好奇心から、クロスプラットフォームのSVGベースのゲームエンジンを構築した経験がある人はいますか?
lefticus

2

私はallegro、ClanLib、SDLに精通しています。私の知る限り、これらのライブラリにはSVGの組み込みまたは明らかな統合はありません。

あなたがたまたま尋ねたことはありますか...なぜですか?

確かに、SVGは基本的な「XMLをメモリに入れて検証する」レベルで実装する複雑な仕様です。しかし、SVGレンダリングが高速ではないという単純な事実を十分に理解しているとは思いません。

Webブラウザーは、500ミリ秒未満でWebページをレンダリングする場合は高速です。SVG画像のレンダリングには20ミリ秒以上かかることがありますが、これは小さくてシンプルな画像の場合です。あなたがゲームで見つけるかもしれない何か、グラフィック的に重要なゲームは、ずっと長くかかります。SVG画像のレンダリングは、高速アニメーション用ではありません。

libCairoのような低レベルのものでも、正確には高性能レンダラーではありません。確かに、ブラウザには十分高速ですが、ソフトウェアレンダリングのパフォーマンスが完全に優れているわけではありません。

要するに、私はSVGを完全に捨てて、libCairoがあなたのニーズを満たすことができるかどうかを確認します。これは評価目的のためだけであり、意図した目的に近い状況で十分に高速に実行されるかどうかを確認します。それが決定したら、テクノロジー(Qt、SDLなど)に関して次に何をするかを決定できます。


1

このSVGに関しては、2Dであっても、オンザフライコンテンツの生成やリアルタイムレンダリングには最適ではありません。

SVGファイルを使用して元のコンテンツを作成する場合は、適切なローディング画面/カットシーンを使用して、前レベル/エリア生成フェーズを行い、SVGコンテンツを使用して必要な解像度の標準画像をレンダリングします。これにより、SVGの柔軟性を維持しながらマルチ解像度のターゲティングを行うと同時に、通常の画像で簡単にコーディングできます。アイデアではありませんが、この方法では、ハードウェアを利用して、事前レンダリングされた画像を、SVGファイルからコンテンツを即座に生成するのではなく、設計された方法で再生できます。コンピュータがロード画面/カットシーンを表示するだけなので、SVGから標準画像を生成するために利用可能なリソースの大部分を費やすことができるため、高速かつ効率的な方法でそれを行うことができます。


0

IrrlichtはSVGとジョイスティックをサポートしています


4
いくつかのリンクと詳細な説明があれば、これは良い答えになるでしょう。
MichaelHouse
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.