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.
Download: Lyphia Alpha 29 (17,9 MB)
Test-Accounts sind:
Nutzer a mit Passwort a
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).
Download: Lyphia Alpha 29 (17,9 MB)
Test-Accounts sind:
Nutzer a mit Passwort a
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:
Download: Lyphia Alpha 28 (5,36 MB)
Neu hinzugekommene Features seit dem letzten Worklogeintrag:
Accountverwaltung
Speicherung von Arenastatistiken zum Account (Wins, Loses, Punkte, Kills)
Online-Raumliste
Was in den nächsten Tagen ansteht:
Schutz gegen Hacker! Momentan lässt sich der Punktestand ziemlich einfach hacken
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
Download: Lyphia Alpha 28 (5,36 MB)
Neu hinzugekommene Features seit dem letzten Worklogeintrag:
Accountverwaltung
Speicherung von Arenastatistiken zum Account (Wins, Loses, Punkte, Kills)
Online-Raumliste
Was in den nächsten Tagen ansteht:
Schutz gegen Hacker! Momentan lässt sich der Punktestand ziemlich einfach hacken
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
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]
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.
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]
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.
Was noch fehlt:
Ein Spielziel! (bzw. eine Auswahl von Spielmodi)
Bugs fixen (z.B. Crash beim Client wenn der Server offline ist)
Anpassung der Statuswerte durch den Spieler
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.
Was noch fehlt:
Ein Spielziel! (bzw. eine Auswahl von Spielmodi)
Bugs fixen (z.B. Crash beim Client wenn der Server offline ist)
Anpassung der Statuswerte durch den Spieler
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:
Kontextmenü mit Kopieren, Füllen, Diagonal füllen, Löschen, Startpunkt setzen, Gegner platzieren, Skript platzieren, etc.
Hauptmenü mit Laden, Speichern, Testen, ebenso ein Bearbeitungsmenü und ein Menü um jedes Fenster auf der Arbeitsfläche zu (de)aktivieren
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)
Liste aller Gegner zum Platzieren von Gegnern auf der Karte
Liste aller Skriptdateien zum Platzieren von Skripten auf der Karten
Viele Verbesserung bei der GUI, z. B. ListBox-Scrolling, ein verbessertes Slider-Widget und die Zeichenroutine für TWindow wurde optimiert
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.
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:
Musik
Einige neue Musikstücke:
Field Theme 01
Arena Theme 01
Remake vom Riviera Theme
Musik fürs Startmenü in zwei Versionen
...und einige kleinere Kompositionen, bei denen noch nicht klar ist, ob ich sie verwenden werde.
Neue Fertigkeiten
Eisige Flammen
Meteor
Meteoritenschauer
Feuerrad wurde entfernt, dafür kommt
"Hurricane" als Luftfertigkeit
Kettenblitz (funktioniert zu 99%, nur die Visualisierung muss angepasst werden)
Wiederherstellung (ein "Buff", der 30 Sekunden lang die Lebenspunkte langsam regeneriert)
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
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:
Kontextmenü mit Kopieren, Füllen, Diagonal füllen, Löschen, Startpunkt setzen, Gegner platzieren, Skript platzieren, etc.
Hauptmenü mit Laden, Speichern, Testen, ebenso ein Bearbeitungsmenü und ein Menü um jedes Fenster auf der Arbeitsfläche zu (de)aktivieren
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)
Liste aller Gegner zum Platzieren von Gegnern auf der Karte
Liste aller Skriptdateien zum Platzieren von Skripten auf der Karten
Viele Verbesserung bei der GUI, z. B. ListBox-Scrolling, ein verbessertes Slider-Widget und die Zeichenroutine für TWindow wurde optimiert
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.
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:
Musik
Einige neue Musikstücke:
Field Theme 01
Arena Theme 01
Remake vom Riviera Theme
Musik fürs Startmenü in zwei Versionen
...und einige kleinere Kompositionen, bei denen noch nicht klar ist, ob ich sie verwenden werde.
Neue Fertigkeiten
Eisige Flammen
Meteor
Meteoritenschauer
Feuerrad wurde entfernt, dafür kommt
"Hurricane" als Luftfertigkeit
Kettenblitz (funktioniert zu 99%, nur die Visualisierung muss angepasst werden)
Wiederherstellung (ein "Buff", der 30 Sekunden lang die Lebenspunkte langsam regeneriert)
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]
Momentan ist das Setzen von Statuswerten wie z. B. Lebenspunkten und MP noch nicht integriert, aber dies ist eines meiner nächsten Ziele.
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
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.
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]
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
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
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
Partikeleditor
Samstag, 17. Oktober 2009 von E. Urbach
Habe mal zur Vereinfachung der Skillprogrammierung einen Partikeleditor entwickelt:
Download (566 KB)
Man kann auch auf die Slider rechtsklicken
Have fun
Download (566 KB)
Man kann auch auf die Slider rechtsklicken
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
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.
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
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.