Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

CodeBase

Treue Seele

  • »CodeBase« ist der Autor dieses Themas

Beiträge: 98

Wohnort: Österreich -> Salzburg

Beruf: Datenbank Entwickler

  • Private Nachricht senden

1

08.07.2010, 09:28

welche Scriptsprache benutzt ihr

Hallo Leute,

ich möchte mein Spiel ein bisschen dynamischer gestalten und das ganze aufbauen und laden der models ins scripts verlageren. Damit würde ich das Spiel ein bisschen schlanker machen und hätte mehr freiheiten. Jetzt meine Frage welche Sciptsprache benutzt ihr um das zu machen ? Schreibt ihr eure eigene ? Ich habe zwar versucht sowas zu machen und ein testfile geschrieben in dem ich ein leichtetes Hello world geschrieben habe (also mit eigener Syntax), das habe ich dann in einem TestProgramm geladen und durchgeparst. Je nachdem was geschrieben wurde habe ich halt funktionen aufgerufen die das erledigen. Also wenn ich in meine Script geschrieben habe

C-/C++-Quelltext

1
print("Hallo")
habe ich ein cout aufgerufen

C-/C++-Quelltext

1
cout << text;
wobei text das stück zwischen "" war.

Ist das so korrekt oder entwickelt man eine Scriptsprache anders?

lg

2

08.07.2010, 10:23

Wie hast du denn vor Variablen, schleifen und if abfragen umzusetzen? Wie parst du momentan deinen Quelltext?

Also am "sinnvollsten" würde sich wohl eine Scriptsprache wie folgt entwickeln lassen:
Du baust dir zunächst eine Art Assembler den du in ByteCode übersetzen kannst. Wichtig wäre ein Stack, damit Funktionen usw. möglich sind. Ein Heap kann auch nicht schaden...
Dann baust du dir eine Hochsprache inkl. Übersetzer, die in deinen Assembler übersetzt werden kann (wenn du eine Hochsprache haben willst)... Ich habe bis jetzt allerdings nur eine "Art" Assembler gebaut (ohne Stack) den ich in so Zustände eines Zustandgraphen gepackt habe. Das ganze war dann aber eher ein Reinfall. Den Rest meiner Empfehlungen habe ich aus dem schon recht alten Buch "Game Scripting Mastery".

Wenn du Spiele machen willst, dann nimm was vorgefertiges, wenn du lernen willst, wie scriptsprachen funktionieren, mach ruhig was eigenes :).
Aber zu lernen wie man Frameworks einbindet ist auch immer ziemlich sinnvoll. Ich würde daher mal JavaScript ausprobieren (nur so als interessantes Experiment, habe das noch nie gemacht) - Google hat da was http://code.google.com/intl/de/apis/v8/ und Mozilla auch http://www.mozilla.org/js/spidermonkey/. Wäre doch mal eine interessante Alternative zu Lua oder so...

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Chromanoid« (08.07.2010, 10:36)


CodeBase

Treue Seele

  • »CodeBase« ist der Autor dieses Themas

Beiträge: 98

Wohnort: Österreich -> Salzburg

Beruf: Datenbank Entwickler

  • Private Nachricht senden

3

08.07.2010, 10:25

Naja das weiß ich noch nicht :)

Drum frage ich ja ob ihr das auch selber macht oder ob ihr da bestehende hernimmt und wenn ja welche ?

lg

4

08.07.2010, 10:37

hab noch mal editiert... ;)

Viele nehmen Lua. Ich würde mal einfach um mal was auszuprobieren die o.g. Javascript teile nehmen...

Thoran

Alter Hase

Beiträge: 520

Wohnort: Stuttgart

Beruf: Senior Software Engineer

  • Private Nachricht senden

5

08.07.2010, 10:41

Ich benutze Angelscript und entwickle keine eigene (Macht Spiele und keine Engines :) )

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

CodeBase

Treue Seele

  • »CodeBase« ist der Autor dieses Themas

Beiträge: 98

Wohnort: Österreich -> Salzburg

Beruf: Datenbank Entwickler

  • Private Nachricht senden

6

08.07.2010, 10:44

Hallo

danke für die Antworten.
Hmm ich möchte schon auch gerne lernen wie Scriptsprachen funktionieren. Das ist schon recht interessant. Ich denke mir einfach dadurch komme ich auch die ganze Thematik ein bisschen tiefer rein.

Ich habe mir gedacht das ganze am Anfang ein bisschen leichter aufzuziehen und mal "nur" ein paar befehle zu verstehen. Da ich dies vorab mal für mein Spiel machen will, brauche ich da noch nicht soviel. Ich möchte hier mal die möglichkeit schaffen abläufe im Spiel etwas dynamischer zu gestalten.

auch es leichter zu machen neue Spielinhalte hinzuzufügen (neue level zb.) werde mal schauen ob die tage mal was zeigen kann :) fals es auch interessiert.

lg

7

08.07.2010, 11:29

Also dann würde ich mal mit so eine art assembler anfangen.
Parse deine Scriptdatei in einen Array - z.b. bei \n getrennt. Dann trenne die Kommandos z.b. mit ' ' auf.
Das erste element ist das kommando, der Rest die Parameter. Bei Strings musst du dir fürs Parsen vielleicht noch was ausdenken - und sprungmarken solltest du ebenfalls möglich machen...
Neben Werten müssen deine Kommandos auch Registernamen entgegennehmen können.
An Kommandos brauchst du dann Sachen wie "move Register, Wert/Register", "jumpIfEqual wert/register, wert/register, sprungmarke", "add register, Wert/Register" usw. lass dich einfach von Assemblerbefehlen inspirieren...
Register sind in diesem Fall einfach fest vorbereitete Variablen für deine Variablen-Objekte...

Hier dann mal wie ein einfaches Hochzählen einer Variable aussehen könnte (Es gibt nur ein register A):

move A 0
output A
schleifeAnfang:
add A 1
output A
jumpIfLess A 100 schleifeAnfang

Um das ganze schnell lauffähig zu machen könntest du die Kommandos erst mal String-Listen mit ihren Parametern entgegen nehmen lassen und einfach eine getWert Funktion innerhalb eines VM-Objektes bauen, die anhand des Strings aus einem Register die Variable holt oder eine Variable generiert... Beim Parsen packst du die Sprungmarken einfach inkl. kommandoindex in eine Hashmap. Dann brauchst du nur eine Funktion jumpTo(string marke) in deiner VM, die dann einfach in die Hashmap schaut und den Kommandoindex entsprechend zuweist. Ein Programm führst du nämlich mit diesem Kommandoindex aus, in dem du einfach solange der kommandoindex nicht die letzte zeile erreicht hat, das Kommando an der entsprechenden Stelle ausführst und dannach um eins höcher zählst....

Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von »Chromanoid« (08.07.2010, 12:10)


Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

8

08.07.2010, 11:39

Ich persönlich bin ja ein fan von python geworden, da man damit recht schnell und sehr schön einheitlich entwickeln kann, auch wenn es da natürlich ebenfalls ecken und kanten gibt.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Mastermind

unregistriert

9

08.07.2010, 12:17

Ich denke es ist bei der Entwicklung einer Scriptsprache mehr als angemessen auf Tools wie [J][F]lex und bison/yacc/"wie auch immer das Java Teil heißt" zurückzugreifen und das Wissen was man sich dabei aneignet ist geringfügig Praxistauglicher als bei einem eigenen Hack.

Wer es unbedingt wissen will, der kann ja versuchen flex/yacc nachzubauen (was im Prinzip auch keine Raketentechnik ist). Hier sehe ich den Vorteil dass man gezwungen ist sich etwas mit der Theorie auseinanderzusetzen.

Einfach mal irgendwas zusammenhacken scheint mit der am wenigsten Nutzen stiftende Weg zu sein.

10

08.07.2010, 12:57

naja für diese tools braucht man doch aber trotzdem erst mal eine rudimentäre byte-code-taugliche maschinensprache oder nicht? die helfen einem doch nur dabei eine hochsprache zu parsen... (oder?)

ansonsten stimme ich dir natürlich zu...

Werbeanzeige