[Projekt] Tower Defense Evolution

Hier könnt ihr euch selbst, eure Homepage, euren Entwicklerstammtisch, Termine oder eure Projekte vorstellen.
Forumsregeln
Bitte Präfixe benutzen. Das Präfix "[Projekt]" bewirkt die Aufnahme von Bildern aus den Beiträgen des Themenerstellers in den Showroom. Alle Bilder aus dem Thema Showroom erscheinen ebenfalls im Showroom auf der Frontpage. Es werden nur Bilder berücksichtigt, die entweder mit dem attachement- oder dem img-BBCode im Beitrag angezeigt werden.

Die Bildersammelfunktion muss manuell ausgeführt werden, die URL dazu und weitere Details zum Showroom sind hier zu finden.

This forum is primarily intended for German-language video game developers. Please don't post promotional information targeted at end users.
Antworten
Mandriva
Beiträge: 18
Registriert: 12.05.2009, 20:01

[Projekt] Tower Defense Evolution

Beitrag von Mandriva »

Hallo ZFXler,

Einleitung
In diesem Thread werden ich euch über die Entwicklung meines ersten Spiels "Tower Defense Evolution" (Arbeitstitel) informieren. Das "Evolution" im Titel bezieht sich auf die Entwicklung des Spiels. Es gibt keinerlei Design Dokument und UML Diagramm. Dementsprechend musste ich schon viel Code umschreiben und anpassen.
Mein Ziel ist es, mit diesem Projekt Erfahrung im Bereich Spielprogrammierung zu sammeln um dann nach diesem Projekt ein Tower Wars Spiel (Die Spieler schicken sich gegenseitig Creeps) zu programmieren, welches über das Internet gespielt wird. Eine Tower Defense ist sozusagen der Einzelspielermodus und die dabei erworbenen Kenntnisse sollen mir dabei helfen, dass Multiplayerspiel auf ein gutes Fundament zu stellen. Deshalb ist es nicht mein Ziel, dieses Spiel zu vollenden.

Was ist eine Tower Defense?
Eine Tower Defense ist ein Spiel, bei dem der Spieler auf einem Spielfeld Türme baut um damit sogenannte Creeps zu vernichten. Diese Creeps sind die eigentlichen Gegner in diesem Spiel und sie sind ziemlich dumme Kreaturen, da sie nur einem Pfad folgen und sich von den Türmen beschießen lassen. :D
Für das Vernichten von Creeps gibt es neue Credits, mit denen neue Türme gekauft und bereits gebaute Türme verbessert werden können. Die Creeps kommen in Wellen, wobei jede Welle einem Level entspricht. Ist eine Welle besiegt, erscheint die nächste Welle.
Sobald eine gewisse Anzahl an Creeps den Endpunkt erreicht hat, ist das Spiel verloren.

Technische Umsetzung
Das Spiel wird in C# mit XNA 3.0 Beta geschrieben. Demzufolge wird es nur auf Windows PCs laufen (und eventuell auf der XBox). Die Hardwareanforderungen des Spiels werden sehr gering sein, da nur 2D Grafik zum Einsatz kommt.

Implementierungen im Detail
Hier werde ich Postings von mir verlinken mit Erklärungen zur Implementierung bestimmter Techniken in meinem Spiel. Was ist bereits implementiert?
  • Hintergrundmaske für das Interface
  • Dateiformat für Karteninformationen
  • Klasse zum Laden der Karten
  • Darstellung des Spielfeldes
  • Creeps
  • Türme
ToDo
  • Grafiken für Buttons erstellen
  • Spielinformationen oben rechts einblenden (Credits, Leben, Level)
  • Strategien für Türme implementieren (worauf schießt mein Turm)
  • ...
  • diverse Verbesserungen am Code vornehmen
Bilder
Dateianhänge
Das Spielfeld, noch fehlen einige Grafiken.
Das Spielfeld, noch fehlen einige Grafiken.
Das Startmenü.
Das Startmenü.
Zuletzt geändert von Mandriva am 17.05.2009, 12:01, insgesamt 3-mal geändert.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4854
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [Projekt]Tower Defense Evolution

Beitrag von Schrompf »

Hat Potential, denke ich :-) Vor allem die Spielmechanik gegeneinander könnte später lustig werden... wenn man nicht nur grübelt, wo man welche Türme hinbaut, sondern auch, wieviel des eigenen Geldes man dem Gegner in Monsterform um die Ohren haut. Denn wenn er es überlebt, hat er damit ja einen Haufen neues Geld, dass demnächst postwendend auf die eigenen Verteidigungen losmarschiert.

Viel Erfolg!
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Lord Delvin
Establishment
Beiträge: 577
Registriert: 05.07.2003, 11:17

Re: [Projekt]Tower Defense Evolution

Beitrag von Lord Delvin »

Thomas Bialik hat geschrieben:Es gibt keinerlei Design Dokument und UML Diagramm. Dementsprechend musste ich schon viel Code umschreiben und anpassen.
Naja ohne Erfahrung in dem Gebiet wärst du ja auch garnicht in der Lage gewesen sowas in einer Qualität zu schreiben, dass mans nicht dauernd ändern muss. Und für einmann Projekte kann ichs ehrlich gesagt nicht empfehlen. Vor allem UML nicht, weil man leider doch schneller den Code hingeschrieben hat, als mit mir bekannten Editoren das Diagramm gemalt und dann müsste man ja immernoch den Code schreiben:-/

Ansonsten is denk ich ein ganz gutes Einsteigerprojekt und wenn man mal inspiration braucht kann man ja wc3 mapedit aufmachen:D
XML/JSON/EMF in schnell: OGSS
Keine Lust mehr auf C++? Versuche Tyr: Get & Get started
Mandriva
Beiträge: 18
Registriert: 12.05.2009, 20:01

Re: [Projekt] Tower Defense Evolution

Beitrag von Mandriva »

Hallo,

Heute gibt es ein Update mit meinen Fortschritten.

Es gibt nun eine richtige Karte, welche über eine Klasse geladen wird. Dazu gibt es ein einfaches Dateiformat, welches aus einer Textdatei ausgelesen wird. Es ist auch möglich, Creeps über das Spielfeld zu schicken (blaues Rechteck auf dem Screenshot). Türme schießen nun auf den Creep und können ihn zerstören. Das Zusammenspiel von Türmen und den Geschossen hat mich viel Zeit gekostet, aber jetzt scheint es so zu laufen wie es soll. Die Türme haben einen Cooldown und schießen dementsprechend nur dann, wenn dieser vorbei ist.
Somit kann ich nun sagen, dass das Spiel grob funktionsfähig ist und nur noch diverse Features fehlen und nicht zu vergessen...ich muss noch einen Haufen Grafiken erstellen...
Der Screenshot ist nicht besonders gut, aber wenn man genau hinsieht, erkennt man den roten Schuss des oberen Turms (Linie zum Creep).

Gruß Thomas
Dateianhänge
Bild 1
Bild 1
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4256
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: [Projekt] Tower Defense Evolution

Beitrag von Chromanoid »

Ich hab mal das Multiplayer Towerdefense, wo du mitgearbeitet hast, gespielt. Hat echt Spaß gebracht, einzig der Sound war etwas nervig auf Dauer. Da sollte man eine Funktion zum ausstellen einführen (falls es noch keine gibt)...

Wenn dieses hier so ähnlich wird, dann bin ich schon sehr gespannt und voll Vorfreude :).

LG
Christian
Mandriva
Beiträge: 18
Registriert: 12.05.2009, 20:01

Re: [Projekt] Tower Defense Evolution

Beitrag von Mandriva »

Hi Chromanoid,

Ich hab das früher auch gerne gespielt, aber mittlerweile nervt der Sendebug einfach zu sehr und ich finde den Fehler nicht. Da ich von Netzwerkcode auch keine Ahnung habe, weiß ich nicht wo ich da noch suchen soll.
Der Sound ließ sich schon immer über F2 ausschalten, was aber fehlerhaft implementiert war. Das war einer der ersten Fehler den ich behoben habe. Der Sound bleibt nun solange man spiel aus und er lässt sich in jedem Fenster (auch im Chat) abstellen.

Spielerisch wird es definitiv in diese Richtung gehen, wobei ich mehr Wert auf den Server legen möchte mit Möglichkeiten um Clans zu gründen, eigene Räume erstellen etc. Aber bis dahin ist es noch ein weiter Weg.


Gruß Thomas
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4256
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: [Projekt] Tower Defense Evolution

Beitrag von Chromanoid »

Thomas Bialik hat geschrieben:wobei ich mehr Wert auf den Server legen möchte
Vielleicht wäre JXTA auch einen Blick wert... (P2P Framework unter anderem für Java und C implementiert)...
https://jxta.dev.java.net/

Ist zwar aufgrund Komplexität recht schwierig zu lernen, aber meine ersten Versuche damit fand ich recht vielversprechend...
Mandriva
Beiträge: 18
Registriert: 12.05.2009, 20:01

Re: [Projekt] Tower Defense Evolution

Beitrag von Mandriva »

Hallo,

Danke für den Tipp Chromanoid, ich werde mir das dann bei Bedarf genauer ansehen.

Ich habe wieder kleine Fortschritte gemacht. Wie auf dem Screenshot zu sehen, haben Creeps nun einen Trefferpunktebalken, der Anzeigt wieviel HP ein Creep noch hat und er verfärbt sich von grün über rot mit abnehmender HP Zahl. Das Upgraden von Türmen nimmt nun auch Zeit in Anspruch, was sich anhand des blauen Balkens verfolgen lässt. Ein Turm kann in dieser Zeit nicht angreifen.
Ich habe auch ein paar Grafiken für die noch ungenutzten Schaltflächen erstellt. Bisher funktionieren nur upgrade, sell und der erste Turm.

Mein nächster Schritt ist nun dafür zu sorgen, dass das Bauen von Türmen auch Zeit in Anspruch nehmen wird. Und danach werden die Turmstrategien eingebaut.

Gruß Thomas
Dateianhänge
Bild 1
Bild 1
Mandriva
Beiträge: 18
Registriert: 12.05.2009, 20:01

Re: [Projekt] Tower Defense Evolution

Beitrag von Mandriva »

Hallo,

Ich habe wieder kleine Fortschritte gemacht. Es können nun Strategien für die Türme eingestellt werden, wobei die Strategien "closest" und "farthest" noch nicht implementiert sind.
Das Bauen von Türmen benötigt nun auch Zeit und das Verkaufen wird auch noch Zeit benötigen, sobald ich es implementiert habe.
Es gibt jetzt einen weiteren Turm, den Splashtower. Er schießt wie der Standardturm einen Laser, welcher sich aber in viele Laser splittet, sobald er das Ziel trifft. Dadurch kann er allen angrenzenden Creeps ebenfalls Schaden zufügen.
Momentan bin ich damit beschäftigt, die optimale Position für Schadensberechnung etc. zu bestimmen. Jetzt versuche ich, soviel wie möglich in die Klassen der Geschosse zu verlagern, wo das meiste vorher in den Turmklassen war.
Türme sollen später nur noch angeben, welches Geschoss verwendet wird und dass geschossen werden darf, der Rest wird von den Geschossen erledigt.


Gruß Thomas
Mandriva
Beiträge: 18
Registriert: 12.05.2009, 20:01

Re: [Projekt] Tower Defense Evolution

Beitrag von Mandriva »

Hallo,

Heute gibts mal kein Update, sondern ich habe ein kleines Problem. Ich möchte meine Creeps rotieren (um deren Mittelpunkt), jedoch verschiebt sich meine ganze Textur, wenn ich den Ursprungspunkt für die Rotation angebe. Wenn ich 0/0 nehme, dann wird das Objekt zwar richtig positioniert (nicht verschoben), jedoch ist die Rotation entsprechend nicht um den Mittelpunkt. Setze ich die Rotation zum Mittelpunkt, dann wird die Textur schon zu einer anderen Position hinbewegt, wodurch diese vom Pfad abweicht. Der Mittelpunkt liegt dann dort, wo die Positionskoordianten sind. Ich glaube nicht, dass dies im Sinne des Erfinders ist. Würde ich nun die halbe Breite und Höhe der Textur bereits berücksichtigen in der Position der Creeps, würden sie wohl richtig gezeichnet werden. Weiß jemand woran das liegt?


Gruß Thomas
Benutzeravatar
Zudomon
Establishment
Beiträge: 2254
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: [Projekt] Tower Defense Evolution

Beitrag von Zudomon »

Hi!
Das hört sich eigentlich nach einem einfachen Problem an, was man sicher schnell lösen könnte, wenn man es vor sich hätte. Man müsste wissen, wie das ganze grundlegend verwaltet wird. Die Einheiten sollten so konstruiert sein, das die ein Quadrat bilden (wird ja schon so sein) und das Zentrum genau im Mittelpunkt liegt, also bei (0|0).
Ich gehe dabei jetzt einfach davon aus, das alles auf der X,Y Ebene abbgebildet wird.
Am einfachsten haste es eigentlich, wenn du das ganze normalisiert darstellst, also die Eckpunkte würden dann auf (-1,-1), (1, -1), (-1, 1) und (1, 1) liegen. Somit hättest du schonmal ein gewöhnliches Sprite, welches du Anhand der Matrix transorfmieren kannst. Starten tust du mit einer Skalierungsmatrix, die letztlich angibt, wie groß die Einheit abgebildet wird. Hätte dein vorgebenes Gitter eine Unitgröße von 1, also ein Kästchen pro Einheit, müsstes deine Skalierungsmatrix einen Wert von 0.5 haben, um genau ins Kästchen zu passen. Da die Kantenlänge des Sprites ja 2 ist.
Anschließend kommt die Rotation-, und schließlich die Translationsmatrix.
Das wichtigste bei solchen Spielen ist meiner Meinung, das man sich die Grundvorraussetzungen so einfach wie möglich macht.
Ich würde das Gitternetz nun so legen, dass es bei (0, 0) startet und bei z.B. 64 Kästchen dann bei (64, 64) endet.

Es hört sich so an, als ob bei dir entweder der Mittelpunkt einer Einheit nicht im Zentrum ist, oder das die Matrizenreihenfolge falsch ist.

Gruß
Zudo
Mandriva
Beiträge: 18
Registriert: 12.05.2009, 20:01

Re: [Projekt] Tower Defense Evolution

Beitrag von Mandriva »

Hi,

Also das Problen ist in dem Sinne eigentlich kein Problem, da ich durch Verschiebung der eigentlich Position zum gewünschten Ergebnisse komme. Ich benutze zum Zeichnen einfach die Draw Methode der SpriteBatch Klasse ohne irgendwelche Matrizen nutzen zu müssen.
Ich habe zwar an meinem Projekt weiter gearbeitet, aber weniger als ich eigentlich wollte, da mir im Moment einfach ein bischen die Lust fehlt. Tower sind alle integriert, bis auf den letzten. Da muss ich mir noch überlegen, was der so besonderes machen soll. Creeps rotieren schön in die Richtung, in die sie wechseln. Das gesamte Design habe ich verkleinert, sodass Türme und Creeps nur noch 16x16 Pixel groß sind (halb so groß wie vorher).


Gruß Thomas
Eisflamme
Establishment
Beiträge: 412
Registriert: 26.05.2002, 17:42
Wohnort: Köln

Re: [Projekt] Tower Defense Evolution

Beitrag von Eisflamme »

Creepsmash rulez. Mal sehen, ob Du dagegen ankommst. Aber da du ja nicht im lame Java arbeitest (*duck*), hast Du ja viel mehr Möglichkeiten. Ich mein, CSB könnte auch OGL oder so nutzen aber was soll's. :)
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4256
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: [Projekt] Tower Defense Evolution

Beitrag von Chromanoid »

Java kann alles! :D Java hat nämlich das Java Native Interface, um zum Beispiel Windows DLLs einzubinden. Man kann auch DirectX und weiß der Geier was benutzen. Es kommt darauf an, ob eben solche DLLs und Schnittstellen für alle plattformen angeboten werden. Es gibt da zum Beispiel die Lightweight Java Game Library, die es einem ermöglicht ohne plattformspezifischen Code Spiele plattformunabhängig mit OpenGL und OpenAL mit Leichtigkeit zu entwickeln...

PS Sorry für das offtopic aber das konnte ich einfach nicht so stehen lassen :D
Eisflamme
Establishment
Beiträge: 412
Registriert: 26.05.2002, 17:42
Wohnort: Köln

Re: [Projekt] Tower Defense Evolution

Beitrag von Eisflamme »

Ich sammel meinen Müll lieber selbst :P
Mandriva
Beiträge: 18
Registriert: 12.05.2009, 20:01

Re: [Projekt] Tower Defense Evolution

Beitrag von Mandriva »

Hi,

Thema Offtopic:
Kleine Exkurse sind vollkommen okay finde ich. Nur sobald das Hauptthema völlig zurückbleibt, sollte man die Themen trennen.

Zum Projekt:
Wie schon im letzten Post angedeutet, ist dort Stillstand. Ich konzentriere mich wieder auf CreepSmash. Im August soll Version 0.5.5 erscheinen, in der dann hoffentlich keine Bugs mehr vorhanden sind. Dann wird Version 1.0 in Angriff genommen mit komplett neuem Code.


Gruß Thomas
Antworten