Lyphia

Kommentare anzeigen Worklog abonnieren
Gehe zu Seite 1, 2, 3  Weiter

Worklogs Lyphia

Alpha 29

Mittwoch, 26. Oktober 2011 von E. Urbach
Keine Ahnung ob ich das jemals beenden kann, aber hier ist zumindest ein kleines Update.

user posted image Download: Lyphia Alpha 29 (17,9 MB)

Test-Accounts sind:
Arrow Nutzer a mit Passwort a
Arrow Nutzer b mit Passwort a

Die Raumsuche muss noch getestet werden, deswegen suche ich zur Zeit Tester, die 5 Minuten ihres Lebens opfern können (bitte melden).
Der Port 1310 muss in den Routereinstellungen freigegeben sein (TCP).

Demo zum 28. Alpha Release

Samstag, 12. März 2011 von E. Urbach
Wie versprochen eine Demo zum aktuellen Stand:

user posted image Download: Lyphia Alpha 28 (5,36 MB)

Neu hinzugekommene Features seit dem letzten Worklogeintrag:
Arrow Accountverwaltung
Arrow Speicherung von Arenastatistiken zum Account (Wins, Loses, Punkte, Kills)
Arrow Online-Raumliste

Was in den nächsten Tagen ansteht:
Arrow Schutz gegen Hacker! Momentan lässt sich der Punktestand ziemlich einfach hacken
Arrow Die Tab-Taste soll gefälligst beim Einloggen funktionieren! -.-

Denkt dran, dass sich Fertigkeiten wie Meteor und Dark Matter "advancen" lassen, wenn ihr die Taste gedrückt haltet.

Hinweis: Wenn ihr ein Spiel hostet, müsst ihr den Port 1310 freigeben.

Edit: Das Erstellen von Accounts aus dem Spiel heraus ist wohl noch sehr verbuggt. Ihr könnt euch an Test-Accounts bedienen:
Name: a, Passwort: a
Name: b, Passwort: a
Name: c, Passwort: c
Mit einem von diesen Accounts solltet ihr euch auf jeden Fall einloggen können.

Viel Spaß beim Testen, ich erhoffe mir viele Bug Reports Smile

Kills, Teamfarbe, Charakterwahl und Skill Advancement

Sonntag, 6. März 2011 von E. Urbach
Kills
Endlich kann man im Multiplayermodus auch Kills für sich selbst bzw. sein Team abstauben.
Ich schätze es gehört somit in die Kategorie der Killerspiele! [/sarcasm]

user posted image

Teamfarbe & Cast-Visualisierung im PvP
Ich brauche keine Castleiste im Multiplayermodus!
Je nach gewähltem Team wird eine andere Farbe auf dem Boden angezeigt. Diese Teamindikatoren geben nicht nur Auskunft darüber, zu welchem Team der Spieler gehört, sondern auch, wie weit er beim Casten einer Fertigkeit ist. Ein erhellter Kreisausschnitt, der bei vollendetem Cast den gesamten Teamkreis einhüllt, stellt den Castverlauf dar.

Charakterwahl
Derzeit stehen 5 (Dummy-) Charaktere zur Auswahl, die - zumindest im Endstadium - alle verschiedene Fertigkeiten besitzen sollen. Im Normalfall 8 Fertigkeiten und 1 Nahkampfangriff. Charaktere können unterschiedliche Statuswerte wie z.B. HP, MP und Geschwindigkeit besitzen. Die Anpassung der Charaktere über zusätzliche, benutzerdefinierte Statuswerte wie z.B. STR / MAG / DEF / RES ist zwar vorgesehen, jedoch noch nicht implementiert.

Lauf Kimiko, lauf!
...oder auch: Debuffs
Das Duell zwischen Kimiko und Zeypher könnte in etwa so aussehen:

Zeypher: "Icy Rays! Ha, nun kommst du nicht mehr an mich ran!"
Kimiko: "Du wirst allerdings noch durch meinen Fire Breath sterben!"

Zeypher hat - als Eismagier - verschiedene Fähigkeiten, um den Gegner zu verlangsamen, u.A. Icy Rays welches 5 Eisstrahlen aussendet, von denen jeder den Gegner um 10% verlangsamt. Steht man sehr nah am Gegner, so treffen alle Strahlen und der Gegner bekommt somit -50% Geschwindigkeit.

Kimiko - als Feuermagierin - kann mit jeder Fertigkeit dem Gegner einen Brennstatus hinzufügen, der die Trefferpunkte des Gegners langsam und qualvoll herunterzieht. Der stärkste Brennstatus wird durch Fire Breath verursacht, der katastrophale Auswirkungen haben kann, wenn man nicht aufpasst. So könnte es sein, dass man zwar aus Kimikos Fire Breath entkommt, aber letztendlich durch den DoT (Damage over Time) stirbt.

Skill Advancement
Meteor -> Meteoritenschauer -> Inferno!
Dieses Feature hat mich echt an meine Grenzen getrieben, als ich meinen kompletten Netzwerkcode für das Wirken von Fähigkeiten umschreiben musste. Grundgedanken zu diesem Feature sind folgende:

1.) Wenn ich die Taste für einen Skill antippe und die Taste loslasse, wird der Skill gecastet und ausgeführt.
2.) Wenn ich allerdings beim Ende des Casts die Taste immer noch gedrückt halte, wird der Skill - sofern er eine Fortsetzung hat - "advanced", sprich: Stufe II beginnt.
3.) Haltet der Spieler die Taste sogar nach Stufe 2 noch fest, beginnt der Cast der meist desaströsen Stufe III, die gern auch mal das halbe Spielfeld abdeckt.
4.) Wird nur die Stufe III benutzt, so sind I und II immer noch verwendbar, sie bekommen also keinen Cooldown. Dementsprechend wäre es taktisch klüger, erst III, dann II und I zu casten. Würde man nämlich mit Stufe I beginnen, hat es nach dem Wirken eine Cooldownzeit, die es unmöglich machen würde die darauf folgenden Stufen zu benutzen.

Derzeit ist die Entwicklung also wieder in vollem Gange. Vielleicht bringe ich bald eine Alpha Demo heraus, abhängig davon wie viel Zeit mir im Laufe der Woche noch bleibt.

Ausbau des Netzwerkmodus

Mittwoch, 2. März 2011 von E. Urbach
Siehe da, es gibt trotz Zeitmangel wieder Updates zu Lyphia. Diesmal habe ich etwas am Netzwerkmodus geschraubt und er ist auch fast vollständig spielbar.

user posted image

Was noch fehlt:
Arrow Ein Spielziel! (bzw. eine Auswahl von Spielmodi)
Arrow Bugs fixen (z.B. Crash beim Client wenn der Server offline ist)
Arrow Anpassung der Statuswerte durch den Spieler
Arrow Aus den Statuswerten ergibt sich auch die Menge an Fertigkeiten, die man sinnvoll verwenden kann

Wie immer suche ich talentierte Grafiker, die beispielsweise animierte Charaktergrafiken, Fertigkeitenbilder, Tiles, Umgebungsobjekte, Waffen oder allg. Items zeichnen können. Sollte jemand Interesse haben als Grafiker an dem Open Source Projekt mitzuwirken, kann er sich gerne bei mir melden. Ich gehe davon aus, dass ich in den nächsten Wochen genug Zeit finden werde, weitere Features zu integrieren und damit das Projekt so langsam in Richtung Beta-Status zu bewegen.

Es geht voran

Montag, 5. Juli 2010 von E. Urbach
Trotz der langen Entwicklungspause habe ich diesen Sommer wieder ein wenig Zeit zur Entwicklung von Lyphia gefunden. Es gibt in fast jedem Bereich Neuigkeiten, die Engine hat sich stark verbessert:

Scripting
Auf jeder Karte können nun Skripte platziert werden, deren Funktionsumfang dem gesamten Repertoire der Engine-Funktionen bzw. -Methoden entspricht. Ebenso werden nun die Skilldaten in Skriptform vorliegen, z. B. steht im Skript wie hoch die "Cast"-Zeit einer Fertigkeit ist.

Editor
Der Editor besitzt nun eine Vielzahl von Neuerungen:
Arrow Kontextmenü mit Kopieren, Füllen, Diagonal füllen, Löschen, Startpunkt setzen, Gegner platzieren, Skript platzieren, etc.
Arrow Hauptmenü mit Laden, Speichern, Testen, ebenso ein Bearbeitungsmenü und ein Menü um jedes Fenster auf der Arbeitsfläche zu (de)aktivieren
Arrow Das Füllen einer Fläche wird nun beim Auswählen des Menüpunktes in einem Thread nebenbei berechnet und die betroffenen Felder werden auf der Karte markiert (man sieht also schon vor dem Anwenden der Füllfunktion, welche Felder verändert werden würden)
Arrow Liste aller Gegner zum Platzieren von Gegnern auf der Karte
Arrow Liste aller Skriptdateien zum Platzieren von Skripten auf der Karten
Arrow Viele Verbesserung bei der GUI, z. B. ListBox-Scrolling, ein verbessertes Slider-Widget und die Zeichenroutine für TWindow wurde optimiert

user posted image

Von den 231 FPS sollte man sich nicht abschrecken lassen. Normalerweise macht der Editor rein gar nichts, wenn die Maus nicht bewegt wird oder das Fenster im Hintergrund ist, die CPU-Last ist also sehr gering (geht gegen 0% im Idle-Modus).

Arena (Multiplayer/PvP)
Momentan fließt der Großteil meiner Arbeit in diesen Bereich, da mich Netzwerkanwendungen in Verbindung mit Multithreading sehr interessieren. Sowohl der Server als auch der Client arbeiten mit mehreren Threads für die Netzwerkarbeit (beim Server ist ein Client = ein Thread). Das Anlegen und Betreten von "Räumen", der Wechsel des Teams und die dazugehörige GUI sind bereits zu 95% fertig, es fehlt "nur" noch die Implementation des Netzwerkcodes im Spiel-Gamestate.

user posted image

user posted image

Statusfenster
Das Statusfenster, welches in vorherigen Versionen aufgrund der äußerst zeitraubenden Zeichenfunktion um die 300 FPS geschluckt hat wurde nun so optimiert, dass die eigentliche Zeichenfunktion immer nur in einem Viertel des Statusfensters benutzt wird. Für die anderen Viertel wird ein vorberechnetes Bild genommen, welches natürlich sehr viel weniger Zeit zum Zeichnen benötigt.

Vorberechnete Viertelbilder:
user posted image user posted image
user posted image user posted image

Musik
Einige neue Musikstücke:
Arrow Field Theme 01
Arrow Arena Theme 01
Arrow Remake vom Riviera Theme
Arrow Musik fürs Startmenü in zwei Versionen
...und einige kleinere Kompositionen, bei denen noch nicht klar ist, ob ich sie verwenden werde.

Neue Fertigkeiten
Arrow Eisige Flammen
user posted image

Arrow Meteor
user posted image

Arrow Meteoritenschauer
user posted image

Arrow Feuerrad wurde entfernt, dafür kommt
Arrow "Hurricane" als Luftfertigkeit
user posted image

Arrow Kettenblitz (funktioniert zu 99%, nur die Visualisierung muss angepasst werden)
Arrow Wiederherstellung (ein "Buff", der 30 Sekunden lang die Lebenspunkte langsam regeneriert)
user posted image

Arrow Dritter Teil der Schwertkombo (ein senkrechter Hieb)

Momentan besteht das Projekt aus 71 Dateien / 16k Codezeilen, daher wird es wohl Zeit, dass ich mir eine anständige IDE suche...die Standard-BMax-IDE taugt bei diesem Umfang nicht mehr. Mal sehen, ob ich in den nächsten Tagen genug Zeit finde, um endlich den Multiplayer-Modus hinter mich zu bringen - dieser ist nämlich im Gegensatz zum Storymodus wesentlich einfacher zu implementieren.

Wenn jemand Interesse an der Mitentwicklung dieses Open Source Projekts hat, kann er sich bei mir per PM / E-Mail melden. Grafiker, Musiker und GUI-Programmierer sind momentan besonders gefragt.

Scripting

Samstag, 24. Oktober 2009 von E. Urbach
Nach ungefähr 9 Stunden Bugsuche habe ich es endlich geschafft: Gegner können per LUA-Scripts definiert bzw. gesteuert werden. Hier ein Beispiel-Skript:

Code: [AUSKLAPPEN]
function init()
   super.SetName("Ice Queen")
   super.SetImageFile("ice-queen.png")
   super.SetSpeed(0.2)
   super.CreateSkillSlots(3)
   
   -- 0
   super.SetSlotSkill(0, "IceWave")
   nTrigger = trigger.CircleRange(super, 64)
   super.AddSlotTrigger(0, nTrigger)

   -- 1
   super.SetSlotSkill(1, "HealingWind")
   nTrigger = trigger.HealSelf(super, 0.2)
   super.AddSlotTrigger(1, nTrigger)
   
   -- 2
   super.SetSlotSkill(2, "FireBall")
   nTrigger = trigger.LineRange(super)
   super.AddSlotTrigger(2, nTrigger)
end

Momentan ist das Setzen von Statuswerten wie z. B. Lebenspunkten und MP noch nicht integriert, aber dies ist eines meiner nächsten Ziele.

Neues Musikthema

Mittwoch, 21. Oktober 2009 von E. Urbach
Programmiertechnisch gibt es heute nichts neues, aber ich habe ein paar neue Grafiken erstellt und mit der Musik für Lyphia experimentiert.

Winter Theme
An die Orchesterfans: Entschuldigt den letzten Teil (der wird später rausgenommen), aber ich konnte einfach nicht widerstehen *G*

Morgen gibt es eventuell wieder Neuigkeiten zur KI bzw. zu neuen Gegnertypen.

Intelligent handeln - Flexibles KI-System

Dienstag, 20. Oktober 2009 von E. Urbach
Neues KI-System
Wer sich noch an meinen Eintrag zu Auslösern und Aktionen erinnert, wird feststellen, dass man dieses System auch auf die KI-Berechnungen übertragen kann. Und genau das habe ich nun implementiert: Ein ziemlich flexibles KI-System, bei dem man die KI für Gegner in wenigen Zeilen hinklatschen kann.

Beispiel: Ein Gegner, der sich bei niedrigen Lebenspunkten heilt, bei kurzer Distanz Nahkampfangriff verwendet und bei Ferndistanz Feuerbälle schießt, ist mit dem neuen System in nur 3-6 Zeilen geschrieben:
Code: [AUSKLAPPEN]
enemy.techSlots[0] = TSlot.Create(SIceWave.Create(enemy))
enemy.techSlots[0].AddTrigger(TAICircleRangeTrigger.Create(enemy, 64))  ' unter 64 Pixeln Distanz, Nahangriff casten

enemy.techSlots[1] = TSlot.Create(SHealingWind.Create(enemy))
enemy.techSlots[1].AddTrigger(TAIHealSelfTrigger.Create(enemy, 0.2))   ' bei weniger als 20% LP heilen

enemy.techSlots[2] = TSlot.Create(SFireBall.Create(enemy))
enemy.techSlots[2].AddTrigger(TAILineRangeTrigger.Create(enemy))  ' Ziel auf derselben Linie -> Feuerball

Die Index-Nummer des Arrays bestimmt dabei die Priorität. Auch Charaktereigenschaften zu implementieren wäre ein Leichtes, denn man müsste nur Trigger entfernen oder auch neue hinzufügen, je nach Eigenschaft.

Schwertfertigkeiten
Weiterhin habe ich endlich mal neben den Magiefertigkeiten Schwertangriffe eingebaut. Ein simpler Schwertschlag kostet 1 MP (so gut wie nichts), trifft im Normalfall 3 mal pro Schlag und man bekommt für jeden dieser Schläge 0.7 MP. Wenn man also gerade keine Magie casten kann und sich lange Wartezeiten ersparen will, sollte man auf Nahkampf wechseln Wink

Partikeleditor

Samstag, 17. Oktober 2009 von E. Urbach
Habe mal zur Vereinfachung der Skillprogrammierung einen Partikeleditor entwickelt:

user posted image

Download (566 KB)

Man kann auch auf die Slider rechtsklicken Wink
Have fun

NoBrain™ KI und Fertigkeitenkollision

Freitag, 16. Oktober 2009 von E. Urbach
Zu den zwei momentan vorhandenen Fertigkeiten habe ich ein Video erstellt, welches ihre Verwendung zeigt:

http://www.youtube.com/watch?v=LawM1LKO47I

Leider friert die Eiswelle (aka Eisfontäne) die Gegner noch nicht ein, aber das wird mit der Einführung der Statuseffekte kommen. Wie man unschwer erkennen kann, besitzen die Gegner die renommierte NoBrain™ KI, welche ich später durch eine noch bessere ersetzen werde Wink

Der Editor hat nun ein Menü und einige Popup-Menüs bekommen. Durch die Verbindung von GUI und InputSystem ist es ein Leichtes, dem Hauptprogramm den Input abzuschneiden, wenn man z. B. auf ein Popup-Menü klickt. Denn man will ja schließlich nicht, dass das was dahinterliegt, diesen Klick bemerkt.

Gehe zu Seite 1, 2, 3  Weiter