quad = sehr einfacher *tris-clone


blastar

Still Fresh
Joined
Aug 17, 2003
Messages
14
hi erstmal, ich bin der neue! :D

habe meinen f200 erst seit kurzem und probiere mit GLBasic seit knapp 2wochen.
in einer kleinen diskussion zu einem contest hat sich Gernot im GL-forum vor einigen tagen zu der aussage hinreißen lassen: "100 gefehle!? Da schaffst Du kaum ein Tetris!"... das hat natürlich sofort meinen ehrgeiz geweckt. in nur wenigen stunden war eine einfache version fertig die ich dann nach und nach immer weiter ausgebaut habe - dadurch ist ein einfacher(!!!) *tris-clone entstanden der trotz der starken limits sehr gut spielbar ist - mit nur 100 befehlen!



release - quad-100b.zip - 1.58MB (gbas-source + binaries für win32, gp2x & wince)

steuerung:
- spielstart mit A, B oder UP
- A oder UP = drehen (CW)
- B = drehen (CCW)
- spiel beenden = lautstärke

der source ist nur zu demo-zwecken geeignet denn aufgrund der starken optimierungen und zusammenfassungen läßt er sich nicht so ohne weiteres ändern oder erweitern - nur als zeichen was man aus GLBasic rausholen kann wenn man sich damit mal richtig auseinandersetzt. weiterhin wurde das program mit dem befehl LIMITFPS 15 auf eine viertel der original geschwindigkeit gesetzt da es sonst zu schnell läuft!!
 

sechsrad

Newbie
Joined
Feb 22, 2008
Messages
266
nur als zeichen was man aus GLBasic rausholen kann wenn man sich damit mal richtig auseinandersetzt

rausholen kannst du erst was aus glbasic wenn du die c++ befehle mit einbindest.
der eine drawrect-befehl sagt noch nichts über die leichte programmierbarkeit aus von glbasic.

progge mal eine fliessende routierende bewegung in glbasic für den gp2x dann kommt der geschwindigkeitseinbruch.

das limitfps solltest du auf 30 hochsetzen, damit der hintergrund nicht so ruckelt.

trotzdem bleibt glbasic eines von vielen programmen für den gp2x (fenix,pygame,c++ usw).

mfg
 

blastar

Still Fresh
Joined
Aug 17, 2003
Messages
14
bei diesem "project" ging es in erster linie darum zu zeigen dass auch mit nur 100 GL-Basic befehlen ein annehmbares spiel machbar ist - es erhebt keinen anspruch auf perfektion! :p

deine aussage zu den c++ befehlen kann ich so nicht teilen. c++ zu nutzen bedeutet nicht automatisch das der code scheller wird... bei schlecht strukturiertem und unüberlegtem code kann man auch mit c++ oder inline asm keine wunder bewirken. :D
 

EvilDragon

Administrator
Staff member
Joined
Mar 4, 2003
Messages
29,832
Age
44
Location
Ingolstadt
Jupps. Und wenn ich mir ansehe, was in den letzten Wochen an GLBasic-Projekten gekommen ist... alle Achtung, da sind wirklich gute Sachen möglich :)
 

sechsrad

Newbie
Joined
Feb 22, 2008
Messages
266
c++ zu nutzen bedeutet nicht automatisch das der code scheller wird...

ich stelle nur guten c++-code her.

1 glbasicbefehl macht noch keine aussage. schau dir nur mal den fertigen code an, wie gross der ist für die 100-zeilen.
interessant wäre es für glbasic und gp2x, wenn es ein runtimemodul gäbe.
aber jedes klitzekleine programm hat über 1mb für den gp2x, das ist ätzend.

da ist mir pygame/python schon lieber auf dem gp2x mit einem runtimemodul und die anderen source-programme sind winzig klein.
 

blastar

Still Fresh
Joined
Aug 17, 2003
Messages
14
sechsrad said:
ich stelle nur guten c++-code her.
beweise!!! :p
sechsrad said:
...aber jedes klitzekleine programm hat über 1mb für den gp2x, das ist ätzend.
fand ich am anfang auch etwas schade aber auf der anderen seite ist das doch bei speicherkarten im GB-bereich eher nebensächlich...
 

KidPaddle

Very Active Member
Joined
May 14, 2006
Messages
468
Location
Germany
Auch mit "c++" erstellte Programme sind, wenn statisch gegen SDL kompiliert, für ein "HelloWorld" mehr als 1MB groß. Und nichts anderes macht GLBasic. Denn leider sind die von GHP erstellten Bibliotheken nicht Hardware beschleunigt, so dass man die volle Geschwindigkeit auf allen GP2Xen nur mit statisch gelinkten Programme bekommen kann.

Und wenn pygame oder sonstige Intepreter verwendet werden, dann müssen die von dem Interpreter gebundenen Bibliotheken, und zwar alle, dem Programm hinzugerechnet werden. Denn auch wenn der Interpreter klein ist, so werden SDL Bibliotheken (SDL, SDL_Image, SDL_Mixer, SDL_ttf, SDL_gfx), die libgcc, die PThread, libpng, libvorbis usw. in den Speicher geladen. Ein mit GLBasic erstelltes Programm, so wie statisch erstellte "C/C++" Programme brauchen diese nicht, denn diese sind schon in dem 1MB mit enthalten. Da alle benötigten Funktionen in einer einzigen Datei vorhanden sind und nicht mehr dynamisch nachgeladen werden müssen, ist der Start des Programm einen schneller. Zudem optimiert der Kompiler, indem er die nicht verwendeten Funktionen nicht mit einbindet, er sparrt damit Programm- und Datengröße. Bei einem Programm, welches die Bibliotheken dynamisch einbindet, geht das nicht, die Bibliothek muss alle, auch die von dem Programm nicht benötigten Funktionen, bereit stellen und verbraucht damit am Ende mehr Platz im Speicher, als die statisch kompilierten Programme. Wie Du siehst, hat die Größe einer Datei keine Aussage über den benötigten Platz im Speicher.

GLBasic erzeugt "c++" - Code, welcher dann durch einen gcc - Kompiler gejagt wird. Die benötigten Bibliotheken sind schon mit einkompiliert.
ich stelle nur guten c++-code her.

Sofern ich den Ironie - Tag nicht gesehen habe, kenne ich keinen guten Programmierer, der diese Aussage von sich geben würde. Dazu kann man einfach zu viele Fehler in so wenig Zeilen mit c/c++ einbauen. Zudem würde ich von einem guten Programmierer erwarten, auch wenn es etwas hart klingt, dass er die oben genannten Zusammenhänge kennt.

Thomas
 

blastar

Still Fresh
Joined
Aug 17, 2003
Messages
14
danke für die ausführliche erklärung! :) 'war mich schon fast klar dass das mit den verlinkten libs zusammenhängt... es wäre es wohl sinnvoll nur die libs einzubinden die auch wirklich benötigt werden... aber das gehört ja nicht hier hier! :wink:

...ich werde mich bei gelegeheit mal hinsetzen und einen richtigen *tris-clone zusammenbasteln um dabei auch die fähigkeiten von GBL etwas austesten - vor allem mit touchscreenunterstützung! :D
 

EvilDragon

Administrator
Staff member
Joined
Mar 4, 2003
Messages
29,832
Age
44
Location
Ingolstadt
KidPaddle said:
ich stelle nur guten c++-code her.
Sofern ich den Ironie - Tag nicht gesehen habe, kenne ich keinen guten Programmierer, der diese Aussage von sich geben würde. Dazu kann man einfach zu viele Fehler in so wenig Zeilen mit c/c++ einbauen. Zudem würde ich von einem guten Programmierer erwarten, auch wenn es etwas hart klingt, dass er die oben genannten Zusammenhänge kennt.

Das gleiche habe ich mir auch gedacht... ich kann zwar nicht programmieren, aber soweit kenn ich mich noch aus, und Kleinigkeiten wie Lautstärkeregelung in Methane Bros einbauen, etc. bekomme ich noch hin.

Aber viel mehr ärgert mich ein wenig, dass sechsrad ständig alles schlecht machen will, was er nicht verwendet, schreibt, dass er nur tolle Sachen macht - aber gesehen habe ich noch nicht ein einziges Progrämmchen von ihm...

Klar, in der Regel ist jede Form der Umwandlung von einer Sprache zur nächsten eine Verlangsamung - aber gerade GLBasic ist für mich eigentlich ein sehr positives Beispiel, da es doch recht nah an C++ arbeitet. Und mit der Möglichkeit, C++-Code mit einzubauen, ist man fast genauso schnell wie mit C++.
Nur dass viele Leute C++ nicht können (wie ich auch), aber für GLBasic reicht es sehr wohl :)

Und für so Leute ist es ja auch gedacht.

So, und bevor ich hier noch irgendwas doofes zum Thema Programmiersprachen, etc. von sechsrad vernehme, möchte ich einen *tris-Clon von ihm sehen, in unter hundert Zeilen, kompiliert weniger Platz brauchend als der hier vorliegende und programmiert in was auch immer (außer dem grauenvoll schlechten GLBasic natürlich).

Und solange ich den nicht auf meinem gp2x inkl. Sourcecode habe, möchte ich keinen dummen Kommentar mehr von ihm vernehmen, langsam nervts.
 

sechsrad

Newbie
Joined
Feb 22, 2008
Messages
266
so werden SDL Bibliotheken (SDL, SDL_Image, SDL_Mixer, SDL_ttf, SDL_gfx), die libgcc, die PThread, libpng, libvorbis usw. in den Speicher geladen.

wenn ich 10 glbasic-programme compiliere für den gp2x habe ich 10x 1,4mb und mehr
wenn ich 10 pygame-programme starte, habe ich 10x den code von 330byte zb und einmal die runtime von 2,5mb. auch bei 100 programmen habe ich nur 1x die runtime.

für anfänger ist glbasic geeignet.
 

blastar

Still Fresh
Joined
Aug 17, 2003
Messages
14
also eine diskussion GLB vs andere sprachen wollte ich eigentlich nicht anstoßen! :wacko:
 

EvilDragon

Administrator
Staff member
Joined
Mar 4, 2003
Messages
29,832
Age
44
Location
Ingolstadt
sechsrad said:
so werden SDL Bibliotheken (SDL, SDL_Image, SDL_Mixer, SDL_ttf, SDL_gfx), die libgcc, die PThread, libpng, libvorbis usw. in den Speicher geladen.

wenn ich 10 glbasic-programme compiliere für den gp2x habe ich 10x 1,4mb und mehr
wenn ich 10 pygame-programme starte, habe ich 10x den code von 330byte zb und einmal die runtime von 2,5mb. auch bei 100 programmen habe ich nur 1x die runtime.

für anfänger ist glbasic geeignet.

Logisch - den pyGame ist eine Script-Sprache, die eine Runtime nutzt.
Sobald Du C++-Code einbaust, brauchst Du nunmal die Libraries.
Also nicht effizienter... und bestimmt auch nicht schneller als GLBasic.
 

JohnDavidson

Newbie
Staff member
Joined
Aug 17, 2005
Messages
1,020
Age
34
Location
Mettmann
Website
www.masterlinux.de
ICQ
347384376
WEBSITE
http://www.masterlinux.de
LOCATION
Mettmann
blastar said:
also eine diskussion GLB vs andere sprachen wollte ich eigentlich nicht anstoßen! :wacko:

Zur Diskussion ^^ Ich hab heute in theoretischer Informatik gelernt, dass man mit einer Programmiersprache, die das while bzw ein goto unterstützt, alles mögliche programmieren kann. :D Nur kenn ich GLB nicht, aber die dürfte ja nen while Befehl oder so haben ^^
 
Top