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

101

10.11.2012, 21:50

Zitat

Mir ist gerade noch etwas anderes eingefallen. Du könntest die Partikel über Shader direkt in Direct3D(XNA?) berechnen lassen.

Die Erläuterungen verstehe ich nicht :fie:


Zitat

Wenn du mit SSE optimieren willst, musst du entweder auf Mono umsteigen oder den Kern der Partikelsimulation in zb. C(++) schreiben.

C++ müsset ich erst lernen :D Auf Mono zurück, ich glaube die Leistungseinbußen sind kaum ausgleichbar :/

Aber dafür habe ich mich wie empfohlen mit Zeigern beschäftigt. Habe sie gezielt dort eingesetzt wo ich es geplant hatte.

Bringt je nach Rechner 5 - gute 10% mehr Leistung :thumbsup:



Noch ein par Änderungen, an der Engine dann beginne ich mit dem Editor, mit dem man die Partikel anordnet. Wird ein "Malprogramm" mit hexagonal angeordneten Pixeln.
Außerdem muss ich mal gucken wie man die Konstruktionen speichert. Dafür muss ein Dateiformat her. Aber das wird ein anderes Kapitel :D

Danke für alle Tipps!!! :D

LG
Bilder zu meinem Projekt: ParSim

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Horus« (10.11.2012, 22:16)


Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

102

10.11.2012, 22:29

Zitat

C++ müsset ich erst lernen

Sehr viel C++ würdest du nicht brauchen.
Du müsstest in C++ eine Methode schreiben, die genau das macht, was du bereits in C# realisiert hast.
Als Parameter übergibst du ihr den Zeiger zu den Partikeln und wieviele Partikel es sind. (Fals du das irgendwann mal so machen solltest, der Umstieg auf Zeiger macht dir den Interop sehr einfach)
Wie du das mit der Parallelisierung verbinden könntest, kann ich dir jetzt nicht ohne studieren des Quellcodes sagen.

Ich würde mir davon eine ungefähre Performanceverdoppelung erwarten.
Lässt sich aber so sehr schwer einschätzen, da ich ehrlichgesagt auch nicht genau weiß wie gut\schlecht der JIT wirklich ist.

103

10.11.2012, 23:17

Oh das wäre aber was. Dachte schon wenn ich nochmal 10-20% Rausholen könnte wäre das viel :D

Ich denke schon über eine Rewrite nach :|
Was mich davon abhält, ich müsste bestimmt wochenlang c++ lernen, damit es halbwegs ausreicht.
Komplett in c++ wär aber eig. am besten oder?
Für den Fall das ich es mal probieren würde, welcher c++ Editor ist Anfängerfreundlich..?

Ich nehme an weite Teile des Sourcecodes wären wohl leicht konvertierbar. Aber ein neues Framework müsste her, vor allem für das Multithreading.
Für einen der nie c++ benutzt hat ist das in weiter Ferne :D

Ich denke ich wenn erstmal in c# einen Partikel- Editor für mein Programm machen und ein Dateiformat und so. Dann wär es schon spielbar. C++ mache mal als nächstes großes Projekt. :vain:

LG
Bilder zu meinem Projekt: ParSim

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

104

10.11.2012, 23:27

Natürlich ist komplett in C++ was Performance anbelangt das Beste.
Um eine ganzes Framework in C++ zu schreiben, bräuchtest du aber weit mehr Erfahrung, als "ein paar Wochen".
Außerdem kommt es einem Computerspiel nicht nur auf Performance an.
An sehr vielen Stellen, bestes Beispiel sind GUI oder die grobe Spiellogik, brauchst du nicht unbedingt maximale Geschwindigkeit.
Ich würde da bei C# bleiben.
Du verzettelst sonst bloß und etwas Sinnvolles wird evt. nie dabei herauskommen

105

11.11.2012, 11:58

ich möchte mal einen Blick riskieren auf c++

Gibt es einen Richtig guten Freeware Editor?

Was ist mit Dev c++? Kann ich damit vernünftig arbeiten? Kann ich damit Multithreading usw. anwenden, wenn ich es mir aneigne?
Auf den ersten Blick sieht der gut aus.

Zitat

Um eine ganzes Framework in C++ zu schreiben, bräuchtest du aber weit mehr Erfahrung, als "ein paar Wochen".

Herausforderung angenommen!... ...ne Spass :D Muss ja auch noch par andere Sachen machen.


Zitat

Außerdem kommt es einem Computerspiel nicht nur auf Performance an.

Da hast du natürlich oftmals Recht!
Ich habe vor den Partikeln viele weitere Eigenschaften zu verpassen:
nur unter Umständen "Kleben", Leitfähigkeit für Versch. Eigenschaften, Versch. weitere Funktionen.

Man wird damit dann in einem Editor alles mögliche Bauen.

Bisschen wie diese Powder Toy
Aber halt mit Richtiger Physik und den sich daraus ergebenden Konstruktionsmöglichkeiten für Maschinen!
In diesem Speziellen Fall, glaube ich, ist Performance ein absolut zentraler Faktor.
Nach meinem Vertändnis sind die Prinzipien zur Partikelsimulation die ich mit c# erprobt habe zu weiten Teilen übertragbar.

Zitat

An sehr vielen Stellen, bestes Beispiel sind GUI oder die grobe Spiellogik, brauchst du nicht unbedingt maximale Geschwindigkeit.

Ja das stimmt wohl. Die Sache ist nur, Es wird 2 Modi geben, einen Edidor der ähnlichkeit zu einem Malprogramm hat, sowie einen Simulationsmodus.
So viel anderes kommt da nicht.

Dann werden Level mitgeliefert, die theoretisch mit dem Editor nachbaubar wären. Sinn ist es nun Konstruktionen herzustellen, mit denen man diese Level gewinnen kann. Ähnlich wie bei Fantastic Contraption

In der Simulation Fliegen dann die Fetzen!Man muss Treffer Einstecken und Gegner ausschalten.

Ich würde auch gerne bei C# bleiben wenn es aber bedeutet dass ich 30% oder mehr weniger Partikel habe weiß ich nicht ob es das richtige ist.
Ich habe keine Eile mit dem Projekt insgesamt.

Den Editor für mein Game zu programmieren schätze ich als vergleichsweise simpel ein.


Ich nehme an das Spiel schlägt ein wie ne Bombe! Da bin ich sogar überzeugt. Aber vor allem will ich es natürlich selber spielen! :D

LG
Bilder zu meinem Projekt: ParSim

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

106

11.11.2012, 12:17

Zitat

Gibt es einen Richtig guten Freeware Editor?

Was ist mit Dev c++? Kann ich damit vernünftig arbeiten? Kann ich damit Multithreading usw. anwenden, wenn ich es mir aneigne?
Auf den ersten Blick sieht der gut aus.

Auf Windows ist VisualStudio sehr verbreitet.
Voralledingend was debugging angbelangt, wirst du nichts finden, was dem auch nur annähernd das Wasser reichen kann.
Ansonsten gibt es diverse IDEs für den GCC Compiler.
DevC++ und Code::Blocks sind die bekanntesten.
Dann gibt es auch noch einige IDEs anderer Sprachen, die sich mittels Plugin auch für C++ angepassen lassen.

Ich verwende für kleinere Projekte und platformunabhänigkeit Code::Blocks.
Bei Größeren bin ich leider aus konfort-Gründen an VisualStudio gebunden.

Multithreading ist so eine Sache, die in C++ nicht so leicht von der Hand geht wie in C#. Über OpenMP zb. wäre eine Möglichkeit.

Aber ich sag es nochmal, ich denke, dass es für dich nicht sinnvoll ist, jetzt alles auf C++ zu portieren.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Spiele Programmierer« (11.11.2012, 16:49)


Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

107

11.11.2012, 13:25

Ich würde auch empfehlen, bei C# zu bleiben. Du würdest sonst einige Wochen nur darauf verwenden, mit C++ und seinen Denkmustern warm zu werden. Du würdest dabei hier im Forum über C++ schimpfen, weil es für effektive Nutzung völlig andere Herangehensweisen erfordert als C#. Und all das hat nix mit dem zu tun, was Du eigentlich gerade tun willst.

Wenn Du trotzdem C++ ausprobieren willst: hole Dir "Visual Studio Express 2012 Desktop". Da ist C++, C# und alles mögliche für Windows-Desktop-Programmierung drin. Und das aktuelle C++ hat einige nette Sachen in petto, um parallele Programmierung anzugehen. Mit C++11 ist z.B. native Unterstützung für Threads, Futures und Promises, Async Ops und sowas dazugekommen. Und mit VS2012 hat Microsoft auch gleich ein kleines Framework für parallele Programmierung veröffentlicht, das Intels TBB ähnlich ist. Seit VS2008 dagegen funktioniert schon die Empfehlung des "Spiele Programmierer" (als Du den Nick gewählt hast, war Getrenntschreibung in Deutsch noch nicht dran, oder? :D ) namens OpenMP, bei dem Du einfach einen Hinweis an den Compiler vor die Schleife setzt, dass Du die Schleife gern auf alle Kerne verteilt haben willst.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

108

11.11.2012, 13:57

Ich habe bei c# die Sorge, dass durch die Erweiterungen, die nötig werden die Engine stark, zu stark verlangsamt wird.

Was her müssen sind einige float Variablen die bei der Kollision von Partikeln gemittelt werden.

Um die Klebrigkeit der Partikel zu beeinflussen, wiederverkleben zu vermeiden usw, wird es nötig sein 6 Partikelindizes zu speichern, zu Partikeln die Kleben. (eine bessere Variante weiß ich bisher nicht).

Außerdem wird es nötig sein, weitere Funktionen aufzurufen, die Partikel-Eigenschaften wie Beschleunigung, Temperatur, elek. Spannung usw manipulieren. Je nach Art des Partikels.

Das ist zwar überschaubar. aber wenn die Engine danach noch halb so viele Partikel schafft bin ich froh :D

LG
Bilder zu meinem Projekt: ParSim

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

109

11.11.2012, 16:40

Wieviele Partikel wirst du denn in deinem Spiel so brauchen? Von welcher Größenordnung reden wird da und inwiefern denkst du, dass die Performance von C# zum Problem werden wird?

Glaub nicht, dass du einfach mal so deinen C# Code nimmst, 1:1 in C++ übersetzt und das dann 50% schneller läuft. Der erste große Fehler, den du dabei begehst, ist anzunehmen, dass C++ irgendwie ähnlich wie C# wäre. Du kannst in C++ mehr oder weniger C# programmieren. Aber das hat dann mit C++ nichts zu tun und die Qualität des so produzierten Code ließe wohl sehr zu wünschen übrig. Die Art und Weise wie man C++ richtig verwendet, unterscheidet sich fundamental davon, wie man in C# programmiert.
Wenn du C++ lernen willst, wozu ich jeden nur ermuntern kann, dann tu dir einen Gefallen und lern wirklich C++ und nicht einfach nur eine andere Sytax für C#. Das erfordert dann aber, in Ruhe bei den Grundlagen anzufangen und braucht seine Zeit...

110

11.11.2012, 21:55

Zitat

Wieviele Partikel wirst du denn in deinem Spiel so brauchen? Von welcher Größenordnung reden wird da und inwiefern denkst du, dass die Performance von C# zum Problem werden wird?


Jetzt weiß ich nicht, in wie weit du dich mit dem Spielprinzip auseinandergesetzt hast.
Warscheinlich gibt es hier jeden Monat 100 Leute die die Geilste Spielidee haben die es jemals gab !!!
Oder ich drücke mich unverständlich aus. ?(

Ich denke damit es spielbar wird reichen ein par tausend Partikel aus. Das Ding ist halt, je mehr desto besser! Mit 20k Partikeln mit angesprochenen Eigenschaften wäre es schon richtig gut.

Zitat

Du kannst in C++ mehr oder weniger C# programmieren.

Hahaha :D

Ja ich meinte eher die Prinzipien mit der Rasterung, ich habe ein ziemlich ausgefeiltes System um das Grid zu Kollisionserkennung up to Date zu halten, alles sehr gut getestet und auf Leistung getrimmt, die Partieklphysik von Mathematischer Seite steht auch. Diese Dinge halt. Die würde ich übernehmen.


Aber zum jetzigen Zeitpunkt werde ich euren Rat mit c# befolgen!
Falls ich mit c++ anfange nicht gleich so was schweres denke ich.

Leider habe ich diese Woche kaum Zeit für mein Programmier-Hobby :/
So beginne ich erst nächste Woche mit dem Editor für die Partikel.

LG
Bilder zu meinem Projekt: ParSim

Werbeanzeige