EGSL Interpreter

Vorstellungen von Programmen, welche mit Lazarus erstellt wurden.
Cybermonkey342
Beiträge: 112
Registriert: Sa 1. Mär 2008, 15:19
OS, Lazarus, FPC: openSUSE Leap 15.6 (FPC 3.2.2) / Windows 11 Pro (FPC 3.2.2)
CPU-Target: x64
Kontaktdaten:

EGSL Interpreter

Beitrag von Cybermonkey342 »

Hallo,

ich wollte euch mal kurz mein kleines Projekt vorstellen: EGSL, der Easy Graphics Scripting with Lua Interpreter. Allerdings muss ich erwähnen, dass das Programm nicht mit Lazarus erstellt wurde, sondern "lediglich" mit dem FreePascal Compiler; ich hoffe, ich darf das hier trotzdem kurz vorstellen ...
Zunächst der Download: http://www.egsl.webuda.com/
Auf der Seite befindet sich auch eine kurze Dokumentation. Der Interpreter ist momentan noch Freeware, wird also nur als Binaries angeboten (und zwar für Linux 32- und 64-Bit und Windows 32-Bit), werde in naher Zukunft dies allerdings als OpenSource anbieten, sobald ich meine Grafikengine überarbeitet habe. Die Beispiele können als seperates Archiv heruntergeladen werden.
Abhängigkeiten unter Linux sind: libSDL, libSDL_gfx, libSDL_ttf und liblua5.1. Die Windowsversion wird mit allen benötigten DLLs im Download geliefert.
Aber nun: Was erwartet euch?
Ganz einfach: mit EGSL ist das Programmieren in Lua möglich. Alles, was Lua kann, kann auch EGSL. Nur eben ein bisschen mehr. Ich habe Lua quasi um einige Grafikbefehle erweitert, damit man kleine Grafikdemos schreiben kann. Das Besondere ist, dass ich mich an "klassischen" BASIC-Befehlen orientiert habe, also ein gewisses "Nostalgie"-Feeling aufkommt, allerding mit der Power von Lua.
Hie ein kleines Beispiel, damit man sich vorstellen kann, wie so ein Programm aussieht:

Code: Alles auswählen

-- test of ellipses and text output
 
require "math"
math.randomseed (os.time())
openwindow (640,480,32,"Ellipses")
cls()
for i=1,1000 do
	w = math.random(50)
	s=3
	x=math.random(640)
	y=math.random(480)
	colour (0,0,0)
	fillellipse (x,y,w,25)
	colour (0,(math.random(128)+100),0)
	fillellipse (x-s,y-s,w,25)
end
colour (0,0,0)
text (2,460,"Press any key to exit!")
colour (255,255,255)
text (0,458,"Press any key to exit!")
redraw()
key=inkey()
closewindow()
Wie gesagt, kann man den gesamten Befehlssatz von Lua benutzen (natürlich auch die Bibliotheken wie man an dem Beispiel erkennen kann). Freue mich über (konstruktives) Feedback und Vorschläge. Wie im Anhang zu sehen ist, eignet sich Geany hervorragend als IDE.
geanyasIDE.jpg
Mit besten Grüßen,
Cybermonkey

Cybermonkey342
Beiträge: 112
Registriert: Sa 1. Mär 2008, 15:19
OS, Lazarus, FPC: openSUSE Leap 15.6 (FPC 3.2.2) / Windows 11 Pro (FPC 3.2.2)
CPU-Target: x64
Kontaktdaten:

Re: EGSL Interpreter

Beitrag von Cybermonkey342 »

Okay, ein kleines Update: inzwischen ist es möglich mit loadimage und putimage Bilder zu laden und zu "zeichnen". Es sind nun also durchaus kleinere Spielchen möglich. Update auf der Homepage folgt am Wochenende.
Dateianhänge
putimage.png
Mit besten Grüßen,
Cybermonkey

Cybermonkey342
Beiträge: 112
Registriert: Sa 1. Mär 2008, 15:19
OS, Lazarus, FPC: openSUSE Leap 15.6 (FPC 3.2.2) / Windows 11 Pro (FPC 3.2.2)
CPU-Target: x64
Kontaktdaten:

Re: EGSL Interpreter

Beitrag von Cybermonkey342 »

Hallo,

es war ja nun etwas Funkstille um mein Projekt, aber ich kann sagen, dass Version 1.0 erreicht wurde. :D
Neue Homepage ist auf: http://egsl.wikidot.com" onclick="window.open(this.href);return false;

Achja: der Source Code ist jetzt auch online, natürlich kann man, wenn man nicht mit Lua programmieren will, die Unit egslengine für Pascal-Programme benutzen. Lizenz ist äußerst liberal: http://www.gzip.org/zlib/zlib_license.html" onclick="window.open(this.href);return false;

Einige Dinge, wie Keyboard- und Mausabfragen sind nun besser implementiert, so dass (zumindest mit FPC) komplette Spiele möglich sind. Voraussetzung ist natürlich, dass man die BASIC-artige Syntax mag, die ich benutze ...
Mit besten Grüßen,
Cybermonkey

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: EGSL Interpreter

Beitrag von carli »

>komplette Spiele möglich sind.

wie das denn ohne Arrays?

Cybermonkey342
Beiträge: 112
Registriert: Sa 1. Mär 2008, 15:19
OS, Lazarus, FPC: openSUSE Leap 15.6 (FPC 3.2.2) / Windows 11 Pro (FPC 3.2.2)
CPU-Target: x64
Kontaktdaten:

Re: EGSL Interpreter

Beitrag von Cybermonkey342 »

Hm, wieso keine Arrays? Soweit ich weiss, beherrscht FPC sehr wohl Arrays ... (ich habe geschrieben "zumindest mit FPC möglich").
Aber natürlich kann Lua auch Arrays (simulieren). Die Tables von Lua sind IMHO wesentlich mächtiger als Arrays.
Übrigens, ein einfaches zweidimensionales Array (z.B. für Tileset-Level) geht unter Lua so:

Code: Alles auswählen

cols={}
  cols[0]={}
  cols[1]={}
  cols[2]={}
 
for i=0,255 do
  cols[0][i]= math.abs(128 - 127 * math.sin(i * math.pi / 32))
  cols[1][i]= math.abs(128 - 127 * math.sin(i * math.pi/ 64))
  cols[2][i]= math.abs(128 - 127 * math.sin(i * math.pi / 128))
  end
Siehe auch unter Examples das plasma.lua Beispiel.

Daran arbeite ich gerade:
Bild
Mit besten Grüßen,
Cybermonkey

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: EGSL Interpreter

Beitrag von pluto »

Sieht erfolgversprechend aus. Vielleicht könnte man das zu einem Art Game-Maker ausbauen.

Dazu hatte ich mal eine Idee: Ein GamePack erstellen und jedes neue Spiel erweitert die Möglichkeiten. So das es immer einfacher wird, einfache 2D Spiele zu erstellen.

Unterstützt du schon direktes Scrollen ?
MFG
Michael Springwald

Cybermonkey342
Beiträge: 112
Registriert: Sa 1. Mär 2008, 15:19
OS, Lazarus, FPC: openSUSE Leap 15.6 (FPC 3.2.2) / Windows 11 Pro (FPC 3.2.2)
CPU-Target: x64
Kontaktdaten:

Re: EGSL Interpreter

Beitrag von Cybermonkey342 »

Nein, aber Scrolling kann man natürlich mit den zur Verfügung stehenden Funktionen selbst programmieren. Das sollte auch unter Lua möglich sein, werde ich evtl. mal testen, ob die Geschwindigkeit reicht.
Das mit der "Art" Game Maker hatte ich mir auch schon überlegt, mal sehen was ich da noch mache.
Mit besten Grüßen,
Cybermonkey

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: EGSL Interpreter

Beitrag von carli »

pluto hat geschrieben: Dazu hatte ich mal eine Idee: Ein GamePack erstellen und jedes neue Spiel erweitert die Möglichkeiten. So das es immer einfacher wird, einfache 2D Spiele zu erstellen.
Gibts schon, nennt sich Clonk.
Nur Clonk ist etwas ausgereifter und unterstützt auch Netzwerkspiele, sowie Pack-hin-und-herladen. (ich weiß nicht, ob man das mit Lua synchron hinbekommt)

Wäre trotzdem mal interessant, so ne universelle Game Engine in 2D auch mal in Freepascal hätte.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: EGSL Interpreter

Beitrag von pluto »

Ich meinte jetzt nicht unbedingt Clonk. Clonk ist ja Primär dafür ausgelegt Run & Jump Spiele zu erstellen. Ich meinte ein GamePack / GameMaker für Klassische Spiele. Z. B. BreakOut, Sokubahn, Snake, PackMan, 2D Weltraum-Shoter und soweiter. Da gibt es eine ganze Reihe. Wenn ich diese Spiele mit Clonk Umsetzten wollte, wäre das so, als ob ich mit "Kanonen auf Spatzen schießen" würde. Z.B. für Spiele für Prince Of Persia wäre Clonk ungeeignet aus meiner Sicht.

Selbst wenn Clonk dafür geeignet wäre: Warum nicht weitere Alternativen Schaffen ? Wenn alle So denken würden, hätten wir heute auch nur ein GUI-System, ein Betriebssystem, Ein Rechner System.... Eine Sorte Brötchen oder Brot.
MFG
Michael Springwald

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: EGSL Interpreter

Beitrag von carli »

Hm, ja-

Zumindest sollte es noch eine zweite Clonk-ähnliche Game Engine geben (2D), die in Freepascal geschrieben ist.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: EGSL Interpreter

Beitrag von pluto »

Clonk ist einfach zu "Schwergewichtig" und Vor allem nicht OpenSoruce. Die OpenSoruce Version, kann man "Vergessen". Zur Zeit.
MFG
Michael Springwald

Cybermonkey342
Beiträge: 112
Registriert: Sa 1. Mär 2008, 15:19
OS, Lazarus, FPC: openSUSE Leap 15.6 (FPC 3.2.2) / Windows 11 Pro (FPC 3.2.2)
CPU-Target: x64
Kontaktdaten:

Re: EGSL Interpreter

Beitrag von Cybermonkey342 »

"Clonk" kenne ich nun gar nicht. Ist das nicht so ein "Worms"-ähnliches Spiel?
Wie auch immer, die egslengine kann man natürlich mit Freepascal nutzen, läuft ohne Probleme. Der Screenshot von oben "Animated Walkertest" ist mit FPC entwickelt.
Mit besten Grüßen,
Cybermonkey

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: EGSL Interpreter

Beitrag von pluto »

Das Spiel gibt es auch schon seit Ewigkeiten. Du kannst hier eine Demo Version runterladen: http://www.clonk.de" onclick="window.open(this.href);return false;

Das ist auch noch ein Punkt: Clonk ist nicht Frei. Kostet um die 15€. Die OpenSoruce Version Taugt noch nichts. Wobei du kannst dir kostenlos ältere Version Runterladen z.b. Clonk-Planet
MFG
Michael Springwald

Cybermonkey342
Beiträge: 112
Registriert: Sa 1. Mär 2008, 15:19
OS, Lazarus, FPC: openSUSE Leap 15.6 (FPC 3.2.2) / Windows 11 Pro (FPC 3.2.2)
CPU-Target: x64
Kontaktdaten:

Re: EGSL Interpreter

Beitrag von Cybermonkey342 »

Ja, aber so wie ich sehe ist Clonk in C++ programmiert? Bringt uns Pascal-Programmierern also reichlich wenig. (Für mich bestehen C++ Programme überwiegend aus Kommentaren ... { ...} :wink: )
Mit besten Grüßen,
Cybermonkey

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: EGSL Interpreter

Beitrag von pluto »

Genauso sehe ich es auch....

Für mein GamePack hatte ich meine "2D Engine" verwendet, die auf Canvas Barsiert. Für einfache 2D Spiele war sie schon ganz gut geeignet. Eine einfache Scroll Methode hatte ich auch schon eingebaut.
Und ein Universellen Level-Editor. Meine Idee war: Ich wollte mich nur noch auf das Spiel konzentrieren müssen. Nicht um das drumherum.

Für Clonk müsste ich erst das Prinzip verstehen. Bei meinem GamePack war das anders. So kann ich, nach dem die Vorbereitungen abgeschlossen waren z.b. Snake in ca 15 Minuten erstellen *G*.
Eine Script-Sprache, die eine Object Pascal Syntax hatte, wollte ich immer hinzufügen. Besser gesagt ein Script-Interface... Am Projekt arbeite ich zur Zeit nicht weiter...

Zu jedem Spiel gab es gewisse Information die im Spiele-Menu angezeigt wurde. Z.B. den Namen, wann es erstellt wurde, von wem es erstellt wurde, wann die letzte Änderung war und sowas.

edit01: Ich glaube ich schweife mal wieder etwas vom Haupt-Thema ab....
MFG
Michael Springwald

Antworten