Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Maxim Senior JLI'ler
Anmeldedatum: 28.03.2004 Beiträge: 249
Medaillen: Keine
|
Verfasst am: 20.10.2007, 15:50 Titel: Purga - eine mini Scriptengine. |
|
|
Einen guten Abend an alle JLIes
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++ und Dekrementieren(var--
- 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
MfG Maxim
Zuletzt bearbeitet von Maxim am 26.05.2008, 15:53, insgesamt 5-mal bearbeitet |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 20.10.2007, 16:09 Titel: |
|
|
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 |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 21.10.2007, 16:15 Titel: |
|
|
ui da hast du aber ganz schön was hingestellt ich guck mir das ggf noch mal genauer an, wenn ich was zeit finde
Gruß DXer |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 22.10.2007, 13:53 Titel: |
|
|
Das klingt ja interessant
(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 |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 22.10.2007, 14:46 Titel: |
|
|
so ich _habs_ mir mal genauer angeschaut, und ich finds immer noch gut
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 |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 23.10.2007, 15:25 Titel: |
|
|
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 |
|
|
Maxim Senior JLI'ler
Anmeldedatum: 28.03.2004 Beiträge: 249
Medaillen: Keine
|
Verfasst am: 26.10.2007, 15:08 Titel: |
|
|
ja, die fehlermeldung bekomme ich auch
habe leider sehr wenig zeit (nur am wochenende) um was zu machen, aber nicht destotrotz wird "Purga" weiterentwickelt .....es macht einfach spaß |
|
Nach oben |
|
|
Chriss Senior JLI'ler
Anmeldedatum: 18.08.2004 Beiträge: 267
Medaillen: Keine
|
Verfasst am: 28.10.2007, 21:08 Titel: |
|
|
Ist geplant das Objekte exportiert werden können? |
|
Nach oben |
|
|
Maxim Senior JLI'ler
Anmeldedatum: 28.03.2004 Beiträge: 249
Medaillen: Keine
|
Verfasst am: 29.10.2007, 04:55 Titel: |
|
|
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 |
|
|
Chriss Senior JLI'ler
Anmeldedatum: 18.08.2004 Beiträge: 267
Medaillen: Keine
|
Verfasst am: 29.10.2007, 08:29 Titel: |
|
|
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 |
|
|
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 29.10.2007, 19:05 Titel: |
|
|
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 |
|
|
Maxim Senior JLI'ler
Anmeldedatum: 28.03.2004 Beiträge: 249
Medaillen: Keine
|
Verfasst am: 29.10.2007, 20:02 Titel: |
|
|
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
man könnte höchstens die einzelnen attribute und methoden der klassen per hand nach purga exportieren und dann dort verwenden..... |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 30.10.2007, 15:22 Titel: |
|
|
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 |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 31.10.2007, 14:35 Titel: |
|
|
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 |
|
|
Maxim Senior JLI'ler
Anmeldedatum: 28.03.2004 Beiträge: 249
Medaillen: Keine
|
Verfasst am: 31.10.2007, 19:37 Titel: |
|
|
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 |
|
|
|