Welche Tools sollte ich in Betracht ziehen, wenn mein Ziel darin besteht, ein Spiel so vielen Plattformen wie möglich zur Verfügung zu stellen? [geschlossen]

8

Wir planen die Entwicklung eines 2D-Puzzlespiels auf Gitterbasis, und obwohl es noch sehr früh in der Planungsphase ist, möchten wir unsere Entscheidungen von Anfang an gut treffen.

Unsere Strategie wird darin bestehen, das Spiel so vielen Plattformen wie möglich zur Verfügung zu stellen, beispielsweise PCs (Windows, Mac und / oder Linux), Mobiltelefonen (iPhone und / oder Android-basierte Telefone), Spielekonsolen (XBLA und / oder PSN). PC wird einen Schwerpunkt haben, aber ich glaube, das ist die flexibelste Plattform, so dass dies kein Problem sein sollte.

Welche Programmiersprache, Spiel-Engine, Frameworks und Allround-Tools sind für unser Ziel am besten geeignet?

PS: Ich wette, dass eine Reihe von Tools nicht ALLE von ihnen abdeckt und dass es für einige Plattformen immer noch eine Art "Übersetzungsaufwand" geben wird, aber wir möchten gerne wissen, welche am weitesten reichen.

Kenji Kina
quelle

Antworten:

12

Wir haben ein dickes C ++ - Framework auf einer dünnen Plattformschicht, auch C ++. Beim Portieren eines Spiels auf eine neue Plattform muss eine neue Plattformebene implementiert werden, die sehr schnell und schnell ausgeführt werden kann.

Alle unsere Abhängigkeiten sind Open Source- und plattformübergreifende Bibliotheken wie SDL, Ogg, LibPNG usw.

Zum Beispiel haben wir eine Win32 / DirectX-Plattform, eine SDL / OpenGL-Plattform für Linux und Mac, die auf einer iOS-Plattform für iPhone / iPad arbeitet, und ein Android-Port wäre ebenfalls möglich. Für einige Zeit hatten wir eine Playground-Plattform, was bedeutet, dass unser Framework auf der Playground-Engine von PlayFirst lief. Mit diesem mehrschichtigen Ansatz können Sie jede Schnittstelle zur zugrunde liegenden Hardware / zum zugrunde liegenden Betriebssystem nutzen. Solange Sie ein strukturiertes Quad zeichnen, Eingaben erhalten und einen Sound abspielen können, sind Sie ziemlich fertig.

Ich werde dafür in Flammen stehen, aber C ++ ist wahrscheinlich die plattformübergreifendste Sprache, die es gibt. Jede Architektur und jedes Betriebssystem verfügt höchstwahrscheinlich über einen C ++ - Compiler, oder gcc kann darauf portiert werden.

ggambett
quelle
3
Keine Flamme, es ist eine korrekte Aussage und ein Teil dessen, warum wir sie immer noch verwenden.
Klaim
9

Verwenden Sie einfach Unity

Tetrad
quelle
Der allgemeine Eindruck scheint zu sein, dass Unity für 3D cool ist, aber für 2D nicht so cool. Und die Frage ist über ein 2D-Spiel
Bluescrn
6
In Anbetracht der Tatsache, dass ich ein 2D-Spiel mit Unity ausgeliefert habe (und auch andere Leute: entity3d.com/gallery/game-list ), muss ich dem allgemeinen Eindruck nicht zustimmen. Ja, es gibt keine integrierte Methode zum Zeichnen von animierten Sprites in Stapeln, aber Sie können den Editor problemlos erweitern, um dies selbst zu tun. In Kombination mit der plattformübergreifenden Kompatibilität mit Druckknöpfen und der geringen Eintrittsbarriere ist dies die naheliegendste Antwort.
Tetrad
Ich muss zustimmen. Ich habe dies und das gelesen und das 2D-Toolkit verwendet, und ich muss sagen, dass es viel einfacher ist, 2D zu machen, als ich gedacht hätte.
NoobsArePeople2
1
Link nur antworten, Kommentar löst das wohl ein, nehme ich an. : /
MichaelHouse
6

Ich habe gerade vor ein paar Tagen in einer anderen Frage von NME erfahren und dachte, es könnte sich lohnen, das Wort zu verbreiten. Zum Thema Multi-Plattform-Support heißt es auf der Titelseite:

Die Wahl von NME eröffnet nahezu unbegrenzte Möglichkeiten. Erstellen Sie eine Anwendung und veröffentlichen Sie sie auf Facebook, dem iOS App Store, dem webOS App Catalog, dem Android Market, dem Mac App Store, dem Ubuntu Marketplace, NOOK Apps, dem Chrome App Store, Steam und anderen Marktplätzen, ohne für jede Plattform einen bestimmten Code zu schreiben .

Ich habe es noch nicht persönlich getestet, aber es hat mich aus vielen Gründen als interessant empfunden:

  • Die API ist Flash sehr ähnlich , mit dem viele Leute bereits vertraut sind. Ich persönlich habe schon viele Spiele in Flash / AS3 gemacht und es ist ziemlich einfach zu lernen und damit zu arbeiten.
  • Es verwendet eine Sprache namens Haxe, die ActionScript 3 anscheinend sehr ähnlich ist, aber in eine Vielzahl von Formaten kompiliert werden kann , einschließlich nativem C ++.
  • In Kombination mit einigen intelligenten Pipelines , die NME für Sie eingerichtet hat, kann das System extrem plattformübergreifend sein . Auf dem PC können Sie auf Windows, OS X und Linux abzielen, und auf Mobilgeräten können Sie auf iOS, Android und webOS abzielen (während Sie mithilfe von C ++ mit OpenGL ES unter der Haube immer noch native Leistung erzielen). Schließlich ermöglicht es auch die Entwicklung von Web- Spielen mit Flash oder HTML5 Canvas.
  • Es ist völlig kostenlos .

Ich habe im Moment nicht viel Zeit, es zu versuchen. Wenn es jemand tut, wäre es hilfreich, wenn Sie ein Feedback dazu hinterlassen könnten.

David Gouveia
quelle
1

Nun, das hängt davon ab, können Sie in C / C ++, Obj-C und C # programmieren?

Unity3D ist die beste 1-Größe für alle, aber 2D-Spiele können etwas schwierig sein (für ein 2D-Spiel sowieso).

Wenn Sie mit XNA (auch bekannt als Indie-Store) auf die Xbox abzielen, müssen Sie C # verwenden. Aber Sie können C # nicht wirklich mit iOS verwenden (außer mit Unity). Während Sie C / C ++ für iOS verwenden können, müssen Sie immer noch ein wenig Obj-C verwenden, es sei denn, Sie verwenden eine Art Middleware.

Wenn Sie keine Engine verwenden, ist es meiner Meinung nach am besten, eine eigene Abstraktionsebene zu schreiben. Damit alle Aufrufe Ihrer Bibliothek diese mittlere Ebene durchlaufen müssen, müssen Sie beim Portieren nur die Implementierung der Abstraktionsschicht ändern, und Ihr Spielcode ist mehr oder weniger intakt.

PhilCK
quelle
1
Theoretisch erlaubt xna touch, dass in c # geschriebene xna-Spiele auf ios bis mono laufen. xnatouch.codeplex.com
Steve H
@Steve H, Guter Anruf, obwohl dies so aussieht, als würde es Android sperren.
PhilCK
@PhilCK Mono kann sowohl auf Android als auch auf iOS ausgeführt werden, und MonoGame unterstützt beide. Sie müssen jedoch eine Lizenz von Xamarin bezahlen.
Cole Campbell
1

Andere Antworten haben Tools und Sprachen ziemlich gut behandelt, aber auf der Grafikseite würde ich definitiv empfehlen, Ihre (2D-) Grafiken in einem Vektorformat zu erstellen und sicherzustellen, dass sie bei kleinen und großen Größen gut aussehen. Zu viele Details werden schlecht verkleinert, zu wenig Details werden schlecht vergrößert.

Jarett Millard
quelle
1

Moai SDK ist ein Open Source Framework und kann derzeit auf Android, IOS und Chrome veröffentlichen. Moai kann je nach Ihren Fähigkeiten und Kenntnissen in diesen Bereichen auf Hosts wie Spielekonsolen ausgedehnt werden.

Vaillancourt
quelle
0

Ich würde sagen, Ihre beste Sprachwahl wäre c #. Sie können es verwenden, um in Unity für eine Reihe von Plattformen zu entwickeln. c # ist auch die Sprache, die in MonoTouch (für die Entwicklung für iOS) und MondoDroid (noch nicht verfügbar, aber für die Ausrichtung auf Android-Plattformen) verwendet wird. Und natürlich kann c # in XNA verwendet werden, mit dem Sie auf XBOX 360- und Windows-Telefone abzielen können.

Das deckt so ziemlich alles ab. Es wird noch viel zu tun geben, da Sie verschiedene Tools zum Bearbeiten von Spielinhalten verwenden, aber Ihre Kernspiellogik sollte sich nicht ändern müssen, wenn alles in c # ist.

Oh, und natürlich wird in Silverlight c # verwendet, mit dem Sie auch auf das Web abzielen können.

Blindgänger
quelle
2
Obwohl es eine nette Sprache ist, scheint C # für plattformübergreifende Spieleentwickler eine ziemlich schlechte Wahl zu sein. Denken Sie neben Leistungsproblemen auf Nicht-PC-Plattformen daran, dass XNA nur auf einigen Plattformen verfügbar ist und dass Sie eine große Anzahl potenziell nützlicher plattformübergreifender Bibliotheken verpassen, die bei Verwendung von C verfügbar wären / C ++. Ja, dies bedeutet, dass Windows Phone- oder Xbox Indie-Spiele ohne vollständigen Port nicht unterstützt werden (aber ist das aus Verkaufssicht wirklich ein großer Verlust, wenn Sie so ziemlich alles andere unterstützen können?)
Bluescrn
0

Schritt eins sollte wahrscheinlich darin bestehen, das Spiel, zumindest einen anständigen Prototyp, mit Ihren bevorzugten Tools / Technologien für eine einzelne Plattform (oder eine kleine Anzahl von Plattformen) zu erstellen.

Es ist sehr einfach, sich in plattformübergreifenden Tools / Tech-Entwicklungen zu verlieren. Sich zu sehr auf plattformübergreifende Aktivitäten zu konzentrieren, bevor man ein Spiel hat, ist wie eine vorzeitige Optimierung. Es lohnt sich auf jeden Fall, früh darüber nachzudenken, aber verbringen Sie nicht Ihre ganze Zeit damit, bis Sie tatsächlich ein Spiel haben.

Der Versuch, jede Plattform zu unterstützen, bevor man weiß, ob das Spiel ein Erfolg wird, klingt nach einer Strategie mit hohem Risiko - insbesondere, wenn es sich um ein einfaches Low-Budget-Spiel handelt (bei dem die Kosten für die Entwicklung plattformübergreifender Systeme die Kosten für die Entwicklung des Spiels massiv überwiegen könnten selbst?).

Wäre es nicht sinnvoll, es auf einer kleinen Anzahl von Plattformen zu starten, zu sehen, wie gut es funktioniert, und festzustellen, ob es sich lohnt, die anspruchsvolleren Plattformen zu unterstützen (z. B. weniger leistungsfähige Systeme, solche mit umständlichen Eingabegeräten oder solche, die eine vollständige Plattform benötigen) Port nach C # oder Java)

Bluescrn
quelle
0

Ich weiß, dass es unbeliebt ist, aber AS3 mit Starling könnte Ihre Antwort für Mobile, Desktop und Web sein. Es ist atemberaubend und funktioniert auf überraschende Weise. Ich habe ein iOS-Kinect-Spiel gemacht, das auch unter Windows und Android lief. Es gab nichts anderes, das die Rechenanforderungen erfüllen konnte, und es war diese plattformübergreifende. Außerdem können Sie beliebige Arduino-Projekte nahtlos einbinden. Die meisten Leute haben einfach nicht bemerkt, was Adobe in letzter Zeit mit den Flash / Flash Builder-Tools gemacht hat ....

user27131
quelle
-3

Flash und Java werden sehr häufig unterstützt. Sie funktionieren auf allen PCs (mehr oder weniger) und auf vielen mobilen Geräten (mehr oder weniger), und ich bin sicher, dass sie ungefähr so ​​einfach auf eine Konsole portiert werden können wie jedes andere Projekt mit PC-Einfluss.

Gregory Avery-Weir
quelle
3
Sie werden Java nicht auf einer 360 oder PS3 oder den iOS-Plattformen bekommen. Ebenso für Blitz. In Bezug auf eine Sprache würde ich argumentieren, dass C ++ im allgemeinen Fall viel portabler ist als XNA (aber nicht XBLA).
Tetrad
Flash wird manchmal für Dinge wie Benutzeroberflächen und Minispiele mit Middleware wie Scaleform ( scaleform.com/products/gfx ) verwendet. Ich kann nicht viele Informationen zu Java für Konsolen finden, obwohl die Bluray-Unterstützung der PS3 eine einfache JVM zu beinhalten scheint. Unabhängig davon müssen Sie eine Menge Arbeit erledigen, um etwas auf eine Konsole zu portieren (weniger für das 360, wenn es ursprünglich in XNA ist). Wenn Sie Ihren Code für Portabilität entwerfen, ist es nicht unmöglich, die Sprache in einem Port zu wechseln.
Gregory Avery-Weir