It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
avatar
JanRobin: Ja, ich bin eben Programmierer und Game Designer, wenn Du so willst, aber alles was ich an Grafik gemacht habe, habe ich in diesem Projekt von Null aus an lernen müssen.
avatar
Mori_Yuki: Wenn Du nie was mit Grafik zu tun hattest, oder es vermieden hast, weil du dachtest: Darin bin ich nicht Gut, kann ich nicht, da habe ich kein Talent, ist es verständlich. Glaub mir, es ist keine Hexerei, mit zur Verfügung stehenden brushes, seamless textures und jeder x-beliebigen Grafik-Software (egal ob Paint(.net), PS, Corel ...) etwas ansprechendes zu gestalten. Spiel einfach damit und orientier dich an ähnlichen Projekten. Macht Spass!

avatar
JanRobin: Nun ist aber das neue Dialogfenster eingebaut und sieht so finde ich wirklich viel stimmiger aus :-) ! Was meinst Du?
avatar
Mori_Yuki: Ja, so sieht es tatsächlich stimmiger aus. :)

Hier wäre noch ein Vorschlag Ein 2 minuten Pfusch, deren dahintersteckende Idee hoffentlich dennoch klar ist. Dass das also anzupassen wäre damit es nach was aussieht, wenn Du dich entschlössest, diese meine letzte Idee puncto Gestaltung noch aufzugreifen, muss wohl nicht gesagt werden. *hi hi*

Egal ob Du es tust oder nicht, sei Stolz auf das was du bisher geleistet und geschafft hast! Das verdient Respekt!
Es ist gar nicht so, dass ich die Grafkgeschichten vermeiden wollte, sondern mehr, dass so ein Projekt einfach extrem viel Zeit verschlingt und es dann unattraktiv ist auch noch einen neuen "Beruf" zu lernen nebenbei ;-) ! Allerdings habe ich schon gemerkt, dass ich zumindest in gewissem Umfang nicht darum herum komme und in der Spielgrafik ist ja einigesauch selbst gemacht.

So ich habe dann deine Idee umgesetzt und ich finde es gelungen. Was meinst Du?
Attachments:
avatar
JanRobin: Es ist gar nicht so, dass ich die Grafkgeschichten vermeiden wollte, sondern mehr, dass so ein Projekt einfach extrem viel Zeit verschlingt und es dann unattraktiv ist auch noch einen neuen "Beruf" zu lernen nebenbei ;-) ! Allerdings habe ich schon gemerkt, dass ich zumindest in gewissem Umfang nicht darum herum komme und in der Spielgrafik ist ja einiges auch selbst gemacht.
Wenn Du niemanden zur Verfügung hast, geht es halt nicht Anders. Auf der anderen Seite hast Du ein paar neue Fähigkeiten gelernt. Hat doch auch was, findest Du nicht? :-)

avatar
JanRobin: So ich habe dann deine Idee umgesetzt und ich finde es gelungen. Was meinst Du?
Ja, ein gewisser Unterschied ist erkennbar. Verringertest Du noch die breite des Text-Fenster, sodass es beiderseits mit den rundungen der quick access Leiste abschlössche, würde ein runder Eindruck entstehen. no pun indendet!

Alternativ käme in Betracht, einfach die Breite des Text-Fenster zu verringen, sodass deren jeweilige Enden mit den Rundungen der quick-access Leiste in gerader Linie abschliesst. Dadurch bliebe ein zum Teil gerundetes Dreieck frei, was sich bequem mit einem Teil der Textur des Hintergrund des Text-Fenster und dessen Rahmen ausgefüllt werden kann. Letztlich könntes noch die breite der äusseren Ränder des Text-Fensters auf jene der quick-access Leiste verringert werden. Wie es gemeint ist siehst Du im Anhang. ;-)
Attachments:
soetwa.png (123 Kb)
avatar
JanRobin: Es ist gar nicht so, dass ich die Grafkgeschichten vermeiden wollte, sondern mehr, dass so ein Projekt einfach extrem viel Zeit verschlingt und es dann unattraktiv ist auch noch einen neuen "Beruf" zu lernen nebenbei ;-) ! Allerdings habe ich schon gemerkt, dass ich zumindest in gewissem Umfang nicht darum herum komme und in der Spielgrafik ist ja einiges auch selbst gemacht.
avatar
Mori_Yuki: Wenn Du niemanden zur Verfügung hast, geht es halt nicht Anders. Auf der anderen Seite hast Du ein paar neue Fähigkeiten gelernt. Hat doch auch was, findest Du nicht? :-)

avatar
JanRobin: So ich habe dann deine Idee umgesetzt und ich finde es gelungen. Was meinst Du?
avatar
Mori_Yuki: Ja, ein gewisser Unterschied ist erkennbar. Verringertest Du noch die breite des Text-Fenster, sodass es beiderseits mit den rundungen der quick access Leiste abschlössche, würde ein runder Eindruck entstehen. no pun indendet!

Alternativ käme in Betracht, einfach die Breite des Text-Fenster zu verringen, sodass deren jeweilige Enden mit den Rundungen der quick-access Leiste in gerader Linie abschliesst. Dadurch bliebe ein zum Teil gerundetes Dreieck frei, was sich bequem mit einem Teil der Textur des Hintergrund des Text-Fenster und dessen Rahmen ausgefüllt werden kann. Letztlich könntes noch die breite der äusseren Ränder des Text-Fensters auf jene der quick-access Leiste verringert werden. Wie es gemeint ist siehst Du im Anhang. ;-)
---------------------------------------------------------
Okay jetzt verstehe ich was Du meinst. Allerdings ist das etwas schwierig umzusetzen, da die GUI Elemente alle in einer Textur sind und dummerweise die Dialogfenstertextur ganz oben plaziert ist. So würde sich natürlich alles andere verschieben, wenn ich sie größer mache und die Arbeit will ich mnir ersparen. Vielleicht mache ich einfach eine zweite Textur, die ich dann dort einblende wo noch Raum zum Haupt Interface ist.
Größer oder kleiner will das Textfenster eigentlich nicht machen, denn alle Texte passen sehr gut hinein momentan.

Sicher Du hast Recht es ist immer gut etwas neues zu lernen :-) ! Ich wollte auch nicht jammern deswegen nur ausdrücken, wie ich die Prioritäten verteilt habe während der ersten Phase des Projekts.
avatar
JanRobin: Okay jetzt verstehe ich was Du meinst. Allerdings ist das etwas schwierig umzusetzen, da die GUI Elemente alle in einer Textur sind und dummerweise die Dialogfenstertextur ganz oben plaziert ist. So würde sich natürlich alles andere verschieben, wenn ich sie größer mache und die Arbeit will ich mnir ersparen.
Dafür hast Du mich nun verloren! ;-)

Meinst Du das im Sinne der Verwendung eines texture atlas, in dem alle GUI Elemente zusammengefasst sind? Meinst Du damit das diese Elemente in SFML auf einem layer liegen? Beispiel: quick access Leiste, Inventory, Crating Menü, die mit einem this->button.show(inventory(shop)); Ein- und Ausgeblendet werden, je nach Bedarf? Ohohoder ist es so gemeint, dass Du die Elemente in einem beliebigem Grafikprogramm erstellt, die Layer verschmolzen, das ganze gespeichert und dann auf einem Layer in SFML zusammengefasst hast?

Vielleicht währst Du bereit, einen Screenshot davon zu zeigen, damit ich es besser verstehe? :-)

avatar
JanRobin: Vielleicht mache ich einfach eine zweite Textur, die ich dann dort einblende wo noch Raum zum Haupt Interface ist.
Größer oder kleiner will das Textfenster eigentlich nicht machen, denn alle Texte passen sehr gut hinein momentan.
Ja, würde Vollauf genügen. Je einfacher Du es dir machen kannst, desto besser, unabhängig von möglichen Technikalitäten.

avatar
JanRobin: Sicher Du hast Recht es ist immer gut etwas neues zu lernen :-) ! Ich wollte auch nicht jammern deswegen nur ausdrücken, wie ich die Prioritäten verteilt habe während der ersten Phase des Projekts.
Ich habe es nicht als jammern verstanden. Mir ist schon ziemlich klar, was Du alles machen und lernen musstest, damit dein Projekt realisiert werden konnte. Bezugnehmend auf meine vorletzte antwort, so habe ich Gründe genannt, die immer wieder in dieser oder ähnlicher Form geäussert werden, wenn es um den Design Aspekt geht. Viele Menschen unterschätzen sich, trauen sich nicht zu, etwas ansprechendes gestalten zu können, halten sich für wahre Untalente. Kann stimmen, muss aber nicht. Vieles ist erlernber und durch stetige Übung verbessert man sich.
Post edited February 13, 2021 by Mori_Yuki
avatar
JanRobin: Okay jetzt verstehe ich was Du meinst. Allerdings ist das etwas schwierig umzusetzen, da die GUI Elemente alle in einer Textur sind und dummerweise die Dialogfenstertextur ganz oben plaziert ist. So würde sich natürlich alles andere verschieben, wenn ich sie größer mache und die Arbeit will ich mnir ersparen.
avatar
Mori_Yuki: Dafür hast Du mich nun verloren! ;-)

Meinst Du das im Sinne der Verwendung eines texture atlas, in dem alle GUI Elemente zusammengefasst sind? Meinst Du damit das diese Elemente in SFML auf einem layer liegen? Beispiel: quick access Leiste, Inventory, Crating Menü, die mit einem this->button.show(inventory(shop)); Ein- und Ausgeblendet werden, je nach Bedarf? Ohohoder ist es so gemeint, dass Du die Elemente in einem beliebigem Grafikprogramm erstellt, die Layer verschmolzen, das ganze gespeichert und dann auf einem Layer in SFML zusammengefasst hast?

Vielleicht währst Du bereit, einen Screenshot davon zu zeigen, damit ich es besser verstehe? :-)

avatar
JanRobin: Vielleicht mache ich einfach eine zweite Textur, die ich dann dort einblende wo noch Raum zum Haupt Interface ist.
Größer oder kleiner will das Textfenster eigentlich nicht machen, denn alle Texte passen sehr gut hinein momentan.
avatar
Mori_Yuki: Ja, würde Vollauf genügen. Je einfacher Du es dir machen kannst, desto besser, unabhängig von möglichen Technikalitäten.

avatar
JanRobin: Sicher Du hast Recht es ist immer gut etwas neues zu lernen :-) ! Ich wollte auch nicht jammern deswegen nur ausdrücken, wie ich die Prioritäten verteilt habe während der ersten Phase des Projekts.
avatar
Mori_Yuki: Ich habe es nicht als jammern verstanden. Mir ist schon ziemlich klar, was Du alles machen und lernen musstest, damit dein Projekt realisiert werden konnte. Bezugnehmend auf meine vorletzte antwort, so habe ich Gründe genannt, die immer wieder in dieser oder ähnlicher Form geäussert werden, wenn es um den Design Aspekt geht. Viele Menschen unterschätzen sich, trauen sich nicht zu, etwas ansprechendes gestalten zu können, halten sich für wahre Untalente. Kann stimmen, muss aber nicht. Vieles ist erlernber und durch stetige Übung verbessert man sich.
-----------------------------------------------------------

So ich war wieder fleißig und habe eine Möglichkeit gefunden die Fenster zu verbinden ohne riesigen Aufwand.

Wegen den Texturen: ich habe eine große Textur für alle GUI Elemente weil das einfach praktischer war, als all die kleinen Pfeile und Balken und Fenster in eine extra Textur zu packen und einzeln zu laden.
Attachments:
avatar
JanRobin: So ich war wieder fleißig und habe eine Möglichkeit gefunden die Fenster zu verbinden ohne riesigen Aufwand.
Wunderbar! :-)

avatar
JanRobin: Wegen den Texturen: ich habe eine große Textur für alle GUI Elemente weil das einfach praktischer war, als all die kleinen Pfeile und Balken und Fenster in eine extra Textur zu packen und einzeln zu laden.
Eine pragmatische Lösung. :) Es böte sich auch an die fertigen Texturen in separaten Dateien zu speichern und in SFML in einem texture atlas zusammenzufassen. Dann kannst Du jederzeit Änderungen an den Grafik-Dateien vornehmen. Der Hauptvorteil dürfte in beiden Fällen gegeben sein; Die Zahl der texture switches wird drastisch reduziert und die performance würde optimiert - oder wäre optimaler.
avatar
JanRobin: So ich war wieder fleißig und habe eine Möglichkeit gefunden die Fenster zu verbinden ohne riesigen Aufwand.
avatar
Mori_Yuki: Wunderbar! :-)

avatar
JanRobin: Wegen den Texturen: ich habe eine große Textur für alle GUI Elemente weil das einfach praktischer war, als all die kleinen Pfeile und Balken und Fenster in eine extra Textur zu packen und einzeln zu laden.
avatar
Mori_Yuki: Eine pragmatische Lösung. :) Es böte sich auch an die fertigen Texturen in separaten Dateien zu speichern und in SFML in einem texture atlas zusammenzufassen. Dann kannst Du jederzeit Änderungen an den Grafik-Dateien vornehmen. Der Hauptvorteil dürfte in beiden Fällen gegeben sein; Die Zahl der texture switches wird drastisch reduziert und die performance würde optimiert - oder wäre optimaler.
Ja, so ein Texturatlas ist eine feine Sache, uund nächstes Mal würde ich definitiv mehr zu so eleganten Lösungen greifen. Vielleicht musst Du dazu wissen, dass ich in C++ erst seit diesem Projekt arbeite. Alles was ich vorher gemacht habe (auh größere Sachen) war Hardware nah in Assembler geschrieben. Dadurch hatte ich natürlich eine ganz andere Sichtweise und einen anderen Stil.

Aber gut das wir nun eine Lösung gefunden haben für das Dialogfenster. Was machen wir als nächstes oder was stört noch alles das empfindliche Spielerauge ? ;-)
avatar
JanRobin: Ja, so ein Texturatlas ist eine feine Sache, uund nächstes Mal würde ich definitiv mehr zu so eleganten Lösungen greifen. Vielleicht musst Du dazu wissen, dass ich in C++ erst seit diesem Projekt arbeite. Alles was ich vorher gemacht habe (auh größere Sachen) war Hardware nah in Assembler geschrieben. Dadurch hatte ich natürlich eine ganz andere Sichtweise und einen anderen Stil.
Sehr beachtlich! C++ 17/19 bietet zig verschiedene Wege an der Katze das Fell abzuziehen, wobei ich sagen würde, elegant liegt immer in den Augen der Betrachtet. ;-) Ich würde ja zu gerne Mäuschen spielen und Einblick in deinen Code werfen können, wie dein class design aussieht, ob Du mit pattern arbeitetest, eventuell auf templates zurück gegriffen hast, wie deine Aussprache aussieht, sowas Alles.

Insgesamt kann ich nur wiederholen, sehr beachtlich. Gratulation, dass du es Soweit gebracht hast, wirklich, sehr beachtlich! ☺

avatar
JanRobin: Aber gut das wir nun eine Lösung gefunden haben für das Dialogfenster. Was machen wir als nächstes oder was stört noch alles das empfindliche Spielerauge ? ;-)
Von meiner Seite aus gibt es Nichts mehr. Daher würde ich sagen: Job well done! ☺

Was wir als nächstes machen? Das natürlich! Oder wir bemühen uns, eventuell Vorhandene Bugs zu finden und diese auszumärzen, ein paar QoL improvements zu ersinnen, sowas wie Achtung, Scherz vorraus: auto-clicker zu implementieren um die Maus nicht so sehr abzunutzen. Wir könnten uns, Dank unserer nun erzielten Einnahmen, auch einen ruhigen Luxus Urlaub gönnen. Am besten irgendwo im südwestlichen Niedersachsen, an einem Würstelstand, samt Luxus-Aufenthalt im Zelt. All Sowas. ;-)
avatar
JanRobin: Ja, so ein Texturatlas ist eine feine Sache, uund nächstes Mal würde ich definitiv mehr zu so eleganten Lösungen greifen. Vielleicht musst Du dazu wissen, dass ich in C++ erst seit diesem Projekt arbeite. Alles was ich vorher gemacht habe (auh größere Sachen) war Hardware nah in Assembler geschrieben. Dadurch hatte ich natürlich eine ganz andere Sichtweise und einen anderen Stil.
avatar
Mori_Yuki: Sehr beachtlich! C++ 17/19 bietet zig verschiedene Wege an der Katze das Fell abzuziehen, wobei ich sagen würde, elegant liegt immer in den Augen der Betrachtet. ;-) Ich würde ja zu gerne Mäuschen spielen und Einblick in deinen Code werfen können, wie dein class design aussieht, ob Du mit pattern arbeitetest, eventuell auf templates zurück gegriffen hast, wie deine Aussprache aussieht, sowas Alles.

Insgesamt kann ich nur wiederholen, sehr beachtlich. Gratulation, dass du es Soweit gebracht hast, wirklich, sehr beachtlich! ☺

avatar
JanRobin: Aber gut das wir nun eine Lösung gefunden haben für das Dialogfenster. Was machen wir als nächstes oder was stört noch alles das empfindliche Spielerauge ? ;-)
avatar
Mori_Yuki: Von meiner Seite aus gibt es Nichts mehr. Daher würde ich sagen: Job well done! ☺

Was wir als nächstes machen? Das natürlich! Oder wir bemühen uns, eventuell Vorhandene Bugs zu finden und diese auszumärzen, ein paar QoL improvements zu ersinnen, sowas wie Achtung, Scherz vorraus: auto-clicker zu implementieren um die Maus nicht so sehr abzunutzen. Wir könnten uns, Dank unserer nun erzielten Einnahmen, auch einen ruhigen Luxus Urlaub gönnen. Am besten irgendwo im südwestlichen Niedersachsen, an einem Würstelstand, samt Luxus-Aufenthalt im Zelt. All Sowas. ;-)
-----------------------------------------------------

Hey, das sind ja gute Nachrichten :-) ! Ich wüsste natürlich schon noch ein paar Dinge, die ich gerne noch besser machen würde, aber habe noch keine Idee dafür. Zum Beispiel die Wege würde ich gerne schöner gestalten, denn die Ränder sind nicht so ansehnlich. Da die Wege auch vom Spieler verlegt werden können müssen sie sich natürlich an jeden Bodentypen und Position anpassen können. Vielleicht wäre es gut die Ränder mit einer abgrenzenden Textur zu malen (eventuell Randsteine oder soetwas). Was meinst Du? Momentan gibt es nur eine Textur pro Weg, die eben zufällig an viele und grob an die Form des Wegstückes angepasste Positionen gemalt wird. Das hat den Vorteil, dass die Wege immer ein kleines bisschen anders aussehen und es kein unnatürliches Schachbrettmuster aus Texturen gibt. Das war mir immer am wichtigsten. Das Gitter ist auf eine Weise tief im Spieldesign wichtig, aber man soll es optisch nicht zu stark sehen können.
Wenn ich so ein Spiel noch einmal schreiben würde (was ich sicher nicht tue ;-) ) dann würde ich vielleicht ausprobieren ganz auf ein Gitter zu verzichten und alles punktgenau zu berechnen. Ich war ja sehr erstaunt welche Leistung die Rechner mitllerweile haben, denn ich habe eine lange Pause beim programmieren vorher gemacht.

Ich vermute, dass Du mein Class Design eher als chaotisch betrachten würdest ;-) ! Umso mehr Zeit verging wurde der Code allerdings auch immer übersichtlicher und besser. Manches vom Anfang habe ich auch später noch einmal komplett neu geschrieben anderes allerdings war mir der Aufwand nicht wert und die Einschränkungen die dadurch entstehen werden auch durch die Effizienz und weniger Verwaltungsaufwand wett gemacht, wie ich finde.
avatar
JanRobin: Hey, das sind ja gute Nachrichten :-) ! Ich wüsste natürlich schon noch ein paar Dinge, die ich gerne noch besser machen würde, aber habe noch keine Idee dafür. Zum Beispiel die Wege würde ich gerne schöner gestalten, denn die Ränder sind nicht so ansehnlich. Da die Wege auch vom Spieler verlegt werden können müssen sie sich natürlich an jeden Bodentypen und Position anpassen können. Vielleicht wäre es gut die Ränder mit einer abgrenzenden Textur zu malen (eventuell Randsteine oder soetwas). Was meinst Du?
Meiner Ansicht nach wäre die einfachste Lösung mit terrain blending oder texture splatting zu arbeiten. Dadurch ersparst Du dir, die Texturen individuell anzupassen, was wiederum jede Menge Arbeit spart. Damit kannst Du auch bei allen anderen terrain Texturen ein - für dich - stimmiger erscheinendes Landschafsbild zu erzeugen.

avatar
JanRobin: Momentan gibt es nur eine Textur pro Weg, die eben zufällig an viele und grob an die Form des Wegstückes angepasste Positionen gemalt wird. Das hat den Vorteil, dass die Wege immer ein kleines bisschen anders aussehen und es kein unnatürliches Schachbrettmuster aus Texturen gibt. Das war mir immer am wichtigsten. Das Gitter ist auf eine Weise tief im Spieldesign wichtig, aber man soll es optisch nicht zu stark sehen können.
Deine Idee, die Wege visuell anzupassen, solltest du nicht verwerfen! Erstell aus den bestehenden weitere Texturen! Ein Weg mit Schlaglöchern, Wagenspuren, Material wie Lavagestein oder Waldboden um sie der Landschaft anzugleichen, Gras (blended) über dem Weg, cobblestone für Ortschaften, Feldwege, Schlamm und was dir sonst noch einfallen mag. Dasselbe kannst Du auch für Felder oder Höhlen machen. So bringst Du ein höchstmass an Abwechslung hinein, mit relativ wenig Mehraufwand, die es den Spielern erlaubt, dem ganzen ihren eigenen Stempel aufzudrücken. Sei es nur durch Anlegen individueller Wege.

avatar
JanRobin: Wenn ich so ein Spiel noch einmal schreiben würde (was ich sicher nicht tue ;-) ) dann würde ich vielleicht ausprobieren ganz auf ein Gitter zu verzichten und alles punktgenau zu berechnen. Ich war ja sehr erstaunt welche Leistung die Rechner mitllerweile haben, denn ich habe eine lange Pause beim programmieren vorher gemacht.
Wobei Du eigentlich recht wenig selbst zu berechnen hättest. Dafür gibt es schliesslich genug Algorhitmen auf die zurückgegriffen werden kann. ;-)

avatar
JanRobin: Ich vermute, dass Du mein Class Design eher als chaotisch betrachten würdest ;-) ! Umso mehr Zeit verging wurde der Code allerdings auch immer übersichtlicher und besser. Manches vom Anfang habe ich auch später noch einmal komplett neu geschrieben anderes allerdings war mir der Aufwand nicht wert und die Einschränkungen die dadurch entstehen werden auch durch die Effizienz und weniger Verwaltungsaufwand wett gemacht, wie ich finde.
Kann ich schlechterdings nicht beurteilen. :P Wenn der Code den Zweck erfüllt, worum es doch am Ende des Tages geht, ist das aussehen und format der Klassen und Funktionen nebensächlich. Ihn anzupassen und zu verfeiern in Gestaltung und Verwendung von diversen facilities, sowohl C++ als auch SFML, ist sicher auch eine interessante Aufgabe. Nicht nötig, aber lehrreich.

Solang dein Code gesamt nicht so aussieht, wie Vvvvvvvvvvvvvvvvv (+-200 v), es läuft, Bugs - im Sinn von auffindbarkeit der möglichen Stellen im Code nicht Stunden sondern ein paar Minuten in Anspruch nimmt? Was wolltest Du mehr?
avatar
JanRobin: Hey, das sind ja gute Nachrichten :-) ! Ich wüsste natürlich schon noch ein paar Dinge, die ich gerne noch besser machen würde, aber habe noch keine Idee dafür. Zum Beispiel die Wege würde ich gerne schöner gestalten, denn die Ränder sind nicht so ansehnlich. Da die Wege auch vom Spieler verlegt werden können müssen sie sich natürlich an jeden Bodentypen und Position anpassen können. Vielleicht wäre es gut die Ränder mit einer abgrenzenden Textur zu malen (eventuell Randsteine oder soetwas). Was meinst Du?
avatar
Mori_Yuki: Meiner Ansicht nach wäre die einfachste Lösung mit terrain blending oder texture splatting zu arbeiten. Dadurch ersparst Du dir, die Texturen individuell anzupassen, was wiederum jede Menge Arbeit spart. Damit kannst Du auch bei allen anderen terrain Texturen ein - für dich - stimmiger erscheinendes Landschafsbild zu erzeugen.

avatar
JanRobin: Momentan gibt es nur eine Textur pro Weg, die eben zufällig an viele und grob an die Form des Wegstückes angepasste Positionen gemalt wird. Das hat den Vorteil, dass die Wege immer ein kleines bisschen anders aussehen und es kein unnatürliches Schachbrettmuster aus Texturen gibt. Das war mir immer am wichtigsten. Das Gitter ist auf eine Weise tief im Spieldesign wichtig, aber man soll es optisch nicht zu stark sehen können.
avatar
Mori_Yuki: Deine Idee, die Wege visuell anzupassen, solltest du nicht verwerfen! Erstell aus den bestehenden weitere Texturen! Ein Weg mit Schlaglöchern, Wagenspuren, Material wie Lavagestein oder Waldboden um sie der Landschaft anzugleichen, Gras (blended) über dem Weg, cobblestone für Ortschaften, Feldwege, Schlamm und was dir sonst noch einfallen mag. Dasselbe kannst Du auch für Felder oder Höhlen machen. So bringst Du ein höchstmass an Abwechslung hinein, mit relativ wenig Mehraufwand, die es den Spielern erlaubt, dem ganzen ihren eigenen Stempel aufzudrücken. Sei es nur durch Anlegen individueller Wege.

avatar
JanRobin: Wenn ich so ein Spiel noch einmal schreiben würde (was ich sicher nicht tue ;-) ) dann würde ich vielleicht ausprobieren ganz auf ein Gitter zu verzichten und alles punktgenau zu berechnen. Ich war ja sehr erstaunt welche Leistung die Rechner mitllerweile haben, denn ich habe eine lange Pause beim programmieren vorher gemacht.
avatar
Mori_Yuki: Wobei Du eigentlich recht wenig selbst zu berechnen hättest. Dafür gibt es schliesslich genug Algorhitmen auf die zurückgegriffen werden kann. ;-)

avatar
JanRobin: Ich vermute, dass Du mein Class Design eher als chaotisch betrachten würdest ;-) ! Umso mehr Zeit verging wurde der Code allerdings auch immer übersichtlicher und besser. Manches vom Anfang habe ich auch später noch einmal komplett neu geschrieben anderes allerdings war mir der Aufwand nicht wert und die Einschränkungen die dadurch entstehen werden auch durch die Effizienz und weniger Verwaltungsaufwand wett gemacht, wie ich finde.
avatar
Mori_Yuki: Kann ich schlechterdings nicht beurteilen. :P Wenn der Code den Zweck erfüllt, worum es doch am Ende des Tages geht, ist das aussehen und format der Klassen und Funktionen nebensächlich. Ihn anzupassen und zu verfeiern in Gestaltung und Verwendung von diversen facilities, sowohl C++ als auch SFML, ist sicher auch eine interessante Aufgabe. Nicht nötig, aber lehrreich.

Solang dein Code gesamt nicht so aussieht, wie Vvvvvvvvvvvvvvvvv (+-200 v), es läuft, Bugs - im Sinn von auffindbarkeit der möglichen Stellen im Code nicht Stunden sondern ein paar Minuten in Anspruch nimmt? Was wolltest Du mehr?
Danke, das sind ein paar gute Ideen was die Wege angeht.Ich habe allerdings irgendwie ein Problem mit den Masken, weil Corel PhotoPaint x4 einfach nicht in der Lage zu sein scheint den Alpha Kanal zu speichern. Bisher bin ich dann immer den Umweg über Corel Draw gegangen und habe es von dort aus noch einmal exportiert (sehr umständlich). Für die Masken müsste ich dann allerdings den Akpha Kanal direkt editieren können, was aber bei Photo Paint so nicht geht oder ich weiß zumindest nicht wie. Vielleicht ist es zeit sich ein neues Programm dafür zuzulegen.

Momentan mache ich allerdings ersteinmal die ganzen Baumtexturen noch einmal in höherer Auflösung (sie wurden bisher gestreckt) und mit stufenlosem Wachstum, was dem Spiel sicher auch noch etwas bringen wird.
avatar
JanRobin: Danke, das sind ein paar gute Ideen was die Wege angeht.Ich habe allerdings irgendwie ein Problem mit den Masken, weil Corel PhotoPaint x4 einfach nicht in der Lage zu sein scheint den Alpha Kanal zu speichern. Bisher bin ich dann immer den Umweg über Corel Draw gegangen und habe es von dort aus noch einmal exportiert (sehr umständlich). Für die Masken müsste ich dann allerdings den Akpha Kanal direkt editieren können, was aber bei Photo Paint so nicht geht oder ich weiß zumindest nicht wie. Vielleicht ist es zeit sich ein neues Programm dafür zuzulegen.

Momentan mache ich allerdings ersteinmal die ganzen Baumtexturen noch einmal in höherer Auflösung (sie wurden bisher gestreckt) und mit stufenlosem Wachstum, was dem Spiel sicher auch noch etwas bringen wird.
BRRRRRRRRR! HALT, STOP!

Du machst die Sache umständlicher und komplizierter als sie sein muss. Es genügte doch sf::BlendMode zu verwenden und es auf diese Weise zu lösen.

Was Du auch tun könntest ist auf UE4 oder Unity zurück zu greifen, da beide über die nötigen Werkzeuge verfügen, und das Ergebnis der Sache in dein Spiel übertragen. Tutorials dazu gibt es zudem im Überfluss, was die Sache noch weiter beschleunigen müsste, wenn es von der programmiertechnischen Seite angegangen wird.

Wenn ich es richtig verstanden habe, Anhand der Videos, verwendest Du auch OpenGL. Für die ganzen light und shadow Geschichten wie es aussieht. Da müsste es doch noch weitere Möglichkeiten geben, womit Du dir ersparst, einzelnen Texturen einen alpha channel zu verpassen und das dann zu exportieren. Das weiss ich hinwiederum nicht so sehr genau, wie, da ich mit OpenGL nie was gemacht habe.

Solltest Du es mit einem Grafik Programm machen wollen, dann bist du mit Gimp gut aufgehoben. Wenn Du es damit nicht so hast, lade dir Photoshop CS2 runter. Zwar ist diese Version ein wenig älter, dafür aber gratis. Wenn Du durchaus nicht vor kleinen Ausgaben zurückschreckst schliess ein 1 monatiges Abo ab und nutz CC, 14.99 oder sowas um den Dreh herum kostet es pro Monat.

Gimp
CS2
Post edited February 18, 2021 by Mori_Yuki
avatar
JanRobin: Danke, das sind ein paar gute Ideen was die Wege angeht.Ich habe allerdings irgendwie ein Problem mit den Masken, weil Corel PhotoPaint x4 einfach nicht in der Lage zu sein scheint den Alpha Kanal zu speichern. Bisher bin ich dann immer den Umweg über Corel Draw gegangen und habe es von dort aus noch einmal exportiert (sehr umständlich). Für die Masken müsste ich dann allerdings den Akpha Kanal direkt editieren können, was aber bei Photo Paint so nicht geht oder ich weiß zumindest nicht wie. Vielleicht ist es zeit sich ein neues Programm dafür zuzulegen.

Momentan mache ich allerdings ersteinmal die ganzen Baumtexturen noch einmal in höherer Auflösung (sie wurden bisher gestreckt) und mit stufenlosem Wachstum, was dem Spiel sicher auch noch etwas bringen wird.
avatar
Mori_Yuki: BRRRRRRRRR! HALT, STOP!

Du machst die Sache umständlicher und komplizierter als sie sein muss. Es genügte doch sf::BlendMode zu verwenden und es auf diese Weise zu lösen.

Was Du auch tun könntest ist auf UE4 oder Unity zurück zu greifen, da beide über die nötigen Werkzeuge verfügen, und das Ergebnis der Sache in dein Spiel übertragen. Tutorials dazu gibt es zudem im Überfluss, was die Sache noch weiter beschleunigen müsste, wenn es von der programmiertechnischen Seite angegangen wird.

Wenn ich es richtig verstanden habe, Anhand der Videos, verwendest Du auch OpenGL. Für die ganzen light und shadow Geschichten wie es aussieht. Da müsste es doch noch weitere Möglichkeiten geben, womit Du dir ersparst, einzelnen Texturen einen alpha channel zu verpassen und das dann zu exportieren. Das weiss ich hinwiederum nicht so sehr genau, wie, da ich mit OpenGL nie was gemacht habe.

Solltest Du es mit einem Grafik Programm machen wollen, dann bist du mit Gimp gut aufgehoben. Wenn Du es damit nicht so hast, lade dir Photoshop CS2 runter. Zwar ist diese Version ein wenig älter, dafür aber gratis. Wenn Du durchaus nicht vor kleinen Ausgaben zurückschreckst schliess ein 1 monatiges Abo ab und nutz CC, 14.99 oder sowas um den Dreh herum kostet es pro Monat.

Gimp
CS2
--------------------------------

..nichts passiert ;-) ich bin noch mit den Bäumen beschäftigt.

Mit der Blendmode habe ich natürlich schon intensiv gearbeitet im Verlauf der Umgebungsverdeckung und der Lichtquellen und natürlich kann ich das auch für die Wege so machen. Das Problem ist eben nur, das PhotoPaint keine reinen Alphakanal Masken speichern kann. Nicht einmal Bilder mit transparenz lassen sich ohne den Umweg über Corel Draw abspeichern, was wirklich gruselig ist.
Nun habe ich mir Gimp und CS3 runtergeladen und werde demnächst einmal beide ausprobieren.
Eigentlich dachte ich die Formen der Wege als Alpha Maske einfach über die jeweilige Textur zu legen und das Gleiche mit einer Maske für die Ränder des Weges und alles dann zusammen auf den Bildschirm zu malen. Dazu könnte man dann noch je nach Feld Verzierungen vorher über die Textur einblenden (Schlaglöcher,Gras etc.).
So hätte nur 3 kleine Texturen pro Weg und 1x die Masken, die man ja auch drehen könnte und dann brauche ich davon 2x 6 Stück.

In SFML und OpenGL ist immer ein Alpha Kanal mit dabei und den will ich auch gerne für die Wege nutzen.

Fertige Algorithmen möchte ich über die Grafikschnittstelle von SFML eigentlich nicht verwenden. Ich habe gerne den Überblick über mein Programm ohne zuviel fremden Code und außerdem mag ich auch die Herausforderung alles selbst zu schreiben. Natürlich hole ich mir auch gerne Inspirationen von anderen, aber fertige Programmteile oder noch weitere Biblioheken finde ich nicht so gut.
avatar
JanRobin: ..nichts passiert ;-) ich bin noch mit den Bäumen beschäftigt.

Mit der Blendmode habe ich natürlich schon intensiv gearbeitet im Verlauf der Umgebungsverdeckung und der Lichtquellen und natürlich kann ich das auch für die Wege so machen. Das Problem ist eben nur, das PhotoPaint keine reinen Alphakanal Masken speichern kann. Nicht einmal Bilder mit transparenz lassen sich ohne den Umweg über Corel Draw abspeichern, was wirklich gruselig ist.

Eigentlich dachte ich die Formen der Wege als Alpha Maske einfach über die jeweilige Textur zu legen und das Gleiche mit einer Maske für die Ränder des Weges und alles dann zusammen auf den Bildschirm zu malen. Dazu könnte man dann noch je nach Feld Verzierungen vorher über die Textur einblenden (Schlaglöcher,Gras etc.).
So hätte nur 3 kleine Texturen pro Weg und 1x die Masken, die man ja auch drehen könnte und dann brauche ich davon 2x 6 Stück.

In SFML und OpenGL ist immer ein Alpha Kanal mit dabei und den will ich auch gerne für die Wege nutzen.
Deinen Ausführungen folgend scheint mein Schluss zu sein, wenn Du es mit den Basis-Texturen und via code lösen kannst, wäre es einfacher als wenn Du so viele zusätzliche Texturen brauchtest, um im wesentlichen doch dasselbe zu erreichen. Ich will Dir an dieser Stelle weder das Eine ein- noch will ich dir das Andere ausreden nur damit Du mich richtig verstehst! Schliesslich ist das Ergebnis wichtiger als der Weg der dich vom Start zum Ziel führt. :-)

avatar
JanRobin: Fertige Algorithmen möchte ich über die Grafikschnittstelle von SFML eigentlich nicht verwenden. Ich habe gerne den Überblick über mein Programm ohne zuviel fremden Code und außerdem mag ich auch die Herausforderung alles selbst zu schreiben. Natürlich hole ich mir auch gerne Inspirationen von anderen, aber fertige Programmteile oder noch weitere Biblioheken finde ich nicht so gut.
Fertige Algorithmen? Wie kommst Du jetzt darauf? Etwa weil ich meinte Du könnest genauso Gut auch Unity oder UE4 für diese Arbeit verwenden? Falls ja, war die Idee nicht auf etwas vorgefertigtes zurück zu greifen, sondern schon nur das darin zu erledigen, was du über den Umweg der Grafiksoftware versuchst. Wobei ich UE4 dank Node Editor jederzeit Unity vorzöge, stünde ich vor der Entscheidung. ;-)

Deinen Ansatz, es selbst tun und etwas lernen zu wollen, begrüsse ich sehr. Andererseits muss ich auch sagen, warum das Rad neu erfinden, wenn es schon Lösungen gibt, die im Zweifel ein wenig angepasst und übernommen werden können? :-)
avatar
JanRobin: ..nichts passiert ;-) ich bin noch mit den Bäumen beschäftigt.

Mit der Blendmode habe ich natürlich schon intensiv gearbeitet im Verlauf der Umgebungsverdeckung und der Lichtquellen und natürlich kann ich das auch für die Wege so machen. Das Problem ist eben nur, das PhotoPaint keine reinen Alphakanal Masken speichern kann. Nicht einmal Bilder mit transparenz lassen sich ohne den Umweg über Corel Draw abspeichern, was wirklich gruselig ist.

Eigentlich dachte ich die Formen der Wege als Alpha Maske einfach über die jeweilige Textur zu legen und das Gleiche mit einer Maske für die Ränder des Weges und alles dann zusammen auf den Bildschirm zu malen. Dazu könnte man dann noch je nach Feld Verzierungen vorher über die Textur einblenden (Schlaglöcher,Gras etc.).
So hätte nur 3 kleine Texturen pro Weg und 1x die Masken, die man ja auch drehen könnte und dann brauche ich davon 2x 6 Stück.

In SFML und OpenGL ist immer ein Alpha Kanal mit dabei und den will ich auch gerne für die Wege nutzen.
avatar
Mori_Yuki: Deinen Ausführungen folgend scheint mein Schluss zu sein, wenn Du es mit den Basis-Texturen und via code lösen kannst, wäre es einfacher als wenn Du so viele zusätzliche Texturen brauchtest, um im wesentlichen doch dasselbe zu erreichen. Ich will Dir an dieser Stelle weder das Eine ein- noch will ich dir das Andere ausreden nur damit Du mich richtig verstehst! Schliesslich ist das Ergebnis wichtiger als der Weg der dich vom Start zum Ziel führt. :-)

avatar
JanRobin: Fertige Algorithmen möchte ich über die Grafikschnittstelle von SFML eigentlich nicht verwenden. Ich habe gerne den Überblick über mein Programm ohne zuviel fremden Code und außerdem mag ich auch die Herausforderung alles selbst zu schreiben. Natürlich hole ich mir auch gerne Inspirationen von anderen, aber fertige Programmteile oder noch weitere Biblioheken finde ich nicht so gut.
avatar
Mori_Yuki: Fertige Algorithmen? Wie kommst Du jetzt darauf? Etwa weil ich meinte Du könnest genauso Gut auch Unity oder UE4 für diese Arbeit verwenden? Falls ja, war die Idee nicht auf etwas vorgefertigtes zurück zu greifen, sondern schon nur das darin zu erledigen, was du über den Umweg der Grafiksoftware versuchst. Wobei ich UE4 dank Node Editor jederzeit Unity vorzöge, stünde ich vor der Entscheidung. ;-)

Deinen Ansatz, es selbst tun und etwas lernen zu wollen, begrüsse ich sehr. Andererseits muss ich auch sagen, warum das Rad neu erfinden, wenn es schon Lösungen gibt, die im Zweifel ein wenig angepasst und übernommen werden können? :-)
--------------------------------------
Genau ich würde lieber mehr code schreiben als mehr Texturen zu erstellen ;-) !

Ja, ich dachte Du meinst ich sollte irgendwelche Plugins verwenden, aber jetzt habe ich es verstanden. Allerdings brauchen all diese Programme immer soviel Einarbeitungszeit und da scheue ich mich oft vor. Ich versuche erst einmal das mit den Wegen mit Malprogramm + Code hinzubekommen. Im Grunde sind die Änderungen ja nicht so groß und wenn es mir gelingt diese Alphamasken mit gimp zu erstellen sollte eigentlich alles klappen.