![]() |
RUTIS Engine v2
Liste der Anhänge anzeigen (Anzahl: 2)
Hi,
Ich möchte euch nun endlich mein neues-altes Projekt vorstellen. ==> RUTIS v2 (Version 2 - obwohls eigentlich Version 3 ist :shock:) Dabei handelt es sich um eine fast komplett neu geschriebene Version meiner ![]() Weitere Informationen folgen im Laufe der Zeit.
Hier habt ihr erstmal was zum Testen: ![]() Ich empfehle den Installer zu verwenden, da dieser bei der Deinstallation auch wieder die evt. entstehenden Registry-Einträge, welche der Compiler benötigt, wieder ordnungsgemäß entfernt. Für die, die absolut dagegen sind, hier das gepackte Release: ![]() Website: ![]() MFG Björn Zeutzheim |
AW: RUTIS Engine v2
Hallo,
Es wäre ganz schön, wenn du schreiben könntest welche Features die Scriptsprache hat, oder zumindest was sich im Vergleich zu Version 1 geändert hat ;) |
Features
Die meisten Verbesserungen fanden beim Compiler statt. Dieser läuft nun viel stabiler und kann nun auch mit komplizierteren Strukturen umgehen. Außerdem sind die generierten Fehlernachrichten viel detaillierter.
Des Weiteren wurde die intern gespeicherte Struktur des Scripts - also die Deklarationen von Variablen, Konstanten und Methoden - weitaus verbessert, was sich auch im Editor unter "Declaration Tree" nach dem Kompilieren eines Scriptes betrachten lässt. Außerdem gibt es ein neues, sehr hilfreiches Konstrukt - genannt "external class". dies sieht z.B. wie folgt aus:
Delphi-Quellcode:
Der Compiler generiert daraufhin einen Datentyp TBall, welcher mit seinen Feldern exakt dem gleichen Datentyp aus dem Hostprogramm entspricht.
TBall = external class
private fOwner : TBall; public x, y : Single; vx, vy : Single; end; D.h., man kann sich über eine Schnittstelle zum Hauptprogramm einen Pointer auf ein solches Objekt beschaffen, und die darin enthalten Daten direkt manipulieren. Dieses Feature von RUTIS findet auch umfangreiche Verwendung in der Game-Engine, welche ich zur Zeit entwickele. Dort wird RUTIS zur Steuerung der Spielmechanik verwendet, und kann durch diese external-classes direkt auf die Daten innerhalb der Engine zugreifen. MFG |
AW: RUTIS Engine v2
Bitte noch Klassen, dann wird das Ding revolutionär! :shock:
|
AW: RUTIS Engine v2
So,
Ich habe mal eine Neue Version hochgeladen, die einige neue Features mit sich bringt und ein paar Bugs behebt. Eins dieser neuen Features ist das kompilieren von Scripten in eine Exe direkt aus der IDE. Dazu ist nun die benötigte RUTIS-RE (Runtime-Executable) als Resource an die IDE angehangen. MFG |
AW: RUTIS Engine v2
Ich glaube, ich habe einen Fehler gefunden :stupid:
Delphi-Quellcode:
In der ersten Variante gibt es das Ergebnis 32 (nicht mal annähernd Pi), Variante zwei führt zu einem netten Laufzeitfehler:
unit pi_crash;
interface implementation // siehe http://www.hjcaspar.de/hpxp/piprog.htm function pi_newton(rounds: cardinal): double; var x : double; cur_round: cardinal; begin x := 3; { START VARIANTE 1 } for cur_round := 1 to rounds do begin // ENDE VARIANTE 1 } { START VARIANTE 2 while (cur_round < rounds) do begin cur_round := cur_round + 1; // ENDE VARIANTE 2 } x:=x-sin(x)/cos(x); end; result := x; end; begin write('Pi is: '+ FloatToStr(pi_newton(5000))); end.
Code:
Compiling program...
Successfully compiled program Runtime Error: (PI_CRASH:20) Address Error (Address ID = 31) |
AW: RUTIS Engine v2
Also ich muss sagen... das war mal ein peinlicher Fehler...
Und noch viel verwunderlicher, dass der mir bisher nicht aufgefallen ist. Das Problem lag an der Zuweisung
Delphi-Quellcode:
bei welcher mein Compiler einen kleinen, wenn auch entscheidenden Fehler gemacht hat.
x := 3;
Dies war der alte, fehlerhafte Code des Compilers:
Delphi-Quellcode:
Und so sollte es eigentlich aussehen:
intDouble :
Begin FactorType := Decl_Double; ScriptCompiler.Gen4Float(StrToInt(CpText)); End;
Delphi-Quellcode:
Es wurde einfach statt einem Double-Wert ein Float-Wert auf den Stack gepusht, wodurch alle nachfolgenden Stackoperationen föllig ins Chaos gestürzt sind :shock:
intDouble :
Begin FactorType := Decl_Double; ScriptCompiler.Gen8Float(StrToInt(CpText)); End; Wie dem auch sei: Eine neue und (hoffentlich) Fehlerfreie Version wurde hochgeladen! MFG Björn Zeutzheim |
AW: RUTIS Engine v2
Ich sehe diese Scripting-Engine heute zum ersten Mal mit Erstaunen.
Sehr geiles Teil! Leider fehlt völlig eine Doku / Wiki der Funktionen dazu. Das ist sehr schade, denn dann würde die Engine wohl von vielen Delphianern sehr geschätzt werden :-) |
AW: RUTIS Engine v2
Nun eine Dokumentation dürfte vorerst nicht nötig sein, solange RUTIS nicht Open-Source wird.
Wenn aber jemand daran Interessiert wäre, könnte ich das auch gegebenenfalls ändern. Für die Verwendung des Editors an sich sollte eine Hilfe eigentlich nicht notwendig sein, da die Syntax ja bekannt ist und für die externen Methoden gibts im Editor einen Browser mit Erklärungen zu den meisten Funktionen. MFG Björn Zeutzheim |
AW: RUTIS Engine v2
That wouldn't be a problem (probably).
You would need to create a little interface through some external methods like RUTIS_Ext_Forms.pas is an interface to part of the Delphi VCL. If you are interested, I could write a little demo. But I have to admit that I'm not that good with Databases using Delphi. I will try to think of an example. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz