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

1

28.01.2015, 12:44

Raumschiff-Designer / Konzeptdiskussion

Tach

Parallel zum erlernen von C++ läuft auch die Planungsphase für mein erstes Spiel. Eine Komponente dieses Spiels soll ein Raumschiff-Designer sein mittels dem sich der Spieler seine eignen Raumschiffe zusammenstellen kann. Das ganze soll vom Prinzip her so ähnlich funktionieren wie bei „Distant Worlds“. Also man hat eine Liste von Komponenten die man in beliebiger Anzahl in das Schiff reinpacken kann. Aus der Art und Menge der Komponenten ergibt sich dann die Grösse, das Gewicht, der Energieverbrauch, die Feuerkraft etc. des Schiffes. So weit so simpel, nur komme ich mit einer Sache nicht weiter: Der Hüllenpanzerung. Ich habe zwar eine klare Vorstellung davon wie die Hüllenpanzerung funktionieren soll, aber habe keine Idee wie zum Teufel ich die nötigen Daten dazu berechnen soll. Also jetzt nicht im Sinne von wie ich das programmieren soll, sondern wirklich ganz grundsätzlich wie ich das berechnen soll.

Am besten beschreibe ich mal was ich mir vorstelle:

Die Panzerung soll nicht nach Anzahl berechnet werden, sondern nach Dicke. Also wenn ich ein Schiff erstelle schmeiss ich da nicht einfach 10stk. oder 50stk. Panzerung rein sondern gebe z.B. an dass ich gerne eine Panzerung von 50cm Stärke haben möchte. So, mit dieser Zahl kann ich dann wunderbar berechnen wie viel Schaden der Beschuss mit verschiedenen Waffen anrichtet, ab wann die Panzerung gleich ganz durchschlagen wird etc., aber eines bereitet mir enorme Mühe: Wie zur Hölle berechne ich das Gewicht der Panzerung? Dazu müsste ich die Grösse der Oberfläche des Schiffs wissen. Diese habe ich aber nicht, ich habe nur das Volumen (=die Summe der Grösse aller verbauten Komponenten). Und so weit ich das sehe kann ich alleine vom Volumen nicht auf die Oberfläche eines Körpers schliessen.

Habt Ihr irgendeine Idee dazu? Vielleicht gibt es auch einen komplett anderen Lösungsansatz um Panzerung zu implementieren auf den ich bisher nicht gekommen bin. Ich will Panzerung einfach nicht in Stück bemessen, denn das macht in meinen Augen keinen Sinn.

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

2

28.01.2015, 13:13

Ich würde mich dem irgendwie annähren, da du ja wahrscheinlich keine 100% akkuraten Werte brauchst.
Vielleicht hilft das ja, als Form ähneln deine Module vielleicht Würfeln oder Quadern.
Wenn das ganze 2D ist könnte man doch auch Pixel nehmen.

Frybird

Treue Seele

Beiträge: 97

Wohnort: Bonn

Beruf: Webprogrammierer

  • Private Nachricht senden

3

28.01.2015, 13:19

So ungern ich der Arsch bin wenn jemand um einen Rat fragt, aber...sicher das deine Spielidee nicht ein Stück zu groß ist?

Wenn du dabei bist C++ zu lernen und bei deinem ersten Spiel über etwas nachdenkst was aus "mehreren Komponenten" besteht, klingt das so wie etwas wo du sehr bald über die Masse an Sachen stolpern wirst, die deine Spielidee braucht. Hier ein paar Tipps einer passend benannten Seite.

Will nicht sagen du sollst nicht an deinem Konzept basteln oder deine Idee wegschmeissen, aber solltest du dich nicht vielleicht erstmal darauf konzentrieren die Sprache zu lernen und ein Verständnis für Spielmechanik, Steuerung und "Polierarbeit" anhand von etwas simplen zu bekommen?

4

28.01.2015, 14:48

Wenn du ein 3D Modell hast, könntest du einfach die Flächeninhalte der Dreiecke zusammenrechnen um die Oberfläche des Raumschiffes zu bekommen. Die multiplizierst du mit der Dicke und hast das Volumen der Panzerung. Natürlich nur annähernd, denn je nachdem in welchem Winkel die Dreiecke zueinander stehen, würdest du mal mehr, mal weniger Material brauchen. Aber es sollte sehr nah am tatsächlichen Wert sein.

Du könntest auch einfach sagen, dein ganzes Raumschiff wäre eine Kugel, mit dem gegebenen Volumen. Das ist sehr viel einfacher aber auch ein gutes Stück ungenauer.

Eine einfache und exakte Möglichkeit gibt es einfach nicht, ohne die Form des Raumschiffes zu kennen bleibt dein Problem unterbestimmt und damit unlösbar.
Lieber dumm fragen, als dumm bleiben!

5

28.01.2015, 14:52

So ungern ich der Arsch bin wenn jemand um einen Rat fragt, aber...sicher das deine Spielidee nicht ein Stück zu groß ist?

Wenn du dabei bist C++ zu lernen und bei deinem ersten Spiel über etwas nachdenkst was aus "mehreren Komponenten" besteht, klingt das so wie etwas wo du sehr bald über die Masse an Sachen stolpern wirst, die deine Spielidee braucht. Hier ein paar Tipps einer passend benannten Seite.

Will nicht sagen du sollst nicht an deinem Konzept basteln oder deine Idee wegschmeissen, aber solltest du dich nicht vielleicht erstmal darauf konzentrieren die Sprache zu lernen und ein Verständnis für Spielmechanik, Steuerung und "Polierarbeit" anhand von etwas simplen zu bekommen?


Öhm, genau das mache ich doch. Ich fange mit einem einfachen Teil des Spiels an das mir vorschwebt. Wenn das dann so funktioniert wie ich mir das vorstelle mache ich mich an den nächsten, etwas schwierigeren Teil usw.. Schön Schritt für Schritt. Ich habe das Gefühl Du verstehst das Ziel dass ich mit dem Schiffsdesigner verfolge falsch. Denn so komplex wie Du offensichtlich denkst wird das Ding nicht. Die Kombination der verschiedenen Komponenten resultiert in einem Schiff mit bestimmten Werten, die einzelnen Komponenten bestehen aber nicht als eigenständige Objekte fort nachdem das Schiff gebaut ist. Vereinfacht kannst Du Dir das so vorstellen: Wenn ich 10 Einheiten Antrieb in das Schiff einbaue dann hat das fertige Schiff eine Geschwindigkeit von 100, der Antrieb ist aber nicht mehr als separater Bestandteil vorhanden.

Ganz simpel also, etwas dass man z.B. auch ganz leicht in Excel berechnen kann (was ich auch mache bevor ich das ganze dann programmiere). Im Grunde braucht es nur eine Klasse für die Schiffe mit den nötigen Variablen und eine Funktion zum bestimmen der Werte dieser Variablen (also eben der Teil wo man bestimmt was alles in welcher Menge in das Schiff reinkommt).

Das Spiel selbst soll ja auch nicht das nächste Game oft the Year werden. Das wird ein ganz einfaches, rundenbasiertes Strategiespiel in dem der Spieler mit einer eigenen Flotte von Schiffen gegen eine KI-Flotte antritt. Alles Top-Down in 2D, ganz simpel in einem Windows-Fenster. Dazu werde ich mir über die nächsten Monaten noch die fehlenden Grundlagen erarbeiten, vielleicht noch das ein oder andere Testprogrämmchen schreiben und dann mal sehen ob ich das so hinbekomme wie ich mir das vorstelle. Ich denke nicht dass ich mich damit überfordere. Natürlich wird es eine Herausforderung sein, aber genau darin liegt ja der Spass beim Programmieren.

6

28.01.2015, 14:58

Also das Raumschiff wird nicht als Modell existieren, weder in 3D noch in 2D. Die Schiffe werden durch simple Symbole dargestellt. Eine „Form“ gibt es also nicht. Und exakt wird das mit der Oberfläche sowieso nicht, so viel ist mir klar. Mir geht es einfach darum einen Wert zu bekommen der anhand des Volumens berechnet werden kann und halbwegs Sinn macht bzw. realistisch mit der Grösse des Schiffs skaliert.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

7

28.01.2015, 15:07

Gib doch einfach jeder Komponente einen Flächeninhalt. Dadurch ergibt sich dann die Größe der Komponente worauf du später auf die Größe des Raumschiffs schließt. Du zählst den Flächeninhalt aller Komponenten zusammen und erhältst dadurch die Fläche des gesamten Raumschiffs. Damit berechnest du jetzt zum Beispiel den Umfang eines Kreises oder eines Quadrats und nimmst das als gesamten Umfang des Schiffs. Das kannst du dann mit der Dicke des Schutzschilds multiplizieren. Für ein Spiel sollte das doch denke ich völlig ausreichen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

8

28.01.2015, 15:43

Na ja, ein Schiff ist aber keine Flunder. Die Komponenten liegen ja zu einem grossen Teil im Inneren des Schiffes. Also kann ich nicht einfach sagen Komponente x/y hat Fläche z und dass dann zusammenzählen. Dann kann ich genau so gut einfach einen fixen Bezug auf das Volumen annehmen.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

9

28.01.2015, 18:18

Dann nimm statt Flächeninhalt halt ein Volumen und berechne kein Quadrat bzw Kreis sondern einen Würfel oder eine Kugel. Du kannst auch beliebige andere Formen nehmen. Es geht doch einfach darum ein System zu haben welches glaubwürdig wirkt.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

10

28.01.2015, 21:51

In DW hat jeder Komponente eine Größe (auch die Panzerung). Die Summe der Komponentengrößen ist dann die Schiffsgröße.

Wie willst Du die Schiffe schlussendlich "designen"?

Sind es lediglich Komponenten (DW, MOO) oder möchtest Du diese aus Kacheln erstellen, welche dann in eine Art Pixel-Art umgewandelt werden. Bei letzterem böte sich an, den Umfang des Schiffes zu bestimmen, diesen mit der Stärke der Panzerung zu multiplizieren. Das Ergebnis wäre die zusätzliche Masse, welche beschleunigt und ggf. auch gewendet werden muss. Die Stärke der Panzerung müsste man in diesem Fall manuell bestimmen. Sind es lediglich Komponenten in einer Liste, so nimmt man statt des Umfangs die Größen aller Komponenten. Oder man macht was ganz anderes.

Grüße ... bwbg

Zitat

Ich bin nicht der Messias.
Ich sage, du bist es, Herr. Und ich muss es wissen, denn ich bin schon einigen gefolgt.

https://bitbucket.org/bwbg

Werbeanzeige