# Vorstellung: MergeTD



## Firephoenix (9. Okt 2012)

Hi, ich spiele schon eine Weile mit dem Gedanken das Projekt hier vorzustellen, jetzt mache ich das einfach mal.

Gestartet ist das ganze aus diesem stillen Thread hier:
http://www.java-forum.org/jobboerse/139019-hobby-programmierer-team.html

Im Hintergrund gab es dann aber schon einigen PN-Kontakt, etwas später saßen 5-6 Leute auf einem TS und haben sich überlegt das man ja ein Towerdefense angehen könnte.
Nach einer ganzen Weile kamen dann auch ein paar Anforderungen heraus die man Implementieren konnte.
Bei den meisten ging leider mit der Zeit das Interesse oder die Zeit an sich verloren, mittlerweile arbeiten wir nur noch zu zweit, mal schauen wie lange wir noch die Motivation und Zeit haben um das Spiel voranzubringen (vielleicht sieht man auch mal jemand von den verschollenen wieder?  ).

So, genug zur Vorgeschichte, hier ist ein Video von dem aktuellen Projektstand:

Towerdefense - actual state of development - YouTube

Die Version aus dem Video (es ist die aktuellste von heute) habe ich auch nochmal zum ausprobieren zusammengepackt (8.1 MB - Musik aus Platzgründen entfernt, Soundeffekte fehlen eh noch)
File-Upload.net - mergeTD.zip

Features bis jetzt:

Eigenes Resourcensystem, alle Bilder, Levels, Sounds etc sind vom Code getrennt
Eigenes Entity/Rendersystem, aufgesetzt auf Slick2d
Energiesystem um Türme zu versorgen

Allerdings fehlen bis jetzt noch Gegner und Türme (und trotzdem habe ich es schonmal Towerdefense genannt), auch ein Geldsystem ist noch nicht implementiert. Der Mapeditor ist auch noch im Aufbau, Spielstände sind nur Ansatzweise implementiert.

Bis jetzt war es auf alle Fälle eine nette Erfahrung, insbesondere der Rendering-Kram mit Slick, Twl und die XML-Anbindung waren relativ neu (ich denke über einige Stellen von dem Code werde ich in einem halben Jahr wieder lachen wenn ich neue Dinge entdecke, aber aktuell bin ich mit einem Großteil zufrieden - einige Räder habe ich bewusst neu erfunden, einfach um es mal selbst zu tun).

Ich kann nicht versprechen das es komplett fertig wird, das hängt von meiner Freizeit ab, aber über Feedback freue ich mich natürlich immer 

Und nicht vergessen, das ist kein Projekt von mir alleine (auch wenn ich das meiste von dem Code verbrochen habe) - solo wäre ich nicht bis zu dem Stand gekommen denke ich (danke nochmal an alle die motiviert haben).

Gruß Firephoenix


----------



## Manello (9. Okt 2012)

Schlecht sieht es mal nicht aus, aber den sinn von einem Tower defense kann ich zumindest mal nach dem video nicht erkennen.


----------



## BRoll (9. Okt 2012)

Manello hat gesagt.:


> Schlecht sieht es mal nicht aus, aber den sinn von einem Tower defense kann ich zumindest mal nach dem video nicht erkennen.



Bei einem Tower Defence muss man ein bestimmtes Gebäude/Turm (deshalb Tower Defence)
vor Gegnern schützen, in dem man Angriffseinheiten auf der Karte verteilt.
In dem Fall eben energieschiessende Türme. Damit auch der strategische
Aspekt mehr Beachtung bekommt, wird alles mit einem Energiesystem vernetzt.
Dadurch ist es kein einfaches Turmhinsetz und warten - TD.

Weitere Features sind ein eigenes Turm-Kreationssystem, dh. ein Baukit für
Türme, die aus verschiedenen ingame erwerbbaren Teilen zusammengesetzt werden.

Gegner laufen auch keinen festen Weg ab, sondern suchen sich einen zwischen
den Türmen hindurch, womit auch Mazing eine wichtige Rolle spielt.
Also muss man sich um Türme, Energieversorgung und Labyrinthbildung kümmern -
dem Spieler wird alles abverlangt 

Zur Abwechslung soll es auch verschiedene Gegner Typen und natürlich mehre Maps
plus eigenen Map Editor geben. Somit ist das Spiel sehr vielfälltig gestaltet
und der Spieler kann auch viel eigene Kreativität einbringen. 

Auf dem Video sind nur erste Grundfunktionen zu sehen!
(dh. das erstellen eines einfachen Energienetzwerks und das platzieren von ersten
Netzwerktürmen -  die eigentlichen Angreifertürme sowie Gegner usw fehlen noch)

mfg BRoll


----------



## Manello (9. Okt 2012)

Jop was ein Tower defense ist weis ich schon, nur habe ich dies im Video noch nicht so ganz erkannt 
Aber dass kann noch was werden


----------



## Apo (9. Okt 2012)

Mir gefällt auch was ich sehe. Vor allem das runde Menu gefällt mir sehr gut. =)
Könnte mal ein etwas anderes TD Spiel werden.

Ich wünsche euch auf jeden Fall noch einen langen Atem, damit ihr es fertig bekommt!


----------



## Marco13 (9. Okt 2012)

Ja, das sieht schon nicht schlecht aus und hört sich auch von den Zielen her nicht schlecht an. Gibt's irgendwo Code?


----------



## Firephoenix (9. Okt 2012)

@Manello
Ich weiß es sieht derzeit noch nicht nach einem Towerdefense aus, aber bis jetzt ging die meiste Zeit dafür drauf ein halbwegs brauchbares Grundgerüst zu schreiben, Erweiterungen wie Verkaufen von Gebäuden oder besagte Gegner zu integrieren benötigt jetzt verhältnismäßig wenig Zeit 
Geplant war auch, das man sich seine eigenen Türme im Spiel "zusammenklicken" und dann im Level verwenden kann (Turmaufteilung in Waffe, Zielerfassung, Sockel, Schild und Energiespeicher) - an dem Punkt konnten wir bis jetzt aber noch garnicht arbeiten.

Danke schonmal für das Feedback 

[EDIT]Wegen dem Code, derzeit liegt der noch in einem SVN von mir, wenn BRoll nichts dagegen hat kann ich selbiges aber auch gerne zum Lesen freigeben (und mir dann anhören was ich alles falsch gemacht habe beim Frickeln und Verbessern  )[/EDIT]

Gruß Firephoenix


----------



## s4ke (9. Okt 2012)

Firephoenix hat gesagt.:


> @Manello
> Geplant war auch, das man sich seine eigenen Türme im Spiel "zusammenklicken" und dann im Level verwenden kann (Turmaufteilung in Waffe, Zielerfassung, Sockel, Schild und Energiespeicher) - an dem Punkt konnten wir bis jetzt aber noch garnicht arbeiten.



Klingt super!  TD Games sind immer episch.

EDIT:

Da ich euer Projekt cool finde, mal ein Vorschlag. Wenn ihr bis jetzt noch nichts mit Audio implementiert habt, dann könntet ihr euch ja mal meine HotSound Library ansehen. Ist noch in Arbeit (funktioniert aber schon sehr gut und wird nach der Klausur am Freitag wieder gepusht). Das ganze ist sehr sehr einfach gehalten für den API-Benutzer.

Solltet ihr schon mit AudioClips arbeiten, überlegt euch mal einen Radio-Livestream Player einzubauen (das fand ich in einem ähnlich kurzweiligen Game richtig cool und hab es u.a. deswegen öfter gespielt).

Wenn ihr das nicht wollt, auch in Ordnung. 

https://github.com/s4ke/HotSound/wiki


----------



## c_sidi90 (10. Okt 2012)

welches Framework steckt dahinter?


----------



## AngryDeveloper (10. Okt 2012)

c_sidi90 hat gesagt.:


> welches Framework steckt dahinter?


Im ersten Post steht doch Slick2D?


----------



## c_sidi90 (10. Okt 2012)

Tatsächlich, das habe ich wohl überlesen bitte um entschuldigung!


----------



## Firephoenix (10. Okt 2012)

Genau genommen haben wir auch nicht nur Slick2d eingesetzt, sondern noch zusätzlich TWL verwendet für die Gui-Elemente wie die Buttons im Menü oder die Profilauswahl-Liste.
Das Logging läuft über log4j (daher auch die log.html - beim nächsten Projekt nehme ich aber wohl slf4j).
Unsere xml-Dateien für die Ressourcen etc. haben wir per Jdom angebunden.

@s4ke
Den Thread zu HotSound habe ich schon mitverfolgt, wenn wir weiter an den Sounds arbeiten schaue ich mir das auf alle Fälle genauer an.

Gruß Firephoenix


----------



## Firephoenix (11. Okt 2012)

Marco13 hat gesagt.:


> Ja, das sieht schon nicht schlecht aus und hört sich auch von den Zielen her nicht schlecht an. Gibt's irgendwo Code?



Das SVN ist jetzt frei für Lesezugriffe, wer mag kann sich das Projekt ja mal auschecken und ein bisschen Blättern (und darf es gerne auch als eigene Anregung verwenden).
https://srv21.svn-repos.de/dev456/towerdefense

Wie es aussieht mit neuen Features wird sich zeigen, das neue Semester startet ja bald.
Bei uns beiden wird es aber zeitlich wohl wieder etwas enger, aber ich will jetzt auch nicht in 4 Tagen das komplette Spiel reinhacken, dannach ist in dem Projekt nämlich nichts mehr brauchbar.

Gruß


----------



## Firephoenix (6. Jan 2013)

Ich grabe den Thread mal aus, einmal um den Link zum Projektcode zu aktualisieren, aber auch um mal etwas weiter zu berichten:

Da ich der Speicherplatz auf meinem Server aktuell anderweitig verwendet wird kann es sein, dass ich das SVN bald aufräume, daher hier nochmal ein Downloadlink für das gepackte Projekt:
File-Upload.net - MergeTD.zip

Als Projekt selber wird es vermutlich auf dem Stand bleiben, wie schon erwartet fehlt mir in der Studienzeit aktuell einfach die Freuzeit um das Projekt weiter zu pflegen.
Der Code wurde auch schon für 2-3 Monate nicht mehr angefasst, bei ~7000 Zeilen ist alleine der Einarbeitungsaufwand auch schon recht hoch.

Ich denke als Anregung ist der Code trotzdem nicht schlecht, das meiste ist zwar Handgestrickt (war ja auch ein Ziel: viel selber schreiben um möglichst viel zu lernen), aber gerade aus dem Grund ist es vielleicht interessant für manche, die selber irgendwas in der Richtung basteln wollen.

Vielleicht ein paar nennenswerte Punkte:

Eigenes Entity- und Rendersystem basierend auf Slick (Scrolling und Zoom inklusive)
Unterstützung mehrerer Layer
Das Rendering selbst ist schon ziemlich optimiert (ich habe gerade keine konkreten Zahlen mehr, aber ich glaube irgendwas mit 4-Stelligen animierten, skalierten und rotierenden Spielobjekten in Echtzeit war drin), da geht natürlich noch mehr wenn man mehr Zeit investiert.
TWL-Anbindung (Für Grafikelemente mit Slick war das definitiv einen Blick wert)
Eigenes xml-basiertes Resourcensystem (müsste man aus Architektursicht verbessern, aber der Ansatz war hilfreich)

Der Code sollte an den meisten Stellen auch kommentiert oder dokumentiert sein. Ein paar Snippets müsste man also schnell finden.

Was vielleicht auch ganz interessant sein dürfte, besonders für Leute die selber Spielprojekte planen, sind die Gründe warum das Projekt am Ende nicht fertig geworden ist:

Der Aufwand wurde falsch eingeschätzt (geplant waren 4 Wochen für ein lauffähiges Towerdefense, tatsächlich hatten wir genug Anforderungen für ~ ein halbes Jahr).
Einige Anforderungen waren nicht fertig definiert als wir anfingen zu entwickeln. Für kommende Projekte würde ich strikt agil mit Userstories arbeiten (nur das implementieren was die aktuellen Userstories vorgeben) und das Projekt so nach und nach wachsen lassen. Dies ermöglicht einen schnelleren Start (wir haben über 10 Tage für Anforderungsanalysen gebraucht) und frühe Resultate die das Team motivieren
Zeitplanung sollte allgemein früh angesprochen werden, insbesondere wer wann wieviel Zeit hat. Damit können falsche Erwartungen reduziert werden und man kann früher auf Ausfälle reagieren. Ich denke nicht allen im Team war der Arbeitsaufwand bewusst den man betreiben muss um eine funktionierende Applikation zu produzieren (ich glaube für den aktuellen Stand hat es schon eine 3-Stellige Arbeitsstundenzahl benötigt)

Positiv muss man allerdings auch sagen, dass wir zumindest aus der GUI-Sicht ziemlich weit gekommen sind, alle Grundfunktionen waren vorhanden, ein paar Interaktionen im Spiel sind auch bereits möglich gewesen und das Energiesystem war auch weitgehend funktionsfähig.
Das Arbeiten mit BRoll zusammen war auch sehr motivierend, jemand der so kreativ ist dürfte schwer zu finden sein (und er hat als einziger bis zum Ferienende durchgehalten :toll: ).

Für die Zukunft:
Die Spielidee an sich (Towerdefense mit xml-Konfigurierbaren Grafiken/Units/Leveln, dazu ein Energiesystem) bietet an sich schon einiges Potential, Spiele zu programmieren macht auch Spaß, da man ein schickes Ergebnis bekommt, falls es läuft.

Denkbar für mich wäre, das Projekt zu gegebener Zeit neu zu starten mit dem alten Code als Referenz und den gelernten Projekterfahrungen im Hinterkopf.

Gruß


----------



## BRoll (12. Jan 2013)

Ich denke mal als weiteren Punkt fürs Scheitern könntest du erwähnen,
dass aus den am Anfang ca. 7 Leuten relativ schnell nur noch wir beide übrig 
geblieben sind. Das fand ich selber ziemlich schade, da dass natürlich auch
die Motivation hemmt. Vielleicht wären wir ja fertig geworden, wenn wirklich alle
mitgeholfen hätten. Aber eine gute Lektion war es allemal. 
Ich hoffe wir können sowas in Zukunft wiederholen, wenn du mal wieder Zeit hast.

mfg BRoll


----------



## TiGreen (12. Jan 2013)

Es ist zwar mal ein etwas anderes Spiel aber dennoch denke ich nicht das es interessant ist. 
Deshalb sind bestimmt auch die meisten gegangen. 
Ihr müsstet eben ein richtiges TD Spiel machen


----------



## Gonzo17 (15. Jan 2013)

Falls ihr mal wieder ein Projekt startet oder dieses Projekt wieder aufleben lasst, dann könnt ihr mich gerne mal kontaktieren. Denn anscheinend seid ihr motiviert sowas durchzuziehen und solche Leute fehlen mir idR um ein Projekt auf die Beine zu stellen, weil ich weniger der Typ bin, der ein Projekt ganz alleine durchzieht.


----------

