Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Paulm

Frischling

  • »Paulm« ist der Autor dieses Themas

Beiträge: 69

Wohnort: Baden-Württemberg

Beruf: Schüler

  • Private Nachricht senden

1

01.03.2016, 15:40

[C++] Passende 2D Game Engine für einen TopDown Shooter mit Mehrspieler-Unterstützung

Ich habe vor einiger Zeit den Versuch gestartet nur mit Hilfe von SFML, Box2D und RapidJson einen 2D TopDown Shooter mit Mehrspieler Unterstützung zu programmieren.
Ich habe daraus versucht eine Engine zusammenzubasteln - was generell auch funktioniert hat :) - habe jedoch nach und nach gemerkt, dass Ich nicht alles was Ich brauchte in absehbarer Zeit zu meiner Zufriedenheit fertig machen konnte. Ich würde gerne einen neuen Versuch starten und mich dabei mehr darauf konzentrieren das eigentliche Spiel als eine Engine zu entwickeln :).
Ich bin mittlerweile der Meinung, dass man schon vorhandenes doch auch nutzen sollte, gerade wenn man dasselbe selbst nur in schlechterer Ausfürhrung/Qualität zu Stande bringt (Das wurde mir damals mehr als einmal gesagt aber der beste weg war es, es selbst herauszufinden ;).
Aus diesem Grund bin Ich nun auf der Suche nach einer Engine / einem Framework / einer Biliothek die mir einiges mehr an Arbeit abnimmt, als einfach nur SFML und Box2D.
Das wäre idealerweise unter anderem:
- 2D-Grafik inklusive Animationen
- Das Laden von Maps
- Das Laden von Einstellungs-/Konfigurations-Dateien
- Scripting support für die AI (weniger wichtig)
- 2D-Physik inklusive Kollision und vielleicht Raycasting
- Netzwerk-Support (Hierfür würde es sich vielleicht lohnen eine extra Bibliothek wie zb. ENet zu verwenden die ein verlässliches UDP-Protokoll implementiert...)
- GUI
- Input sowohl Maus als auch Tastatur
- Ich würde gerne Hauptsächlich in C++ programmieren

Nach dem Ich den gestrigen Tag mit Googlen verbracht habe bin Ich unteranderem auf Torque2D, Angel2D, Oxygine und Polycode gestoßen.
Es würde mich sehr freuen wenn mich jemand dabei unterstützen könnte herauszufinden welche Engine/Framework/Bibliothek am besten zu meinen Anforderung passt oder generell seine Erfahrungen mit einzelnen Engines/Frameworks/Bibliotheken mit mir teilt :)

Ich bevorzuge nach meiner Recherche Angel2D und eine 3rd-Party Bibliothek wie ENet für Networking zu verwenden.
Soweit meine Gedanken zu den von mir gennanten Engines/Frameworks/Bibliotheken

Polycode:
Erschien mir auf den ersten Blick perfekt, es integriert Box2D, hat eine eigene GUI, skeletal Animations, laden von Konfigurations-/Map-Dateien(soweit Ich weiß), und implementiert ein reliable UDP-Protokoll.
Jedoch findet man kaum Tutorials, nur eine sehr rudimentäre Dokumentation und mir ist zweifelhaft ob es immer noch aktiv entwickelt wird und in was für einem Zustand es sich befindet.
Vielleicht hat ja jemand Erfahrungen damit gemacht oder weiß näheres darüber. (Mein Versuch es zu testen ist an mehreren LinkerFehlern gescheitert(sehr wahrscheinlich ein Anwendungsfehler von mir :D dank mangelnder Dokumentation))

Torque2D:
Soweit Ich verstehe basiert es Hauptsächlich auf TorqueScript und bietet aus meiner Sicht keine Vorteile gegenüber Angel2D.

Oxygine:
Hat keinen eingebauten 2D-Physik support und erscheint mir generell zu low-level/rudimentär(Mir fällt kein besseres Wort ein).

Angel2D:
Unterstützt Animationen, integriert Box2D und das Laden von Level-Dateien. Ich kann leider nicht beurteilen wie kompliziert es ist daran Netzwerk support anzubinden und Box2d dann zu synchronisiren, dennoch scheint es mir genrell die beste Lösung.

EDIT: Habe gerade ClanLib entdeckt, was angeblich über interessante Netzwer-Features verfügt. Kann mir jemand sagen ob ClanLib 2D-Physik beherrscht?

Ich bin natürlich für neue Vorschläge an Engines/Frameworks/Bibliotheken offen wenn sie besser zu meinen Anforderungen passen, Ich würde gerne einfach ein paar Einschätzungen sammeln bevor Ich den neuen Versuch starte :)
Ich weiß natürlich dass Ich mir ziemlich viel vornehme - möglicherweise zu viel - denke jedoch dass es solange es mir Spaß macht und Ich etwas dabei lerne nicht unbedingt etwas schlechtes ist :)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Paulm« (01.03.2016, 16:42)


Bennui

Frischling

Beiträge: 7

Wohnort: Beckum

  • Private Nachricht senden

2

01.03.2016, 15:53

Hey,
Ich hab den Text jetzt etwas überflogen aber wenn du eine Engine suchst, die 2D Unterstützung hat würde ich dir wegen der Programmiersprache (C++)
Unreal Engine 4 empfehlen.
Ich hab selbst etwas hinein geschaut, aber bin nicht ins Detail der Engine gegangen, aber weiß das UE4 2D Unterstützt.
Dort wird in C++ und sogenannten Blueprints gecodet.
Einfach mal rein schauen :)

https://www.unrealengine.com/unreal-engine-4

Ich hoffe ich konnte dir behilflich sein :)

Liebe Grüße !
Benjamin Kraft | Game Designer @ Rocket Studio

Paulm

Frischling

  • »Paulm« ist der Autor dieses Themas

Beiträge: 69

Wohnort: Baden-Württemberg

Beruf: Schüler

  • Private Nachricht senden

3

01.03.2016, 16:03

Hey,
Ich hab den Text jetzt etwas überflogen aber wenn du eine Engine suchst, die 2D Unterstützung hat würde ich dir wegen der Programmiersprache (C++)
Unreal Engine 4 empfehlen.
Ich hab selbst etwas hinein geschaut, aber bin nicht ins Detail der Engine gegangen, aber weiß das UE4 2D Unterstützt.
Dort wird in C++ und sogenannten Blueprints gecodet.
Einfach mal rein schauen :)

https://www.unrealengine.com/unreal-engine-4

Ich hoffe ich konnte dir behilflich sein :)

Liebe Grüße !


Hab grad mal kurz reingeschaut und gesehen dass UE4 auch richtig Netzwerk-Programmierung unterstützt, Ich bin mir nur nicht sicher ob es vlt zu viel ist für dass was Ich machen will :/ aber Ich werde es mir auf jeden fall genauer anschauen. Vielleicht ist es ja genau dass was Ich suche :D

4

01.03.2016, 17:03

Was ist denn so schlimm an SFML + Thor + Box2D + RapidJSON + AngelScript + libRocket + Boost.Program_Options + Boost.XYZ + unittest-cpp (+ btsk + RakNet + gettext)? Okay, AngelScript ist sicherlich nicht das schnellste, da wäre man mit Google V8 echt gut dabei, aber well...
Game-Engine mäßig gibts ja Torque 2D, GamePlay, Godot oder auch Oxygine. Weiß nicht, ich bastel mir lieber alles aus vielen kleinen oder eben größeren Bibliotheken zusammen, weil man dann mehr Kontrolle hat und ggf. auch super was austauschen kann.

MfG
Check

Paulm

Frischling

  • »Paulm« ist der Autor dieses Themas

Beiträge: 69

Wohnort: Baden-Württemberg

Beruf: Schüler

  • Private Nachricht senden

5

01.03.2016, 17:28

Was ist denn so schlimm an SFML + Thor + Box2D + RapidJSON + AngelScript + libRocket + Boost.Program_Options + Boost.XYZ + unittest-cpp (+ btsk + RakNet + gettext)? Okay, AngelScript ist sicherlich nicht das schnellste, da wäre man mit Google V8 echt gut dabei, aber well...
Game-Engine mäßig gibts ja Torque 2D, GamePlay, Godot oder auch Oxygine. Weiß nicht, ich bastel mir lieber alles aus vielen kleinen oder eben größeren Bibliotheken zusammen, weil man dann mehr Kontrolle hat und ggf. auch super was austauschen kann.

MfG
Check


Vielen Dank für die vielen Vorschläge :D
Ich habe nicht gesagt das es schlimm ist, nur dass es für mich nicht das richtige war und Ich es einfach gerne mit einer kompletteren(nicht wertend gemeint) Engine/Framework/Bibliothek versuchen würde.
Hab mir Angel2D nochmal genauer angeschaut und denke dass es das richtige ist. Ich hoffe nur dass ich es irgendwie schaffe Angel2D Netzwerk-Unterstützung mittels RakNet oder ENet beizubringen ;)
Ich werde mir aber trotzdem noch Godot und GamePlay ansehn und schauen ob es was für mich ist

Paulm

Frischling

  • »Paulm« ist der Autor dieses Themas

Beiträge: 69

Wohnort: Baden-Württemberg

Beruf: Schüler

  • Private Nachricht senden

6

05.03.2016, 16:22

@Checkmating

Ich habe ziemlich viel nachgedacht und mit verschiedenen Engines/Frameworks rumprobiert und werde nun doch weiterhin SFML verwenden. Wie du sagst scheint es einfach das beste zu sein sich aus mehreren Sachen selbst etwas zusammenzubasteln :)
Ich werde mich nun zuerst an den Networking-Part machen und plane dafür RakNet zu verwenden. Es schien mir als hättest du es schon öfters benutzt und Ich finde kaum an Material dazu im Internet, villeicht kannst du mir einen Tip für ein Tutorial oder Artikel über RakNet geben :)

7

05.03.2016, 16:55

Schau mal hier. :)
Ehrlich gesagt reicht mir für die meisten Dinge aber Boost.Asio.

MfG
Check

Paulm

Frischling

  • »Paulm« ist der Autor dieses Themas

Beiträge: 69

Wohnort: Baden-Württemberg

Beruf: Schüler

  • Private Nachricht senden

8

05.03.2016, 17:09

Schau mal hier. :)
Ehrlich gesagt reicht mir für die meisten Dinge aber Boost.Asio.

MfG
Check


Ja das habe Ich auch schon entdeckt, Ich meinte eher etwas wie man es konkret anwendet und was der Gedanke hinter der Bibliothek ist und was es kann.
Was ist denn der Vorteil Gegenüber dem Netzwerk-Modul von SFML (im Bezug auf mein Vorhaben)? (Soweit Ich es verstehe kann man mit RakNet komplexere DatenTypen direkt übermitteln, es garantiert dass die Packets in der richtigen Reihe ankommen (und auch verlässlich?)) Das sind auch hauptsächlich die Sachen die mich interessieren.

Das ist aber von Boost abhängig und nicht eigenständig oder?

9

05.03.2016, 20:38

Das ist richtig, es besteht eine Abhängigkeit zu Boost und anderen Bibliotheken. Die entsprechenden CMake-Files findest du ja hier. Eine Feature-Liste findest du hier. Prinzipiell kannst du auch einfach das Netzwerkmodul von der SFML benutzen, es ist halt nur deutlich limitierter.

MfG
Check

Paulm

Frischling

  • »Paulm« ist der Autor dieses Themas

Beiträge: 69

Wohnort: Baden-Württemberg

Beruf: Schüler

  • Private Nachricht senden

10

06.03.2016, 14:02

Das ist richtig, es besteht eine Abhängigkeit zu Boost und anderen Bibliotheken. Die entsprechenden CMake-Files findest du ja hier. Eine Feature-Liste findest du hier. Prinzipiell kannst du auch einfach das Netzwerkmodul von der SFML benutzen, es ist halt nur deutlich limitierter.

MfG
Check


Also Ich hab RakNet jtz mal kompiliert (hat ohne Probleme funktioniert) und habe einen Ordner help (hier) entdeckt in dem - so scheint es mir :D - reichlich Beispiele/Erklärungen sind :) falls etwas nicht klappt melde ich mich einfach wieder

Danke für deine Hilfe soweit :)

PS: Hast du Erfahrung in Richtung Clientside-Prediction etc?

EDIT: Ich glaube die HTML-Seiten im help Ordner sind genau dasselbe wie das von dir vorgeschlagene Tutorial direkt auf der Seite hier (Habe bemerkt dass man dort ganz unten zur nächsten Seite gelangt, Ich dachte es sei nur eine Seite -.-)

MFG
Paul

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Paulm« (06.03.2016, 14:44)


Werbeanzeige