Du bist nicht angemeldet.

Werbeanzeige

botlin

Treue Seele

  • »botlin« ist der Autor dieses Themas

Beiträge: 139

Wohnort: Berlin

Beruf: Fachinformatiker für Anwendungsentwicklung, Student Internationale Medieninformatik

  • Private Nachricht senden

1

17.02.2011, 08:33

Scripte in Spielen

Hi Leute,
ich denk der Titel sagt schon worum es geht.

Ich habe mich kürzlich mal mit Scripten auseinander gesetzt und LUA in C# verwendet.
Ich wollte einfach mal was algemeines fragen was die Planung betrifft.

Angenommen man will ein Spiel richtung Action Adventure oder RPG entwickeln, ist es dann Sinvoll die Engine des Spiels so aufzubauen das man den ganzen Spielablauf über Scripte steuern kann? Oder sollte man Scripte vielleicht nur auf Teile des Spiels beschränken wie zum Beispiel das Verhalten von Spielfiguren?
Ich hab bissher noch nie Scripte verwendet und wollte mir einfach mal ein paar Ratschläge und Tipps einholen wie man Scripte am besten verwenden sollte?
Wie handhabt ihr das so?

BlueCobold

Community-Fossil

Beiträge: 10 874

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

17.02.2011, 10:03

Bei mir sind letztendlich alle Verhalten von irgendwelchen Objekten/Figuren immer basierend auf einer Art Script.

Generell möchte ich Dir aber folgendes an's Herz legen: Make Games, not Engines.
Speziell wenn Du allein arbeitest, solltest Du eventuell darüber nachdenke eine fertige (Game-)Engine zu verwenden und dein Game darauf aufzusetzen. Auch damit wirst Du noch genug Arbeit haben und der Skript-Support ist damit ebenfalls schon geliefert.

Die Frage bleibt: "Was heißt bei dir >der ganze Spielablauf<"? Heißt das nur die KI oder auch die Grundlagen wie Physik, Graphik/Animationen und Co?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

botlin

Treue Seele

  • »botlin« ist der Autor dieses Themas

Beiträge: 139

Wohnort: Berlin

Beruf: Fachinformatiker für Anwendungsentwicklung, Student Internationale Medieninformatik

  • Private Nachricht senden

3

17.02.2011, 10:30

Naja mit Spielablauf mein ich eben solche Sachen wie zum Beispiel: Wie reagiert Charaker A wenn man im Dialog mit antwort B antwortet oder Wenn ich das Level 1 abgeschlossen habe welches soll dann als nächstes geladen werden oder was Passiert wenn ich Object C Aufhebe und versuche es zu Verwenden. Aber mich interessieren auch Sachen Wie Tastenbelegung und Grafikeinstellung.
Zum Beispiel mit mit welchen Tasten lässt sich die Figur steuern. Und zu Grafikeinstellungen zum Beispiel: ist das Fenster Im Fullscreen Modus oder nicht? Und wenn nicht wie groß soll den das Fenster sein?.

Den Spruch "Make Games, not Engines" hab ich hier schon oft gelesen.
Aber ich habe halt den drang zuwissen wie so ein Spiel im Hintergrund arbeitet und ich denke das geht vieleicht nicht nur mir so.
Was ich aber durchaus mal machen möchte ist mir mal ne Gameengine anzusehen und zu schauen wie man mit ihr arbeitet.
Einfach um ein Bild zu bekommen wie es mal aussehen könnte wenn man sowas selber schreibt.
Hast du da eventuell was geeignetes was die Gameengine betrifft?

Aber habe ich den gedanklichen Ansatz so Richtig interpretiert, das die Engine nur Funktionen zur verfügung stellt und mit Hilfe von Scripten und der bereitgestellten Funktion der Engine das Spiel an sich beschrieben wird?

Thoran

Alter Hase

Beiträge: 510

Wohnort: Stuttgart

Beruf: Senior Software Engineer

  • Private Nachricht senden

4

17.02.2011, 10:38

Mein Verständnis vom Einsatz von Skripten ist, diese nur dort einzusetzen wo Spielfunktionen, wie z.B. Gameplay, oft geändert werden müssen, oder diese nicht zur Programmierzeit festgelegt werden sollen. Also alles was Gamebalancing angeht, aber auch Charakterdialoge, die zum Beispiel von einem Anderen als dem Programmierer erstellt werden.

Thoran
Mein Entwicklertagebuch
Aktuelles Projekt: Universum Espionage
Eingestellt:Spieleengine SilverCore
Organisator "Spieleentwickler Stammtisch Stuttgart"

BlueCobold

Community-Fossil

Beiträge: 10 874

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

17.02.2011, 12:37

Naja mit Spielablauf mein ich eben solche Sachen wie zum Beispiel: Wie reagiert Charaker A wenn man im Dialog mit antwort B antwortet oder Wenn ich das Level 1 abgeschlossen habe welches soll dann als nächstes geladen werden oder was Passiert wenn ich Object C Aufhebe und versuche es zu Verwenden. Aber mich interessieren auch Sachen Wie Tastenbelegung und Grafikeinstellung.

Während ich die ersten Sachen mit den Dialogen, Reaktionen, Level-Abfolgen (hierbei kann man sicher streiten) durchaus als Skripte entwerfen würde (und somit Thoran in der Hinsicht nur zustimmen kann), so kann ich bei Tastaturbelegung und Grafikeinstellungen irgendwie keine sinnvolle Verwendung für Skripte entdecken, da diese Dinge eigentlich nur Optionen sind und keine wirklichen Änderung von Code bedürfen, der irgendwie dynamisch geladen werden muss (was auch wieder in das fällt, was Thoran schon theoretisch umschrieben hat).

Dass diese Einstellungen durch Skripte änderbar sein könnten (statt nur über Menüs oder Config-Files), das ist wieder eine andere Frage und sollte durchaus eine Überlegung wert sein.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

6

17.02.2011, 12:47

BTW Wenn du schon C# benutzt, kannst du auch C# für deine Scripte nutzen oder am Besten gleich einfach ein System aufbauen, bei dem du Assemblies dynamisch integrieren kannst. Das würde dir wahrscheinlich viel boilerplate code sparen.
Beispiel RPG mit Dialogen: Ich würde es mit Assemblies machen und höchstens für Dialogtexte eine ultra rudimentäre Scriptsprache basteln. Vielleicht einfach eine Dialog-Schnittstelle/abstrakte Dialogklasse basteln. Es gibt dann eine Implementierung, die die rudimentäre Scriptsprache verarbeiten kann und weitere die man direkt in C# implementieren kann. Für NPCs speichert man dann einfach den zu verwendenden Klassennamen der Dialog-Implementierung ggf. mit Constructor-Parametern wie eine Ressourcen-ID für den Miniscript bei der "ScriptedDialog"-Implementierung in der Leveldatei oder wo auch immer.
Als Einstiegspunkt für das laden von Assemblies: http://msdn.microsoft.com/de-de/library/….80).aspx#Y1100

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Chromanoid« (17.02.2011, 13:01)


BlueCobold

Community-Fossil

Beiträge: 10 874

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

17.02.2011, 13:00

C# als Skriptsprache für C# hat sowohl Vor- und Nachteile.

Nachteil:
Ein Addon-Entwickler kann immer auf alles direkt und vollständig zugreifen, was laut der Assembly offen gelegt wird.

Vorteil:
Ein Addon-Entwickler kann immer auf alles direkt und vollständig zugreifen, was laut der Assembly offen gelegt wird.

;)

Ich persönlich verwende für meine C#-Anwendungen Plugins über nachladbare Assemblies und für Dialoge und sowas hab ich einen Menü-Editor.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

8

17.02.2011, 13:02

Nachteil:
Ein Addon-Entwickler kann immer auf alles direkt und vollständig zugreifen, was laut der Assembly offen gelegt wird.
Wenn das ganze so gut ausgetüftelt ist wie bei Java könnte man den Zugriff auch einschränken... Bin leider nicht so eingearbeitet in .Net.

für Dialoge und sowas hab ich einen Menü-Editor.
Wie gesagt eine Implementierung die Dateien von einem Editor lesen kann und mögliche weitere die ganz andere Sachen machen können - so hat man die volle Freiheit. Das ist ja das schöne daran, wenn man Verhalten über Klassennamen identifizieren kann. Reflexion ftw

BlueCobold

Community-Fossil

Beiträge: 10 874

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

17.02.2011, 13:18

Kann ich nur zustimmen. Reflexion ist großartig und ich verwende es sehr sehr gern um neue Typen dynamisch hinzuzufügen oder aus Dateien zu laden. Ich speichere zwar keine Klassen-Namen, sondern nur IDs, lasse diese aber zur Laufzeit per Reflexion zusammen sammeln. Hat den Vorteil, dass man weniger tippen muss und nie irgendwelche Typen irgendwo fest bei irgendeiner Factory anmelden muss. Nachteil ist offensichtlich, dass IDs kryptisch sind und ein Entwickler erst alle Typen manuell raussuchen muss, wenn er mal *alle* beteiligten kennen will.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

10

17.02.2011, 13:43

Wenn man sich nen Editor baut, sollte man das vielleicht sowieso über dropdown-Boxen machen. Man kann ja leicht ermitteln welche Klassen überhaupt infrage kommen. Und was man dann genau speichert um die Klasse zu identifizieren ist ja zweitrangig...

Werbeanzeige