# Rundenbasiertes ScieFi-Spiel 2D



## Conquer17 (4. Mrz 2010)

Hallo,

gibt es hier zufällig jemanden aus dem Raum Köln, der Lust, Zeit und Spass daran hat ein kleines rundenbasiertes 2D Weltraumeroberungsspiel mit mir zu programmieren? Ein Mentor, der mich bei Fragen unterstützt wäre auch sehr willkommen ;-)

Ich bin noch blutiger Anfänger was Java betrifft. Das Spielkonzept steht aber bereits.

Hier ein paar Begriffe, die das Spielkonzept darstellen sollen.

- Verschiedene Raumschiffklassen
- Bewegung von Planet zu Planet
- Planeten Bevölkern und Industrie bauen
- Rundenbasiert (einwöchiger Spielrundenzyklus, oder kürzer je nach Wunsch)
- Forschung (Schiffsklassen, Economy, Ausbau, Spionage etc.)
- Allianzbildung

Viele Grüße aus Köln.


----------



## Quaxli (4. Mrz 2010)

Conquer17 hat gesagt.:


> Ich bin noch blutiger Anfänger was Java betrifft....



Ohne Dich persönlich zu kennen: Man fängt als blutiger Anfänger nicht mit etwas derart Komplexen an. In der Regel kommt da nichts bei raus. Es sei denn, Du suchst jemanden, der alles für Dich macht - was ich nicht unterstellen möchte.

Ich gehe davon aus, daß Du etwas dabei lernen möchtest. Das wird aber nicht geschehen, wenn Dir jemand Erfahrenes alles vorkaut. Daher folgender Rat: Fang alleine mit etwas Kleinerem an - mit etwas sehr viel Kleinerem.  Wenn es denn rundenbasiert sein soll, wäre mein Rat einen TicTacToe-Klon oder ähnliches zu programmieren. Du wirst dann ganz schnell auf erste Schwierigkeiten stoßen, bei deren Überwindung eine Menge lernst.


----------



## Conquer17 (4. Mrz 2010)

Hi, ja, mir ist es auch klar, das ich nicht direkt ein mega Spiel programmiern kann. Aber wenn ich erst mal Anfange das Grundgerüst (3 Planeten, ein Raumschifftyp, keinen Ausbau, keine Forschung) zu programmieren sollte das doch funktionieren, oder?

Danke jedenfalls für die Antwort, bin auch weiterhin interessiert und bin nicht entmutigt ;-))

Auch ein erfahrener Java Programmierer der Spass daran hat darf sich gerne melden, dann übernehme ich das Redaktionelle...

Gruß aus Köln.

Ach ja, ich habe keine kommerziellen interessen das Spiel mal zu vermarkten oder ähnliches...


----------



## Steev (4. Mrz 2010)

Conquer17 hat gesagt.:


> Hi, ja, mir ist es auch klar, das ich nicht direkt ein mega Spiel programmiern kann. Aber wenn ich erst mal Anfange das Grundgerüst (3 Planeten, ein Raumschifftyp, keinen Ausbau, keine Forschung) zu programmieren sollte das doch funktionieren, oder?



Ich will dich ja nicht entmutigen... aber was schwebt dir da genau vor? Soll die grafik 2d oder 3d sein, hast du bereits ein genaues Konzept oder ein Pflichtenheft erstellt? Jenachdem wie die Anforderungen an dein Spiel sind kann es schnell komplex werden. Und dann ist noch die Frage, was du für Grundkenntnisse in Java hast. Ich weis auch nicht wieso, aber die meisten Anfänger wollen sofort ein Spiel programmieren und können einen einfachen Algorithmus nicht implementieren. Sie scheinen einfach zu vergessen, dass ein Spiel eine komplexe Anwendung ist und genau so viel Kenntnis und Erfahrung erfordert wie irgendeine Aufgabe an der Uni...

Falls du jetzt immer noch dein Spiel programmieren willst ;-) folgendes:
Arbeite vieleicht erstmal Quaxlis Tutorials durch (frag ihn einfach, er gibt sie dir bestimmt gerne). Dann weist du schon die wichtigsten Grundlagen für Renderung und Grundkonzept eines Spieles.
Dann kannst du ja mal ganz vorne und ganz klein anfangen:
1. Probiere ein bestimmtes Objekt von A nach B zu bewegen
2. Probiere eine Animation aus mehreren Bildern abzuspielen
3. Probiere eine Tastatursteuerung für ein Objekt zu programmieren
4. Jetzt die Maussteuerung 
5. usw.

Wie gesagt, dass ist meine allgemeine Meinung, ich weis ja nicht was du schon alles kannst...

Gruß
Steev


----------



## Conquer17 (5. Mrz 2010)

Hallo,

mein Spiel soll nur wie oben beschrieben ein 2D-Spiel sein. Nichts mit Bewegung oder Animationen. Nur die Maus wird sich bewegen ;-). Es gibt eine 2-Dimensionale Karte, bei der man nur die Planeten und die Benachbarten sieht, auf denen man Schiffe stehen hat. Dann soll das ganze ja rundenbasiert sein, sprich alle Spieler tätigen Ihren Zug, speichern ab und der Server startet dann die Auswertung der Runde. Darin soll dann die neue Runde berechnet werden (Kämpfe automatisch berechnet, Planetenwachstum etc.). Danach erhält der Spieler einen neuen Stand und kann die nächste Runde planen. 

Das alles sollte mit ein paar Fenstern, einer grafischen Oberfläche und einer Datenbank realisierbar sein, oder? Eigentlich nur auslesen, vergleichen, ändern und wieder aktualisieren.

Vielleicht gehe ich zu naiv an die Sache ran, klappt es nicht, hatte ich zumindest eine spaßige und interessante Zeit....trotzdem versuche ih das mal zu realisieren, auch wenns 2 Jahre dauern wird...

Gruß


----------



## Evil-Devil (5. Mrz 2010)

Ganz am Anfang, nur um überhaupt erst einmal ein Gefühl für die Logik zu bekommen, könntest du das ganze textbasiert realisieren. Ja ich weiß, Texte sind doof, aber dann kannst du dich auf das wirklich wesentliche konzentrieren und lernst trotzdem noch eine Menge dabei.


----------



## Gast2 (5. Mrz 2010)

Conquer17 hat gesagt.:


> Hi, ja, mir ist es auch klar, das ich nicht direkt ein mega Spiel programmiern kann. Aber wenn ich erst mal Anfange das Grundgerüst (3 Planeten, ein Raumschifftyp, keinen Ausbau, keine Forschung) zu programmieren sollte das doch funktionieren, oder?


ich weis nicht ob Du aus der PBeM-Ecke wie ich kommst ... aber stell Dir das nicht zu einfach vor

ich habe auch vor 2 Jahren mein Projekt auf Java umgestellt - Planung 1 Jahr - jetzt ist es noch lange nicht fertig ... Dir wird irgendwann einfach die Zeit fehlen ... teilweise auch die Motivation wenn Spieler Dir Fehler melden - Du 2 Stunden suchst - und anschließend feststellst das der Spieler nur die Regeln nicht beachtet hat ... in Deinem Fall wäre das das Überladen eines Schiffes oder ähnliches

außerdem darfst Du den Aufwand für die Grafiken nicht unterschätzen ... den lasse ich im Moment noch außen vor

hand, mogel


----------



## agentone (5. Mrz 2010)

> auch wenns 2 Jahre dauern wird...



Du weißt nicht, wie lange 2 Jahre dauern können...

Du brauchst Kreativität, Zeit, Programmierkenntnisse (Algorithmen, Datenstrukturen, OOP, "der Server startet dann die Auswertung der Runde." -> Netzwerke, Grafik, Datenbanken) und vorallem Durchhaltevermögen.

Und um nicht zu vergessen: GUTE Planung, schöne Klassendigramme und gut kommentierten Quelltext und fang NICHT mit dem Programmieren an! (höchstens kleine Test-Programme) 

Also: Viel Spaß


----------



## Marco13 (6. Mrz 2010)

Dass man nicht nur textbasiert anfangen will, verstehe ich. Und ich finde, dass gerade in einem GUI mit Vererbung, Listenern & Co vieles vorkommt, was man "soweiso immer braucht", das also zum Lernen ganz OK ist. Aber es besteht wirklich die Gefahr, dass man sich in einem (für den Anfang) ZU ambitionierten Projekt verliert, und es dann frustrierend wird....


----------



## Sanix (7. Mrz 2010)

Ich habe sowas auch schon probiert. Es wird so halb klappen aber nie mehr erweiterbar werden und irgendwann steht man vor Problemen, die man nicht mehr lösen kann wegen schlechtem Design. Da man das Wissen einfach noch nicht hatte.
Du kannst ja mal dein Klassendesign vorstellen, dann kriegst du sicher gute Tipps, was du anders machen musst.


----------



## Tharsonius (8. Mrz 2010)

Nur mal so zur Info, es gibt bereits solch ein Spiel: Planets4, ehemals VGA Planets
An die Sourcen kommt man glaub ich teilweise ran, hab mich damit aber nie aus programmiertechnische Sicht befasst.


----------



## Conquer17 (14. Mrz 2010)

Hallo, danke für die Anregungen. Werde nun wohl erstmal ordentlich Bücher studieren und testen. 

Mogel: Komme tatsächlich aus dem PBEM-Bereich (Früher etliche Spiralarm Runden gespielt). Nette Seite, Dein Fantansya, meins soll jedoch viel einfacher gesttrickt sein...Die Spieler können bei mir nichts falsch machen, denn das GUI soll Ereignisorientiert arbeiten und einfach nur die Objekte in Datenbanken entsprechend aktualisieren (beim abspeichern des Zuges). Habe zu wenig Erfahrung, ob das so zu realisieren ist, denke aber schon...

Die Grafikgeschichte sehe ich im Moment noch als das schwierigste Problem an...

Das mit der Textvariante habe ich nicht verstanden, kann mir nicht vorstellen, wie ich das realisieren könnte...

Ich saga mal bis bald, wenn die ersten Fragen auftauchen...


----------



## Cage Hunter (20. Mrz 2010)

Ich weiss gar nicht wo das Problem beim "drauf los Proggrammieren" liegt.
Klar höre auch ich immer wieder, wie wichtig das SoftwareEngineering ist
und merke es ja auch selbst. Dennoch muss man doch auch sagen, 
dass man am besten Programmieren lernt, wenn man programmiert oder?

Ich habe auch einfach mit einem Clon von Masters of Orion angefangen
als ich in der Uni mit Java anfing. So wie ein Studium nunmal ist, 
wurde uns nur das Ziel für unsere "Hausaufgaben" genannt und
nicht der Weg diktiert. Zu einer Zeit wo ich weder den Sinn der
nervigen Planerei verstand, noch einen Nutzen daraus ziehen konnte.

Ich gebe zu -ich arbeite seit ca 1,5 Jahren an dem Spiel- dass mir in
seltenen Fällen die Planung fehlt, weil je komplexer ein Projekt wird,
desto schwieriger ist es sich einige Sachen vorzustellen 
(siehe meine Frage zur Erweiterbarkeit von Waffen^^)

Aber ich habe auch enorm viel gelernt! Ich bin noch nicht in der Phase
wo es dann nur noch um die Grafik geht, dazu fehlt leider die Zeit.
Dennoch musste ich mir viel über Swing, vernünftige OOP und auch Hibernate
beibringen das mir auch in anderen Projekten sehr geholfen hat.
Sicher, manchmal frage ich mich was ich mir da vor x Monaten bei gedacht
habe, weil eine andere Lösung viel schöner wäre, aber so lernt man doch 
Dann wird das eben geändert, das ist doch kein Beinbruch 

Wenn mir gleich am Anfang jemand gesagt hätte "so macht man das", 
hätte ich doch nur gefragt "wieso?" oder "wieso nicht anders?"
Würde mir heute jemand etwas in die Richtung nahe legen, könnte
ich es definitiv besser verstehen als damals, weil ich mich mit der
Materie beschäftigen musste und viel damit programmiert habe 

Ich sehe eigentlich mehr Vorteile dabei, auf diese Art Javanisch zu lernen 

Oh Gott, entschuldigt bitte die Textmasse -.-'


----------



## agentone (21. Mrz 2010)

Also wenn ich nicht richtig plane, endet das meistens in einem Programm mit 3 Klassen mit jeweils 500 Zeilen Code und 10 inneren Klassen. Wenn das übersichtlich sein soll, dann Prost Mahlzeit!

Es erwartet ja niemand von dir, dass du ein 20seitiges Pflichtenheft mit dir rumschlepst, aber Planung kann nie schaden! Und wenn man nur einzelne Sachen ausprobieren will, kann man sich auch kleine TestProgramme schreiben.


----------



## Tharsonius (22. Mrz 2010)

Wenn man nicht vernünftig plant, dann wird man sehr schnell an Punkte stoßen, die einen dazu zwingen vieles bereits kodiertes nochmal abzuändern und neu / anders zu machen. Das ist bei kleinen Programmen kein Problem, das geht da ja alles recht schnell.

Bei einem größeren Programm hingegen wird das ganze dann nicht mehr ganz so trivial.

Wenn man sich aber vorab mal überlegt, was man alles verarbeiten muss, wie man das etwa machen könnte etc. sich also ein Paar Gedanken zu den Daten macht, die gespeichert werden und wo die wie zur Verfügung stehen, dann kann man mit diesem Konzept später den Mehraufwand deutlich reduzieren.


Natürlich wäre der professionelle Weg, vorab alles sauber auf dem Papier zu designen und dann alles ins Detail zu durchdenken. Wenn man dann anfängt zu kodieren, dann braucht man nur noch wenig abändern.

Aber wer macht das im allgemeinen schon für ein privates Projekt? Ich jedenfalls nicht, gebe ich zu.

Aber auch ein wenig drüber nachdenken was man so machen will sollte man schon, vor allem da einem viele Ideen erst nach und nach kommen und wenn man sich vorher mal Gedanken macht, dann kann man den Umfang deutlich besser abstecken und auch die Schnittstellen für Erweiterungen besser ausformulieren. Es machts später einfacher.


----------



## Steev (22. Mrz 2010)

Wenn ich ein Projekt mache, dann mache ich generell - auch bei privaten Projekten - eine Anforderungsermittlung in Papierform. Auserdem erstelle ich einen Katalog mit allen Hauptzielen und schlüssel diese in kleine Arbeitspakete auf. Die "Arbeitspakete" gestalte ich in der Regel so, dass ich ein Arbeitspaket bequem an einem Abend erledigen kann.
Das ist dann jedenfalls nicht so frustrierend als wenn man ein Teilnziel im Kopf hat und nicht mehr so genau weis, was man alles schon gemacht hat, oder noch machen muss.


----------



## Conquer17 (22. Mrz 2010)

Hallo, so, bin nun mitten im zweiten Buch (Einstieg in Java 6 von Bernhard Steppan, wie ich finde ein super Buch!!!) und sehe es als eine sehr gute Sache an, erstmal ein ordentliches Design und einen Bauplan des Java Programms zu erstellen. Bin fest davon überzeugt, das dies viel Arbeit erspart und sogar sicher ganz neue Ideen bringen wird. Auch die Realisierung des Programmablaufs wird damt direkt auf Machbarkeit geprüft...

Es macht jedenfalls viel Spass! gruß aus Kölle...


----------

