Author Topic: Fragen über Fragen? (Tutorials, LevelEditor)  (Read 3883 times)

Offline Freeman4gu

  • byte
  • *
  • Posts: 3
    • View Profile
Fragen über Fragen? (Tutorials, LevelEditor)
« on: September 01, 2010, 10:38:11 am »
Hallo zusammen  :)

ich bin erst heute über die jPCT-API gestolpert und bin eigentlich recht begeistert.
Ich würde gerne auf Basis von Android eine kleine RailShooter Demo erstellen. Da ich eher mit
Microsofts .NET Framework arbeite, fällt mir das Lesen der Java-Dokumentation relativ schwer.

Daher wollte ich an dieser Stelle mal Fragen, ob es für die API schon gute Tutorials gibt. Ich habe
ebenfalls gesehen, dass es einen LevelEditor auf der Webseite zum Download gibt. Ist dieser mit
der Android-API nutzbar?

Vielleicht gleich mal etwas spezielleres:
Ich habe schon einmal den Demo-Code für Android ausprobiert und funktioniert soweit auch alles
wunderbar. Ich habe nun überlegt, wie man am besten die Kamerafahrten steuern kann, diese sollten
ja möglichst vorprogrammiert sein?! Vielleicht hat ja jemand von euch eine Idee  :D
Viele Grüße, der Freeman

Offline EgonOlsen

  • Administrator
  • quad
  • *****
  • Posts: 12295
    • View Profile
    • http://www.jpct.net
Re: Fragen über Fragen? (Tutorials, LevelEditor)
« Reply #1 on: September 01, 2010, 11:07:02 am »
Also vom Level-Editor würde ich eher Abstand nehmen. Es ist IMHO sinnvoller, die Level mit einem "normalen" 3D-Editor zu erstellen und dann als 3ds oder obj zu exportieren und das zu laden.
Tuturials explizit für Android gibt es eher weniger, aber das ist nicht soooo schlimm, weil die Unterschiede zwischen den Versionen nicht so groß sind. Das meiste, was es für die Desktop-Version gibt, lässt sich mehr oder weniger auf jPCT-AE anwenden. Das was nicht geht, sagt einem dann schon der Compiler. Ein wenig mehr zum dem ganzen Thema findet sich auch im Wiki: http://www.jpct.net/wiki
Da drin gibt es ein bisschen was in Richtung Tutorial.

Kamerafahrten...mein Benchmark (An3DBench im Market) macht sowas im letzten Test. Da habe ich einfach mit der Desktop-Version einen Levelviewer erstellt, bin in diesem den Pfad abgegangen und habe Position und Blickrichtung pro Zeiteinheit aufgezeichnet und rausgeschrieben. Der Benchmark lädt das dann und spielt es ab. Dadurch, dass das auf Tastatur-/Mauseingaben beruht, sieht es nicht ganz "glatt" aus. Wenn man es wirklich gut machen wollte, müsste man vermutlich noch irgendwie durch Interpolation glätten.

Offline Freeman4gu

  • byte
  • *
  • Posts: 3
    • View Profile
Re: Fragen über Fragen? (Tutorials, LevelEditor)
« Reply #2 on: September 01, 2010, 12:07:17 pm »
Oh danke für die schnelle Antwort. Ok, kann ich denn ein level als exportierte XML dynamisch laden
oder muss ich besser alles "hart" codieren? (Also gibts da schon eine Funktion für?)

Und mich würde brennend interessieren wie du den Pfad realisiert hast? Ich würde ganz gerne
auch Kamerafahrten machen, bei denen sich auch die Sichtrichtung zur Bewegungsrichtung ändert.

Ich habe auch direkt mal deinen Bench ausprobiert (auf meinem HTC Hero) und hatte leider nur 6 bis 7 FPS
und viel los war da ja noch nicht. Allerdings schätze ich auch, dass dein Level relativ groß ist.
Wenn ich dann noch überlege, dass dort "Ziele" zu treffen sind, mache ich mir schon über die Performance
sorgen.

Wie sieht das überhaupt in der Richtung aus, gibt es eine Funktion um einfache Sprites im Raum zu zeichnen?
Vom Prinzip schauen ja Feinde immer in Richtung des Spielers und ein 3d Mesh würde das ganze wohl auch
überfordern...

Offline EgonOlsen

  • Administrator
  • quad
  • *****
  • Posts: 12295
    • View Profile
    • http://www.jpct.net
Re: Fragen über Fragen? (Tutorials, LevelEditor)
« Reply #3 on: September 01, 2010, 08:45:16 pm »
Ich würde mir ein eigenes Levelformat ausdenken (XML, ASCII, Binär...) und dann befüllen und laden. Ich persönlich bin für meine Sachen bisher seit Amiga-Zeiten immer mit einfach ASCII-Dateien ausgekommen, aber ich habe es auch immer so angelegt, dass ich genau das machen kann, um den Aufwand geringer zu halten.
Eine konkrete Methode um einen Level (also quasi eine Objektanordnung in einer Welt) zu speichern gibt es nur indirekt über die üblichen Serialisierungsmechanismen von Java. Aber das müsste man für Android quasi auf Android für Android machen, sonst klappt das nicht. Und da sehe ich wenig sinnhaftes drin, zumal man sowieso einmal initial den Level befüllen müsste. Und wenn man das eh schon macht, kann man es auch gleich so nutzen.

Die Kamerafahrten sind einfach. Ich speichere einfach in fixen Zeitintervallen die Position und Blickrichtung des Betrachters in einer Liste und schreibe die auf Platte. Das lade ich wieder und nehme dann die zum aktuellen Zeitabschnitt (also beim Abspielen) passenden Daten...fertig.

Die Performance des Hero ist genauso bescheiden wie die meines Samsung Galaxy (nicht S!). Die sind beide mit diesem Quake-Level überfordert. Aber für einen Railshooter kann der Level meiner Meinung nach viel simpler sein und dann müsste das auch auf diesen Geräten noch spielbar sein. Du kannst ja mal einen Blick auf mein aktuelles Spiel werfen: http://www.jpct.net/jpct-ae/download/alpha/ar/AlienRunner-AE.apk
Das gibt dir vielleicht ein Gefühl dafür, wie detailiert es sein kann, bevor diese Geräteklasse versagt. Neuere Smartphones spielen übrigens mindestens in einer doppelt so schnellen Liga.

Was Sprites angeht: Du kann einfach ein Quad mit einer Textur tapezieren und auf billboarded setzen. Damit zeigt es immer zur Camera. Das müsste so in etwa das sein, was du meinst.


Offline Freeman4gu

  • byte
  • *
  • Posts: 3
    • View Profile
Re: Fragen über Fragen? (Tutorials, LevelEditor)
« Reply #4 on: September 02, 2010, 11:08:02 am »
Ok Danke für die super Hinweise. Ich denke ich werde die Tage mal ein wenig rum probieren.

Habe mir auch direkt mal dein aktuelles Spiel geholt, sieht sehr gut aus und läuft wirklich flüssig (17 - 22 FPS)
Ich denke viel größer sollte eine Area auch nicht werden, vielleicht sogar noch eher kleinere Räume
mit mehr Details, wo man von einer zur anderen Ecke springt und sich so durchhangelt.

Bei weiteren Problemen oder Fragen melde ich mich wieder  ;)