Ich möchte eine plattformübergreifende Open-Source- Spiel-Engine im 2D-RPG-Stil für ChaiScript entwickeln .
Ich möchte in der Lage sein, alle Grafiken mit SVG zu erstellen und benötige eine Joystick-Eingabe. Ich brauche auch die Bibliotheken, die ich benutze, um Open Source zu sein und mit der BSD-Lizenz kompatibel zu sein.
Ich bin mit Allegro , ClanLib und SDL vertraut . Soweit ich das beurteilen kann, hat keine dieser Bibliotheken eine integrierte oder offensichtliche Integration für SVG. Mir sind auch die vorherigen Gespräche auf dieser Website über Qt für die SVG-Spieleentwicklung bekannt.
Ich hoffe, Qt aufgrund der Größe und Komplexität der Anforderung zu vermeiden. Außerdem scheint Qt keine Unterstützung für Joystick-Eingaben zu haben, was die Verwendung von SDL oder einer anderen Bibliothek erfordern würde.
Meine Frage lässt sich also wie folgt zusammenfassen:
- Was ist der beste Weg, um SVG- und Joystick-Unterstützung in einer 2D-C ++ - Bibliothek zu erhalten und gleichzeitig die Abhängigkeiten so gering wie möglich zu halten (vorzugsweise Qt insgesamt vermeiden)?
Antworten:
Ich sehe keinen Grund, warum Sie SDL oder eine andere Eingabebibliothek mit einer 2D-Grafikbibliothek wie libcairo nicht verwenden konnten .
Was ChaiScript betrifft, haben Sie von Lua gehört ?
quelle
Ist es Ihnen jemals in den Sinn gekommen zu fragen ... warum ist das so?
Sicher, SVG ist eine komplizierte Spezifikation, die auf einer grundlegenden Ebene "XML in den Speicher bringen und validieren" implementiert werden muss. Aber ich glaube nicht, dass Sie die einfache Tatsache, dass das SVG-Rendering nicht schnell ist, voll und ganz zu schätzen wissen .
Webbrowser sind schnell, wenn sie eine Webseite in weniger als 500 ms rendern. Das Rendern von SVG-Bildern kann über 20 ms dauern, und das gilt für kleine, einfache Bilder. Etwas, das Sie in einem Spiel finden könnten, ein nicht grafisch-triviales Spiel, wird viel, viel länger dauern . Das Rendern von SVG-Bildern ist nicht für schnelle Animationen gedacht.
Selbst etwas untergeordnetes wie libCairo ist nicht gerade ein Hochleistungs-Renderer. Sicher, es ist schnell genug für einen Browser, aber die Leistung beim Rendern von Software ist nicht gerade beeindruckend.
Kurz gesagt, ich würde SVG komplett fallen lassen und sehen, ob libCairo Ihren Anforderungen gerecht wird. Dies dient nur zu Evaluierungszwecken, um festzustellen, ob es unter Umständen, die in etwa dem von Ihnen beabsichtigten Zweck entsprechen, schnell genug funktioniert. Sobald dies festgelegt ist, können Sie entscheiden, was als nächstes in Bezug auf die Technologie (Qt, SDL, was auch immer) zu tun ist.
quelle
In Bezug auf diese SVG ist nicht die beste für die Erzeugung von On-the-Fly-Inhalten und für Echtzeit-Rendering, auch in 2d jedoch ....
Wenn Sie die SVG-Dateien verwenden würden, um Ihren ursprünglichen Inhalt zu erstellen, könnten Sie eine Phase vor der Ebene / Flächengenerierung mit geeignetem Ladebildschirm / Zwischensequenz durchführen, in der Sie den SVG-Inhalt verwenden würden, um Standardbilder mit der von Ihnen benötigten Auflösung zu rendern. Auf diese Weise können Sie einfach mit normalen Bildern codieren, während die Flexibilität des SVG für das Targeting mit mehreren Auflösungen erhalten bleibt. Es ist keine Idee, aber auf diese Weise können Sie die Hardware nutzen, um mit den vorgerenderten Bildern so zu spielen, wie sie entwickelt wurden, anstatt zu versuchen, Inhalte aus SVG-Dateien im laufenden Betrieb zu generieren. Da der Computer nur den Ladebildschirm / die Zwischensequenz anzeigt, können Sie einen großen Teil der verfügbaren Ressourcen für die Generierung der Standardbilder aus SVG verwenden und dies daher schnell und effizient tun.
quelle
Irrlicht unterstützt SVG und Joystick
quelle