Thema: Delphi OOP und RPG

Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#5

Re: OOP und RPG

  Alt 3. Nov 2005, 20:35
Hey,
OOP ist eigentlich mehr als gut geeignet für RPGs, schließlich ist die Idee dahinter, das reale Leben (was auch immer das sein soll) abzubilden.
Prinzipiell ist jedes einzelne Objekt (Avatar, NPC, Item, Gebäude, ...) ein eigenes Objekt. Du solltest diese in gemeinsame Gruppen (z.B. Avatar und NPC) stecken. Wenn etwas gemeinsame Eigenschaften hat, gehört es in eine Gruppe (und die gemeinsamen Eigenschaften in eine Basisklasse von der alle Mitglieder erben).
So kannst du auch später leicht neue Dinge deinem RPG hinzufügen.
Was Byte vs. Integer (Cardinal) angeht, solltest du gut überlegen ob es sich lohn die Wertvollen 3 Byte einzusparen. Immerhin wird deine CPU intern eh mit 32Bit arbeiten und somit sind Integers (und Cardinals) immer das Perfomateste.
Ein wichtiges Prinzip ist es, dass du dir von Anfang an auch eine Möglichkeit überlegst, wie du auf Ereignisse reagieren möchtest. Wenn sich z.B. die Stärke eines Spielers ändert, solltest du nicht direkt nur den Wert Strength (o.ä.) ändern, sondern dies über Propertys tun. Diese haben den Vorteil, dass sie mit einer Methode verknüpft werden können. Und in eben dieser kannst du auf Veränderung reagieren.
An sich solltest du auch eine Art Event-Listener-Modell einplanen. Am einfachsten (schönsten) geht dass, indem du zu allen Ereignissen ein Interface oder eine abstrakte Klasse (also immer eine für Zusammengehörige) vorsiehst. In diesen werden dann zu jedem Ereignis Methoden definiert, die als Argument das eingetretene Ereignis bekommen. Nun kannst du in zentraleren Klassen, die das Ereignis auslösen Listener registrieren, die immer benachrichtigt werden, wenn ein Ereignis auftritt. Dazu müssen die Objekte, die eine Nachricht erhalten wollen, das entsprechende Interface implementieren (oder von der abst. Klasse erben) und sich bei der zentralen Klasse als Listener registrieren.
Tritt nun ein Ereignis ein, kann die Klasse einfach jedem der Listener über die entsprechende Methode mitteilen, dass ein Ereignis eingetreten ist (und die Parameter übergeben).

Wie du etwas speicherst, kommt ganz drauf an, was du alles speichern möchtest und was nicht. Du solltest alles was Variablen eines Objekts sind in einen großen Stream schreiben (der wahrscheinlich gar nicht so groß wird). Dann gibt es auch noch gute Komponenten, die es dir erlauben Files zu packen. Gibt auch da viele Möglichkeiten.

Ich glaube das ist schon mal (ein stark vereinfachter) erster Einblick, was du alles mit OOP machen kannst. Aber (auch wenn es hier noch sehr abstrakt ist) ein RGP ist halt doch ein sehr umfangreiches Projekt! Also nicht zu groß planen, Qualität sollte immer Vorzug haben und dann ist etwas kleines auch leichter zu erweitern und macht auch viel mehr Spaß!
Den wünsch ich dir auch,

Gruß Der Unwissende
  Mit Zitat antworten Zitat