JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=088f2b8f215b83a35ac256f4b4720c5cMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Purga - eine mini Scriptengine.
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Projekte
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Maxim
Senior JLI'ler



Anmeldedatum: 28.03.2004
Beiträge: 249

Medaillen: Keine

BeitragVerfasst am: 20.10.2007, 15:50    Titel: Purga - eine mini Scriptengine. Antworten mit Zitat

Einen guten Abend an alle JLIes Wink

Ich möchte hier mein aktuelles Projekt vorstellen:
Purga(rus: Schneesturm, Blizzard) ist eine mini Scriptsprache/Scriptengine. Ich habe aus Spaß angefangen eine Routine zu schreiben, mit der ich C++-Funktionen aus einem Script aufrufen wollte und habe schnell kleinere Erfolge erzielt. Die Routine funktionierte, doch war der Code nicht durchdacht und nicht erweiterbar, also habe ich mir überlegt mit dem neuen Wissen eine kleine Scriptspache zu schreiben. Es war von Anfang an nicht mein Ziel eine super Scriptsprache zu programmieren, die besser als Lua & Co. ist. Mir ging es viel mehr um eine einfache Benutzung und nicht zu letzt um Erfahrung und Spaß.
Mit Purga hoffe ich vor allem Programmieranfänger anzusprechen, die mit Lua oder anderen Scriptspachen überfordert sind und eine Scriptsprache mit einer einfachen Schnittstelle suchen.

Die Scriptengine befindet sich zurzeit in frühem Entwicklungsstadium und besitzt nur eine begrenzte Anzahl an Features und eine unbegrenzte Anzahl an Bugs ^^

Merkmale & Möglichkeiten:
- die Sprache ist case-sensitive, d.h. es wird zwischen Groß- und Kleinschreibung unterschieden.
- Anweisungen werden mit Semikolon abgeschlossen!
- 4 Variablentypen: int, float, string, bool
- Variablen aus Purga in C++ exportieren
- Einzeilige und mehrzeilige Kommentare
- Inkrementieren(var++Wink und Dekrementieren(var--Wink
- Scripts als String übergeben
- C++ Funktionen in Purga aufrufen
- C++ Variablen in Purga verwenden
- Purga Variablen nach C++ exportieren
- Standardinitialisierung von Variablen
- if (elseif, else), while, for
- Cache-Methode. Scripts können vor dem Ausführen „vorkompiliert“ werden.
- Rechnen mit Variablen + - * /
- Logische Operatoren: and or
- Vergleichsoperatoren: < <= > >= == !=
- Konstanten, auch vordefinierte z.B. pi
- String-Operatoren
- Escape-Sequenzen

Es gibt eine Einführung in Purga, die SteveKr freundlicherweise für mich geschrieben hat. In diese Einführung sieht man gut, wie leicht die Scriptspache zu verwenden ist.

Offizielle Seite zum Projekt:


Forum zum Projek (ohne Anmeldung)t: Purga-Forum

Direktdownloads:
Purga.rar Immer aktuelle Version
Purga_BETA.rar die nächste BETA-Version ( meistens besser, als die aktuelle version)

Ich freue mich schon über die vielen Kommentare und Bugreports Wink

MfG Maxim


Zuletzt bearbeitet von Maxim am 26.05.2008, 15:53, insgesamt 5-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 20.10.2007, 16:09    Titel: Antworten mit Zitat

Ich habe mir bisher nur die Tutorialseite angesehen, aber was da zu sehen war ist nicht von schlechten Eltern. Weiter so sehr schöne Arbeit.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 21.10.2007, 16:15    Titel: Antworten mit Zitat

ui da hast du aber ganz schön was hingestellt Wink ich guck mir das ggf noch mal genauer an, wenn ich was zeit finde

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 22.10.2007, 13:53    Titel: Antworten mit Zitat

Das klingt ja interessant Smile
(und erinnert mich an ein eigenes Projekt, das zur Zeit pausiert.)

Bin ich mal gespannt, was man damit anfangen kann =)
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 22.10.2007, 14:46    Titel: Antworten mit Zitat

so ich _habs_ mir mal genauer angeschaut, und ich finds immer noch gut Thumb Up Razz

nur eine sache zur Lesbarkeit: bei deinen Funktionen GetVariable und RegisterVariable benutzt du einmal Referenz (nicht ganz leicht zu sehen) und einmal const (denk ich ma) pointer. Ich würde das in dem Fall eher andersrum machen: Bei Funktionen die in die Variable schreiben einen Pointer (oder offensichtliche Referenz) und bei anderen die nur den Wert benötigen by-value übergabe (bzw. bei größeren Datenmengen dann const-ref). So ist das etwas schwer zu lesen welche Funktion was mit der Variablen macht, da das const nunmal nicht im Aufruf drin steht.

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 23.10.2007, 15:25    Titel: Antworten mit Zitat

Nicht schlecht. Das Test-Programm gibt bei mir nach Beenden eine Fehlermeldung aus(die typische bei Zeigerfehlern).
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Maxim
Senior JLI'ler



Anmeldedatum: 28.03.2004
Beiträge: 249

Medaillen: Keine

BeitragVerfasst am: 26.10.2007, 15:08    Titel: Antworten mit Zitat

ja, die fehlermeldung bekomme ich auch Wink
habe leider sehr wenig zeit (nur am wochenende) um was zu machen, aber nicht destotrotz wird "Purga" weiterentwickelt Wink .....es macht einfach spaß Smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Chriss
Senior JLI'ler



Anmeldedatum: 18.08.2004
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 28.10.2007, 21:08    Titel: Antworten mit Zitat

Ist geplant das Objekte exportiert werden können?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Maxim
Senior JLI'ler



Anmeldedatum: 28.03.2004
Beiträge: 249

Medaillen: Keine

BeitragVerfasst am: 29.10.2007, 04:55    Titel: Antworten mit Zitat

zurzeit nicht, weil der sprache noch viele grundlegende elemente fehlen.
es haben schon mehrere leute nachgefragt ob Klassen exportiert werden können. ich würde es schon gerne einbauen, aber ich habe noch überhaupt keine ahnung welche information mir c++ über die struktur der klassen stellt, so dass ich sie parsen kann.
kannst du vielleicht ein beispiel schreiben, wie du dir den aufruf (export) vorstellst?

PS: alles ist nur eine frage der motivation....
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Chriss
Senior JLI'ler



Anmeldedatum: 18.08.2004
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 29.10.2007, 08:29    Titel: Antworten mit Zitat

Sorry ich meinte importieren.

Ich dachte das so wie bei Variablen
CPP:
pg->RegisterVariable("ObjectInPurga", &cppObject);


Ehrlich gesagt ist es mir auch ein Rätsel wie man das genau macht aber die Rhino Engine (Javascript) kann das (zumindest in Java).

Ich hab mich etwas in Google umgesehen wie das gehen könnte aber leider nichts gefunden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 29.10.2007, 19:05    Titel: Antworten mit Zitat

in java ist das was anderes. java bietet einem ein komplettes interface um methoden/klassen informationen zu bekommen, methoden dynamisch aufzurufen etc.

In C++ ist das ohne weiteres nicht möglich. Entweder man schreibt einen parser der vorher den source code parst und anhand der gesammelten informationen wrapper schreibt.

Man kann auch versuchen das ganze über funktion pointer und templates zu machen, was wahrscheinlich einfacher ist.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Maxim
Senior JLI'ler



Anmeldedatum: 28.03.2004
Beiträge: 249

Medaillen: Keine

BeitragVerfasst am: 29.10.2007, 20:02    Titel: Antworten mit Zitat

Chriss hat Folgendes geschrieben:
Sorry ich meinte importieren.

Ich dachte das so wie bei Variablen
CPP:
pg->RegisterVariable("ObjectInPurga", &cppObject);


Ehrlich gesagt ist es mir auch ein Rätsel wie man das genau macht aber die Rhino Engine (Javascript) kann das (zumindest in Java).

Ich hab mich etwas in Google umgesehen wie das gehen könnte aber leider nichts gefunden.


wenn es einfach gehen würde, dann hätten es schon viele andere vor mir es so implementiert Wink
man könnte höchstens die einzelnen attribute und methoden der klassen per hand nach purga exportieren und dann dort verwenden.....
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 30.10.2007, 15:22    Titel: Antworten mit Zitat

Chriss hat Folgendes geschrieben:
Ich dachte das so wie bei Variablen
CPP:
pg->RegisterVariable("ObjectInPurga", &cppObject);

Kannst du vielleicht mal ein minimales Beispiel zusammenschreiben, nach dem man das verwenden würde?
Mir ist noch nicht ganz klar, was jetzt wohin importiert werden soll.
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 31.10.2007, 14:35    Titel: Antworten mit Zitat

das ist das was ich oben meinte, das mit zeigern und referenzen etc. irritiert, du solltest da den passenden Datentyp wählen. Sprich: Ziegern für Schreiben von purga variablen in c++ variablen und const referenzen für anders rum.

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Maxim
Senior JLI'ler



Anmeldedatum: 28.03.2004
Beiträge: 249

Medaillen: Keine

BeitragVerfasst am: 31.10.2007, 19:37    Titel: Antworten mit Zitat

DirectXer hat Folgendes geschrieben:
das ist das was ich oben meinte, das mit zeigern und referenzen etc. irritiert, du solltest da den passenden Datentyp wählen. Sprich: Ziegern für Schreiben von purga variablen in c++ variablen und const referenzen für anders rum.

Gruß DXer

das habe ich auch verstanden...habe in der beta schon eingebaut...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Projekte Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum