Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Mai 14, 2024 14:14

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 21 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
BeitragVerfasst: Mi Sep 25, 2013 10:05 
Offline
DGL Member

Registriert: Di Aug 20, 2013 15:40
Beiträge: 8
Wohnort: Berlin
Programmiersprache: Delphi SE
Hallo,

ich frage mich gerade mit welcher Sprache die Entwickler für Smartphone- und Tablet-Spiele arbeiten. Ist das bei den iOS Produkten ähnlich wie bei den Androids? Ich habe diese Sparte eigentlich nie wirklich ernst genommen, bis ich mir vor kurzem selbst ein ziemlich günstiges Samsung Galaxy Tab 2 bei Saturn gekauft habe. Eigentlich verwende ich es ja zum Surfen etc. Aber ich bleibe immer mal wieder an einem Spiel hängen. Schon beeindruckend was die Geräte für Grafiken darstellen können. Einzig bei der Steuerung würden mir einige „bessere“ Bedienkonzepte einfallen. Ich spiele gerade mit dem Gedanken mal selbst etwas für ein Tablet zu machen. Hat jemand von euch vielleicht schon Erfahrungen damit gesammelt?

Grüße!

_________________
"Headcrab? Gordon no likey!"


Zuletzt geändert von delo am Do Sep 26, 2013 18:36, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Sep 25, 2013 11:13 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 588
Programmiersprache: C++
Erfahrungen nicht, aber ich meine zu wissen, dass Android-Apps eigentlich immer in Java programmiert werden und iOS-Apps in Objective-C. Allerdings besteht auf Android die Möglichkeit, zeitkritische Funktionen in eine C(++)-Library auszulagern. Das Qt5-Framework nutzt diesen Trick, um herkömmlich in C++ programmierte Apps auf Android laufen zu lassen. Dabei wird praktisch alles wichtige in eine C++ Bibliothek ausgelagert, welche dann von einer automatisch generierten Java-App geladen wird. Frag mich aber nicht nach Details - das ist nur das, was ich über heise-Meldungen mitbekommen habe.

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Sep 25, 2013 12:51 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Inzwischen kann man sogar mit Delphi sowohl für Android, als auch für iOS (und MacOSX) entwicklen, und zwar "nativ" (basiert dann auf FireMonkey, also OpenGL ES). Allerdings ist der Einstiegspreis hier ziemlich hoch.

Mit Free Pascal geht das teilweise auch, ist aber ziemlich umständlich. Zumindest meine Versuche damit was für Android zu machen waren sehr schwierig. Alternativ gibts aber auch noch solche Sachen wie das Smart Mobile Studio oder Oxygene, zumindest wenn man bei der Pascal Syntax bleiben will ;)

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Sep 25, 2013 13:13 
Offline
DGL Member

Registriert: Di Aug 21, 2012 19:31
Beiträge: 173
Programmiersprache: C#
Moin,

also ich habe in sachen Android bisher immer mit dem Eclipse-Plugin in Java gearbeitet.
Ist, wie ich finde, 'ne sehr komfortable Sache. Das Device kann simuliert und dargestellt werden.
So können auch Eingaben am Gerät mit der Maus erzeugt werden.
Und es gibt ein Tool (irgendwas-Monkey, hab ich gerade nicht im Sinn), dass "unendlich" viele Tastendrücke und sonstiges simuliert und so unerwartetes Verhalten aufdeckt.

Mit iOS hab ich keine Erfahrung.

Grüße
Jan

_________________
ack nack nack nack nack


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Sep 25, 2013 16:59 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Auch wenn es bei der Frage um die Sprache ging, vielleicht möchtest du auch eine fertige Engine benutzen:

Für Hobbyprojekte kann ich durchaus Unity3d empfehlen, damit kriegt schnell etwas lauffähiges zusammen. Die kostenlose Version von Unity kann neuerdings eben auch zu iOS und Android exporten, hat aber natürlich diverse Beschränkungen, etwa kein RenderToTexture was so gut wie alle Post-Effekte ausschließt. Außerdem ist Unity (auch Pro) leider generell ungeeignet um komplexe UI zu realisieren, also wenn du deutlich mehr als ein paar Buttons und eine Health-Anzeige benötigst, überlege dir das gut.
http://unity3d.com/unity/licenses

Ansonsten könnte die UnrealEngine eine Option sein, diese ist kostenlos solange dein Projekt nicht kommerziell ist. Habe ich aber noch nie verwendet.
http://www.unrealengine.com/en/platforms/

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Sep 25, 2013 17:09 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Aug 18, 2007 18:47
Beiträge: 694
Wohnort: Köln
Programmiersprache: Java
Wenn es um iOS in Objective-C geht kommt man auch nicht um einen Mac herum, da XCode meines Wissens nach nicht für Windows verfügbar ist.
Keine Ahnung wie man die GUI etc. mit Delphi für iOS bastelt. Gibt es da irgendwelche Editoren? Bei XCode ist alles dabei was man braucht um "glücklich" zu werden.

_________________
Es werde Licht.
glEnable(GL_LIGHTING);
Und es ward Licht.


Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"

on error goto next


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Sep 25, 2013 18:06 
Offline
Compliance Officer
Benutzeravatar

Registriert: So Aug 08, 2010 08:37
Beiträge: 460
Programmiersprache: C / C++ / Lua
ZenGL: http://zengl.org/

wäre auch eine Engine, die man nutzen könnte, habs aber nie probiert. (aus Mangel an Smartphone)

Soll auf Android und iOS laufen, nutzt aber unter iOS XCode.

_________________
offizieller DGL Compliance Beauftragter
Never run a changing system! (oder so)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Sep 25, 2013 18:19 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
iOS kannst du nur mit einen Mac entwickeln, da du nur über xCode (mir fällt grad das eigentliche Programm nicht ein). die Bundles releasen und testen kannst.

De Facto hast du, was die Sprachen angeht, nicht viele Möglichkeiten. Um genauer zu sein, es läuft alles entweder auf Javascript, C oder C++ hinaus. Die ganzen nicht-offiziellen Sprachen (z.B. Mono, Delphi, Adobe, ...) sollte man unter keinen Umständen verwenden (trust me ;)).

Javascript ist hier nach meiner Erfahrung am stabilsten, außerdem sind die Richtlinien für die Stores hier wesentlich relaxter. Allerdings solltest du unter iOS ca 1-2 Tage einplanen um nen kleinen Server zu schreiben. Ansonsten sind die Interfaces mit den Frameworks sehr entspannt.

Zu C und C++ muss man nicht viel sagen. Bei C hast du im Gegensatz zu C++ den Vorteil das du es als Objective-C linken kannst und dadurch Reflection hast. Der Rest ist Geschmackssache bei den beiden.

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Sep 25, 2013 20:05 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Mit Unity hast du die Wahl zwischen C# (ein Custom Mono 2.0) und JavaScript und Boo, wenn dir das mehr zusagt ;)

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Sep 26, 2013 08:15 
Offline
DGL Member

Registriert: Di Aug 20, 2013 15:40
Beiträge: 8
Wohnort: Berlin
Programmiersprache: Delphi SE
Vielen Dank euch allen, das waren wirklich aufschlussreiche Antworten!

Eine fertige Engine wäre eine Option, aber das muss ich mir nochmal genauer ansehen. Da ich ohnehin ein Android zuhause habe denke ich Javascript wäre am schlauesten. Da bin ich zum Glück auch nicht ganz ungeübt. Aber zunächst geht es ja tatsächlich primär um eine Spielerei. Werde mich mal etwas mehr in das Thema einlesen. Falls etwas dabei heraus kommt, werde ich natürlich berichten.

Grüße!

_________________
"Headcrab? Gordon no likey!"


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Sep 26, 2013 08:31 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 29, 2003 00:11
Beiträge: 436
Kurz mal alles hier zusammenfassen und nochc ein paar Optionen reinschmeißen. :) Du hast wie gesagt mehrere Optionen:
- Nativ für die jeweilige Platform: ObjectiveC für iOS, Java/C++ für Android
- HTML5-Lösungen via Phonegap und ähnlichem. Dann halt eine der vielen JS-Game-Engines (die haben dann auch dank WebGL ordentlich Grafikleistungen)
- Plattformübergreifende Frameworks, die in nativen Code kompilieren wie Titanium oder QT
- Unity3D und Konsorten
- Ziemlich gut soll das hier sein: http://cocos2d-x.org/

Für iOS musst du unter OSX mit XCode bauen, da hast du keine andere Wahl. Um die App dann zu signieren (musst du für den Store) oder außerhalb des Simulators laufen zu lassen, musst du dich als Entwickler für 99$ registrieren. Android-Apps signierst du mit einem eigenen Zertifikat und kannst sie dann in beliebigen Stores anbieten. Natürlich bietet sich als erstes der Play-Store von Google an, der ist der größte. Ein Account da kostet einmalig 25$ (zu zahlen mit Kreditkarte...). Aber es gibt auch z.B. die AndroidPit (gratis, aber gucken beim Hochladen, ob die App schon im Play-Store ist, um sich da ein paar Metadaten zu ziehen, geht nicht ohne...) oder den Samsung-Store (die sollen einigermaßen hohe Auflagen haben und gucken sich, wie Apple, jede App an, die eingereicht wird).


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Sep 26, 2013 12:41 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
So noch mal ein bissl ausfuehrlicher:
HTML5
- JS Dateien zaehlen als Content. D.h. du kannst sie von deiner App downloaden lassen und musst kein extra Bundle fuer ein Update in den Store laden (wohl der groesste Vorteil).
- Unter Android wird uebergibst du dem Webview eine Klasse als Namespace und makierst deine Funktionen mit einer speziellen Notation. Ich bin da bisher bis Froyo runtergegangen. Fuer hohere Version gibts im Webview Interface noch eine Methode um eine HTTP-Response auszugeben.
- Unter Apple gibts hier vorgefertigte HTTP-Server (die sollten auch unter Android laufen). Mit denen kannst du so ziehmlich alles Moegliche machen. Ich hab das schon selbst probiert und es funktioniert sehr sehr gut (meiner laeuft schon seit iOS 4 ohne Probleme).
- Im Gegensatz zu einigen Beitraegen hier ist Webgl keine gute Loesung. Hier kommt es immer wieder zu massiven Problemen (z.B. Lebenszyklus der App). Wenn du GL verwenden willst waere mein Vorschlag einen nativen GLView ueber deinen Webview zu legen (unsichtbare Webviews gehen allerdings auch) und das JS ueber die oben beschrieben Methoden zu verarbeiten.
- JS hat einige Limitierungen was z.B. die Laufzeit angeht. Ich bin da zwar nie ans Limit gekommen aber es kann ja nicht schaden sich das mal durchzulesen.
- Ich jage in der meiner Debug config das JS noch durch einen Precompiler und kann mir dadurch Expression genau ausgeben lassen was gerade passiert. Sehr nuetzlich wenn man doch mal in irgendeinen Fehler laeuft.

iOS = ObjC, Irrglaube

Objective-C ist C. Der Objective-C Compiler gibt dir lediglich Structs mit einen bestimmten Layout und ruft speziellen Methoden in der Runtime auf um die "Klassen" usw. zu verwalten. Wenn du von Vorne bis Hinten in C/C++ arbeiten willst dann sieht das nicht viel anders als Sonst aus. Ein einfaches Setup ist z.B. :
Code:
  1.  
  2.  
  3. bool AppDel_didFinishLaunching(struct AppDel *self, SEL _cmd, void *application, void *options) {
  4.     self->window = new(UIWindow);
  5.     id viewController = new(UIViewController);
  6.     root_view = objc_msgSend(viewController, sel_getUid("view"));
  7.     objc_msgSend(self->window, sel_getUid("setRootViewController:"), viewController);
  8.     objc_msgSend(self->window, sel_getUid("makeKeyAndVisible"));
  9.     cl_init();
  10.     return true;
  11. }
  12.  
  13. int main(int argc, char *argv[])
  14. {
  15.     Class AppDelegateClass = objc_allocateClassPair((Class)objc_getClass("UIResponder"), "AppDelegate", 0);
  16.     class_addIvar(AppDelegateClass, "window", sizeof(id), 0, "@");
  17.     class_addMethod(AppDelegateClass, sel_getUid("application:didFinishLaunchingWithOptions:"), (IMP) AppDel_didFinishLaunching, "i@:@@");
  18.     objc_registerClassPair(AppDelegateClass);
  19.    
  20.     id autoreleasePool = new(NSAutoreleasePool);
  21.     int out = UIApplicationMain(argc, argv, nil, CFSTR("AppDelegate"));
  22.     objc_msgSend(autoreleasePool, sel_getUid("drain"));
  23.     return out;
  24. }
  25.  
  26.  


Das ganze funktioniert natuerlich auch umgekehrt (siehe mein Projekt) ohne grosse Probleme. Allerdings gibts kaum brauchbare Runtimes auf den anderen Platform. Die GNU-Runtime z.B. kann man unter Windows total vergessen.

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Sep 26, 2013 18:38 
Offline
DGL Member

Registriert: Di Aug 20, 2013 15:40
Beiträge: 8
Wohnort: Berlin
Programmiersprache: Delphi SE
Hey Leute,

echt cool, dass ihr mir so viele Hilfestellungen gibt. Ich lese es gerade so zwischen Tür und Angel. Deshalb werde ich erst morgen dazu kommen, mir alles mal ausführlicher anzusehen. Bis dahin vielen Dank und einen schönen Feierabend!

Grüße!

_________________
"Headcrab? Gordon no likey!"


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Sep 26, 2013 19:09 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 29, 2003 00:11
Beiträge: 436
Kleiner Hinweis noch, wenn statt ObjectiveC halt C++ verwenden willst: Einfach die Dateiendung von .m auf .mm ändern. Damit hast du dann z.B. alle Nettigkeiten der Std-Lib zur Verfügung wie die Container. Die sind um einiges bequemer als das beschränkte NSArray. :)

Reine HTML5-Anwendungen, die sich dann auch noch komplett von einem Server nachladen, haben eine gewisse Chance, abgelehnt zu werden von Apple. Da gibt es schwammige Richtlinien, dass die App auch offline funktionieren muss (und sei es um eine Fehlermeldung zu präsentieren) oder sich "wie eine App" anfühlen...
Hab auch mal das Gerücht gehört, dass Apple eine reine Phonegap-App abgelehnt hat mit der Begründung, dass das auch als (mobile) Website abgehandelt werden kann und keine App hier nötig ist. Daneben stand der Tip, die App die Kamera oder irgendwas anderes vom Telefon zu aktivieren, auch wenn es nicht benutzt wird... Aber dazu finde ich gerade auf die schnelle keine Quelle. :) Klingt nach nem schlecht gelaunten Reviewer imho...


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Sep 27, 2013 10:13 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2621
Wohnort: Berlin
Programmiersprache: Go, C/C++
Bei iOS kannst du auf reines C++ und der verunstalteten(meine Meinung) Objective-C Variante ohne umwege arbeiten.
Es gibt noch Mono und diverse andere, die dann letzlich nativen Code bauen und auf Obj-C und C libs linken.
Unity3D baut aus dem C# Code native Bytecode und linkt gegen die Obj-C libs, welche Apple einem aufzwingt und damit braucht es XCode.
Java, C#,... als VM Bytecode und alle Scriptsprachen sind auf iOS verboten, da keine Virtual Machines erlaubt sind(größter unterschied zu Android, wo teile des OS in JavaVM's laufen ^^).
Natürlich hat Apple diese Regeln nicht für eigene Produkte eingehalten und so nutzten sie fleißig Javascript im Safari.
Für iOS benötigt man ein Provision File, welches einem berechtigt Code auf einem Apple Device aus zu führen.
Dafür musst du dir ein Entwickler Abo bei Apple holen(99€ pro Jahr) und registrierst alle deine Geräte im Profiel und lädst dein Provision file auf dieses.
Du brauchst auch ein MacOS, welches man mitlerweile auch als VM laufen lassen kann, wenn man ein kompatibles Intel System hat(i5/i7 CPU mit 0815 Motherboard und Standard AHCI/SATA Controller).
Sonnst musst du dir noch eines der diversen Apple Produkte kaufen, wo MacOS drauf läuft.

Bei Android kann man auf jede beliebige Sprache zurück greifen, ich gehe aber davon aus, dass c/C++ und Java am meisten Sinn, machen, wenn man bedenkt, dass der größte Teil vom Android OS in diesen beiden Sprachen entwickelt wurde.
QT soll laut hörensagen sehr gut geeignet sein.
Unity3D funktioniert problemlos von Windows aus für Android und ist um einiges einfacher im iterationsprozess, als iOS aber dafür hat man die Probleme wie bei PC, tonnen weise unterschiedliche Hardware Specs und verhalten.
Ein Kollege hatte ein Android Smart Phone, welches laut Specs wesentlich schneller war als das iPad3 aber dank des lahmen Speicherbus sämtliche Hardwarevorteile verloren hat, Lösung ist kein GC zu verwenden oder sehr Penibel drauf zu achten, wann man den GC zum arbeiten zwingt.
Zum Vergleich war das Kindle Fire wesentlich schlechter von den Specs hatte aber allen unseren Geräten die Kalte Schulter gezeigt, in sachen Performance.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 21 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.028s | 19 Queries | GZIP : On ]