GUI für ein Spiel - Anregungen gesucht
Übersicht

PhillipKBetreff: GUI für ein Spiel - Anregungen gesucht |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Heyho Community!
Ich melde mich auch mal wieder.. Wenn auch nach langer Zeit =) Momentan hat eine Freundin & mich mal wieder die Lust gepackt, ein kleines Spiel zu Programmieren. Wir haben schön öfters versucht, etwas zusammen zu schreiben, allerdings ist das immer gnadenlos in die Hose gegangen, die erwartungen waren zu groß, die Ideen zu komplex, die langzeitmotivation fehlte. Ich bin mir zwar ziemlich sicher, das auch unser jetztiges spiel nicht grade langzeit bestand haben wird, aber mir machts auch einfach spass, ideen zu durchdenken und umzusetzen. Meine jetzige herausforderung ist eine GUI. Das spiel wird ein klassisches Spiel, RPG elemente (werden aber erst später umgesetzt) und teile von Harvest-Moon sollen auch übernommen werden. Ansicht ist isometrisch (die engine dafür ist schon gecodet ![]() Mein Problem im moment ist, ich versuche eine relativ speichergünstige alternative zu finden, fenster und inhalt zu realisieren, die nicht viel rechenleistung braucht - klar, der wunsch eines jeden Spieleprogramierers =) Buttons habe ich bereits geschrieben, das ist robust und schnell, funzt super. Nun wollte ich weitermachen und eine Simple Inventar idee umsetzen, stehe da aber ein wenig auf dem Schlauch, nicht zuletzt, weil ich mit der BlitzMax syntax noch nicht so zurechtkomme ![]() Das Zeichnen von linien (DrawLine, DrawRect) möchte ich nicht verwenden, sondern ein kleines, solides Bildchen, das user später nach belieben ummalen können... Die erste idee hierzu war, ein etwa 30x30 pixel großes Bild mit LoadAnimImage() zu laden und in einer Funktion die bildteile passend aneinander zu Kacheln, je nach fenstergröße. Der grobe ablauf ist wie folgt -> Cls - Bildteile zeichnen - GrabImage() um das gezeichnete Fenster als eigene "Grafik" zu grabben und danach in meine Fenster-liste einzufügen. Die liste enthält Types, um den verschiedenen fenstern auch Eigenschaften zu geben (X-koord,Y-koord,Breite,höhe,isVisible, etc). nachteil 1 daran ist, das die fenstergröße durch 10 teilbar sein muss und dabei auch keine kommas enthält ![]() Nachteil 2 wäre die statische fenstergröße. Nachteil 3 - transparenz an den rändern des bildes ist für mich nicht möglich zu realisieren, da GrabImage() immer schön das schwarze im hintergrund mitnimmt. Da unser spiel ausserdem zumindest 3 auflösungen enthalten soll, eine 4:3, eine 16:10 und eine 16:9 auflösung (damit der spieler in höherer auflösung nicht umbedingt 'viel' mehr sieht als mit geringerer) stellt sich mir ein weiteres problem, nämlich die Fensterinhalt-aufteilung. Ich möchte die Fenster nicht umbedingt hardcoded realiseren, sondern evtl in ferner zukunft mal in der größe veränderbare fenster haben. Nun wollte ich euch, als Communitiy und Helfer in not mal anhaun, mir ein paar anregungen zu geben, wie man mit relativ kleinen grafiken (war mein anfang, des 9x9 kacheln- bildes schon gut?) ein gutes Fenster realisiert, und wie ich den Fensterinhalt einbinden sollte, damit dieser nach möglichkeit auch dynamisch ist. Mir fallen nur je eine lösung zu den problemen ein - das 9x9 teilbild noch kleiner unterteilen und die zeichenroutine verändern, damit die entsprechenden neuen teilstücke auch besser gezeichnet werden (so kann ich später zwar kein pixelgenaues resizen schreiben, aber immerhin keine großen 10pixel-ruckler beim resizen realisieren, sondern vllt 5 oder gar 2 pixel) und zum Fensterinhalt - jedes Fenster bekommt eine weitere Eigenschaft, die eine List mit den inhalten enthält, welche wiederrum eigenschaften enthalten, so zb der "bereich" in prozent, indem sie auf dem fenster gezeichnet werden sollen. Beispiel: Inventar. ab 50% Fensterbreite, bis 95% fensterbreite und ab 5% fensterhöhe und bis 95% fensterhöhe kommt das inventar hin, von 5% breite bis 50% breite und von 5% höhe bis 50% höhe kommt eine "objektbeschreibung" hin, welches man grade angeklickt hat. Bevor ich mich aber daranmache und die, für mich recht komplex wirkenden, fensterinhalte realisere, würde ich euch gerne mal nach einem Feedback fragen. Ps: Ich möchte nach möglichkeit keine packages etc von anderen usern einbinden, also keine fertige gui engine etc, sondern das selbst coden, nicht zuletzt damit ich (1) lerne und (2) es für spätere projekte wiederverwenden kann + die eigenen Rechte daran habe. Ich hoffe ihr könnt mir helfen =) |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Für verschiedene Seitenverhältnisse muss du dir sicher Gedanken machen - aber mit den virtuellen Auflösungen, die in einem der letzten Updates dazu gekommen sind, sollte verschiedene Fenstergrößen kein Problem sein. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Öh?
Klingt nach... Einer art grundliegenden SetScale() vor jedem zeichnen, das eine Virtuelle auflösung von bsp. 1600x1000 pixeln "erbringt", obgleich das fenster doppelt so groß ist? :< wieso weiß ich von sowas nichts =D Hach, komm ich mir wieder doof vor ^^ ------ Edit: So, nun bin ich wieder am rumspielen, aber mir gibt sich ein weiteres Problem. Nach dem grabben von einem Image habe ich schwarze ränder dran.. da ich mir aber eine schöne Fenstergrafik gebastelt habe, möchte ich das wegkriegen ![]() Gibts dafür nen einfachen befehl, einem image die farbe 0,0,0 (schwarz) transparent anzuzeigen? Meine versuche, die forumssuche zu nutzen, schlugen fehl :< Edit2: Ah, selbst gefunden, hab mit SetMaskColor() rumgespielt, aber vergessen mein CreateImage() mit der entsprechenden flag zu versehen, entschuldigung ^^ |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group