Mit welchen Programmiersprachen kann man eine App programmieren?
Habe vor ein 2D Spiel für iOS oder Android (wenn es geht beides) zu entwickeln. Jetzt frage ich mich mit welchen Programmiersprachen es möglich wäre und wieviele ich dafür benötige.
9 Antworten
Wenn du eine fertige Engine willst, dann Unity mit Unityscript oder C#.
Wenn du es komplett selber machen willst, dann würde ich Java mit der Rendering Library libGDX empfehlen, damit hat man das Spiel von Android auch sehr schnell für PC und iOS portiert. (Für iOS mit RoboVM oder Intels Multi OS Engine)
Du hast mehrere Möglichkeiten, an dein Ziel zu gelangen. Du kannst eine native App entwickeln oder eine Web-App.
1. Native App
Für die Entwicklung würde dir Qt oder Java empfehlen. So kannst du beide Plattformen gleichzeitig bedienen. Es gibt jeweils Game-Engines wie V-Play oder libGDX, die eine gute Grundlage geben sollten.
Wenn du nur für iOS entwickeln möchtest, kannst du genauso auch Objective-C oder Swift verwenden.
Des Weiteren könntest du mit Unity3D oder der Unreal Engine ein Spiel kreieren und dann für die geeignete Zielplattform bauen lassen.
2. Web-App
In dem Fall würde dein Spiel über eine Webseite erreichbar sein, die auf dem mobilen Endgerät aufgerufen wird. Für Web-Applikationen eignen sich viele verschiedene Sprachen: ASP.NET, PHP, Python, Perl, Java, Ruby, usw.
Es war klar, dass du dich nun wiederum gegen deine eigene benannte Quelle ("auf den LWJGL Seiten") stellst. 😄
Hör in Zukunft einfach auf, Dinge zu kritisieren, die bereits richtig sind oder zeige wenigstens den Willen, einmal dazuzulernen.Weiteres kannst du in meinen Kommentaren oben nochmal nachlesen. 😉
Deine Vorstellungen einer Game Engine sind einfach nicht ganz richtig.
"Basisfunktionalitäten wie Audio, Zustandsspeicherung, Physics, Grafik-Rendering und das Eingabe-Verhalten"
Physik nur in dem Sinne, dass es in einem 2d/3d Raum angezeigt wird, Spiel Physik fehlt aber (Fallbeschleunigung, Bewegungen, etc). Genau so trifft das auch auf LWJGL zu, dass das aber keine Engine ist steht außer Frage.
"Ein Framework, welches alle Funktionalitäten beinhaltet, die notwendig sind, um ein Spiel zu entwickeln, ist eine Game Engine."
Auch nicht gerade eindeutig, demnach wären sogar Swing, JavaFX, Qt und GTK+ Game Engines.
Es fehlen einfach wichtige Eigenschaften. Eine Game Engine hat mindestens eine Rendering Engine und eine einfache Physik Engine, beides hat libGDX nicht und muss über echte Engines wie Box2d nachgerüstet werden. Man kann das ganze zwar etwas ausdehnen, dass libGDX halb unter den Begriff fällt, aber als vollwertige Engine geht es nicht durch.
Das hier führt sowieso zu nichts, die Antwort verschwindet sogar schon aus meinem Verlauf...
Es ist ziemlich schwach sich nur auf das Wort des Entwicklers zu verlassen. JMonkeyEngine ist eindeutig eine richtige Engine für Java, diese bietet eine fertige Implementation der Darstellung an und übernimmt auch großteile der Physik, was eben ausschlaggebend ist. libGDX bietet von diesen Funktionen, welche direkt das Spielverhalten beeinflussen nichts. Im Grunde genommen ist libGDX nur LWJGL auf höherem Level (mit Sprite Batches) und ist noch plattformunabhängig. LWJGL ist eindeutig keine Engine und libGDX damit auch nicht. Auch auf den LWJGL Seiten wird libGDX nicht als Engine gelistet, andere wie JMonkeyEngine jedoch schon.
Komisch, hier steht es aber:
It is also used in popular game engines, like libGDX and jMonkeyEngine.
https://www.lwjgl.org/ (über dem Footer, im Abschnitt "Looking for LWJGL 2?")
Einfache Physik und die automatische Darstellung von Elementen bietet jede Engine an, Unity, Unreal Engine etc. Bei libGDX muss man die gesamte Welt selber implementieren, genauso wie das Rendering. libGDX ist hat große Ähnlichkeiten zu LWJGL (basiert ja auch darauf), das wird auch als Game Library bezeichnet.
Eine Engine braucht nicht zwingend eine GUI wie Unity3D, die Grundfunktionalitäten reichen.
Interview mit Zechner:
https://libgdx.badlogicgames.com/downloads/interview_mario_zechner.pdf
Ich habe auch nicht behauptet, dass ein GUI nötig ist. Es ist auch egal, was der Developer meint, libGDX fällt nicht unter den allg. Begriff Engine bzw Game Engine, wie zum Beispiel hier: https://de.wikipedia.org/wiki/Spiel-Engine. Auch wird nirgendwo libGDX als Engine außer in diesem Interview von Engine geredet, nur Game Development Framework, was es auch ist.
Ein Framework, welches alle Funktionalitäten beinhaltet, die notwendig sind, um ein Spiel zu entwickeln, ist eine Game Engine.
Außerdem solltest du die Kompetenz eines Entwicklers nicht mit der eines Wikipedia-Artikels vergleichen, der nicht einmal mit hinreichend Belegen ausgestattet ist. ;)
Dem ist eben nicht so, libGDX selbst übernimmt nur Rendering und bietet noch plattformunabhängige Interfaces für Input/Output an, das ist noch keine Engine, denn libGDX übernimmt keinerlei Spiellogik. Zur Engine wird es nur durch Addons wie Box2d, dann ist aber Box2d die Engine und nicht libGDX selbst.
Die Spiellogik wird üblicherweise vom Nutzer einer Engine entworfen. Eine Engine stellt nur die Funktionalitäten zur Verfügung, die er dafür benötigen wird.
libGDX nutzt mehrere third party libraries um seine Funktionalitäten zur Verfügung zu stellen, das stimmt. Doch stellt es als Framework den Deckmantel dar.
Ich denke, die Entwickler von libGDX wissen besser als du, ob sie gerade eine Engine vor sich haben oder nicht. Wenn du das ignorieren möchtest, ist das deine Sache.
Seit wann ist libGDX eine Game Engine? Das ist eine 2d/3d Rendering Library.
Seitdem Mario Zechner es als solche benannt hat und Basisfunktionalitäten wie Audio, Zustandsspeicherung, Physics, Grafik-Rendering und das Eingabe-Verhalten unterstützt werden.
Mit den für iOS bzw. Android vorgesehenen Programmiersprachen:
iOS: Objective-C oder/und Swift
Android: Java
Java für Android apps
Xcode für ios
Xcode ist die Entwicklungsumgebung. Die Sprachen sind Objective-C und Swift.
Ich würde Java nehmen, da es Platformunabhängig und sowohl komplex als auch einsteigerfreundlich ist.
Hier wieder rum nicht: http://wiki.lwjgl.org/wiki/Game_Engines_and_Libraries_Using_LWJGL Man kann da viele Beispiele liefern, die Eigenschaften von libGDX sprechen aber eher dagegen.