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

Schrompf

Alter Hase

  • »Schrompf« ist der Autor dieses Themas

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

1

23.06.2015, 10:21

Entwicklung einer App für alle gängigen Mobile-Plattformen - was ist da Stand der Technik?

Hallo!

Ich werde evtl. für einen Kunden eine App entwickeln. Das ist kein Spiel, sondern eine GUI-zentrische App mit so ner News-Feed, Text- und Sprachinteraktionen, optional mit Push Notifications und einem dicken Server dahinter, der die Ereignisse zwischen den Usern verteilt. Der Auftraggeber träumt von einigen Millionen Usern, und so wie ich den bisher kennengelernt habe, hat er sogar eine gewisse Chance, das auch zu erreichen. Deutlich mehr Chance jedenfalls als die MMO-Visionäre in den Foren.

Meine Fragen sind nun:

1) Was ist heutzutage Stand der Technik bei der Entwicklung solcher Apps?

Es soll nach Möglichkeit nicht zwischendurch mal ne halbe Sekunde Denkpause haben wie praktisch alle Android-Apps, die mir bisher begegnet sind. Ich hätte trotzdem gern einfach Flug-, Transparenz- und Schwurbel-Effekte eingebaut, die unaufdringlich Polishing suggerieren. Ich liebäugele mit Qt und Qt Quick, weil ich mit der Tech vertraut bin und ich weiß, dass ich damit iDings, Androids und WinPhones erreichen kann. Allerdings ziehe ich mir dann den Ärger eventuell nachfolgender Coder zu, von denen die meisten kein C++ mehr können werden. Und evtl. ist das die Chance, mal in andere Programmiersprachen und Frameworks reinzuschnuppern, auch wenn ich dann wahrscheinlich deutlich länger für den Auftrag brauche.

2) Was benutzt man für den Server?

Ich könnte mir genauso mit C++ und SQL einen Server schreiben, aber mir scheint, das wäre sehr mühsam. Dafür gibt's sicher schon irgendwelche Frameworks. Oder ich setze das Ganze mit ein paar PHP-Skripten im Apache auf, aber da habe ich die Angst, dass ich irgendwann mehr als nur reine zustandslose Anfragen brauche und dann von vorn beginnen muss. Was also benutzt der Coder von Welt heutzutage für sowas?

Danke.

Bye, Thomas
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

23.06.2015, 11:50

Hallo Thomas,

ich kann kurz erläutern wie wir das mit Timely gemacht haben. Ist zwar Android Only, war aber bereits genug Aufwand da den Polish und Performance hinzukriegen.

Backend: Google App Engine. Gibt noch andere Services, die allenfalls interessant sind. Natürlich Amazon mit ihrem Stack, aber z.B. auch Firebase, Parse, Heroku, etc. App Engine war da aber super, da alles, was wir machen mussten um zu Millionen von Usern zu skalieren die Erhöhung der Kreditlimite war.

App: Wir haben das Android nativ gemacht. Waren 4 Leute ca. 4 Monate Vollzeit dran. War zwar eine relativ simple App (ok, haben natürlich ziemlich viel Purchase Flow, eigenes Themeing, etc. gehabt aber ist immer noch verhältnismässig einfach von der Funktionalität), aber wenn du wirklichen Polish auf Android willst und möchtest, dass das anständig läuft, dann ist das nicht ganz trivial (und ich bin skeptisch ob es überhaupt mit einem weiteren Layer drauf so möglich gewesen wäre). Wenn du ältere Geräte misachten kannst, dann macht es das natürlich einfacher, aber auf älteren Geräten sind gewissen Effekte extrem teuer, während auf neueren diese besser optimiert uns somit machbar sind.

Einfaches aber trotzdem performances Cross Platform habe ich leider noch nie gesehen. Irgendwo war da immer native Entwicklung drin. Wenn du aber ein paar Annahmen machen kannst (Neuheit Geräte, OS Version, weniger Anforderung an Performance etc.) kann es durchaus sein, dass es mittlerweilen ein paar gute Platformen gibt. Ein paar, die ich so immer wieder höre sind PhoneGap, Xamarin und Appcelerator. Habe aber keine Erfahrung damit. Müsstest dich mal informieren und ein paar Erfahrungs Berichte lesen ob das ev. etwas für dich ist.

Weiss nicht ob dir das was hilft. Sonst einfach nachhaken. ;)

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

3

23.06.2015, 11:53

Für den Client wäre wichtig, dass er auf den unterschiedlichen Plattformen die nativen Steuerelement (und somit auch das native Look&Feel) verwendet, wofür eine entsprechende Abstraktion erforderlich ist, und dass die Performance nicht alleine durch das verwendete Framework zu stark leidet.
Qt ist eine Möglichkeit, nur weiß ich nicht, wie es sich dort mit der Abstraktion der Steuerelemente verhält. Ansonsten habe ich bereits gehört, dass es sich durchaus eignen solle.
Xamarin.Forms wäre eine andere Möglichkeit, bei der man vergleichbar zu WPF die Oberflächen definieren kann und auch bspw. DataBinding verwenden kann. Solange man bei "einfachen Apps" bleibt (also nicht zu viele Spezialfeatures möchte), ist das eine sinnvolle Möglichkeit, andernfalls müsste man wieder für die unterschiedlichen Plattformen jeweils eine Implementierung anfertigen. Ich kann aber nicht sagen, was man alles mit der kostenlosen Variante anstellen kann.

Es gibt zwar auch Frameworks, die Webtechnologien zur Cross-Platform-App-Entwicklung verwenden, allerdings leiden diese unter dem Problem, dass die App dann einfach nur eine "Website ohne Browserfenster" ist.
Für jede Plattform eine eigene App zu entwickeln, wäre _theoretischerweise_ eine Möglichkeit, aufgrund des Mehraufwands dürfte das aber wohl nicht in die nähere Auswahl kommen...


Für die Serverseite kann ich nicht so viel sagen. Es gibt die unterschiedlichsten Scriptsprachen (PHP, Python, Ruby, JavaScript) oder "normale" Programmiersprachen (C++, C#, Java, ...), für die es die unterschiedlichsten Frameworks für die Serverseitige Entwicklung (Rails, node.js, ASP.net, ...) gibt. Eine Empfehlung kann ich da leider nicht aussprechen, da ich zugegebenermaßen keine Übersicht über die Frameworks habe.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Schrompf

Alter Hase

  • »Schrompf« ist der Autor dieses Themas

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

4

23.06.2015, 12:09

Ok, Danke für die Infos! Ich habe jetzt ein paar Stichworte, die ich mir ergoogeln kann.

Das "native Steuerelemente" stelle ich mir ehrlich gesagt unwichtig vor. Immerhin ist das ja kein Windows/Linux/OSX, bei dem man Fensterrahmen mit Bedienelementen und eine vertraute Tab-Reihenfolge erwartet. Und wenn ich mir WhatsApp, Facebook oder Telegram anschaue, benutzen die auch alle ihre eigenen Design-Elemente. Was genau wären denn die Native-Elemente, die jeder Mobile-Benutzer erwarten würde? Ich verachte die meisten Mobiltelefon-Anwendungen aufgrund der mühsamen Texteingabe und der ewigen Aussetzer/Ruckler/Ladepausen ziemlich, daher bin ich leider nicht so vertraut mit den Usability-Standards auf diesen Geräten. Aber vielleicht ist auch nur mein Schlaufon zu alt.

@Drakon:

Hab mal Deinen Link angeklickt. Gleich der zweite Anstrich enthält einen Tippfehler: "Wundevolles Erwachen:" - die App verteilt Wunden beim Wecken? Aua :)

Welche Programmiersprache und welche sonstigen Frameworks wurden da verwendet? "Native" auf Android heißt Java? Oder was wurde da benutzt?

[edit] "Native"-Bedienung auf jedem Gerät bedeutet ja, dass ich ne separate App für jedes Gerät schreibe, oder? Und das hieße dann, dass ich effektiv xmal eine neue App schreibe. Auf Android in Java, schätze ich? Auf iZeuchs in Swift? Auf Windows Phone in C#? Blackberry? Ist das noch relevant heutzutage? Und gemeinsamen Code teilen gibt's zwischen diesen Apps dann gar nicht, oder?
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Schrompf« (23.06.2015, 12:15)


Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

5

23.06.2015, 12:46

Vielleicht war meine Wortwahl etwas fehlleitend. Mit den "nativen Steuerelementen" meine ich nicht, dass der für die Plattform "passende" Code geschrieben werden sollte, sondern dass die Steuerelemente, die man über die API's des Systems erzeugen kann, verwendet werden sollten. Entsprechend sollte das Framework dort eine Abstraktion liefern, dass man auf jeder Plattform in seinem Code einen Framework.Namespace.Button erzeugen kann und abhängig von der Plattform dann den richtigen Button erhält. (Alternativen dazu wären, dass das Framework sich um das Darstellen und die Interaktionen mit dem Button kümmert, was tendenziell ein schlechteres Bediengefühl und/oder Performance haben könnte.

Mir ist nicht aufgefallen, dass Drakon kurz vor mir einen Beitrag schrieb:
Timely dürfte aufgrund der Visualisierung nur schwer Cross-Platform mit Frameworks umzusetzen sein. Die meisten, bei denen sowas geht, würden wohl nicht auf die Systemeigenen Möglichkeiten zurückgreifen. Abhängig vom Framework könnte es auch möglich sein, den "Code Behind" für alle Plattformen gleichermaßen zu verwenden und nur im Bereich des UI Plattformspeziefisch zu arbeiten. Mit Xamarin-Technologie (die es auch schon vor Xamarin.Forms gab) war das wohl möglich.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

23.06.2015, 12:54

also wenn du auf Plattform spezifische Komponenten bauen willst musst du eh für die jew. Plattform den Code schreiben.
Nein. Gewisse Frameworks kapseln die auch weg. Da muss man nicht wie bei LibGdx sämtliche GUI neu bauen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

7

23.06.2015, 14:08

PhoneGap sieht doch schön und einfach aus.
Wir benutzen das soweit ich weiß auch in der Firma. Entwickelt wird dann mit Webtechnologien, was eigentlich jeder schon kann (außer JavaScript vielleicht). Für den Server könnte man dann gleich passend nodejs nehmen :D Und Google App Engine hätte wäre mir jetzt auch als erstes eingefallen, evt. dann aber als Java oder C++ Server.

Tobiking

1x Rätselkönig

  • Private Nachricht senden

8

23.06.2015, 14:33

Ich habe ne Zeit lang mit Ionic hantiert. Das ist ein Framework zusammengebaut aus Phonegap/Cordova und AngularJS mit eigener Komponentensammlung. Erinnert ein wenig an Bootstrap fürs Web, da es fertige Komponenten (Tabnav, Sidenav, Listen etc.) besitzt, die man zu einer App zusammensetzen kann, oder sich auch, wenn man in HTML +SASS/CSS genug auskennt, eigene Elemente bastelt. Die enthaltenen Komponenten haben so ziemlich alle ein ans Zielsystem angepasstes Look & Feel inklusive Animationen und Icons.

Es baut auf HTML 5 auf und ist daher wohl auf Android Geräte mit alter WebView nicht so performant. Was ich aber gesehen habe ist, dass es App Packager gibt, die für ältere Geräte dann einen auf Chrome basierenden Browser mit bundlen und damit akzeptable Performance bringen sollen.

9

23.06.2015, 17:11

Simple Frage, die wichtig ist: "gängige Plattformen" = +Windows Phone?

Ich arbeite beruflich seit ca. einem Jahr mit Adobe Air+Starling/Feathers framework. Größtenteils für Spiele, aber auch normale apps.
Starling ist ein layer für opengl/stage3D, Feathers ein ui-framework.
Bisher hatte ich keinerlei performance-Probleme, auch auf älteren Geräten (3-4 Jahre alt).
Alle apps laufen konstant auf 60fps, haben eine konstante ram-Auslastung und verbrauchen auf dem iphone 5s im Schnitt 25-35% cpu (50-60, wenn wirklich viel passiert).
Um das zu erreichen, verbringe ich bei jeder app 1-3 Tage (bei 2-3 Monate Entwicklung pro app) an der Optimierung (über 80% der Optimierung fällt aber auf Komprimierung/ram-Auslastung).

Nachteile:
kein windows phone, keine nativen GUI-Elemente (kenne keine cross platform-Lösung, welche das korrekt anbietet).. eig. wars das schon an Nachteilen.

Vorteile:
Kostenlose Plattform (man braucht kein adobe-Abo), native Funktionen lassen sich abstrakt in extensions packen und mit einer code base nutzen, der code wird nativ kompiliert (ios) und hat alleine dadurch einen großen performance-Vorteil gegenüber den html5-frameworks. Deine "Effekte" sind regelrecht basics mit flash und tweens. Trotz aller möglichen Vorurteile ist der Adobe-support noch absolut ok, 14 major Versionen in 2 Jahren sprechen für sich.


Was auch noch so in der Umgebung rumschwirrt ist Haxe/OpenFL. Während es mehr Plattformen anbietet als die meisten cross platform Lösungen kommt mir das komplette Ökosystem darum aber noch sehr nach Kinderschuhen vor.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »ventrix« (23.06.2015, 17:24)


xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

10

23.06.2015, 17:46

Man kann durchaus Frameworks verwenden die einem cross-platform Entwicklung ermoeglichen, der grosse Nachteil daran ist jedoch, dass die Plattformen sehr unterschiedliche Design und Bedienkonzepte haben. Eine UI die gut auf iOS laeuft wird sich auf Android nicht gut ins System integrieren, anders herum genauso.

Wenn man auf jeder Platform eine gute UX bieten moechte, dann wird man kaum darum herum kommen wenigstens den UI Layer fuer jede Platform separat zu entwickeln. Es gibt glaube ich einige Frameworks die ed ermoeglichen den Logikcode cross-platform zu verwenden, und man dann nur die UI Ebene separat entwickeln muss. Xamarin waere ein Beispiel: http://xamarin.com/

Werbeanzeige