Samstag, 16. November 2013

Buttons fertig

So, hier also ein kleiner Bericht über die momentane Entwicklung.

Ich habe soweit die Buttons fertig :)
Von Aussehen passt alles schon mal, man hat zudem verschiedene Möglichkeiten das Aussehen manuell zu ändern.

Mögliche manuelle Anpassungen der Buttons:
  • eigene Schriftarten
    • über button.Font = ...;
    • auch über den Konstruktor anpassbar
  • spezielle Schrift- & Hintergrundfarbe
    • über button.fontColor = new Color(...);
      ( Schriftfarbe )
    • über button.bkgColor = new Color(...);
      ( Hintergrundfarbe )
    • auch über den Konstruktor anpassbar
  • eigene Textur
    • nur über button.texture = ...; anpassbar
Bisher enthaltene Methoden:
public Boolean Hover(){ }
    // Prüft ob die Maus über dem Button ist
public Boolean IsPressed(){ }
    // Prüft ob der Button gedrückt wurde
public void Draw(){ }
    // Zeichnet den Button

Verbindung Control - Fenster:
Ich habe mich dann gefragt wie ich es hinkriege, dass ein Control quasi zum Fenster gehört. Das wollte ich so haben, weil ich dann nur sagen muss window.Draw(); und das Fenster dann "sein" Controls selbst zeichnen soll. Dadurch muss ich nicht Button1.Draw(); Button2.Draw() ... machen.

Ich habe also eine Liste erstellt, in der nur Buttons gespeichert werden, somit kann ich ganz einfach Methoden der Buttons aufrufen.
Zudem habe ich jedem Buttons das Fenster-Handle zugewiesen, auf dessen Fenster es sich gerade befindet.

public class Window
{
    public List<Button> Button = new List<Button>();
    // ... ( Andere Variablen, Konstruktor, etc. )
    public void Draw()
    {
        // Erst Fenster ansich zeichnen
        for (int i = 0; i < Button.Count; i++)
        {
            Button[i].Draw();
        }
    }
}
public class Button
{
    Arengu game;
    // ...
    public Button(Arengu winHandle, ...)
    {
        this.game = winHandle;
    }
}

Somit kann ich vom Fenster aus Button-Methoden aufrufen und umgekehrt.

Hier ein Bild, wie es im Spiel aussehen wird:

Was als nächstes kommt ( allgemein ):
  • Hauptmenü
    • Liste im Spiel-laden Menü
  • Neue Controls
    • Label
    • Liste ( mit Scrollbalken )
    • Evtl.: CheckBoxen
mfg
Hauke

Sonntag, 10. November 2013

Fenster Management funktionsfähig

So, endlich funktioniert alles wie es soll!
Ich habe die letzten Tage damit verbracht mir Grafiken für die Spiel internen Fenster auszudenken und diese pixelgenau zeichnen zu lassen. Das war zwar einfach, aber mit einer Menge Arbeit verbunden.

Das Tileset:
Damit ich möglichst wenig Bilder nachher habe, habe ich es so gemacht, dass ich alle benötigten Texturen für die Fenster in eine Datei gepackt habe und XNA ( bzw. der "WindowManager" ) sucht sich dann die passenden heraus.

Alle bisher benötigten Texturen.
Button, etc. kommen noch dazu.
Ich habe dann für die Positionen der einzelnen Elemente eine eigene kleine Datei angelegt, wo dann alle Positionen drin stehen:
Rahmen_links,0,0,9,500
Rahmen_rechts,9,0,9,500
Rahmen_oben,18,0,500,9

Rahmen_unten,18,9,500,9
Rahmen_Ecke,18,18,64,64
Ecke_BKG,82,18,72,72
Close_Selected,154,18,56,56
...
Auf diese Weise kann man einfach die Positionen ändern, da auch  immer dabei steht wofür diese Koordinaten stehen.

Hier nun das Ergebnis:
Beispiel Fenster - So sieht es später aus
( Control kommen noch dazu )
Die Symbole in den Ecken haben natürlich alle eine Bedeutung:
  • Rune oben links: Steht für das Runen-System in Arengu und die damit verbundene Magie
  • Schwert und Schaufel oben rechts: 
    • Steht für die Soldaten / den Krieg und die bäuerlichen Verhältnisse in der Bevölkerung
    • Dient als "Schließen" Button ( wenn man darauf geht, wird der rote Schein stärker )
  • Schwarze Krone unten links: Steht für den König im nördlichen Königreich
  • Goldene Krone unten rechts: Steht für den König im südlichen Königreich
Bitte schreibt doch als Kommentar, wie ihr dieses Beispiel Fenster findet und was ich eventuell noch ändern sollte.

Was jetzt noch kommt, sind:
  • Button
  • Label ( mit verschiedenen Schriftwarten )
  • Input Felder
Warum keine WindowsForms Elemente?
Weil ich gerne alles variabel haben möchte, sprich ich möchte sagen können, dass auch die einzelnen Controls eine bestimmt Textur oder gar eine Animation tragen sollen. Außerdem möchte ich lieber ohne Ereignisse zur Abfrage verschiedener Aktionen auskommen, da mir persönlich Ereignisse nicht so liegen ;).

mfg
Hauke



Freitag, 25. Oktober 2013

Das eigentliche Spiel angefangen

Hallo zusammen,

wie der Titel schon sagt, haben Hendrik und ich das eigentliche Spiel angefangen. Es stehen zwar erst ein paar Zeilen Code, aber die funktionieren wenigstens schon ;)

Beginnen tun wir mit dem Hauptmenü, da wir damit dann schon wichtige Klassen ( ScreenManager ( s.u. ), WindowManager ( s.u. ), etc. ) gleich mit einbringen können.
Danach machen wir dann das laden der Map und die einzelnen Menüs ( Einstellungen, Laden, Neues Spiel, etc. ). Hendrik arbeitet während dessen am Hauptmenü selbst. Ich habe soweit schon mal den ScreenManager ( s.u. ) gemacht und hänge mich momentan hinter den WindowManager ( s.u. ).

ScreenManager???
Der ScreenManager sorgt dafür, dass immer passende "Fenster" im Spiel gezeichnet werden. So sorgt er z.B. dafür, dass, wenn man auf "Spiel laden" im Hauptmenü klickt, nicht mehr das Hauptmenü gezeichnet wird, sondern dann der passende Dialog zum laden eines Speicherstandes.
Hier ein Beispiel-Code, wie das ganze funktioniert:
( Achtung, der Code ist unvollständig und somit nicht lauffähig! )


namespace Arengu
{
 public class Arengu : Microsoft.Xna.Framework.Game
 {
  public ScreenManager Screen;
  
  public Arengu()
  {
   Screen = new MainMenu();
   Screen.game = this;
   Screen.graphics = graphics;
   Screen.Content = Content;
  }
  protected override void Initialize()
  {
   Screen.Initialize();
  }
  protected override void LoadContent()
  {
   Screen.spriteBatch = spriteBatch;
   Screen.LoadContent();
  }
  protected override void UnloadContent() { }
  protected override void Update(GameTime gameTime)
  {
   Screen.Update(gameTime);
   base.Update(gameTime);
  }
  protected override void Draw(GameTime gameTime)
  {
   Screen.Draw(gameTime);
   base.Draw(gameTime);
  }
 }
 public class ScreenManager
 {
  public Game game;
  public GraphicsDeviceManager graphics;
  public SpriteBatch spriteBatch;
  public ContentManager Content;
  public int width, height;

  public virtual void Initialize() { }
  public virtual void LoadContent() { }
  public virtual void UnloadContent() { }
  public virtual void Update(GameTime gameTime) { }
  public virtual void Draw(GameTime gameTime) { }
 }
 public class MainMenu : ScreenManager
 {
  public MainMenu() { } // Konstruktor Stuff
  public override void Initialize()
  {
   base.Initialize();
  }
  public override void LoadContent() { } // Lädt benötigte Objekte   
  public override void UnloadContent() { }
  public override void Update(GameTime gameTime) // Abfragen, etc.
  {
   base.Update(gameTime);
  }
  public override void Draw(GameTime gameTime) // Alles zeichnen
  {
   spriteBatch.Begin();
   spriteBatch.End();
  }
 }
}

WindowManager???
Der WindowManager sorgt dafür, dass einzelne Elemente eines Fensters bereitgestellt werden und gezeichnet, sowie abgefragt werden ( auf Tastendruck oder Mausklick ).
Geplante Elemente:
  • Buttons
  • Input-Felder
  • Checkboxen
  • Label
  • Evtl. Listen ( wahrscheinlich erst am Ende )

Das momentane Hauptmenü von Arengu.
Im Hintergrund sieht man eine der
vielen Nebelschwaden, die vorbeifliegen

Eine herunter zu ladende Version wird es dann geben, wenn man die ersten Maps laden kann, was jedoch noch ein wenig dauern könnte. Bis dahin, werde ich euch auf dem laufenden halten, was die Funktionen etc. angeht.

mfg
Hauke

Samstag, 19. Oktober 2013

MapEditor Beta: 0.1.4 Erster BugFix

Das fängt ja gut an!
Die manuelle Positionierung von Texturen funktionierte nicht richtig.
Habs schnell behoben und neu für den Blog und auf SourceForge hochgeladen.

Tut mir leid wegen eventueller Frustration :(

mfg
Hauke

Freitag, 18. Oktober 2013

MapEditor Beta: 0.1.4 Zoom und Sprachdateien

Hallo ihr alle da draußen,

schon nach neun Tagen hab ich die neue Version des Map-Editors fertig. Die Fülle an neuen Funktionen hält sich jedoch dementsprechend in grenzen.
Die neuen Features sind:

  • Zoom im Test-Modus implementiert
  • Zoom im Collision-Manager implementiert
  • Sprachdateien implementiert ( momentan nur Deutsch und Englisch )
  • Einstellungsdialog für die Umstellung der Sprache

Sprachdateien erstellen:
Wenn ihr eine andere Sprache außer Englisch und Deutsch könnt, dann wäre es super, wenn ihr eigene Sprachdateien erstellt, das geht relativ einfach. Dadurch können wir ein möglichst breites Publikum ansprechen um viele Leute für unser Projekt zu begeistern. ( hier geht zur Anleitung )

Wie es weiter geht:
Erstmal müssen wir ein wenig planen, wie wir einzelne Sachen genau umsetzen. Dabei geht es vor allem um Interaktionen mit der Spielwelt, also von Quests über einfache Gespräche mit Leuten bis hin zu Kleinigkeiten wie das öffnen einer Truhe oder ähnliches.
Das alles muss geplant werden und dementsprechend der Map Editor angepasst werden. Das ganze werden Hendrik und ich machen, während Sebastian und schöne neue Grafiken macht, die wir dann auch noch in den Map Editor einbringen werden.
Es steht uns also eine Menge Planerei bevor, aber ich werde hoffentlich dran denken immer mal wieder Infos zu posten ( guckt da auch öfters mal bei Twitter nach, da ich dort öfters was poste ).

mfg
Hauke

Mittwoch, 9. Oktober 2013

MapEditor Beta: 0.1.3 Erleichterte Bedienung, mehr Kollisionen, weniger Bugs

Hallo liebe Leute,

endlich ist es mal wieder so weit, die nächste Version des Map-Editor ist da!

Was bietet 0.1.3 an neuen Features?
Zunächst wurden viele Bugs behoben, die in 0.1.2 noch auftraten, was so ziemlich die meiste Zeit in Anspruch genommen hat. Des weiteren habe ich die Bedienung (hoffentlich ;) ) vereinfacht, dadurch, dass ich viele Dinge schneller erreichbar gemacht habe ( z.B. zum löschen einer Textur, kann man sie anwählen und dann einfach "ENTF" drücken, schon ist sie weg ).
Hier ist eine Liste mit allen neue Features ( die Bugs habe ich mal lieber nicht gezählt ;) ):
  • Bedienung
    • Texturen auswählen ( Rechtsklick ) und mit ENTF entfernen
    • Nach Eingabe von Manuellen Verschiebungs-/Skalierungswerten kann man einfach mit ENTER bestätigen ( vorher nur über "OK"-Button )
    • Nachfrage nach dem Drücken des RESET-Buttons ( Ja/Nein Nachfrage )
    • Eingabe von Kommas im Edit-Feld sind möglich
    • Der "Collision: ON/OFF"-Button im "Eigenschaften" Bereich funktioniert endlich
    • Kein Zoom im Test-Modus mehr ( vorläufig, da es nicht richtig funktionierte :( )
  • Anzeige
    •  Im TEX-Modus wird bei verschobenen Texturen der Ursprungsort angezeigt
  • Daten
    • Mehr Kollisionsdaten ( für alle Bäume, das Zelt und den Grabstein )
Das kommt in der nächsten Version:
In der Version 0.1.4 kommen Sprachdateien, das heißt man kann den MapEditor auch in anderen Sprachen anbieten, da ich als Fremdsprache nur Englisch habe ( und nur Englisch und Latein gelernt habe ;) ), biete ist lediglich eine englische Version an. Beschreibung zum erstellen eigener Sprachdateien lege ich jedoch bei, bitte schickt mir die Dateien dann, damit ich sie dann zum Download bereitstellen kann, bzw. sie in der nächsten Version gleich mit einbinden kann!
Des weiteren behebe ich die Fehler beim Zoom im Test-Modus, sodass ihr da wieder Zoomen könnt.
( mehr/aktuellere Infos findet ihr unter "Downloads" bei der jeweiligen Version ).


Zum Downloadbereich
Direktkdownload
Zur SourceForge Seite

Bitte schriebt mir, was nicht funktioniert / was ich besser machen kann ( s. "Kontakt" ).

mfg
Hauke

Dienstag, 6. August 2013

Arengu auf Sourceforge

Um das gesamte Projekt ein wenig zu professionalisieren und es auch ein wenig bekannter zu machen, habe ich mich bei Sourceforge angemeldet und dort dann Arengu eingetragen.


Ändert sich etwas?
Nein.
Alle Versionen können nun sowohl von Sourceforge, als auch vom normalen Arengu-FTP heruntergeladen werden.
Auch wenn man bei Sourceforge einen Blog erstellen kann, werde ich das nicht tun, sondern hier bei Blogspot bleiben.


Hier die wichtigsten Links:
Zum Projekt
Zumden Map-Editor Files