Sonntag, 13. April 2014

Item- & Inventar-System

So, endlich habe ich das Item-System fertig, eigentlich wollte ich schon gestern  diesen Post verfassen, es kamen jedoch mehrere Bugs dazwischen. Nun jedoch funktioniert alles einwandfrei :)

Zum Inventar-System:
So sieht der GameScreen mit Inventar aus.
Momentan gibt es zwei Getrennte Inventar-Bereiche:
"Inventar" ( das normale ) und "Rucksack",
dies kann man sich später im Spiel durch
den Erwerb eines Rucksackes dazukaufen.

Inventare bestehen standardmäßig aus 10x10 Feldern, den denen die Items gespeichert werden.
Inventare werden durch die Klasse Inventory gebildet und als Array gespeichert. 

Verschieben von Items:
Jedes verschobene Item wird zunächst global ( also Inventar unabhängig ) erfasst und wenn es über einem Inventar wieder losgelassen wird, dort auch eingefügt ( sofern der Platz frei ist ).

Temporäres Inventar:
Wenn man Items außerhalb eines Inventares loslässt, so wird es in das so genannte temporäre Inventar verschoben.
Dies dient dazu z.B. aufgenommene Items ersteinmal zwischen zu lagern um sie dann richtig aufzunehmen. Auch kann man damit ein vollen Inventar leicher sortieren, indem man zwischenzeitlich Platz schafft.
Man sollte jedoch beachten, dass das temporäre Inventar beim laufen geschlossen wird!

Aufgenommene oder weggeworfene Items
erscheinen zunächst im "Temporären-Inventar".
Vergleich von Items:
Wenn man zwei Items vergleichen möchte, so kann man ein Item anklicken und mit der Maus über ein anderes gehen, dann werden diese direkt miteinander verglichen.
Die Werte des zuletzt ausgewählten Items stehen dabei in Klammern.
Schlechtere Werte werden rot und bessere grün angezeigt.

Items können direkt miteinander verglichen werden.
Vergleiche können Inventarübergreifend geschehen,
zudem kann man den Inventar-Bereich
nach oben/unten verschieben.











Features im Überblick:
  • Verschieben ( inner- und außerhalb des Inventars )
  • Temporäres Inventar zum Aufnehmen und sortieren von Items
  • Vergleich von Items
  • Mehrere Inventare, sowie die Möglichkeit neue durch Kauf dazu zu erwerben




Item-System:

Arten von Items:
Bisher gibt es 17 Kategorien an Items:
  • Einhand-/Zweihandwaffe ( Klinge )
  • Bogen, Pfeil
  • Axt, Streitkolben ( beides Zweihand )
  • Handschuh
  • Armpanzer
  • Kopfbedeckung
  • Brust- & Beinpanzer
  • Schuh
  • Schild
  • Rune, Trank
  • Schmuck, Kleidung
Speichern und Verwalten: 
( verändert übernommen von vorherigem Post )
Alle Items werden bei Spielstart einmal erstellt und in der Klasse ItemLibrary als Array gespeichert, dadurch wird weniger Speicherplatz benötigt als wenn man jedes Item im Spiel einzeln erstellt. Jedes Item hat somit eine Nummer ( ID = Index des Arrays ) mit der man dieses Item aufrufen kann ( um es zu zeichnen, etc. ).
Die Items ( bzw. deren IDs ) werden daher als Integer-Liste - Inventory.Items<int> - gespeichert, wo auch die Position der Items im Inventar ( welches Feld ) als Liste gespeichert ist ( Inventory.ItemPosition<Vector2> ). 
Gezeichnet wird jedes Item dann wieder über die Item Klasse ( Aufruf durch ItemLibrary.Item[Inventory.Items[ItemNumber]].Draw(SpriteBatch);, so einfach ist das ;) ).
Eventuell steige ich später auf eine Datenbank oder andere externe Dateien um ( um eigene Items zu ermöglichen ) aber zum testen bleibt es erstmal intern.

Bei Eigenschaften der Items erscheint ein Popup.
Eigenschaften von Items:
Jedes Item hat dieselben Eigenschaften!
Eine Hose hat also, genau wie ein Schwert, die Eigenschaft "Schaden", wobei der Wert bei 0 liegt ;)
Insgesamt gibt es folgende Eigenschaften:
  • Kauf- & Verkaufpreis
  • Schaden
  • Rüstung
  • Extra Leben
  • Extra Mana
  • Extra Ausdauer
  • Extra Geschwindigkeit




Was als nächstes kommt:
  • Neues Hauptmenü ( neuer Hintergrund, Animation, Schrift, etc. )
    • Lademenü zum Laden eines Spielstandes
    • Einstellungen
  • Bereich für Spielerinformationen
  • Eventuell: Ein ins Spiel integrierter Map-Editor ( statt des momentan externen Editors ), bzw. zumindest der Anfang davon.

Über Kritik, Anmerkungen und generelles Feedback würde ich mich sehr freuen, vielen Dank!

mfg
Hauke

Kommentare:

  1. Wow da habt Ihr ja ne ganze Palette an funktionen fertig bekommen :) Das mit dem Temporären Inventar finde ich eine gute Idee. Kann sich der Charakter dann weiter bewegen oder wird es dann geschlossen und man legt die Gegenstände endgültig ab?

    Bin schon auf das nächste Release gespannt :)

    AntwortenLöschen
    Antworten
    1. nein es wird geschlossen dobald man losläuft, sonst hätte man ja zusätzlichen "kostenlosen" Platz für Items ;)

      Bis zum Release dauerts aber noch eine ganze Weile, da noch einige Sachen ( neues Hauptmenü und eventuell der Mapeditor ) noch kommen.

      Löschen
  2. Cool, dass du wieder mal weiter gemacht hast ;)

    AntwortenLöschen
    Antworten
    1. Danke, ich habe jedoch nicht "mal" weitergemacht, sondern mache konstant an Arengu weiter ( ich habe also nicht die ganze zeit nichts gemacht ) nur es dauert halt seine Zeit, bis man Erfolge erzielen kann.

      mfg
      Hauke

      Löschen
    2. Ah, ok, tut mir Leid. Hat ein bisschen so ausgesehen als hättest du eine große Pause gemacht und dann wieder eine Woche aktiv gearbeitet. Lass halt mal ein bisschen mehr von dir hören!

      Gleich noch eine Frage: Hast du vor, irgendein System zu entwerfen damit andere Leute Arengu erweitern können? Etwa ein System um benutzerdefinierte Quests oder Items einfügen zu können währe schon cool!

      Löschen
    3. Im Prinzip ja, ich weiß zwar noch nciht s genau wie ;), aber wenn dann erst in späteren Versionen. Ich weiß jedoch nicht ob ich Quests oder Maps, etc. ( also "größere" Sachen ) mit in das PlugIn-System einbringe. Eher dann Items, Dialoge, evtl. NPCs, Musik, Texturen, sowas eben. Wie genau dann aber ein "SDK" aussehen wird, weiß ich noch nicht ( wie gesagt, wenn dann kommt erst später ).

      mfg
      Hauke

      Löschen