quad = sehr einfacher *tris-clone

Coden in GLBasic
Antworten
Autor
Nachricht
blastar
3 Bit
Beiträge: 9
Registriert: Fr Mai 02, 2008 00:26

quad = sehr einfacher *tris-clone

#1 Beitrag von blastar » Fr Mai 02, 2008 14:48

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!

Bild

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!!
Zuletzt geändert von blastar am Sa Mai 03, 2008 05:09, insgesamt 1-mal geändert.

sechsrad
8 Bit
Beiträge: 266
Registriert: Fr Feb 22, 2008 11:30

quad = sehr einfacher *tris-clone

#2 Beitrag von sechsrad » Fr Mai 02, 2008 15:45

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
3 Bit
Beiträge: 9
Registriert: Fr Mai 02, 2008 00:26

quad = sehr einfacher *tris-clone

#3 Beitrag von blastar » Fr Mai 02, 2008 18:21

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

Benutzeravatar
EvilDragon
Site Admin
Site Admin
Beiträge: 9405
Registriert: Mo Aug 01, 2005 21:22
Wohnort: Ingolstadt
Kontaktdaten:

quad = sehr einfacher *tris-clone

#4 Beitrag von EvilDragon » Fr Mai 02, 2008 22:15

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 :)
Bild

sechsrad
8 Bit
Beiträge: 266
Registriert: Fr Feb 22, 2008 11:30

quad = sehr einfacher *tris-clone

#5 Beitrag von sechsrad » Sa Mai 03, 2008 16:15

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
3 Bit
Beiträge: 9
Registriert: Fr Mai 02, 2008 00:26

quad = sehr einfacher *tris-clone

#6 Beitrag von blastar » Sa Mai 03, 2008 17:13

sechsrad hat geschrieben:ich stelle nur guten c++-code her.
beweise!!! :P
sechsrad hat geschrieben:...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
8 Bit
Beiträge: 265
Registriert: So Mai 14, 2006 12:18
Wohnort: Bayern

quad = sehr einfacher *tris-clone

#7 Beitrag von KidPaddle » Sa Mai 03, 2008 18:30

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
3 Bit
Beiträge: 9
Registriert: Fr Mai 02, 2008 00:26

quad = sehr einfacher *tris-clone

#8 Beitrag von blastar » Sa Mai 03, 2008 21:08

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

Benutzeravatar
EvilDragon
Site Admin
Site Admin
Beiträge: 9405
Registriert: Mo Aug 01, 2005 21:22
Wohnort: Ingolstadt
Kontaktdaten:

quad = sehr einfacher *tris-clone

#9 Beitrag von EvilDragon » So Mai 04, 2008 12:30

KidPaddle hat geschrieben:
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.
Bild

sechsrad
8 Bit
Beiträge: 266
Registriert: Fr Feb 22, 2008 11:30

quad = sehr einfacher *tris-clone

#10 Beitrag von sechsrad » So Mai 04, 2008 16:12

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
3 Bit
Beiträge: 9
Registriert: Fr Mai 02, 2008 00:26

quad = sehr einfacher *tris-clone

#11 Beitrag von blastar » So Mai 04, 2008 17:11

also eine diskussion GLB vs andere sprachen wollte ich eigentlich nicht anstoßen! :wacko:

Benutzeravatar
EvilDragon
Site Admin
Site Admin
Beiträge: 9405
Registriert: Mo Aug 01, 2005 21:22
Wohnort: Ingolstadt
Kontaktdaten:

quad = sehr einfacher *tris-clone

#12 Beitrag von EvilDragon » So Mai 04, 2008 20:41

sechsrad hat geschrieben:
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.
Bild

Benutzeravatar
JohnDavidson
Forum Team
Forum Team
Beiträge: 1020
Registriert: Mi Aug 17, 2005 21:28
Wohnort: Mettmann
Kontaktdaten:

quad = sehr einfacher *tris-clone

#13 Beitrag von JohnDavidson » Di Mai 06, 2008 15:04

blastar hat geschrieben: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 ^^
mfg. MasterLinux© Inside

MasterLinux.Blog
Openhandhelds.de

Benutzeravatar
johnnysnet
9 Bit
Beiträge: 989
Registriert: So Dez 17, 2006 12:59
Wohnort: Leipzig
Kontaktdaten:

quad = sehr einfacher *tris-clone

#14 Beitrag von johnnysnet » Do Mai 08, 2008 18:36

Hat's. Auch ein GOTO, doch dessen Verwendung ist dilettantisch.
"If I arrange to have just one cross-bar in my machine, it revolves very slowly, just as if it can hardly turn itself at all, but, on the contrary, when I arrange several bars, pulleys and weights, the machine can revolve much faster"

Antworten

Zurück zu „GLBasic“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast