Du bist nicht angemeldet.
@in Exe packen
Das bleibt wohl vermutlich leider die einzige Möglichkeit der Weitergabe, da in Grundschulen die PCs ziemlich alt sind und keinen Internet-Zugang haben. Das mit Android scheint mir deshalb sinnvoll zu sein, da ich vermute, dass die nächste Möglichkeit der Verbreitung von Computern in diesem Bereich die Handys und Tablets sind. Viele Schüler haben schon Handys in der Grundschule und ich gehe davon aus, dass bald eine Welle von Alt-Tablets in den Haushalten vorhanden ist, die nicht mehr gebraucht werden und dann vielleicht den Schulen zur Verfügung stehen.
Wie kann man den eigentlich die OpenAl Lib am einfachsten mitliefern, so dass die User damit möglichst nichts zu schaffen haben?
@Framework.
Ja ich habe "Diddy" genutzt - aber am Ende eigentlich nur, um die "Screens" zu verwalten. den Loader fuer "LibGDX"-XML-Atlase (sic!) hab ich selber machen muessen, da der originale fehlerhaft war.
Neben den Screens nutze ich noch die VirtualResolution (also "Autofit").
Bei mir unter Linux laeufts mit HTML5 nicht ganz so fluessig - zumindest, wenn der Affe dann mal schneller rennt, auf einem guenstigen Windowsnotebook laeuft es wie geschmiert.
Unter Android habe ich manchmal so "Startruckeln" (bei "Laufbeginn") ... denke das hat was mit der Art und Weise von Android und "Java" zu tun (Cache und Co).
@Preis
Ich hatte Platz 2, habe aber Ignition nicht gebraucht und haette es verschenkt. Da Platz 1 aber "Monkey X Pro" bereits besass und Ignition nicht, haben wir einfach getauscht .
Als "Bastler" versuche ich so wenig "andere Framework" zu nutzen wie moeglich. Oft muss man sich die bereitgestellten Funktionen mit "Lernkurve" und "das und dies geht nicht" erkaufen.
Ist halt immer ein Spagat zwischen "Konfigurierbarkeit" und "Ueberladen" (fuer jeden Furz eine Konfigurationsdatei anlegen etc.).
@Tools:
- LibGDX bietet einige nuetzliche Tools: Bitmapfontgenerator (mit "Schatten/Farbverlauf/..."), Atlas-Packer, ...
- schnell zusammengestrickte Scripte die mir aus einem "Renderbild" die Sprites ausschneiden, damit der Atlas-Packer sie wieder zusammensetzen kann:
libgdx="/home/ronny/Arbeit/Programmieren/libGDX/libgdx-nightly-20141202"
srcdir="/home/ronny/Arbeit/Programmieren/Projekte/Apps/ApesBananaConquest/ProductionData.gfx"
tardir="/home/ronny/Arbeit/Programmieren/Projekte/Apps/ApesBananaConquest/Game/apesbananaconquest.data"
#productionline = 264x308
filename="Atlas.raw/productionline_0*"
FILES=$(ls $filename | tr '\n' ' ');
for file in $filename
do
echo ${file}
convert -crop 264x308+0+0 ${file} ${file}
done
#items
convert -crop 192x192+0+0 "Atlas.raw/items.png" "Atlas.raw/bananaplant_big_0.png"
convert -crop 192x192+192+0 "Atlas.raw/items.png" "Atlas.raw/bananaplant_big_1.png"
convert -crop 128x128+384+0 "Atlas.raw/items.png" "Atlas.raw/bananaplant_small_0.png"
convert -crop 128x128+512+0 "Atlas.raw/items.png" "Atlas.raw/bananaplant_small_1.png"
convert -crop 128x128+640+0 "Atlas.raw/items.png" "Atlas.raw/bananaplant_small_2.png"
convert -crop 192x192+0+192 "Atlas.raw/items.png" "Atlas.raw/palm_big_0.png"
convert -crop 192x192+192+192 "Atlas.raw/items.png" "Atlas.raw/palm_big_1.png"
convert -crop 128x128+384+128 "Atlas.raw/items.png" "Atlas.raw/palm_small_0.png"
convert -crop 128x128+512+128 "Atlas.raw/items.png" "Atlas.raw/palm_small_1.png"
convert -crop 64x64+384+256 "Atlas.raw/items.png" "Atlas.raw/stone_small_0.png"
convert -crop 64x64+448+256 "Atlas.raw/items.png" "Atlas.raw/stone_small_1.png"
convert -crop 64x64+384+320 "Atlas.raw/items.png" "Atlas.raw/stone_small_2.png"
convert -crop 64x64+448+320 "Atlas.raw/items.png" "Atlas.raw/stone_small_3.png"
convert -crop 128x128+512+256 "Atlas.raw/items.png" "Atlas.raw/plantbox_0.png"
convert -crop 64x64+640+256 "Atlas.raw/items.png" "Atlas.raw/coconut_0.png"
convert -crop 64x64+704+256 "Atlas.raw/items.png" "Atlas.raw/coconut_1.png"
convert -crop 48x64+640+320 "Atlas.raw/items.png" "Atlas.raw/banana_0.png"
convert -crop 64x64+704+320 "Atlas.raw/items.png" "Atlas.raw/banana_1.png"
convert -crop 64x96+640+128 "Atlas.raw/items.png" "Atlas.raw/turtle_down.png"
convert -crop 64x96+704+128 "Atlas.raw/items.png" "Atlas.raw/turtle_up.png"
convert -crop 96x64+0+384 "Atlas.raw/items.png" "Atlas.raw/sign_danger_0.png"
convert -crop 96x64+128+384 "Atlas.raw/items.png" "Atlas.raw/sign_danger_1.png"
convert -crop 96x64+256+384 "Atlas.raw/items.png" "Atlas.raw/sign_deadend_0.png"
convert -crop 96x64+384+384 "Atlas.raw/items.png" "Atlas.raw/sign_deadend_1.png"
convert -crop 128x160+640+0 "Atlas.raw/hud.png" "Atlas.raw/hud_optionspanel.png"
convert -crop 48x48+640+192 "Atlas.raw/hud.png" "Atlas.raw/hud_options_off.png"
convert -crop 48x48+704+192 "Atlas.raw/hud.png" "Atlas.raw/hud_options_on.png"
#backup
mv Atlas.raw/hud.png Atlas.raw/hud.png.bak
mv Atlas.raw/items.png Atlas.raw/items.png.bak
#atlas.raw
java -cp "$libgdx/gdx.jar:$libgdx/extensions/gdx-tools/gdx-tools.jar" com.badlogic.gdx.tools.texturepacker.TexturePacker "Atlas.raw" "Atlas.results" atlas
cp "$srcdir/Atlas.results/atlas.atlas" "$tardir/graphics/atlas.atlas"
cp "$srcdir/Atlas.results/atlas.png" "$tardir/graphics/atlas.png"
#restore backup
mv Atlas.raw/items.png.bak Atlas.raw/items.png
mv Atlas.raw/hud.png.bak Atlas.raw/hud.png
############# APE ################
#ape = 128x192
filename="ape.raw/ape_0*"
FILES=$(ls $filename | tr '\n' ' ');
for file in $filename
do
echo ${file}
convert -crop 128x192+0+0 ${file} ${file}
done
#ape.raw
java -cp "$libgdx/gdx.jar:$libgdx/extensions/gdx-tools/gdx-tools.jar" com.badlogic.gdx.tools.texturepacker.TexturePacker "ape.raw" "ape.result" ape
cp "$srcdir/ape.result/ape.atlas" "$tardir/graphics/ape.atlas"
cp "$srcdir/ape.result/ape.png" "$tardir/graphics/ape.png"
@Ohne Kaufversion
Nein, ohne "Pro" kann man nur HTML5 und "Desktop" (Linux,Mac,Windows) - weswegen ich ja die Proversion wollte :-)
@"in die exe packen"
Weitergabe waere ja nicht erforderlich, wenn alles ueber "phil7-lernspiele.de" verfuegbar waere - dann muesste auch nix installiert werden.
Prinzipiell waere der Grundgedanke dieser: Du liest ein Bild Byte fuer Byte ein und generierst einen String der die Information "enthaelt" (Base64 bspweise). Beim Ausfuehren liest du aus dem String die Informationen aus und generierst daraus die Bilder. Weiss nur nicht, ob "Monkey" das so mag, also das Laden "from memory".
Wenn Dein primaeres Ziel nur "Windows/Linux/Mac" waere, kann man sicher aus einem groesseren Topf an Moeglichkeiten schoepfen (andere Sprachen, oder "BlitzMax" bzw das Open-Source "bmx-ng" von Brucey unter meiner sehr bescheidenen Mithilfe).
@Neues Thema
Tu dir da keine Zwaenge an, Gast2 raeumt schon auf, wenn Du ueber die Straenge schlaegst .
bye
Ron
@Ron
Jetzt habe ich ein bisschen herumprobiert mit Monkey und Mojo, Autofit ...
Hast du in deinem "Ape's Banana Conquest" ein Framework verwendet. Die Flüssigkeit deines Spiels, selbst auf meinem Samsung Tablet, ist erstaunlich. Du hast doch Ignition als Preis bekommen. Ist das zu empfehlen?
Und schon wieder Fragen...
- Hast du irgendwelche Tools (Texture Packer...) für die Performance verwendet?
- Kann man ohne die Kauf-Version native Android Apps erstellen? So wie über GDevelop mit XDK.
- Das mit dem Includieren von Grafiken und Sound in die Exe würde mich näher interessieren, da die Weitergabe für die Kinder so möglichst idiotensicher wäre ;-) Vielleicht sollte ich dazu ein neues Thema eröffnen!?
Grüße, Phil
@Fragenkatalog
Ja, nicht ganz die richtige Wort. "Auftragsarbeit" klang aber etwas obszön.
Na, ich könnte mir sowas als Studienprojekt vorstellen. Das angehende Sozialpädagogen ein didaktisches Projekt vorlegen und Du arbeitest das dann ab.
Habe jetzt grade die Einführung der neue Zahlen oder Buchstaben vor Augen... Sesamstraßenlike.
@Resourcen-Integration
Ich glaube, dass von BlitzMax bekannte "IncBin" ist in Monkey nicht drin - schaetze, dass ist fuer bestimmte "Targets" einfach unpraktisch (Html5).
Rein theoretisch koennte man aber manuell die Resourcen "enkodieren" (also wie bei EMails die Anhaenge) und dann "live" dekodieren und als Datenstrom in ein Bild/wasauchimmer umwandeln.
So oder so gaebe es natuerlich die Moeglichkeit, alles "live zu zeichnen" (Kreis fuer Kopf, 2 Kreise fuer Augen, 2 fuer die Pupillen ...). Aehnlich den "Autos" die Gast2 im MonkeyTut machen sollte.
@Windows"exe"
Ueberlege, ob nicht ein online-Projekt machbar waere, dann waere dies "Html5" - und dort sind "externe Resourcen" ja an der Tagesordnung.
Vorteil: 1x aktualisieren, alle haben's
Nachteil: "online" (bzw "Browser")
bye
Ron
@leichte Spiele
Deine Ideen hören sich gut an. Ich hoffe, du erhebst darauf kein Copyright ;-)
So in etwa diese Richtung soll es gehen.
@Spielentwicklung und funktionales Testen
Ja, ich mache das aus eigenem Interesse. Wie hast du das mit dem gestellten Fragenkatalog gemeint?
Du hast absolut Recht mit der Betriebsblindheit. Mir fällt es schon schwer, wenn ich gleichzeitig an der didaktischen und an der programmiertechnischen Umsetzung arbeite.
Es wird wohl noch etwas Zeit vergehen, bis ich das erste zum Testen anbieten kann, da ich mich erst etwas in Monkey X einarbeiten werde...
Mithilfe kann ich auf jeden Fall sehr gut gebrauchen.
@Monkey X
Gibt es die Möglichkeit, Resourcen(Grafiken, Sounds) in die Exe unter Windows einfach zu integrieren? In PureBasic nennt sich das IncludeBinary
Euer Interesse an dem Projekt freut mich übrigens sehr! Phil
@Programmierkurs
Hm. Ich werde da wohl immer mal wieder Anläufe unternehmen, aber so recht geht mir das nicht von der Hand. Vielleicht sollte ich da meinen Wissensstand einfach nur auf einer Stufe halten, daß ich verstehe, wovon geredet wird.
@Zielgruppe-Testen
Naja, falls Du das inhaltliche Testen meinst, bin ich vielleicht wirklich aus der Zielgruppe raus.
Die meisten Fehler sind jedoch trivialer Natur. Auf der funktionalen Ebene.
Auf manche Sachen kommst Du als Programmierer gar nicht.
Der Vorteil von regelmäßigen "äußeren" Tests liegt auch darin, daß Du eingrenzen kannst, wann Du den Fehler eingebaut hast, einfach wei sie schneller gefunden werden.
Liegt zum Teil an der "Betriebsblindheit" zum Teil einfach an der Materie.
Eine weitere Fehlerquelle ist die Spielführung, das Interface oder insgesamt das Handling.
Es wäre doch sehr blöd, wenn ein rechtschreibbegabtes Wesen an der Menüführung scheitern sollte.
@Spielentwicklung
Ich arbeite an sowas einfach gerne mit.
Ich spiele recht viel. Auch sehr einfache Sachen.
Und ich bin oft erstaunt, wieviele Fehler in den logischen Abläufen möglich sind.
Aber zumeist wird ja nicht chronologisch programmiert.
Machst Du das Ganze aus eigenem Interesse oder arbeitest Du einen gestellten Fragekatalog ab?
Ist ja auch eine Frage der Lernsystematik (Didaktik).
nix für ungut, finde die Idee interessant
Ich denke Du redest von "leichten" Spielen:
- richtiges Rechnen baut Stein fuer Stein ein ein Schloss auf
- richtiges Rechnen gibt einem Ballon Auffschwung, am Boden sind Kakteen die den Ballon platzen lassen wuerden, steter Windstrom treibt den Ballon nach rechts und die Weite gibt Punkte
- Woerter buchstabieren: ein falscher Buchstabe wirft die Spielfigur in einem Level ein Stueck zurueck, richtige Buchstaben hingegen sorgen fuer fehlerfreies vorankommen
- Lesen: die Anweisungen stehen stehen dort ("Einmal Links", "Zweimal Rechts") - ebenfalls mit "Level".
Ich denke Gast2 hat sich eher einen Programmierkurs erhofft - aber genaueres kann er ja selbst loswerden (vlt testet er auch Grundschul"apps" :-) ).
bye
Ron
@Gast2
Hi,
mittelfristig bin ich natürlich sehr auf Testpersonen angewiesen :-)
Da du den Beitrag vermutlich selbst verfasst hast, bist du leider aus der Zielgruppe(5-9 Jahre) raus ;-).
Die Lernziele sind vorallem das Training/Automatisierung der Basisfertigkeiten der ersten Schuljahre wie Kopfrechnen, Lesen und Schreiben.
Bei der Art der Spiele handelt es sich um eine Mischung aus "trockenen" Übungsprogrammen mit Sequenzen von Arcade-ähnlichen Spielen.
Sei gegrüßt Phil!
Bin selbst kein Coder. Mich interessiert eher die inhaltliche Seite der Spiele.
- was für Spiele
- Zielgruppen
- Lernziele
und so fort.
Und falls es mir gefällt, biete ich mich als Testperson an.
Naja, also bei Monkey-X ist die Sache mit den Bugs "verschieden".
Wenn man einen Bug meldet, kann es sein, dass Mark Sibly dies sehr schnell behebt - oder aber dass es ignoriert wird (wenn es eher ein "fehlendes Feature" ist... und kein "Bug" in der Programmiersprache).
Ich habe bisher auch noch nicht viel mit Monkey-X gemacht - bis auf die kleinen Tuts hier im Forum - und meinem Monkey-x-Jam-Beitrag. Es kann also sein, dass einige Dinge nicht ueberall "gleich gut" funktionieren. Im Groben und Ganzen schaetze ich aber, dass es durchaus ueberall "funktioniert".
Wie im ersten Antwortbeitrag schon erwaehnt, ist Monkey-X eine an sich "gute Sache", allerdings eher ein Rohbau der einiges an Zuarbeit durch den Nutzer erfordert - oder halt entsprechende Extratools ("Target"-Installation, also die Androidtools, Flash SDKs ... ).
Die Nutzerbasis ist relativ ueberschaubar - was einerseits das Monkey-Forum zu einem Hort von "Hilfsbereiten" macht ("eingeschworene Gemeinde") andererseits aber vor allem im Bezug auf "3rd Party"-Entwicklungen stark hinterherhinkt.
Die Konzentration auf das Wenige, bringt aber wiederum Communityvorteile ("viele" OpenSource-Frameworks).
@GameMaker
Nein, mein letzter Umgang damit duerfte so 2000/2001 rum gewesen sein. Bis dahin hat sich da einiges (zum Besseren) geaendert.
@Unity
Ja mir ist es auch "too much". Gibt aber ungelogen fuer Unity sicher die meisten Tutorials ... neben den Java-Teilen (LibGDX, JME3).
@GoDot
ich denke wenn es nicht laeuft, wird dein alter TestPC wohl irgendein Problem mit OpenGL haben ... vlt freuen sich die Entwickler, wenn Du Ihnen Dein Problem beschreibst.
Achso, bei Monkey wird ja GLFW benutzt, man sitzt also auf dem OpenGL-Pfad fest. Das "alte" BlitzMax hingegen bietet DX7, DX9 und OpenGL, glaube DX11 sollte es auch per Modul geben.
Immerhin 1 oder gar 2 haben sich bei mir damals gemeldet, da die OpenGL-Fassung von "TVTower" bei deren Windows nicht so richtig wollte. Oft sind die alten Treiber dran schuld.
bye
Ron
@Ronny
Hi, erstmal vielen Dank für die ausführliche Antwort. Das hatte ich wirklich nicht erwartet. :-)
Ich habe Godot jetzt mal ausprobiert. Die Oberfläche sieht sehr vielversprechend aus, leider lief die erste erstellte Exe(32Bit) nicht auf meinem alten TestPC, ähnlich wie bei GDevelop.
@Code einbinden
Ich meinte eigentlich nur, dass die Entwicklung nicht nur über die MausBedienung läuft, sondern eine durchdachte und gut nutzbare Programmiersprache für "Sonderaufgaben" wie die statistische Auswertung und Analyse von Usereingaben vorhanden ist oder eingebunden werden kann, so wie dieses Lua-Script in Godot.
@Unity zu groß. Hier dachte ich vor allem an den Aufwand für die Einarbeitung und den Preis bzw. den riesigen 3D Überbau für ein kleines 2D Spiel. Die Sache mit den Kanonen und den Spatzen...
Wie sieht es denn mit der Zuverlässigkeit von Monkey X aus (Bugs + Behebung / Funktionieren die Standardsachen ohne Nacharbeit direkt auf den verschiedenen Plattformen?)
Hat jemand Erfahrungen mit Game Maker und dessen Scriptsprache?
Ich werde mich jetzt erst mal ein wenig mit Monkey X und deinen anderen Vorschlägen auseinandersetzen. Das erschlägt mich hoffentlich nicht alles ;-)
Viele Grüße, Phil
@Einbindung von Code
Meinst Du, dass jemand "Scripts" schreibt, und dein Programm es dann auswertet?
-> LUA waere da so ein "Favorit" (mit "Luajit" erreicht das plusminus die Geschwindigkeit von "normalen" Programmen)
@Monkey X
Ich persoenlich bin etwas zwiespaeltig eingestellt, wenn es um Monkey X geht. Die Syntax ist einfach, der Umgang mit den "Monkey X Free"-Zielen "GLFW" (Linux/Mac/Windows) und "HTML5" ist an sich einfach. Wenn Du "Android" als Target haben moechtest, sind ein paar mehr Huerden zu bezwingen. Mittels bei monkey-x.com verfuegbarer Tools kannst du aber ein "gib den Speicherpfad an und ich mach den Rest" ausfuehren und fertig ist der Lack.
Was mich an Monkey X stoert:
- case-sensitivity ("MyFunction()" =/= "myFunction()") - wenn man Schnelltipper ist und keinen "autokorrigierenden Editor" benutzt (denke das zu-kaufende-"Jungle" kann das ...aber nur Windows...) nervt das.
- fuer "Ape's Banana Conquest" (siehe gamezworld.de-Startseite) habe ich die nativen "Module-Codes" fuer Android/Html5 und GLFW anpassen muessen um mehr als einen gleichzeitig abspielenbaren Musikkanal zu ermoeglichen. Monkey sieht 1x Musik und 31x Sfx-Kanaele vor. Bei Android koennen Sfx-Kanaele unkomprimiert nur 1MB beinhalten, laengere "Sprachsamples" oder in meinem Fall "Hintergrundgeraeusche" sind da also nicht moeglich. Einen Musikcrossfader konnte ich auch erst mit meiner Aenderung umsetzen.
Ansonsten gefaellt mir aber an Monkey, dass man von BlitzMax kommend, viel Code einfach "weiternutzen" kann.
Ach ja... es erzeugt alleinstehende Exe-Dateien (keine "Runtime + Data" wie es frueher bei solchen "Gametools" ueblich war).
@BlitzMax
Brucey aus dem BlitzMax.com-Forum entwickelt einen quelloffenen BlitzMax-Compiler (meine Zuarbeit haelt sich da zu stark in Grenzen um da dauernd ein "wir" zu nutzen). Wir hatten damit auch schon fuer Android und RasPI kompiliert. HTML5 mittels Emscripten lief nur rudimentaer, ist kein Ziel.
Wenn es mal soweit waere, dass "BMX-NG" einfach Android "anvisieren" kann, dann wuerde ich der Sprache den Vorzug geben, da mir die Kreativitaet/Schaffenskraft von Brucey da einfach mehr Mut macht ("Langlebigkeit"/"Support").
@LibGDX
Ja, LibGDX ist an sich schon ein geniales Biest, vielfaeltig und maechtig. Aber genau der von dir aufgebrachte Grund hat mich auch schlucken lassen. Fuer Android-Entwickler ist das nicht so schlimm, wenn man aber noch Desktops begluecken will ... finde ich "richtige Binaries" besser.
Ich hatte vor ein paar Monaten mal ein "Hau den Maulwurf-Spiel" (naja ein wenig mehr als das war es schon ;D) in LibGDX "prototyped" ... und ich muss sagen ... es lief und der groesste Aufwand war es, sich mit den Funktionen von LibGDX vertraut zu machen. Also eigenen Klassen fuer "Sprites" etc. .
Die eigentliche Spiellogik (update, draw, ...) ist in allen Sprachen aehnlich umzusetzen - und fuer mich scheint "Java" nicht sonderlich anders als "Basic" (Monkey, BlitzMax, Purebasic). Wobei natuerlich alle ihre kleinen Eigenarten und Limitierungen haben.
Bei Java kann man prima Funktionen ueberladen, bei BlitzMax hingegen geht dies nicht. Ist aber alles kein Muss, denn frueher ging das auch nicht in allen Sprachen und trotzdem wurden Spiele entwickelt.
Ist ja nun auch Wurst, ob man
SetXY(x:float, y:float)
SetXY(pos:TPosition)
'macht, oder
SetXY(x:float, y:float)
SetXYbyPos(pos:TPosition)
Wenn dir "Unity" zu gross ist, schau dir mal "Godot" an.
... leider war das aber in meinem letzten Test (glaube als "1.0" rauskam) noch so, dass Godot Runtime+Data buendelte. Klar funktioniert sowas auch, hat aber einen entscheidenden Nachteil: die Binaries werden unglaublich gross, da einfach "alles" mit drin ist. Ist halt wie eine "Engine" + Scriptsatz.
Ich weiss nicht mehr wie gross exakt, aber um mich selbst aus dem BlitzMax-Forum zu zitieren, muss es wohl so gewesen sein:
EDIT: I checked the export-template-download: seems to me they have some kind of "wrappers" they use and then just inject the custom data. Binary size is a bit "high" for my taste:
android_release.apk 8mb, windows_32_release.exe 12mb, windows_64_release.exe 19mb (oddly this is 1.5mb more than for the debug variant).
Wenn Dir LibGDX gefaellt, aber die Klassen nicht, schau mal "JME3" an - auch nicht schlecht, aber wohl eher Hauptaugenmerk auf "3d".
Ok, noch kurz zu Deinen Extrafragen:
- XML: kann man machen, gibt da verschiedene "Module" mit Staerken und Schwaechen (Geschwindigkeit versus "XML"-Standard-Unterstuetzung). Man kann halt schnell durchrammeln oder aber den ganzen Kram wie "XSLT" unterstuetzen (bei BlitzMax hat Brucey da "LibXML" gewrappt).
- JSON: koennte bequemer ablaufen, vielleicht kenn ich es nur "zu schlecht" aber ich musste mir ein paar Hilfskruecken bauen um bequem damit arbeiten zu koennen:
Function StringifyJsonValue:String(val:JsonValue)
If Not val Then Return ""
If JsonNull(val) Then Return "null"
If JsonNumber(val)
'fix nan - not-a-number
If val.ToJson() <> val.ToJson() Return "0"
Return val.ToJson()
Endif
If JsonString(val) Then Return val.StringValue()
Return ""
End Function
Function NumberfyJsonValue:Float(val:JsonValue)
If Not val Then Return 0
If JsonNull(val) Then Return 0
If JsonNumber(val) Then Return Float(val.ToJson())
If JsonString(val) Then Return Float(val.StringValue())
Return 0
End Function
Method OnHttpRequestComplete:Void( req:HttpRequest )
'remove from the list of managed requests
httpRequests.Remove(req)
Local responseObj := New JsonObject( req.ResponseText() )
If Not responseObj
Return
End
Select responseObj.GetString("type").ToLower()
'addscore contains score too!
Case "addscore", "highscorelist"
'clear old highscore
onlineHighscore.Clear()
Local entries := JsonArray(responseObj.Get("entries"))
If entries
For Local entry:JsonValue = Eachin entries.GetData()
Local arr:JsonArray = JsonArray(entry)
If Not arr Then Continue
Local name:String = StringifyJsonValue(arr.Get(0))
Local score:Int = Int(NumberfyJsonValue(arr.Get(1)))
'...
Next
Else
'...
Endif
Default
'...
Print "unknown json response command: " + responseObj.GetString("type")
End
End
Da "Monkey X Free" erstmal nix kostet, kannst Du da gerne reinschnuppern und hier Fragen stellen, falls Du nicht auf englisch schreiben moechtest ... wobei Die im Monkey-X.com-Forum da sicher besser helfen koennen.
bye
Ron
Hallo,
ich möchte gerne ein paar Lernspiele entwickeln und bin mir trotz einiger Suche noch sehr unsicher, was die Wahl der Entwicklungsumgebung angeht.
Für jeden Tipp bin ich dankbar!
Folgende Eigenschaften sind für mein Vorhaben wichtig:
- Die Spiele (einfaches 2d) sollten auch auf den älteren PCs (Win XP, Vista) laufen.
- Der Entwicklungsaufwand für den Spiel-Anteil sollte möglichst gering sein. (kein C++)
- Möglichkeit der Einbindung von Code, da der Lernfortschritt ausgewertet werden soll.
- Portierbarkeit auf Android wäre sinnvoll
Ich habe schon ein paar Sachen ausprobiert, kann aber natürlich nicht so tief einsteigen, dass ich sicher sein kann, damit nicht auf die Nase zu fallen ;-)
-Java mit LibGDX (läuft nur mit VM und nicht auf den alten PCs (OpenGL-Problem?))
-Purebasic (läuft nur bedingt auf alten PCs, kein Android, kein OOP)
-Monkey X (Momentan Favorit; läuft auf alten PCs. Zuverlässig auf Android?
-Reingeschnuppert in Construct2, Unity(zu groß), Fusion2.5, GDevelop, GameMaker,Cocos
Mich würden vor allem eure Erfahrungen, euer Gesamteindruck zu Monkey X interessieren, da ich dort momentan hängengeblieben bin. Kann man damit alleinstehende Exe-Dateien erzeugen? Verarbeitung von XML-Dateien/JSON?
Ich freue mich über alle Tipps und Anregungen!
Grüße, Phil