# Suche passende Game api



## Gauo (3. Aug 2008)

Vorab, eigentlich muss ich nicht wirklich viel für mein game projekt in GUI investieren.
Bisher hatte ich immer vor es möglichst abstract zu machen und wenig darzustellen, da es 
mehr oder weniger eine schnellere LAN version von einem Browserspiel werden soll.
Mittlerweile geht es aber dahin, das es mehr ein Weltraum Doomsday wird.
Von dem Weltraum gibt es aber mehrere ebenen, die erste Instanz ist die Galaxie übersicht



Bei der Darstellung von diesem weiß ich nicht ganz wie ich vorgehen soll :/, für interne Berechnungen zwischen abschnitten etc. kann man mit diesem koordinatensystem sehr schoen arbeiten und repräsentieren würd ich das
mit einem einfachen Array, da für die ingame Logik die Systeme nicht wissen brauchen wer ihr nachbar ist.

Klickt man dan auf eines dieser Felder kommt man in eine "Sektor" übersicht, die einfach eine ansammlung von
Sonnensystemen ist, hier würd ich die Form die in der Galaxy ansicht sugeriert wird vergessen (Systeme in der Mitte, außen einfach leere) und einfach ne art Tile-Map machen und wie in ähnlichen Stragie spielen verfahren.

Toll wäre noch eine Art farben hinterlegung die andeutet von wem wie weit der Sektor kontrolliert wird :/ jedoch fällt das wieder zur Galaxy Ansicht und nun weiß ich noch weniger wie ich das realisieren sollt.

Ich hoffe ihr hab bis hierhin meinen komischen Text gelesen ^^ und koennt mir ungefähr etwas empfehlen und zu diesen Ideen für die Galaxy Ansicht machen :/.

Danke für eure Zeit.

P.s. muss ich eigentlich schon jetzt anfangen das Netzwerk fähig zu machen oder kann ich das im nachhinein mit wenig aufwand?,bisher hab ich das spiel nur konzepiert, und wollt nun die Logik implementieren, wobei ich halt ehe ich dieses Navigationssystem nehme wissen wollt ob ich das überhaupt hinbekomme.


----------



## EgonOlsen (3. Aug 2008)

Anonymous hat gesagt.:
			
		

> P.s. muss ich eigentlich schon jetzt anfangen das Netzwerk fähig zu machen oder kann ich das im nachhinein mit wenig aufwand?,bisher hab ich das spiel nur konzepiert, und wollt nun die Logik implementieren, wobei ich halt ehe ich dieses Navigationssystem nehme wissen wollt ob ich das überhaupt hinbekomme.


Da du scheinbar Zweifel daran hast, es überhaupt hinzubekommen,  lass das mit dem Netzwerk für diese Version bleiben. Wenn du es dann ohne geschafft hast, leg diese Version zur Seite und fang nochmal neu an. Diesmal dann mit Netzwerk. Es nachträglich zu ergänzen halte ich für schwierig. Das müsste man am Anfang zumindest einplanen, sonst wirst du damit scheitern. Und ich denke, damit nimmst du dir für den Anfang zu viel vor.


----------



## Gauo (3. Aug 2008)

Das hab ich nicht geschrieben :/ ich sollt mich wohl registrieren,
ich frag mich echt wer das hier lustig findet :/


----------



## Siassei (3. Aug 2008)

Gauo hat gesagt.:
			
		

> Das hab ich nicht geschrieben :/ ich sollt mich wohl registrieren,
> ich frag mich echt wer das hier lustig findet :/



Hallo,

ich wars jedenfalls nicht, aber das lässt sich nach forschen  :wink: 

Deine ersten Ideen hören sich erst mal nicht schlecht an und die Grafik ist für ein solch frühem Stadium top  :toll: Aber irgendwie werde ich das Gefühl nicht los, dass du noch nie ein Spiel in Java realisiert hast :wink: Ich hoffe das du dich mit diesem Projekt nicht überschätzt und die Lust am programmieren verlierst :wink: 

*1.) Netzwerkfähigkeit:*
Wenn du bereits beim Konzept auf Erweiterbarkeit und Modularisierung achtest, sollte eine Implementierung des Netzwerkmodus kein all zu großes Problem darstellen.

*2.) Karte + Berechnungen:*
Deine Idee mit den Array wirst du wahrscheinlich wieder schnell über den Haufen werfen. Effektive Tiefensuche (z.B. mit Bäumen ; Quadtree -> 2D ; Octree -> 3D ) ist das große Stichwort. Obwohl die einzelnen Systemen nichts von einander wissen müssen, solltest du darauf achten, dass die Berechnungen der einzelnen Abschnitten im gleichen Takt abläuft. Da sich sonst Vorteile und/oder Nachteile in gewissen Sektoren für die Spieler entstehen könnten.

Eine zusätzliche Idee wäre die Verwenung von Large Coordinates -> es wird ein Klasse Koordinate erstellt

```
public class Koordinate {
    
    /// -----------------------------------------------------------------------
    ///
    ///     Fields
    ///
    /// -----------------------------------------------------------------------
    
    /**
     * int, long oder BigInteger ; je nach zu erwartender max. Wert
     */
    private long ganz;
    
    /**
     * Nachkommastelle: float oder double ; je nach Genauigkeit
     * 
     * immer < 1 !
     */
    private double dezi;
    
    /**
     * Einheit der Maszahlen
     */
    private Einheit einheit = Einheit.meter;
    
}
```


```
public enum Einheit {
    nanometer,
    millimeter,
    meter,
    kilometer,
    lichtjahr;
}
```
Jetzt lassen sich die Positionen aller Objekte im Spiel darstellen :wink: Ledeglich zur Visualisierung müsstest du die Werte der Objekte im Sichtbereich umrechnen.

*3.) Galaxieansicht, Ansicht des kontrollierten Bereiches & Co.*
Über derartige Dinge brauchst du dir jetzt noch keinen Gedanken verschwenden. Behalte sie einfach im Hinterkopf bzw. schreibe sie auf und achte ein wenig bei der Umsetzung darauf. Erstmal musst du die Basics umsetzen und eine vernünftige Umgebung für dein Programm erstellen. Erst wenn du ein Art von Framework geschaffen hast, kannst du an weitere Ideen denken :wink:

Ich hoffe, dass ich deine Artikel richtig verstanden habe und eine passende Antwort geliefert habe.

MfG,
  Thomas


----------



## EgonOlsen (4. Aug 2008)

Siassei hat gesagt.:
			
		

> Wenn du bereits beim Konzept auf Erweiterbarkeit und Modularisierung achtest, sollte eine Implementierung des Netzwerkmodus kein all zu großes Problem darstellen.


Ja, aber das wird vermutlich bei einem Erstlingswerk (und so klingt das den Fragen nach für mich) nicht gut klappen. Deswegen mein Rat, erstmal keine Gehirnkapazitäten darein zu investieren. Ein funktionierendes Singleplayer-Spiel ist immer noch um Klassen besser, als ein aufgegebenes Multiplayer.


----------



## gauo (4. Aug 2008)

Siassei hat gesagt.:
			
		

> ...
> Deine ersten Ideen hören sich erst mal nicht schlecht an und die Grafik ist für ein solch frühem Stadium top  :toll: Aber irgendwie werde ich das Gefühl nicht los, dass du noch nie ein Spiel in Java realisiert hast :wink: Ich hoffe das du dich mit diesem Projekt nicht überschätzt und die Lust am programmieren verlierst :wink: ...



Da hast du glaub ich was falsch verstanden, die graphic ist bei GIMP enstanden als ich das spiel konzepiert habe, nun ist die frage wie ich es optisch ins Spiel integriere ^^.
Das problem ist, das ich bisher nur einfache utility tools geschrieben hab, noch nichts das nicht auf swing komponenten zurückführbar war.
Bisher sehe ich auch nur die Möglichkeit von grundauf anzufangen und einfach auf dem Graphics direkt zu malen.



			
				Siassei hat gesagt.:
			
		

> 2.) Karte + Berechnungen:
> Deine Idee mit den Array wirst du wahrscheinlich wieder schnell über den Haufen werfen. Effektive Tiefensuche (z.B. mit Bäumen ; Quadtree -> 2D ; Octree -> 3D ) ist das große Stichwort. Obwohl die einzelnen Systemen nichts von einander wissen müssen, solltest du darauf achten, dass die Berechnungen der einzelnen Abschnitten im gleichen Takt abläuft. Da sich sonst Vorteile und/oder Nachteile in gewissen Sektoren für die Spieler entstehen könnten.


Auf Galaxie ebene muss ich eigentlich nur wissen wie weit der Rand von einem Sektor zb 1,1 zum Rand von dem anderem Sektor z.b 9,34, dazu kan ich ja einfach 1 als radius nehmen 1*10° als Winkel, das wär mein erster
Vector bzw PKt, den zweiten kann ich analog berechnen und dann weiß ich wie weit die auseinander sind, für die Dauer des Sprungs, und kann dann bestimmt zur graphischen darstellung enie Art Linie zeichnen die dan als art progress Bar dient.

Zur darstellung von einem Sektor kann ich aber soweit ich Quadtrees richtig eben beim Wikieintrag verstanden hab gut verwenden. Das mit den Koords über deine Koordinate Klasse hab ich nicht ganz verstanden, bis auf das Interessante handhaben von den Maßzahlen welche vorteile erlange ich dadurch?.


Aber an das letzte, performance hab ich noch gar nicht gedacht :/.
Am anfang wollt ich das spiel rundenbasiert machen was wohl zummindest das ungerechtigskeits ding weggemacht hätte bzw, die berechnung fair zu gestalten einfach gemacht hätte.
Im moment sieht es aber so aus, das ich eine Art Tick nehme, indem einfach alle aktionen immer ein vielfaches der durch diesen Tick definierte Zeit dauern.
Bisher hab ich mir dan vorgestellt, dass es eine art abstracte Klasse Kommando gibt,
die erstmal eine Dauer hat,(in Ticks, die dauer wäre also tick*dauer), eine methode ausführen die abstract ist.
und eine methode behandeln,(bin schlecht in namengebung), die die Dauer reduziert und wenn 0, dann ausführen aufruft.
Nun wär dort eine Klasse die runnable implementiert, zu jedem Spieler eine Sammlung von Kommandos hat, 
und bei jedem run abwechselnd(oder vielleicht ne art zufall mit dynamischen prioritäten zwischen den Spielern)
die behandeln ausführt.





			
				Siassei hat gesagt.:
			
		

> 3.) Galaxieansicht, Ansicht des kontrollierten Bereiches & Co.
> Über derartige Dinge brauchst du dir jetzt noch keinen Gedanken verschwenden. Behalte sie einfach im Hinterkopf bzw. schreibe sie auf und achte ein wenig bei der Umsetzung darauf. Erstmal musst du die Basics umsetzen und eine vernünftige Umgebung für dein Programm erstellen. Erst wenn du ein Art von Framework geschaffen hast, kannst du an weitere Ideen denken icon_wink.gif
> 
> Ich hoffe, dass ich deine Artikel richtig verstanden habe und eine passende Antwort geliefert habe.


Beinhaltet das Framework mehr als die Logik?, für mich ist die Logik halt alles das nicht GUI ist, sodass ich das spiel also theoretisch spielen könnte, nur halt nich anzeigen kann ^^.

Wie man sieht hab ich wirklich nicht viel ahnung von Spiele programmierung :/
Das problem ist aber auch das in den Tutorials di eheir waren, nicht wirklich meine Fragen beantwortet wurden, 
da es meist irgendwelche arcade games waren, die sich schon von meinem unterscheiden :/


Danke an dich EgonOlsen, und Siassei für die Hilfe, ich kann wohl jeden Tipp gebrauchen um ein gefühl für die Probleme bei Spieleprogrammierung zu bekommen ^^
[/quote]


----------



## Gast (4. Aug 2008)

Das ist ja der Sinn von OOP...

Man sollte sein Spiel so aufbauen das es auch theoretisch spielbar ist, die Grafik ist nebensächlich.
Und wenn das Spiel so aufgebaut ist, dann ist es auch kein Problem nachträglich noch eine Netztwerkunterstützung einzubauen...

Wer seine Programme in Java nicht so aufbaut, kann gleich eine prozeduale Sprache verwenden, wie div. Basic-Dialekte.


----------



## EgonOlsen (4. Aug 2008)

Gast hat gesagt.:
			
		

> Das ist ja der Sinn von OOP...
> 
> Man sollte sein Spiel so aufbauen das es auch theoretisch spielbar ist, die Grafik ist nebensächlich.
> Und wenn das Spiel so aufgebaut ist, dann ist es auch kein Problem nachträglich noch eine Netztwerkunterstützung einzubauen...


Das ist aber sehr idealistisch gedacht. Schonmal versucht? So einfach ist das nicht, wie es auf dem Papier klingt. Für Tic-Tac-Toe mag es noch gelten, aber sonst...


----------



## gauo (9. Aug 2008)

EgonOlsen hat gesagt.:
			
		

> Gast hat gesagt.:
> 
> 
> 
> ...



genau hierzu hätte ich nun noch ne konkrete frage ^^.

Bei meinem Spiel wird es das bekannte chassie+module system für die Schiffe geben, wobei es aber
verschiedenen arten von Module gibt, die sich aber nur durch die Kardinalitäten unterscheiden.

z.b Kann ein Schiff nur ein Antriebsmodul haben, aber mehrere leichte Waffen module(variable je nach Chassie).

Lohnt es sich nun für die Typen von Modulen extra Klassen einzuführen?


----------



## EgonOlsen (9. Aug 2008)

gauo hat gesagt.:
			
		

> Lohnt es sich nun für die Typen von Modulen extra Klassen einzuführen?


Klingt für mich jetzt erstmal nach "ja".


----------

