Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

06.11.2012, 17:30

2D-Engine für Android und das NDK

Hallo,

ich habe beschlossen demnächst in die Android-App Entwicklung einzusteigen, würde dafür allerdings vorher ein paar Erfahrungen hören. Ich habe bisher nur für Desktop-PCs als Ziel-Plattform entwickelt und das in C++.
Nun bietet Android für native Entwickler ja neben dem SDK auch das NDK an. Ich habe bisher nur ein paar Samples damit erstellt, vor allem um den Workflow vernünftig zu gestalten.

Was mich jetzt interessiert, gibt es unter euch Entwickler, die bereits Projekte mit dem NDK umgesetzt haben? Wir praktikabel ist es, wenn das Projekt skaliert oder macht es überhaupt keinen Sinn, auf diese Weise das meiste Java zu umschiffen? Was für Schwierigkeiten können so bei der Entwicklung mit dem NDK auftreten?

Des Weiteren interessiert mich, ob ihr mit dem NDK auch schon 2D-Engines eingesetzt habt und wenn ja, welche? Weshalb habt ihr euch genau für diese Engine entschieden?

Gruß
Mark

Moe

Frischling

Beiträge: 85

Wohnort: München

  • Private Nachricht senden

2

06.11.2012, 22:28

Hi,
also Android und in Java Spiele entwickeln ist nicht ganz einfach. Es braucht da schon einige Optimierungen, damit es vernünftig läuft. Mit dem NDK bekommt man viel leichter gute Performance.
Alternativ zu Java verwende ich auf Android Love, was ich zusammen mit einem Freund portiere. Warum Love? Wir haben damit schon einige Minispiele auf dem PC (und Mac) erstellt. Irgendwann habe ich mal gesagt "als in Java neu implementieren ist ja nicht so geschickt, mit dem NDK ist das viel einfacher" - und schon war ich in dem Projekt. :crazy:
Mit dem NDK gibt es immer wieder Probleme mit den Android-Eigenheiten, d.h. einige Dinge funktionieren nicht, wie man es unter Linux gewohnt ist. Z.B. kann man nicht ohne weiteres auf Dateien im apk zugreifen. Und es gibt auch noch ein paar weitere Dinge, die etwas umständlicher sind als normal. Viel davon lässt sich aber mit JNI und Java lösen, rooten sollte man nicht vorausetzen, auch wenn damit einiges einfacher wäre.
Was meinst Du mit dem Skalieren? Es gibt viele Großprojekte, die C++ benutzen? Du kannst dort genauso wie in Java objektorientiert entwickeln, Unittests programmieren, ...
Gruß,
Markus

Thoran

Alter Hase

Beiträge: 520

Wohnort: Stuttgart

Beruf: Senior Software Engineer

  • Private Nachricht senden

3

07.11.2012, 09:21

Ich habe am Rande mitbekommen, wie die Entwiclkung nativen Codes mit Android funktioniert. Es lohnt sich auf jeden Fall Arbeit in den Buildprozess zu stecken, so dass man da nicht jedesmal am Rumfummeln ist, bis das eigene Projekt kompiliert und auf dem Device deployed ist. Außerdem ist das Debugging durchaus kompliziert wenn man es mit dem Debugging von VS vergleicht. Man sollte sich also dieser Dinge bewußt sein. Wenn es meine Zeit zu läßt werde ich meine Engine auch mal auf Android zum Laufen bringen. Momentan hindert mich daran eher, das mein Android Handy nur v2.2 hat, was die native Entwicklung nochmals etwas verkompliziert. Außerdem hab ich nicht wirklich was spielbares, für das es sich lohnt den nicht unerheblichen Aufwand anzugehen.
Mein Entwicklertagebuch
Aktuelles Projekt: Universum Espionage
Eingestellt:Spieleengine SilverCore
Organisator "Spieleentwickler Stammtisch Stuttgart"

4

07.11.2012, 11:21

Moe meint LÖVE (groß und mit ö :D): https://love2d.org/

Der hierfür interessante Android Teil des LÖVE-Forums: https://love2d.org/forums/viewforum.php?f=11

Aufgrund der Einfachheit und der schnellen Erlernbarkeit sicher einen Hingucker wert. :)

5

07.11.2012, 17:47

@Moe: Danke für deine Einschätzung, ich würde aber doch schon sehr gerne bei C++ bleiben und nicht auf LUA ausweichen. Mit "skalieren" meine ich wie praktikabel bleibt das NDK, wenn ich wirklich 2D-Apps schreiben will. Denn klar bei ner kleinen "Klicki-Bunti-GUI-App" hält sich der Aufwand noch in Grenzen, doch wie nutzbar wird es bei Apps, die einen etwas "höheren" Funktionsgrad haben? Was C++ so an Features hat ist mir bewusst, bin ja C++ Entwickler und mag kein Java :).

@Thoran: Ja ich bin mir noch etwas unsicher was den Build-Prozess betrifft. Zum einen wird natürlich empfohlen Eclipse mit ADT Plugin zu nutzen, allerdings wollte ich nicht sofort von meiner Lieblings-IDE (VS) lösen. Deshalb habe mich mir mit Hilfe von Klick einen ganz praktikablen Build-Prozess in VS eingerichtet. In wie weit das dann sinnvoll wird bei größeren Projekten werde ich dann (u.U. schmerzhaft) erfahren :D.

Gruß Mark

Thoran

Alter Hase

Beiträge: 520

Wohnort: Stuttgart

Beruf: Senior Software Engineer

  • Private Nachricht senden

6

08.11.2012, 09:35

@mark93: Also ich bleib dabei auf jeden Fall in VS. Mein Buildprozess setzt auf CMake auf für das es erfreulicherweise auch Möglichkeiten gibt, die eigene C++-Anwendung auf Android zu bauen. Meine Hoffnung ist, dass ich, wenn mal die CMake-Buildscripte stehen, einfach immer wieder neu für Android bauen kann. Dann bleibt nur noch das problem des Debugging auf Android-Devices.
Mein Entwicklertagebuch
Aktuelles Projekt: Universum Espionage
Eingestellt:Spieleengine SilverCore
Organisator "Spieleentwickler Stammtisch Stuttgart"

Moe

Frischling

Beiträge: 85

Wohnort: München

  • Private Nachricht senden

7

08.11.2012, 23:38

@Moe: Danke für deine Einschätzung, ich würde aber doch schon sehr gerne bei C++ bleiben und nicht auf LUA ausweichen. Mit "skalieren" meine ich wie praktikabel bleibt das NDK, wenn ich wirklich 2D-Apps schreiben will. Denn klar bei ner kleinen "Klicki-Bunti-GUI-App" hält sich der Aufwand noch in Grenzen, doch wie nutzbar wird es bei Apps, die einen etwas "höheren" Funktionsgrad haben? Was C++ so an Features hat ist mir bewusst, bin ja C++ Entwickler und mag kein Java :).
Android verwendet ein eigenes Build-System, das Makefiles vereinfacht. Damit lassen sich problemlos größere Projekte verwalten, der Löve-Port ist z.B. schon etwas größer. Du kannst dein Projekt auch relativ einfach in verschiedene Bibliotheken aufteilen. Ich weiß nicht, ob cmake Android.mk Dateien generieren kann, aber an sich ist das nicht schwer zu lernen... Unterverzeichnisse etc. ist alles kein Problem, das gleiche System wird für ganz Android verwendet.

Debugging ist kein Problem, mit dem gdb-Server kannst Du eine Brücke zu deinem PC aufbauen und dann - wie gewohnt - Zeile für Zeile debuggen. ARM hat auch noch zusätzliche Tools veröffentlicht, mit denen Du debuggen kannst. NVIDIA hat auch ein spezielles Paket für Android-Entwicklung.

Werbeanzeige