Simple Script Max

Kommentare anzeigen Worklog abonnieren
Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7, 8  Weiter

Worklogs Simple Script Max

Simple Script 2 goes Online!

Donnerstag, 26. Februar 2009 von coolo
Hallöle!
Nach ein paar Tagen nichtstun habe ich mich wiederaufgerafft, weiter an SimpleScript2 zu arbeiten. Rausgekommen sind 3 Dinge:
1. Wie der Titel schon sagt, hat Simple Script 2 nun die Möglichkeint Online Scripte auszuführen! Dadurch könnte man Vollautomatische Updates durchführen oder gar einen kleinen Download Shop eröffnen, womit man nach belieben seine gescripteten Spiele spielen kann, oder oder oder... Es gibt eine BB VErsion namens: exec_OnlineFile$(url$,host$) oder das Simple Script Version: execOnlineFile$(url$,host$).
2. Wurde das offline Pedant dazu erschaffen, execfile, man kann es sich ähnlich wie eine Funktion vorstellen (genaugenommen arbeitet es auch wie eine Funktion, es kann sogar Rückgabe Werte entgegennehmen), es kann sogar in einer Rechnung verwendet werden:
Code: [AUSKLAPPEN]

print(execfile("meinfile.sb"))
;in meinfile.sb:
return(5)
;ausgabe
5

(Das Gleiche würde mit dem Online Pedant funktionieren).
3. Wurde endlich ein neues If Abfragen System erstellt. Außerdem muss ich sagen, das es schneller nun wirklich nicht mehr geht! Es ist jetzt im Grunde genommen nur eine Aneinanderfolge von Goto's. Also haben sie die Geschwindigkeit wie die der Schleifen, da sie auch nach diesem System arbeiten(wie schnell die sind, hat man ja bereits gesehen,. bei dem Filmchen)! If und Else funktionieren bereits und im Moment arbeite ich an den ElseIfs. Danach folgt das Select - Case Gedöhns.

Da alle am Prahlen sind: Der Source Code hat bereits die Größe von 74kb zu 2842 Zeilen!

MfG

Die Referenzen kommen²

Samstag, 21. Februar 2009 von coolo
Hallo,
nun in der letzten Woche habe ich mich nun doch an die Funktionsreferenzen herangewagt, und ich muss sagen, mir ist ein ganz genialer Gedanke gekommen!
Anstatt mit komplizierten Funktionsgedudel zu arbeiten, musste ich nur die Fehlerüberprüfung, String Ersetzungsroutine und andere Kleiniigkeiten anpassen. Am Ende sah es so aus:
Code: [AUSKLAPPEN]

local myref$="meinefunction"
print(myref$())

function meinefunction()
    print("Ich bin in meinefunction")
    return(3)
endfunction


Ausgabe:
Code: [AUSKLAPPEN]

Ich bin in meinefunction
3


Heute/Morgen will ich auch noch die Variablenreferenzen nach diesem Prinzip aufbauen, da wird es wohl so auschauen:
Code: [AUSKLAPPEN]

local myint%=5
local myref$=ref("myint%")
unref("myref$")=10 ;Wichtig, damit nicht die Referenz selber bearbeitet wird
print(myint%)
myref$=0 ;Setzt die Referenz zurrück

Ob das 100%ig so ausschauen wird ist noch nicht sicher, wie findet ihr denn dieses System? Der Vorteil ist ja, das man beliebige Sachen Referenzieren kann, man könnte Theoretisch auch ganze Funktionsaufrüfe Referenzieren, mit Parameter, da sind keine Grenzen gesetzt.

Dummes OOP

Sonntag, 15. Februar 2009 von coolo
Hallöchen,
da ich nun endlich ein richtiges Projekt gestartet habe, wird jetzt Simple Script auf Herz und Nieren getestet. Ich habe ua. die Speicherauslastung minimiert und das Goto System neu geschreieben. Jetzt funktioniert es noch schneller, und vorallem stabiler, da früher gab es keine Fehlermeldung wenn man auf ein nicht vorhandenes Label gesprungen war, sondern eine MAV. Jetzt gibt es natürlich eine wunderhübsche Fehlermeldung mit Zeilenangabe und Labelname!

Außerdem habe ich im laufe des Tage das OOP wiederhergestellt. Waren im Grunde nur 2 Parameter vertauscht, aber naja.
Nebenbei habe ich die noch 2 ausstehenden Variablen Typen im OOP. Jetzt können auch Floats und Strings Felder von Types sein.

Code: [AUSKLAPPEN]

local myimage as Timage
myimage.new(0,0)
myimage.name$="Peter"
myimage.x#=5.5
myimage.y#=9.9
myimage.load("ply.png")
;usw...

Stringrechnen ist lustig!

Samstag, 14. Februar 2009 von coolo
Hallöchen,
da mir heute ein wenig langweilig war, habe ich mich mal an etwas einfacherem gewgt, nämlich den String Rechnungen. Jetzt fragt ihr euch sicher, was ich mit Stringrechnungen meine. Es sind die normalen Grundrechenarten (+-*/) in Verbindung mit Strings.
Das * Funktioniert so, das der String einfach so oft wiederholt wird wie angegeben (Das funktioniert schon seit einiger Zeit, ich habs jetzt nur ein bisschen auf die neue Rechenparser Version angepasst [Der heutige Rechenparser unterscheidet sich nämlich stark, von dem wie er am Anfang war...]).
Beispiel:
Code: [AUSKLAPPEN]

print("mein String "*2)
;Ausgabe:
mein String mein String


Dann gibt es das / Zeichen:
Code: [AUSKLAPPEN]

print("mein String "/2)
;Ausgabe:
mein S


Dann das - Zeichen:
Code: [AUSKLAPPEN]

print("mein String "-2)
;Ausgabe:
mein Strin


Das + Zeichen fungiert wie der & Operator. Nur dass es keine Funktionen als Zugabe bekommen kann... Was ich damit meine: sowas funktioniert nicht: print("hallo"+cos(88))
Der Vorteil ist, dass dieser Operator 3 Mal so schnell ist Wink und somit, auch nützlich sein kann.
Code: [AUSKLAPPEN]

local myvar$="Muh"
print("mein string "+myvar$)
;ausgabe:
mein String muh


Nebenbei gesagt: Auf meiner ToDo Liste sind nurmehr 5 große Sachen drauf!
>Select - Case
>OOP Routine verbessern
>Benutzerdefinierte Types
>Engines einbauen
>Diverse Kleinigkeiten(Continue Befehl bei Schleifen und andere Dinge wie Präprozessor)

Optimieren ist toll!

Freitag, 13. Februar 2009 von coolo
Hallo!
Ja, ich finde im Gegensatz zu anderen optimieren wirklich spannend. Vorallem dann wenn es schneller läuft. Dies habe ich erreicht indem ich eine Veränderungen in SS2 vergenommen habe.
Es gibt eine neue Funktion. Sie nennt sich:
Code: [AUSKLAPPEN]

optimize_functions()

Diese Funktion ist mächtiger als man denkt. Sie Optimiert alle Funktionsaufrufe, das heißt in der TypeListe sind nurmehr die Funktionen, welche wirklich verwendet werden. Dadurch werden statt 100 Funktionen(Das ist die Anzahl, an Funktionen die in Simple Script gibt) nurmehr 10 Funktionen durchgegangen, wenn man nur 10 Verschiedene Funktionen verwendet. Und das beste: Es gibt KEINEN Nachteil. Jetzt erreicht SS2 im Leerlauf so um die 560fps (auf meinem PC!).

Außerdem zicken Repeat-Forever Schleifen wieder rum, ich weiß nicht warum andauernd Schleifen Probleme machen, vllt. liegt es daran, das sobald sich der "ByteCode" in der Struktur verändert wird, sind die Schleifen davon betroffe, da dessen Bedingungen und dergleichen von Hand in das Format umgewandelt wird.

Es ist soweit!

Donnerstag, 12. Februar 2009 von coolo
Hallöchen,
nun habe ich endlich den Bug im Syntaxüberprüfer behoben. Der Fehler war im Grunde genommen eine Anhäufung von Mikro Bugs, die in Summe das ergaben. Also habe ich alle nacheinander gekillt, bis es letzendlich wieder funktionierte (Was ein Exit bei einer Schleife doch alles machen kann?). Nunja, es funktioniert und basta. Folgender Code wird fehlerfrei ausgeführt:
Code: [AUSKLAPPEN]

print("Muh")
print (hallo(5,"hallo"))
print("MAH")

function hallo(say%,lol$)
    local sappa%=9999
    local i%=0
    print("hallo1")
    print("hallo2")
    print("hallo3")
    print (say%)
    print (lol$)
    print (sappa%)
    while (i%<5)
        print(i%)
        i%=i%+1
    wend
    hallo2()
    return("Hallo")
endfunction

function hallo2()
    print("Hallo4")
endfunction

Fehlerfrei. Außerdem habe ich wieder was an der flexibilität getan. Nun wurden zwei neue Funktionen hinzugefügt:
Die erste ist: check_script(scripthndl) Sie ist dafür getan um die Vadilität eines Scriptes zu überprüfen.
Die zweite: find_funcs("dateiname") Diese Funktion findet alle Funktionen, welche im Script verwendet werden, dadurch hat man die Möglichkeit bestimmte Funktionen zu ignorieren von bestimmten Dateien, oder gar von Dateien Funktionen hinzuzufügen. Ich finde, das wäre ziemlich hilfreich, wenn man verschiedene Mods hat, und dann von der einen Datei die Funktionen einfach "einfügt".
Außerdem wurde bei der Funktion parse_Script(scripthndl,check) ein neuer Parameter hinzugefügt. Nämlcih der Parameter check, wenn der auf False steht, wird die Syntaxüberprüfung abgeschaltet, und man hat also Freie Fahrt Wink.

Exec_Line()

Samstag, 7. Februar 2009 von coolo
Neuer Tag neues Glück, dacht ich mir und versucht mich mal an einer kleinen aber wichtigen Funktion. Sie führt einen bestimmten String aus.
Dadurch funktioniert folgendes:
Code: [AUSKLAPPEN]

Exec_line("print(5)")

Was das bringt? Es ist wichtig wenn man so Debug Sachen bei Spiele machen will. Also das man mal einfach eine Variable verändert und so, dadurch eröffnet sich eine neue Dimension.
Außerdem gibt es nun ein Pädant als Script Funktion, sie heißt nicht Exec_Line() sondern Eval(). Parralell dazu musste ich eine Möglichkeit einbauen um " anzuzeigen, dies wurde wie in PHP gelöst mit dem Slash davor.
Folgender Code wird nun richtig ausgeführt:
Code: [AUSKLAPPEN]

eval("print("\"Hallo Mein Lieber\")")

Was das bringt weiß ich noch nicht so genau, wobei das Einbauen dieser Funktion dauerte weniger als 2 Minuten.

Außerdem habe ich weiter an der Syntaxüberprüfung gewerkelt, dabei habe ich einen schrecklichen Fehler gefunden, nämlich Funktionen werden nicht richtig erkannt, das Problem ist, die Funktionen werden erst nach dem Parsen erkannt. Dadurch kann der Syntaxüberprüfer garnicht wissen ob es diese Funktion gibt.
Nebenbei habe ich nun endlich etwas entferntwas zwar nicht kein direkter Bug war aber dennoch manchmal genervt hat.
Früher war Folgendes Script erlaubt:
Code: [AUSKLAPPEN]

local mayvar%=5
print("mayvar% ist 5")

Ausgabe war 5 ist 5.

Nun ist die Ausgabe: "mayvar% ist 5"

Bis dann Coolo

Syntaxüberprüfung ist das wichtig?

Freitag, 6. Februar 2009 von coolo
Hallo,
heute melde ich mich wieder. Was ist in der Zwischenzeit geschehen? Nunja, hauptsächlich muss ich sagen das ich das OOP System neu geschrieben habe, welches nach einem Festplatten Crashes meinerseits zurrückzuführen war. Nunja, das OOP System ist nun wieder auf dem Stand des letzten Eintrages. Sogar besser weil das altes System erlaubte nichteinem Handle mehrere Objekte zuzuweisen. Es gab Quasi immer nur soviele Objekte wie es Handle gab. Das heißt: Es war unmöglich dinge wie For Each oder dergleichen wie in BB uimzusetzen. Wie gesagt, das würde jetzt "Theoretisch" funktionieren. Praktisch muss ich noch einiges Anpassen. Außerdem wusste früher ein Objekt nicht welche Variablen es besitzte, es wusste nur wie viele es hat. Dies erschwerte es nocheinmal, weil ein Objekt wechsel dadurch nur mit einigen Tricks gegangen war, und man weiß ja was bei solchen Tricks passiert, so ein Kaulderwesch wie Simple Script 1 seinerzeit gegen Ende wurde...

Als 2. habe ich mich an etwas geagt, welches ich lange vor mir hergeschoben habe, nämlich die Syntaxüberprüfung. Sie ist schon in ihren Grundzügen implentiert, also fehlende Klammern oder Anführungszeichen geben einen Error aus oder dergleichen.Außerdem gibt es bereits Fehlermeldungen bei Funktionsaufrufe, welche nicht gestattet waren. Variablen können außerdem nun keine SOnderzeichen mehr beinhalten, außerdem ist nun Pflicht das sie Vorzeichen besitzen, dies war fürher zwar auch so, aber man wurde nur durch eine ziemlich offene Message wie:"Es wurde ein Fehler aufgefunden". Und ist schließlich abgestürzt.
Nun brauche ich eure Hilfe: Wie streng soll die Fehlerüberprüfung sein, ich könnte sie einersets so machen wie in BB das jedes nicht geschlossene EndIf zu einer Fehlermeldung führt oder gar so machen das man nur dann eine Fehlermeldung bekommt wenn es die Engine nicht anders erlaubt. Simple Script 2 ist in dieser Hinsicht sehr offen, es würde sogar akzeptieren mehrere Befehle in eine Zeile zu schreiben, ohne Trennzeichen, oder gar Strings ohne Anführungszeichen(wobei dies nur bei Strings geht, welche keine Leer oder SOnderzeichen beinhalten).

Als letzte möchte ich darrauf ansprechen das es nun Fix ist, das SS2 nun Open Source wird. Ich arbeite gerade an einer Dokumentation und werde es in naher Zukunft bei Google Code hochladen. Dann könnt ihr auch mal sehen was es alles so kann.

MfG
coolo

Schleifen funktionieren wieder!

Montag, 26. Januar 2009 von coolo
Puh, es war heut ein anstrengender Tag, doch ich habe nicht locker gelassen und endlich Schleifen "repariert". Nebenbei habe ich noch andere Bugs gekillt, welche noch ausstehend waren. Ua. war ein seltsamer Bug wenn man einer Stringvariable eine Zahl zuweist. Da kam nurmehr eine wirre Kombination aus Zahlen. Außerdem wurde ein Script einfach beendet wenn man 3 oder mehr Schleifen ineinander verschachtelt.

Außerdem kann ich berichten das ich nun endlich eine Homepage mir eingerichtet habe. Es gibt eine grße Sektion für Simple Script 2, also wenn ihr sehen wollt was für Features noch eingebaut werden sollen, schaut dorthin(http://coolo.at.vu/?simplescript)

Konstruktive Kritik oder einfach Motivations Kommentare erwünscht Wink.

Film Teil 2

Freitag, 23. Januar 2009 von coolo
Hallo,
Heute habe ich mich wieder zusammen gerafft einen kleinen Film zu drehen. Er zeigt wie man in Simple Script 2 ein Pong schreibt. Leider laggt es gegen Ende ziemlich stark, wobei das nur an der IDE liegt, die ist nicht so schnell, da muss ich noch optimieren. Außerdem wird noch nicht alles gehightlightet... Aber trotzdem möchte ich euch das Video zeigen: Simple Script Pong.

Nebenbei habe ich an die noch ausstehenden Opertoren gewagt. Nun sind MOD und XOR auch eingebaut. Der Operator NOT stellt aber eine kleine Besonderheit dar! Er ist eine Funktion, aus irgendeinem Grund, verweigerte mir der Rechenparser von SS2 einteilige Operatoren...
Bseispiel code:
Code: [AUSKLAPPEN]

if (not(1) and 1 mod 2)
    print("ich werde nie angezeigt!")
endif


Als nächstes werde ich das For Each einbauen.

Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7, 8  Weiter