Quali strumenti devo prendere in considerazione se il mio obiettivo è rendere un gioco disponibile per quante più piattaforme possibile? [chiuso]


8

Stiamo programmando di sviluppare un puzzle game 2D, basato sulla griglia, e sebbene sia ancora molto presto nelle fasi di pianificazione, vorremmo prendere le nostre decisioni bene fin dall'inizio.

La nostra strategia sarà quella di rendere il gioco disponibile su quante più piattaforme possibili, ad esempio PC (Windows, Mac e / o Linux), telefoni cellulari (iPhone e / o telefoni basati su Android), console di gioco (XBLA e / o PSN) Il PC avrà un'enfasi, ma credo che sia la piattaforma più flessibile, quindi non dovrebbe essere un problema.

Quindi, quale linguaggio di programmazione, motore di gioco, framework e strumenti completi sarebbero più adatti al nostro obiettivo?

PS: Scommetto che un set di strumenti non coprirà TUTTI, e che ci sarà ancora una sorta di sforzo di "traduzione" per alcune piattaforme, ma vorremmo sapere quali sono le più ampie.


Risposte:


12

Abbiamo uno spesso framework C ++ sopra un sottile livello di piattaforma, anche C ++. Il porting di un gioco su una nuova piattaforma è una questione di implementazione di un nuovo livello di piattaforma, che poiché è piuttosto sottile, è abbastanza veloce da fare.

Inoltre, tutte le nostre dipendenze sono lib open source e multipiattaforma, come SDL, Ogg, LibPNG, ecc.

Ad esempio, abbiamo una piattaforma Win32 / DirectX, una piattaforma SDL / OpenGL per Linux e Mac, lavorando su una piattaforma iOS per iPhone / iPad e sarebbe anche possibile una porta Android. Per qualche tempo abbiamo avuto una piattaforma Playground, il che significa che il nostro framework funzionava con il motore Playground di PlayFirst. Questo approccio a più livelli ti consente di sfruttare qualsiasi interfaccia tu abbia per l'hardware / sistema operativo sottostante, finché puoi disegnare un quad testurizzato, ottenere un input e riprodurre un suono, sei praticamente pronto.

Mi fotterò per questo, ma C ++ è probabilmente il linguaggio più multipiattaforma che esista. Ogni architettura e sistema operativo molto probabilmente ha un compilatore C ++ o gcc può essere portato su di esso.


3
Nessuna fiamma, è un'affermazione corretta e parte del perché la usiamo ancora.
Klaim

9

Usa Unity


L'impressione generale sembra essere che Unity sia interessante per il 3D, ma non altrettanto per il 2D. E la domanda riguarda un gioco 2D
bluescrn,

6
Considerando che ho spedito un gioco 2D con Unity (e così anche altre persone: unity3d.com/gallery/game-list ), non dovrò essere d'accordo con l'impressione generale. Sì, non esiste un modo integrato per disegnare sprite animati in batch, ma puoi facilmente estendere l'editor per farlo da solo. Ciò, combinato con la cosa più vicina alla reale compatibilità multipiattaforma con pulsante e la bassa barriera all'ingresso, la rende la risposta più ovvia.
Tetrad,

Devo essere d'accordo Ho letto questo e questo e ho usato 2D Toolkit e devo dire che è molto più facile fare 2D di quanto avrei mai pensato.
NoobsArePeople2

1
Link solo risposta, commento riscatta che suppongo abbastanza. : /
MichaelHouse

6

Ho appena scoperto NME qualche giorno fa in un'altra domanda e ho pensato che valesse la pena spargere la voce. Per quanto riguarda il supporto multipiattaforma, la prima pagina afferma quanto segue:

La scelta di NME apre opportunità quasi infinite. Crea un'applicazione e pubblica su Facebook, App Store iOS, il Catalogo app webOS, Android Market, Mac App Store, Ubuntu Marketplace, NOOK Apps, Chrome App Store, Steam e altri mercati senza scrivere codice specifico per ogni piattaforma .

Non l'ho ancora testato personalmente, ma mi è sembrato interessante per molte ragioni:

  • L'API è molto simile a Flash , che molti conoscono già. Ho già fatto personalmente molti giochi in Flash / AS3 ed è abbastanza facile da imparare e con cui lavorare.
  • Utilizza un linguaggio chiamato Haxe che è apparentemente molto simile ad ActionScript 3, ma può essere compilato in una moltitudine di formati , incluso il C ++ nativo.
  • Quanto sopra, combinato con alcune pipeline intelligenti create per te da NME, consente di essere estremamente multipiattaforma . Sul PC puoi scegliere come target Windows, OS X e Linux, e sui dispositivi mobili puoi scegliere come target iOS, Android e webOS (pur mantenendo prestazioni native usando C ++ con OpenGL ES sotto il cofano). Infine, consente anche lo sviluppo di giochi Web utilizzando Flash o HTML5 canvas.
  • È completamente gratuito .

Non ho molto tempo per provarlo al momento, quindi se qualcuno lo fa, sarebbe utile se potessi lasciare un feedback al riguardo.


1

Bene, dipende, puoi programmare in C / C ++, Obj-C e C #?

Unity3D è la migliore taglia 1 adatta a tutti, ma i giochi 2D possono essere piuttosto complicati (per un gioco 2D comunque).

Se stai prendendo di mira Xbox con XNA (noto anche come negozio indipendente), devi usare C #. Ma non puoi davvero usare C # con iOS (tranne con unità). Mentre puoi usare C / C ++ per iOS, devi comunque usare un po 'di Obj-C a meno che tu non usi una sorta di middleware.

Se non usi un motore, penso che la cosa migliore da fare sia scrivere il tuo livello di astrazione. In modo che tutte le chiamate alla tua libreria debbano passare attraverso questo livello intermedio, quindi quando arriva il momento di port devi solo cambiare l'implementazione del livello di astrazione e il tuo codice di gioco è più o meno intatto.


1
Teoricamente, xna touch consente ai giochi xna scritti in c # di funzionare su ios thru mono. xnatouch.codeplex.com
Steve H,

@Steve H, buona chiamata, anche se sembra che bloccherebbe Android.
PhilCK

@PhilCK Mono può essere eseguito su Android e iOS e MonoGame li supporta entrambi. Tuttavia, dovrai pagare una licenza da Xamarin.
Cole Campbell

1

Altre risposte hanno coperto abbastanza bene strumenti e linguaggi, ma per quanto riguarda la grafica, consiglio vivamente di realizzare la tua grafica (2D) in un formato vettoriale e di assicurarmi che appaia bene con dimensioni piccole e grandi. Troppi dettagli si riducono male, troppo poco si ridimensionano male.


1

Moai SDK è un framework open source e attualmente è in grado di pubblicare su Android, IOS e Chrome. Moai potrebbe essere esteso a host come console di gioco, a seconda delle tue abilità e conoscenze in quelle aree.


0

Direi che la tua scelta della lingua migliore sarebbe c #. Puoi usarlo per sviluppare in Unity per diverse piattaforme. c # è anche il linguaggio utilizzato in MonoTouch (per lo sviluppo per iOS) e MondoDroid (non ancora disponibile ma che ti consentirà di scegliere come target piattaforme Android). E, naturalmente, c # può essere utilizzato in XNA che consente di scegliere come target XBOX 360 e Windows Phone.

Questo praticamente copre tutto. Ci sarà ancora del lavoro da fare nel fatto che userete diversi strumenti per manipolare il contenuto del gioco, ma la vostra logica di gioco principale non dovrebbe cambiare se è tutto in c #.

oh e ovviamente c # è usato in Silverlight che ti permetterebbe di indirizzare anche il web.


2
Sebbene sia un bel linguaggio, C # sembra una scelta abbastanza scarsa per gli sviluppatori di giochi multipiattaforma, davvero. Oltre ai problemi di prestazioni su piattaforme non PC, ricorda che hai XNA disponibile solo su un paio di piattaforme e che ti perderai un numero enorme di librerie multipiattaforma potenzialmente utili che sarebbero disponibili se tu usassi C / C ++. Sì, questo significa non supportare Windows Phone o Xbox Indie Games senza una porta completa (ma è davvero una grande perdita, dal punto di vista delle vendite, quando puoi supportare praticamente qualsiasi altra cosa?)
bluescrn

0

Il primo passo dovrebbe essere probabilmente quello di realizzare il gioco, almeno un prototipo decente, usando i tuoi strumenti / tecnologia preferiti, per una singola piattaforma (o un numero limitato di piattaforme).

È molto semplice impantanarsi nello sviluppo di strumenti / tecnologia multipiattaforma. Concentrarsi troppo sulla multipiattaforma prima di avere un gioco è un po 'come un'ottimizzazione prematura. Vale sicuramente la pena pensarci presto, ma non passare tutto il tempo su di esso fino a quando non hai effettivamente un gioco.

Cercare di supportare ogni piattaforma prima di sapere se il gioco avrà successo sembra una strategia ad alto rischio, specialmente se si tratta di un semplice gioco a basso budget (in cui il costo dello sviluppo di sistemi multipiattaforma potrebbe superare in modo massiccio il costo dello sviluppo del gioco si?).

Non avrebbe senso lanciarlo su un piccolo numero di piattaforme, vedere quanto funziona bene e determinare se vale la pena supportare le piattaforme più difficili (ad esempio sistemi meno potenti, quelli con dispositivi di input arkward o quelli che richiedono un completo porta su C # o Java)


0

So che è impopolare, ma AS3 con Starling potrebbe essere la tua risposta per dispositivi mobili, desktop e web. È STUNNING e si esibisce in modi sorprendenti. Ho realizzato un gioco Kinect per iOS che funzionava anche su Windows e Android. Non c'era nient'altro che potesse gestire le esigenze computazionali ed era quella multipiattaforma. Inoltre, puoi agganciare senza problemi qualsiasi progetto Arduino. La maggior parte delle persone non ha notato ciò che Adobe ha fatto agli strumenti Flash / Flash Builder negli ultimi tempi ....


-3

Flash e Java hanno un supporto molto diffuso; funzionano su tutti i PC (più o meno) e su molti dispositivi mobili (più o meno), e sono sicuro che siano facili da portare su una console come qualsiasi altro progetto che abbia influenza sul PC.


3
Non otterrai Java su una 360 o PS3 o sulle piattaforme iOS. Allo stesso modo per il flash. Per quanto riguarda un linguaggio, direi che il C ++ è molto più portabile nel caso generale, oltre allo specifico XNA (ma non XBLA).
Tetrad,

Flash è talvolta usato per cose come UI e minigiochi con middleware come Scaleform ( scaleform.com/products/gfx ). Non sono in grado di trovare molte informazioni su Java per console, sebbene il supporto Bluray di PS3 sembri coinvolgere una semplice JVM. Indipendentemente da ciò, devi fare un sacco di lavoro per portare qualsiasi cosa su una console (meno per 360 se è originariamente in XNA). Se si progetta il proprio codice per la portabilità, non è nemmeno possibile cambiare le lingue in una porta.
Gregory Avery-Weir il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.