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

Freitag, 26. Juli 2013

MapEditor Beta: 0.1.2 bietet viele neue Features

Endlich in der Beta:
Der Map-Editor



Wie versprochen hier die Version 0.1.2. Der Map-Editor ist nun in der Beta-Phase, also bitte ich euch alle ihn schon mal zu testen.
Ich weiß, dass das Angebot an Texturen sehr gering ist, dennoch kann man schon mal die ein oder andere kleine Landschaft gestalten.

Direkt zum Download

Bisherige, wichtige Features:
  • Map erstellen, speichern und laden
  • Auswählen von Leveln ( Level sind vergleichbar mit Ebenen in Photoshop/Gimp )
  • Fülleimer und Radiergummi zum erleichterten editieren der Map
  • Individuelles Skalieren von Texturen ( Position und Größe )
  • Test-Modus: Die erstellte Map so, wie sie ist testen und gucken ob alles passt ( NEU )
  • Erweiterte Bedienung durch Tastatur ( s.u.: Steuerung )
Steuerung:
  • Normaler Modus
    • W, A, S, D - Wechseln der Textur um linken Bereich
    • TAB - Level wechseln ( immer einen höher; 6 --> 1 )
    • 1-6 - Level auswählen
    • Linke Maustaste - Textur setzen / Löschen ( zum löschen zuerst auf "Radiergummi" klicken )
    • Rechte Maustaste - Textur markieren ( zum manuellen Editieren im rechten Bereich )
    • Mausrad - Zoom
  • Test-Modus
    • W, A, S, D - Bewegen des Charakters ( hier: rotes Rechteck )
    • ESC - Beenden des Test-Modus
    • Mausrad - Zoom
Beachte:
  • Radiergummi, Fülleimer, sowie die Kombination aus beidem ist nach einmaligem klicken mit der linken Maustaste deaktiviert. 
  • Bei Objekten, bei denen der Spieler vor oder dahinter sein kann, macht es Sinn diese auf Ebene 3 zu platzieren, da auf den anderen Ebenen keine Berechnung dazu stattfindet!
  • Der Netz-Button: Der Netz-Button hat drei Modi ( an, aus & TEX ). Der TEX-Modus Umrahmt nur die auf der ausgewählten Ebene befindlichen Texturen. Umrahmungen der Felder und der Texturen anderer Ebenen werden nicht angezeigt! 
Map-Editor mit TEX-Anzeige ( s.o. ).
Map-Editor im Test-Modus.
Das kommt demnächst:
Als nächstes sind Animationen fällig, da heißt einfach nur, dass man Texturen hat, die ihr Bild nach gewisser Zeit ändern. Hoffentlich ist das einfacher als die Positions-Geschichte :/
Danach werden die hoffentlich reichlichen Rückmeldungen bearbeitet, das heißt Bugs fixen, eventuell neue Funktionen aufnehmen, alte verbessern, etc.

Zum Downloadbereich
Direktkdownload 

Bitte schriebt mir, was nicht funktioniert / was ich besser machen kann.

mfg
Hauke

Donnerstag, 25. Juli 2013

Map-Editor: Ein großer Schritt nach vorne!

Beim Map-Editor habe ich nun eine große Hürde mit viel mathematischer Rechnerei hinter mir:
Die Überprüfung ob der Charakter vor-, oder hinter einem Objekt ( einem Baum, Haus, etc. ) steht. Quasi das 3 dimensionale an unserem 2D Spiel ;).


Wie genau funktioniert das nun?
Es wird zunächst eine Liste erstellt, die nach der Höhe der unteren Kante der Texturen geordnet ist.
Die untere Kante deswegen, weil diese ja quasi den Boden berührt.
Der Spieler bekommt hingegen eine Nummer zugeteilt, die besagt nach der wievielten Textur das Bild des Spielers gezeichnet werden soll.
Beim zeichnen, wird die oben genannte Liste einfach abgearbeitet und der Spieler an der passenden Position dazwischen gezeichnet.

Schwierigkeiten bei der Umsetzung:
Zunächst habe ich versucht einfach die Höhen der unteren Kante in eine Liste einzutragen und die dann per "QuickSort" ( schneller Sortieralgorithmus ) zu sortieren. Dabei hatte ich dann das Problem, dass ich die Nummer der jeweiligen Textur ( jede Textur hat eine eindeutige ID ) nicht mit sortiert wird.
Nach ein paar Anläufen hatte ich es dann soweit, jedoch war die Liste verkehrt herum, sodass die Texturen dementsprechend falsch gezeichnet wurden.
Zunächst hatte ich die Schleifen einfach andersherum laufen lassen ( nicht von 0 bis x, sondern von x bis 0 ), jedoch war das keine optimale Lösung. Nach mehreren Versuchen bin ich dann auf die obige gekommen.

Video:
Hier ein kleines Video, welches zeigt, wie das ganze dann in echt aussieht. Nichts besonderes, es hat aber eine Menge Arbeit gekostet!
Mehr Videos zum Map-Editor gibt es eventuell in Kürze.

Bilder:
Ein paar Bilder zum Map-Editor gibts jedoch schon im Vorraus ;)
Zum Bildarchiv

Version 0.1.2 des Map-Editors:
Nachdem ich ein paar Bugs behoben habe, lade ich die nächste Version des Editors hoch.
Als nächstes kommen dann noch Animationen ( z.B. Lagerfeuer, bewegende Lampen, etc. ), sowie noch kleinere Funktionen, die die Tools ( Füllwerkzeug, Radierer, etc. ) des Editors betreffen.

mfg
Hauke