Re: Roguelike-Diary (WIP ...)
Verfasst: 14.03.2018 16:14
Ich habe einige Ideen, wie ich die Verwaltung von Daten und Elementen noch optimieren kann, sollten Performance-Probleme ein issue werden ... momentan ist das aber nicht notwendig - Delays aufgrund multipler Berechnungen und List-Searches spürt man nur bei aktivierten Debugger (was ja auch zu erwarten war), im Non-Debugger-Mode funktionieren Bewegung und Interaktion aber nach wie vor so akkurat und fix wie eh und je.
Zum Beispiel könnte ich ein dynamisches Pointer-Array initialisieren, welches mit ReDim() nach Bedarf erweitert werden kann: jeder Pointer im Array zeigt auf einen bestimmten Actor; so wäre ein *effectPointer.ACTOR()-Array ebenso denkbar wie ein *monsterPointer.ACTOR()-Array. Und anstatt in den entsprechenden Prozeduren die gesamte Actor-Liste durchzuklappern, könnte ich nur das *monsterPointer()-Array durchlaufen, und mir nach jedem Schritt mit ChangeCurrentElement(actor(),*monsterPointer(i) ) die jeweiligen Elemente gefiltert nach Typ "nach vorne" holen.
Ich habe unten eine .exe zu Testzwecken verlinkt. Wer Lust hat, ist herzlich eingeladen, ein bißchen damit rumzuspielen und Feedback zu geben, wenn was nicht richtig funktioniert. Bitte beachtet, daß es keine richtige Dungeon-Creation-Routine gibt - der Prozess ist (noch) quick&dirty, es gibt keinen definierten Start oder Zielpunkt, die erstellten Maps funktionieren aber in 90% aller Fälle, werden halt nur nicht auf Spielbarkeit überprüft; es kann also durchaus vorkommen, daß ihr auf einem Feld startet, welches rundherum von Mauern umschlossen ist. In dem Fall einfach mit ESC schließen und neu starten; der Seed wird bei jedem Neustart geshufflet.
Es gibt auch noch keine KI für die Monster; sie sind alle friedlich, und lassen sich gerne von euch töten.
STEUERUNG
- Linksklick auf freies Feld = Bewegen
- Rechtsklick = Interaktion (Türen öffnen/schließen, Monster angreifen)
- Mauszeiger an Ränder bewegen = Map scrollen
- Leertaste drücken, bzw. Mauszeiger 0.5 Sekunden auf Spieler ruhen lassen = Viewport auf Spieler zentrieren
- ESC = Spiel beenden und Fenster schließen
Normale Monster haben 5 Lebenspunkte, Fliegende Monster 3.
Nahkampf macht 1-3 Schadenspunkte, Fernkampf immer nur 1 Schadenspunkt.
DOWNLOAD
Zum Beispiel könnte ich ein dynamisches Pointer-Array initialisieren, welches mit ReDim() nach Bedarf erweitert werden kann: jeder Pointer im Array zeigt auf einen bestimmten Actor; so wäre ein *effectPointer.ACTOR()-Array ebenso denkbar wie ein *monsterPointer.ACTOR()-Array. Und anstatt in den entsprechenden Prozeduren die gesamte Actor-Liste durchzuklappern, könnte ich nur das *monsterPointer()-Array durchlaufen, und mir nach jedem Schritt mit ChangeCurrentElement(actor(),*monsterPointer(i) ) die jeweiligen Elemente gefiltert nach Typ "nach vorne" holen.
Ich habe unten eine .exe zu Testzwecken verlinkt. Wer Lust hat, ist herzlich eingeladen, ein bißchen damit rumzuspielen und Feedback zu geben, wenn was nicht richtig funktioniert. Bitte beachtet, daß es keine richtige Dungeon-Creation-Routine gibt - der Prozess ist (noch) quick&dirty, es gibt keinen definierten Start oder Zielpunkt, die erstellten Maps funktionieren aber in 90% aller Fälle, werden halt nur nicht auf Spielbarkeit überprüft; es kann also durchaus vorkommen, daß ihr auf einem Feld startet, welches rundherum von Mauern umschlossen ist. In dem Fall einfach mit ESC schließen und neu starten; der Seed wird bei jedem Neustart geshufflet.
Es gibt auch noch keine KI für die Monster; sie sind alle friedlich, und lassen sich gerne von euch töten.
STEUERUNG
- Linksklick auf freies Feld = Bewegen
- Rechtsklick = Interaktion (Türen öffnen/schließen, Monster angreifen)
- Mauszeiger an Ränder bewegen = Map scrollen
- Leertaste drücken, bzw. Mauszeiger 0.5 Sekunden auf Spieler ruhen lassen = Viewport auf Spieler zentrieren
- ESC = Spiel beenden und Fenster schließen
Normale Monster haben 5 Lebenspunkte, Fliegende Monster 3.
Nahkampf macht 1-3 Schadenspunkte, Fernkampf immer nur 1 Schadenspunkt.
DOWNLOAD