Projekt: Blood of the Undead

Benutzeravatar
woodsmoke
Establishment
Beiträge: 102
Registriert: 30.06.2023, 14:05
Wohnort: Ludwigshafen
Kontaktdaten:

Re: Projekt: Blood of the Undead

Beitrag von woodsmoke »

Entwicklung scheint ja gut voran zu kommen.

Siedler 2 Vibes, wenn man ein Hauptquartier zerstört und eine Flut an Menschen sich verteilt und später Skelette überall.
Benutzeravatar
joeydee
Establishment
Beiträge: 1159
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Projekt: Blood of the Undead

Beitrag von joeydee »

Klasse :)
Ich habe da nur manchmal Probleme mit der Lesbarkeit der Landschaft, je nach Ausschnitt.
Das mit den dunklen Flächen, das ist doch ein Iso-Look, und dunkel == senkrechte Wand? In der großen Übersicht wirkt das zumindest so, mit zusammengekniffenen Augen sieht man tatsächlich die zugrundeliegende Höhenstruktur. In der Nahansicht geht der Effekt manchmal etwas flöten, das ist verwirrend, aber vielleicht gewöhnt man sich auch daran.
Was du aber grafisch dafür überlegen könntest: Kanten highlighten/abdunkeln wie in Iso-Pixelart oft üblich.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2115
Registriert: 18.10.2010, 23:26

Re: Projekt: Blood of the Undead

Beitrag von marcgfx »

Ja die Landschaft ist noch sehr roh. Ich weiss nicht wirklich wie ich das lösen muss, vermutlich mit ganz viel Pixeln. Ich habe etwas Angst dass es noch unlesbarer wird, aber probieren.

Bild
Es gibt nun eine Todesanimation, das Skellet löst sich langsam auf und die Figuren schauen nicht nur nach links, sondern auch nach rechts. Ich habe Code geschrieben der das Überlagern von mehreren Einheiten reduzieren soll (es ist aber erlaubt).

So sieht die Definition vom Männchen aus:

Code: Alles auswählen

man:{
        hp:10,
        move:3,
        vis:5,//can see for 5 tiles, will walk towards targets in this range
        attack:{ 
            range:1,
            cost:3,
            dmg:[1,1]//dmg, delay, delay
        },
        action:3,
        anim:{
            idle:{
                fps:5,
                img:[vec2(0,0),vec2(1,0)]
            },
            walk:{
                fps:5,
                img:[vec2(2,0),vec2(1,0),vec2(3,0),vec2(1,0)]
            },
            attack:{
                fps:5,
                img:[vec2(4,0),vec2(5,0)]
            },
            die:{
                fps:5,
                img:[vec2(8,0),vec2(7,0),vec2(6,0)]
            }
        },
        death:manDeath
    }
Benutzeravatar
marcgfx
Establishment
Beiträge: 2115
Registriert: 18.10.2010, 23:26

Re: Projekt: Blood of the Undead

Beitrag von marcgfx »

Bild
Pixeln dauert schon eine Weile, aber ist irgendwie recht entspannend. Die Frauen sind jetzt am Start!
Benutzeravatar
woodsmoke
Establishment
Beiträge: 102
Registriert: 30.06.2023, 14:05
Wohnort: Ludwigshafen
Kontaktdaten:

Re: Projekt: Blood of the Undead

Beitrag von woodsmoke »

Vielleicht hilft es das Schwarz Dunkelblau zu machen bzw Dunkeltürkis und nicht Pechschwarz. Normalerweise nimmt man ja für Schatten eine etwas kältere Farbe aber kälter als blau/türkis geht halt nicht.
Benutzeravatar
joeydee
Establishment
Beiträge: 1159
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Projekt: Blood of the Undead

Beitrag von joeydee »

marcgfx hat geschrieben: 20.11.2024, 16:03 Ja die Landschaft ist noch sehr roh. Ich weiss nicht wirklich wie ich das lösen muss, vermutlich mit ganz viel Pixeln. Ich habe etwas Angst dass es noch unlesbarer wird, aber probieren.
Du könntest z.B. 1-Pixel-Konturen nach diesem Schema automatisch erstellen:
Pro Ebene eine hellere Kontur innen, eine dunklere außen.
Für die "Schattenwand"-Ebene nur eine schwarze Kontur am unteren Rand.
(Grafisch wäre da noch mehr rauszuholen, z.B. die innen- und außenliegenden senkrechten Konturen ebenfalls entsprechend passend hervorheben, aber ich glaube das wird schwieriger/selektiver)
terrain.png
terrain.png (5.04 KiB) 1344 mal betrachtet
Ebene.png
Ebene.png (2.69 KiB) 1344 mal betrachtet
Schattenwand.png
Schattenwand.png (2.78 KiB) 1344 mal betrachtet
Benutzeravatar
marcgfx
Establishment
Beiträge: 2115
Registriert: 18.10.2010, 23:26

Re: Projekt: Blood of the Undead

Beitrag von marcgfx »

Ich habe die Rand-Situation analysiert.
Roter Rand: Höhenunterschied von 1
Grüner Rand: Höhenunterschied > 1
Damit unterscheide ich noch nicht ob es hoch/runter geht, damit hätte ich pro Rand schon 5 Zustände... also ~5^4 Möglichkeiten, oder 625 Bilder. Nicht Sinnvoll.
Bild

Du bist super joeydee! Das sieht viel weniger kompliziert aus als ich befürchtet habe. Das blaue Beispiel gefällt mir sehr gut, woher kommt das?

edit: erstes Bild war noch falsch! Ah, und grün wird es im moment sobald ein hoher Rand daneben ist.
Benutzeravatar
joeydee
Establishment
Beiträge: 1159
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Projekt: Blood of the Undead

Beitrag von joeydee »

marcgfx hat geschrieben: 21.11.2024, 00:41 Das blaue Beispiel gefällt mir sehr gut, woher kommt das?
Das habe ich in Affinity Photo gemacht, ist ein Ausschnitt von einer deiner Heightmaps (von hier viewtopic.php?p=74667#p74667 aus dem unteren Bild im Post, oberer Rand rechts der Mitte, der See ist wiedererkennbar).
Jede Farbe auf eine eigene Ebene geholt (tieferliegende immer gefüllt, so dass sie "solide" ist, als wenn man die Landschaft aus ausgesägten Brettern aufeinander bauen würde), jede Ebene dann 4 Pixel weiter nach oben geschoben (wie du das sicher auch gemacht hast), und der entstehende Freiraum ist ja die Fläche der "Schattenwand" wie ich sie mal nenne. Dann per Ebenenstil Schein innen hell/außen dunkel je 1px für jede Ebene, und nur Schatten unten 1px für die "Schattenwand".
Diese Stil-Ränder kannst du sicher auch global für die Map im Code lösen, und immer nur ne Graustufenmap laden, dann würdest du mit der Landschaft sogar flexibel bleiben.

Die pinken Bilder sind Einzelteile daraus, da sieht man beim Ranzoomen was gemacht wurde (Schattenwand, und 1 Ebene beispielhaft; Pink ist transparent)
Benutzeravatar
marcgfx
Establishment
Beiträge: 2115
Registriert: 18.10.2010, 23:26

Re: Projekt: Blood of the Undead

Beitrag von marcgfx »

@joeydee: Geil, habs nicht geschnallt. Fand die Ähnlichkeit aber bestechend :) Dann versuch ich mal umzusetzen was du mir gezeigt hast. Wenn ich das richtig verstehe, würdest du vorschlagen pro Grid mehrere Ebenen zu rendern und das gar nicht über die Graphikvielzahl lösen?

Lustige bugs gefixt, bei dem Einheiten sich über scheinbar grosse Distanzen bekämpfen konnten. Es gab eine grosse Diskrepanz zwischen eigentlicher Position und der Darstellung, der eigentliche Grund war noch etwas komplizierter herauszufinden.

Bild
Benutzeravatar
Schrompf
Moderator
Beiträge: 5083
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Projekt: Blood of the Undead

Beitrag von Schrompf »

Die Map ist jetzt viel besser lesbar. Abwechselnde Farben find ich nicht so prall, ist mir zu nervös, aber das ist wohl Geschmackssache
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2115
Registriert: 18.10.2010, 23:26

Re: Projekt: Blood of the Undead

Beitrag von marcgfx »

Das Abwechselnde ist für mich einfacher zum debuggen ;) Ich will sehen ob illegale Wege benutzt werden (rot->rot oder blau->blau)

Hab eine erste Annäherung an joeydee's Beispiel gemacht. Problem sind halt die kleinen Ecken, aber ich glaube das ist mir für den Moment egal.
Bild

Die Skelette beissen sich leider etwas mit dem Winter Thema.
Benutzeravatar
joeydee
Establishment
Beiträge: 1159
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Projekt: Blood of the Undead

Beitrag von joeydee »

Sehr cool :) Die kleinen Ecken stören eigentlich nicht. Ich würde noch die hellen Kanten immer nur ein klein wenig heller machen als die Fläche zu der sie gehören, statt Weiß, dann könnte das auch mit den Skeletten ruhiger wirken. Respektive auch die dunkleren Kanten, müsste man ausprobieren.
Die Skelette könntest du zum Abheben z.B. hell gelblich/beige färben.
Aber so wird das Gelände auf alle Fälle deutlich lesbarer.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2115
Registriert: 18.10.2010, 23:26

Re: Projekt: Blood of the Undead

Beitrag von marcgfx »

Bild
Gute Idee mit dem Gelb :)

Bild
etwas weniger starke Kanten
Benutzeravatar
marcgfx
Establishment
Beiträge: 2115
Registriert: 18.10.2010, 23:26

Re: Projekt: Blood of the Undead

Beitrag von marcgfx »


Eben scrolling eingebaut, bislang war die Camera einfach fix. Als nächstes sollte ich wohl Einheiten Befehle erteilen können, dann wirds spielbar ;). Video ist noch nicht in HD, Youtube hat noch ein Weilchen.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2115
Registriert: 18.10.2010, 23:26

Re: Projekt: Blood of the Undead

Beitrag von marcgfx »



Ich kann jetzt Einheiten auswählen und irgendwo hinschicken. Ich weiss noch nicht genau, wie ich mit dem überlagern umgehen soll. Wenn ich es verbiete, wird schnell mal ein Weg blockiert, aber schön ist es so auch nicht.
Benutzeravatar
joeydee
Establishment
Beiträge: 1159
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Projekt: Blood of the Undead

Beitrag von joeydee »

Kannst du das Überlagern im Pathfinding gewichten? Also in der Art, dass Überlagerung zwar erlaubt, aber teurer ist als z.B. ein paar flache Felder Umweg. Dann würden die sich nur an unvermeidbaren Engstellen bündeln, aber ab dort wieder offener verteilen, schätze ich.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2115
Registriert: 18.10.2010, 23:26

Re: Projekt: Blood of the Undead

Beitrag von marcgfx »

Ja könnte ich machen. Das würde aber nur die stehenden Einheiten betreffen. Alle die gleichzeitig loslaufen, laufen dann trotzdem den selben pfad (was mich mehr stört als das durchlaufen). Ausser ich markiere direkt den ganzen Pfad bei jedem Pathfinding. Ich will das jetzt auch nicht zu kompliziert machen, vielleicht ist das jetzt einfach das sinnvolle Limit.

Eine zufällige Gewichtung von jedem Feld wäre vielleicht eine option, damit die pfade nicht immer gleich sind?

edit: Zufall bringt nichts. Aber ich bin doof, habe schon längst eine Möglichkeit eingebaut um viel Stacking zu verhindern. Führt halt zu Stau, ich tüftel mal ein Bisschen.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2115
Registriert: 18.10.2010, 23:26

Re: Projekt: Blood of the Undead

Beitrag von marcgfx »


Nicht perfekt, aber irgendwie besser. Anstatt das alle Einheiten auf den selben Punkt zielen, nehme ich den Vektor zwischen Gruppenmitte und Ziel. Für jede Einheit ist das Ziel dann Lerp(aktuelle Position + Vektor, Zielpunkt, 0.5). Diese Ânderung führt dazu, dass die Formation etwas eingehalten wird und das nicht alle den gleichen Pfad nehmen wollen.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2115
Registriert: 18.10.2010, 23:26

Re: Projekt: Blood of the Undead

Beitrag von marcgfx »

FoW ist auch noch Thema. Zuerst habe ich gedacht das ist unmöglich, jetzt bin ich nicht mehr so sicher. Die Frage ist, bringe ich das mit halbwegs nützlicher Performance hin?

Die Zahlen entsprechen einem Sichtradius
Bild

Online Brainstorming:

Ich will das mit möglichst wenig durchläufen berechnen und linear, nicht für jede Einheit.
Von rechts nach links wärs wohl 5,4,3,2,1
Von open nach unten dann

Code: Alles auswählen

54321
43210
32100
21000
10000
Das gibt aber dann eine Sichtraute, auch nicht so geil.
Für das Pathfinding kostet diagonal 3, horizontal/vertikal 2 Bewegungspunkte. Damit gehts womöglich besser?
nach unten, dann diagonal

Code: Alles auswählen

86420 86420
64200 65310
42000 43200
20000 21000
00000 00000
Könnte klappen, heisst 8 passes.
Evtl lassen sich damit sogar die höhen einberechnen, aber Field of View ist mir grad Schleierhaft.
Benutzeravatar
Schrompf
Moderator
Beiträge: 5083
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Projekt: Blood of the Undead

Beitrag von Schrompf »

Ich find's toll, was Du schon erreicht hast.

Wenn's nur FogOfWar sein soll: mach ne Bitmaske auf und bitshifte/odere die Masken aller Einheiten zusammen.

Code: Alles auswählen

0b000111000
0b001111100
0b011111110
0b111111111
0b111111111
...
Ja, ist noch bissl extra-Arbeit, wenn die Bit-Reihe die 64er-Grenze eines uints überschreitet, aber das ist Kleinkram. Und falls Du Deine Tiles mit der Grafikkarte renderst, wär's ne schnelle Sache, dann einfach ein graues Tile drüber zu rendern, wenn der FogOfWar dort Verdeckung verlangt.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2115
Registriert: 18.10.2010, 23:26

Re: Projekt: Blood of the Undead

Beitrag von marcgfx »

Hmmm, das hört sich jetzt irgendwie einfacher an ;) als meine Lösung. Dabei war ich jetzt ganz stolz darauf.

Aber vielleicht hat meine Lösung doch noch einen Vorteil? Die Bitmaske müsste ich für alle Einheiten draufhauen, meine Lösung ist immer gleich Rechenintensiv. Ich mache ziemlich genau was ich oben gesagt habe. Horizontal und vertikal war das einfach, aber diagonal wurde ein grausames germurks.

Da fiel mir was ein, was ich bereits für Pathfinding gemacht habe, als ich die Grids auf Platz gecheckt habe. Mit zwei for Schlaufen übers Grid hat recht schön funktioniert für die vertikale, da das Grid in Columnen aufgebaut ist. Horizontal wars nervig, da ich immer grid[x][y] verwenden musste, anstatt bloss in der Columne zu bleiben. Also habe ich das Grid in ein um 90° gedrehtes Grid abgebildet. In diesem konnte ich genau meine ersten Prozess nochmal durchführen.

Hier habe ich das ganze jetzt wieder gemacht. Das um 90° gedrehte Grid hatte ich schon, nun habe ich zwei neue Grid abgebildet die um 45° und -45° gedreht sind (Rauten). Mein FoW läuft jetzt in 8 for Schlaufen über das ganze Grid, Performance scheint ok zu sein.

Code: Alles auswählen

this.#recalFoW(gid, grid, 2);
this.#recalFoW(gid, this.grid90, 2);
this.#recalFoW(gid, this.grid45, 3);
this.#recalFoW(gid, this.gridM45, 3);
Bild
Benutzeravatar
marcgfx
Establishment
Beiträge: 2115
Registriert: 18.10.2010, 23:26

Re: Projekt: Blood of the Undead

Beitrag von marcgfx »

Bild
läuft, aber hässlich
Benutzeravatar
marcgfx
Establishment
Beiträge: 2115
Registriert: 18.10.2010, 23:26

Re: Projekt: Blood of the Undead

Beitrag von marcgfx »

Bild
weiterhin hässlich, aber ich habe jetzt das terrain ein bisschen einfliessen lassen. nicht realistisch aber vielleicht cool?

edit: läuft grad... noch einen flag eingebaut ob das terrain schon erforscht ist. SC2 macht das nicht, weiss nicht ob es Sinn macht, aber wollte es mal testen. Halt hässlich.
Bild
Benutzeravatar
marcgfx
Establishment
Beiträge: 2115
Registriert: 18.10.2010, 23:26

Re: Projekt: Blood of the Undead

Beitrag von marcgfx »

Benutzeravatar
marcgfx
Establishment
Beiträge: 2115
Registriert: 18.10.2010, 23:26

Re: Projekt: Blood of the Undead

Beitrag von marcgfx »

Gegner sind jetzt sichtbar/unsichtbar abhängig vom FoW :D
Bild
Benutzeravatar
marcgfx
Establishment
Beiträge: 2115
Registriert: 18.10.2010, 23:26

Re: Projekt: Blood of the Undead

Beitrag von marcgfx »

Gebäude soll es auch geben. Ein Gebäude wird nicht wie gewohnt von Arbeitern errichtet, sondern entsteht durch das Opfern bestimmter Einheiten. Das Haus entsteht wenn ein Männchen und ein Weibchen "geopfert" werden. Die Idee war, dass man auch teure Einheiten (General, Hexe) einsetzen kann um ein Haus zu bauen. Aktuell erscheinen einfach die Bauoptionen und es kann ohne Opfer platziert werden. Die Häuser laufen auch noch rum...
Bild
Benutzeravatar
Schrompf
Moderator
Beiträge: 5083
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Projekt: Blood of the Undead

Beitrag von Schrompf »

Wenn ne Hexe ein Haus baut, läuft das gerne mal rum :-D
Du kommst echt vorwärts, finde ich cool. Wie kommt man an neue Leute? Und gibt's irgendeinen Feedback-Mechanismus, so dass man nicht ewig neue Häuser bauen und neue Leute kriegen kann?
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
joeydee
Establishment
Beiträge: 1159
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Projekt: Blood of the Undead

Beitrag von joeydee »

Babayaga, das wandelnde Schloss ... und als Endboss was von Mortal Engines ;)
Häuser als Protagonisten wäre doch auch was :D ;)
Benutzeravatar
marcgfx
Establishment
Beiträge: 2115
Registriert: 18.10.2010, 23:26

Re: Projekt: Blood of the Undead

Beitrag von marcgfx »

Häuser platzieren heisst Pathfinding Grid updaten. Damit ich sicher bin, dass alles so klappt wie ich will habe ich es visualisiert. Zuerst hats gar nicht geklappt, da ich blockaden nicht richtig berücksichtigt habe. Code aufgefrischt, aber mit einem flachen Terrain und Häuser platzieren sind die Fehler so richtig ins Auge gesprungen. So sah es nach einigen Fix-Versuchen aus. Unschön.
Bild

Die letzten 3-4 Stunden habe ich nur damit verbracht, mein Grid zu fixen. Es geht hier um das Pathfinding für beliebige quadraditsche Einheitengrössen. Sinnvoll oder nicht, stand nicht zur debatte, es ging ums Prinzip. Ich hatte x Mal fast eine Lösung, aber irgendwo sind Fehler dann doch wieder aufgetaucht. Ich muss dazu sagen, ich habe versucht es wie beim FoW möglichst in Linearer Zeit eine Lösung zu erstellen. 9 Passes waren nötig um es fast zu fixen. Frustiert habe ich einen weiteren Pass eingefügt um zu sehen ob der was ändert. Der letzte Pass hat geholfen, nur nicht so wie ich erwartet habe. 8 der vorherigen Passes waren plötzlich obsolet und mit 3 Passes läufts jetzt (hoffentlich).
Bild
Benutzeravatar
marcgfx
Establishment
Beiträge: 2115
Registriert: 18.10.2010, 23:26

Re: Projekt: Blood of the Undead

Beitrag von marcgfx »

Laufende Häuser, wäre denke ich machbar :) ist eh alles das gleiche... zumindest bis jetzt. Mal nicht zu viel versprechen.

Womöglich muss ein Population-Cap hin, sowas wie in SC2. Pro Haus max 10 Einheiten oder sowas. Der Platz ist ja irgendwie beschränkt, von daher.... weiss ich nicht obs ein absolutes oberes Limit braucht.

Da ich nicht mit Einheiten Ressourcen abbauen will wie in SC gibt es vielleicht Geld Produktion über ein Gebäude. Vorerst lass ich die Ressourcen aber mal weg, mal sehen wie es sich entwickelt.
Antworten