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

Magony

Frischling

  • »Magony« ist der Autor dieses Themas

Beiträge: 4

Wohnort: Karlsruhe

  • Private Nachricht senden

1

02.04.2013, 18:59

Projekt EnergyBowl

Hallo Leute!

Ich heiße Martin Zimmermann, bin 24 Jahre alt und bewerbe mich momentan als Fachinformatiker für Anwendungsentwicklung. Um meine Fähigkeiten in C# zu verbessern, verfolge ich kleine private Projekte. Mein Projekt, an dem ich immer mal wieder seit Jahren arbeite, heißt Tactical Dungeon Master. Neuerdings arbeite ich mit XNA, weil ich festgestellt habe, dass ich mit GDI nicht weit kommen werde.

Um mein Projekt Tactical Dungeon Master eines Tages realisieren zu können, habe ich mich vor zwei Wochen dazu entschlossen, zunächst einmal klein anzufangen und mich an XNA heranzutasten. Daraus ist das Projekt EnergyBowl entstanden. So ziemlich alles, was ich für dieses Projekt entwickle, werde ich eines Tages auch für TaDuMa gebrauchen können und es hat mich schon recht erstaunt, wie viel Code sich über die Zeit da zusammen läppert :)

Ziel in diesem Action-Spiel ist es, eine möglichst hohe Highscore zu erreichen. Dazu muss man, neben überleben, mit den richtigen Farben den Bowl beschießen, Combos aufbauen und treffen. In späteren Updates soll es eine Turnier-Funktion für die eigene LAN geben und der Multiplayer-Modus ausgereift sein. Außerdem sind weitere Gegner, Spezialattacken für die bereits implementierten dummy-Schaltflächen und abwechslungsreiche Karten geplant.

Wesentliche Bestandteile des Spieles sind momentan:
  • Eine GameState-Verwaltung
  • Die Klasse MouseEvents und KeyEvents
  • Verwendung eines "virtuellen Servers"
  • Optimale Update-Funktion
  • Eine Online-Highscore mit geschützten Spielernamen
  • Einzelspielermodus
  • Seit dieser Version gibt es höhere Level und Sterne

GameState-Verwaltung
Dies Löse ich mithilfe von einem Interface und statischen Klassen. Dazu mehr in meinem Forum.

Die Klasse MouseEvents und KeyEvents
Mit der MouseEvents-Klasse kann man die Events MouseEnter, MouseOver, MouseLeave, MouseOut und MouseClick überwachen. Außerdem gibt es ein Enum für die Klasse KeyEvents die neben dem State "Taste gedrückt" und "Taste nicht gedrückt" auch die States "Taste gerade gedrückt" und "Taste gerade losgelassen" anbietet. Diese States gibt es auch für alle fünf Tasten der Maus in der Klasse MouseEvents. Mehr zu den Klassen in meinem Forum.

Der virtuelle Server
Als "Server" bezeichne ich eigentlich meinen Webspace. Allerdings wenn ich hier jetzt von "Server" spreche, meine ich die instanziierte Variable der Klasse TcpListener auf dem Host, der auf Kontaktanfragen eines Clients wartet. Virtuell wird der Server in dem Moment, wenn er als erstes sich mit sich selbst verbindet. Somit kann man die Spielsteuerung grundsätzlich aus der Sicht eines Clients schreiben. Jeder Befehl wird an den Server gesendet und jeder Befehl kommt vom Server. Die Klasse ist noch nicht ganz vollständig. Allerdings bietet sie genug Gerüst für eine einfache Netzwerkverbindung. Mehr dazu in meinem Forum.

Optimale Update-Funktion
Nach dem Start des Programmes lädt es einen string herunter mit der aktuellen Version. Diesen vergleicht das Programm mit der eigenen Version und fragt den Benutzer, ob er den Updater starten möchte. Dieser ist ein eigenständiges Programm und lädt nach einer FileList nur die Dateien herunter, die nicht den md5 besitzen, der in der FileList angegeben ist, oder die noch nicht existieren.

Online Highscore mit geschützten Spielernamen
Nach einem Spiel im Online-Modus - es gibt auch einen Offline-Modus und Offline Highscores - wird die erreichte Punktzahl an ein PHP-Script auf meinem Webspace gesendet. Dies speichert die Daten dann in meine Datenbank. Geschützt sind die Spielernamen dadurch, dass die auf dem Client erstellten Spielernamen in meiner Datenbank registriert werden und auf dem Client eine Datei erstellt wird. Nur wer die entsprechende Datei zum jeweiligen Benutzernamen auf seinem PC hat, der kann den Spielernamen dann auch benutzen.

Ich wollte eine Version um den Spielernamen zu schützen und gleichzeitig keine Anmeldung notwendig zu machen. Es soll in einer späteren Version auch möglich sein sich mit dem Benutzernamen aus meinem Forum anzumelden. Deswegen fangen alle Namen, die über den Client registriert worden sind, mit einem Unterstrich an.

Online kann man die Highscores hier betrachten: http://ebowl.magony.org/highscores.php

Einzelspielermodus
Noch ist die Karte einfach schwarz. Allerdings soll sich das in späteren Versionen ändern. Auch sollen weitere und andere Gegner noch hinzukommen und die Platzhalter unten mit Funktionen für Spezialattacken ausgestattet werden. Es ist nur eine Alpha und die ganzen Features die mir im Kopf herumschwierren wollen alle noch umgesetzt werden ;)

Level und Sterne
Wenn ihr den Bowl besiegt habt, kommt das nächste Level. Dann ist der Bowl etwas schneller, etwas stärker und hält etwas mehr aus. Na, ihr werdet es schon merken :)
Um zu überleben sollte man die Sterne, die regelmäßig kommen, einsammeln um die verlorene Energie wieder aufzufrischen. Damit muss man sich jedoch beeilen, weil auch der Bowl diese Sterne einsammeln kann und sie nach eine gewissen Zeit verschwinden. Sie bieten auch Schutz vor Beschuss.

Doch ein paar Tipps
Die Geschosse werden mit zunehmender Entfernung schwächer. Der Bowl bewegt sich nach einem Treffer in eine zufällige Richtung und die Reihenfolge der Farben, die oben angegeben werden, ist für das Erreichen des Schadensfaktors 5 (5-facher Schaden) sehr wichtig. Combos entstehen, wenn man mehrfach hintereinander den selben Schadensfaktor erreicht hat und werden bei einer Änderung, oder wenn Geschosse, die ihr Ziel verfehlt haben, verschwinden, zurückgesetzt. Übrigens: Grün sticht violett, Rot sticht Grün usw. Weiß macht am meisten Schaden (10-fach) und erzeugt oder zerstört keine Combos.

Steuerung:
Gesteuert wird mit den Tasten WASD und mit Rechtsklick. Mit Linksklick wird gefeuert.

Ich wünsche Euch nun viel Spaß mit dem Spiel. Wenn ihr Fragen oder Anregungen habt, dann könnt ihr diese hier oder in meinem Forum an mich richten. Die offizielle Homepage des Projektes ist: http://ebowl.magony.org

Download
Aktuelle Version 0.1.3.0 als Zip-Archiv, als Setup-Datei oder Downloader


Schöne Grüße,
Magony



P.S.: Im Forum werdet ihr auch Lösungen zu meinen anderen Projekten finden. Ein bisschen Schnuppern schadet nicht :D


(Link)

Schickt eure Screenshots als PN an mich oder stellt sie ins Forum. Meine enden immer mit einem Überfahren durch den Bowl...

Magony

Frischling

  • »Magony« ist der Autor dieses Themas

Beiträge: 4

Wohnort: Karlsruhe

  • Private Nachricht senden

2

09.04.2013, 19:33

Version 0.1.3.1

Originalberitrag: http://forum.magony.org/viewtopic.php?f=…67&p=1326#p1326

Hallo Leute!

Es ist wieder Dienstag und es wird Zeit für einen kleinen Patch. Dieser behebt ein paar kleine Problemchen, fügt ein bisschen Code hinzu und gibt einen Ausblick auf die nächste geplante Version.


GameState Neuigkeiten:
Die News bei den Neuigkeiten werden nun wie vorgesehen heruntergeladen und angezeigt.


Punkte- und Schadensberechnung:
Der Schaden werden über eine neue Formel berechnet. Der Grundschaden berechnet sich nun aus dem Produkt des Hundertstels der verbleibenden Energie des Geschosses und dessen Radius. Daraus folgt: Je größer das Geschoss, desto mehr Schaden kann es verursachen.

Der Grundschaden wird mit dem Schadensfaktor multipliziert, der von der eingesetzten Farbe und der Farbe des Gegners abhängig ist. Dieser Faktor wird noch einmal mit dem aktuellen Combo der angreifenden Figur multipliziert. Der so entstehende Schadensfaktor, multipliziert mit dem Grundschaden, erzeugt den resultierenden Gesamtschaden. Es ist geplant, diesen später durch eine Verteidigung (Upgrades) verringern zu können.

Die Punkte resultieren aus der Summe des Gesamtschadens, zuzüglich dessen Differenz zum Grundschaden. Daraus folgt: Je mehr Bonusschaden man verursacht, desto mehr Punkte bekommt man.


Schwierigkeitsgrad des Bowls:
Der Bowl hat nun 2.500 statt 5.000 Energie pro Level. Insgesamt verursacht der Bowl nun etwas weniger Schaden, kann allerdings Combos erreichen - genau wie der Spieler.


Sterne:
Der Bowl wird nur noch um 500 Energie pro Level geheilt. Das sind 20% seines Grundwertes - genau wie beim Spieler, der 200 Energie durch einen Stern bekommt.


Highscores:
Wegen der Änderungen in der Punkteberechnung und dem Schwierigkeitsgrad wurden die Highscores zurückgesetzt.


Karten:
Es ist bereits ein Modul für die Implementierung von Karten vorhanden. Allerdings gibt es momentan nur eine Karte: Die Sandbox. Sie wird automatisch ausgewählt. Später können unterschiedliche Gegner, geskriptete Levels und Boss Begegnungen, sowie abwechslungsreiche Gestaltungen des Levels (Mauern, Schlüssel, Schlösser, Fallen usw.) damit realisiert werden.


Ausblick:
Es ist geplant ein neues GameState zu implementieren, das es dem Spieler ermöglicht, nach Absolvieren eines Levels, seine Attacken und passive Fähigkeiten zu verbessern. Vermutlich kann der Spieler dann eine Verbesserung pro eingesammelten Stern auswählen.

Außerdem steht noch die Implementierung der Spezialattacken an. Dazu näheres in diesem Forum. Unbedingt lesen! ;)


Download:
Wer das XNA-Framework 4.0 und .NET-Framework 4.0 auf seinem PC installiert hat, der kann das Archiv in einen beliebigen Ordner entpacken. Allen anderen empfehle ich die Setup-Version.


Schöne Grüße,
Magony

Magony

Frischling

  • »Magony« ist der Autor dieses Themas

Beiträge: 4

Wohnort: Karlsruhe

  • Private Nachricht senden

3

09.04.2013, 19:34

Spezialattacken und Upgrades

Originalbeitrag: http://forum.magony.org/viewtopic.php?f=22&t=1277&p=1329

Hallo Leute!

Damit das Spiel etwas interessanter wird soll es noch Spezialattacken, mehr Gegner und Upgrades geben. Dazu passt das neue Modul für Karten, das auch geskriptete Level-Gestaltung möglich macht. Die Wahl der Karten übernimmt nach jedem erfolgreichen Level ein Zufallsgenerator, der sich merkt, welche Karten zuletzt gewählt wurden und entsprechend die anderen Karten vorteilhaft gewichtet.

Es sind folgende Spezialattacken geplant:

Sniper
Ein schnelles Geschoss das keine Energie beim Flug verliert und nicht abprallt
Upgrades: Splittereffekt im Zielgebiet, Einheit wird zurückgestoßen und betäubt

Rockets
Zwei bis fünf Raketen die der Mausposition folgen.
Upgrades: Höhere Geschwindigkeit, mehr Raketen, höhere Beweglichkeit

Chaintower
Ein schwebender Turm, der sich auf die Zielposition zubewegt, auf alle Ziele in seiner Nähe eine Kette feuert und diese zu sich her zerrt.
Upgrades: Höhere Feuerrate der Ketten, mehr Kraft beim Zusammenziehen und höherer Widerstand gegen Befreiung von Ketten durch Beschuss

Bomb
Eine Bombe wird zur Zielposition teleportiert und ist dort nach 3 Sekunden einsatzbereit. Explodiert bei Kontakt. Je mehr Ziele sich im Wirkungsbereich befinden, desto höher wird der Schaden/Heilung pro Ziel. Fügt Gegnern Schaden zu - heilt Spieler.
Upgrades: Verlangsamt die Gegner im Zielgebiet und erhöht kurzfristig die Bewegungsgeschwindigkeit von Spielern, erhöhter Wirkungsbereich, lädt sich über die Zeit weiter auf und macht dann noch mehr Schaden/Heilung

Mine
Wirft eine Mine zur Zielposition (geringe Reichweite) und fliegt bei Feindkontakt in die Luft. Macht sie für ein paar Sekunden handlungsunfähig.
Upgrades: Erhöht die Dauer der Handlungsunfähigkeit der Gegner, stößt Spieler von der Explosion weg, macht Gegner für ein paar Sekunden besonders verwundbar.

Shild
Immumität gegen feindliche Geschosse für ein paar Sekunden. Geschosse von Spielern heilen die geschützte Figur.
Upgrades: Feindliche Geschosse heilen die Figur stärker, Geschosse werden teilweise reflektiert, Schild hält länger.

Gambol
Bewegt sich zur Zielposition, springt bis zu x mal von einem Gegner oder Spieler auf den nächsten Gegner oder Spieler. Wird nach jedem Sprung stärker. Verursacht bei Gegnern Schaden und verlangsamt sie, heilt Spieler und erhöht kurzzeitig ihre Bewegungsgeschwindigkeit. Trifft nie dasselbe Ziel zwei Mal.
Upgrades: Erhöht die Sprungrate x auf bis zu 10, erhöht den Streufaktor getroffener Gegner, verringert die Abklingzeit der Fähigkeit

Abyss
Ein schwarzes Loch entsteht bei der Zielposition und zieht alles in sich hinein: Gegner, Geschosse und Spieler.
Upgrades: Erhöht Wirkungsradius, erhöht Stärke der Anziehung und Verfolgung von Gegnern.

Jail
Der Gegner wird für eine Weile bewegungsunfähig. Das Gefängnis kann durch Beschuss zerstört werden.
Upgrades: Hält längerem Beschuss stand, verlangsamt bzw. nimmt weitere Gegner gefangen (je nach Stufe werden x gefangen und y verlangsamt), überträgt pro Sekunde x Prozent der Energie des Gefangen auf den Spieler.

Gatling
Feuert bis zu 60 weiße Geschosse (kein Effekt auf Combo, profitiert von ihnen allerdings) pro Sekunde ab.
Upgrades: Erhöht Dauer des Effekts, verringert Einsatzkosten, erhöht Projektilgröße (mehr Schaden).


Passive Fähigkeiten:
  • Erhöhung der Bewegungsgeschwindigkeit des Spielers
  • Erhöhung der Energie der Geschosse (somit auch höhere Reichweite und Schaden)
  • Erhöhung der Geschwindigkeit der Geschosse
  • Geschosse verfolgen das Ziel für x-Sekunden nach Erreichen der Zielposition
  • Verteidigung: Verringert erlittenen Schaden um x pro Level
  • Erhöht Energiegewinn durch Sterne im x Prozent
  • Passive Regeneration: x Prozent der aktuellen Energie alle 15 Sekunden.

Und wenn alles schon maximal verbessert ist, dann kann man "EnergyBowl Master" verbessern, das dann pro vergebenen Punkt die erreichte Punktzahl durch Bonusschaden jeweils um 1% erhöht.


Habt ihr noch Ideen? Wie ist eure Meinung zu den Fähigkeiten?


Schöne Grüße,
Magony

Werbeanzeige