Il modo più semplice e divertente per programmare giochi 2D? Veloce? XNA? Qualche altro motore? [chiuso]


20

questo è un post che descrive in dettaglio la mia ricerca del modo più divertente per un programmatore di giochi hobbisti di addolcire il suo tempo libero con la realizzazione di un gioco.

I miei requisiti: ho guardato prima Flash, ho realizzato un paio di piccoli giochi ma sono dubbioso sulle prestazioni. Vorrei fare un gioco di strategia abbastanza grande, con diverse centinaia di unità che combattevano contemporaneamente, incluse esplosioni e animazioni. Anche mappe zoomabili. Ho visto che Adobe ha una nuova API 3D per Flash, ma non so se ciò migliora anche le prestazioni 2D, non sono riuscito a trovare nulla correlato a tale domanda nelle loro sessioni MAX10. Diresti che Flash è una buona tecnologia per realizzare facilmente giochi 2D di grandi dimensioni? Mi piace molto Actionscript e adoro quanto sia facile tutto in Flash. Sono disponibili diversi motori che lo rendono ancora più semplice.

Lo faccio solo per divertimento, e sarebbe ancora meglio se ci fossero editor di animazioni / particelle disponibili e se il motore che dovessi usare, sarebbe disponibile per più piattaforme. (così più persone possono giocare al mio gioco una volta finito). Vorrei averlo disponibile anche su molte piattaforme mobili. (perché adoro l'input tattile per qualche motivo)

Conosco abbastanza bene il framework XNA, ma non ci sono buoni motori disponibili per esso, e funzionerà solo su Windows, il che è un grande spegnimento. Ancora più grande è che devi installare l'XNA ridistribuibile ogni volta che vuoi dare il gioco a qualcuno. Se uso XNA, dovrei creare da solo tutti gli strumenti e probabilmente dovrei realizzarli con WPF. (Mi piacerebbe creare strumenti con Adobe AIR, ma sfortunatamente le API per la manipolazione delle immagini, ecc. Sono molto peggiori in Flash, rispetto a quelle in XNA / WPF.) Ora, sono consapevole che potrei creare il mio motore che supporta ciascuna di queste piattaforme, ma francamente, sarebbe troppo lavoro arare attraverso le API. Dopotutto, voglio fare un gioco, non un motore.

Quindi la domanda diventa: esiste forse un motore multipiattaforma (gratuito o gratuito da sviluppare?) Che potrei usare per lo sviluppo 2D? Preferisco: C #, Actionscript. Non mi dispiace usare c ++ se il set di strumenti è al di sopra della media, ma dubito fortemente che esista qualcosa del genere. Per favore, dimostrami che ho torto :) Quindi riassunto: mi piacerebbe usare Flash, ma non so se ridimensiona abbastanza bene. Non sono uno script, voglio alcune API reali con cui posso lavorare all'interno di un IDE corretto.

Solo per informazione, ho esaminato diverse alternative, in realtà sto già cercando da molto tempo. Mi aiuterai molto a prendere una decisione finalmente.

  • Per quanto riguarda le funzionalità, il motore Flatredball sarebbe l'ideale. Ma ho provato i loro strumenti e, francamente, sono orribili. Assolutamente inutilizzabile, dovrei sicuramente crearne uno mio. Non ho esaminato le loro API, ma se i loro strumenti sono così male, non sono propenso a guardare oltre.

  • Unity3D. Questo è piuttosto carino, ma non ho davvero bisogno del 3D , ed è abbastanza ... molto lavoro da imparare. Inoltre, non mi piace che sia così costoso da usare per piattaforme diverse e che posso solo codificarlo tramite lo scripting. Devi acquistare ciascuna piattaforma separatamente. L'usabilità dell'editor è nella media, il prodotto nel complesso è abbastanza buono per la maggior parte degli scopi, ma impararlo da solo sarebbe eccessivo.

  • Shiva 3D. Sembra abbastanza buono, ma di nuovo: non ho davvero bisogno del 3D. L'usabilità dell'editor è un po 'peggio di Unity3D secondo me e non mi era chiaro come iniziare la programmazione. Penso che richieda C ++ per la codifica, quindi anche questo è negativo. Voglio divertirmi e c # è divertente;)

  • SDL. Francamente, avrei ancora bisogno di port su tutte quelle diverse implementazioni SDL. E non mi piace la programmazione in stile OpenGL, è semplicemente brutta. E ha bisogno di c ++, so che potrebbero esserci dei wrapper disponibili, ma non mi piace usare i wrapper, perché ...

  • Irrlicht. Molte funzionalità, ma il supporto sembra essere basso ed è rivolto agli appassionati. I binding C # vengono eliminati ripetutamente. Non sono un appassionato di motori, voglio solo fare un gioco. Non vedo che questo accada con Irrlicht.

  • Ogre3D. Troppo lavoro, è solo un motore grafico. Inoltre nessun supporto multipiattaforma e c ++.

  • Torque2D. Costa qualcosa da usare e non ho sentito molte cose positive su supporto e documentazione. Inoltre costa in più per ogni piattaforma.


Gli strumenti dell'SDK di FRB sono cattivi (colla in particolare, non la sto usando) ma ti fa risparmiare tempo a scriverli e i formati di file sono semplici se scrivere i tuoi strumenti è un must. L'API non è poi così male e sembra adatta a questo scopo, il problema più grande in questo momento è la mancanza di una porta XNA 4.0 per PC e Xbox. Inoltre, il redist XNA e altri prereq possono far parte dell'installazione - e usando clickonce puoi avere l'aggiornamento automatico e la distribuzione pronti per iniziare.
Oskar Duveborn,

Bene, il mio punto è che non li userei, e quindi gli strumenti sono inutili. Continuano a schiantarsi su di me oltre alla loro cattiva interfaccia utente / sensazione generale. Cosa succede se si scopre che mancano una determinata funzione? Anche se fossero open source, non vorrei andare da nessuna parte vicino a quelle basi di codice. Sembra duro, ma voglio solo un po 'di programmazione rilassata, e FRB sembra un frutto di frustrazione. Immagina: ho provato l'editor delle particelle e non sono nemmeno riuscito a trovare il pulsante per aprire un file di immagine. Che è probabilmente la caratteristica più importante su cui si basa tutto il resto.
Maxi

Non è una risposta completa, ma Flash si adatta meglio di quanto si pensi altrimenti. Se si esegue il blit su un canvas bitmapdata invece di utilizzare la pila di visualizzazione e si eseguono altre semplici ottimizzazioni, è possibile comprimerlo molto di più di quanto sembri con una soluzione più ingenua.
Gregory Avery-Weir

Il listitem nell'Editor di particelle è semplicemente chiamato "trama" nel pannello delle proprietà dell'emettitore ^^ Ci sono tutorial su tutti gli strumenti in modo che i creatori di contenuti non codificanti possano dare una mano. Ma sì, le interfacce utente sono davvero orribili dal punto di vista del design dell'interazione.
Oskar Duveborn,

1
Considerando che XNA è solo Windows, esiste un'implementazione open source dell'API di XNA chiamata MonoGame che verrà eseguita su tutti i tipi di piattaforme non Windows: cocoa-mono.org/archives/400/… Non l'ho usato da solo ma esiste.
caos Tecnico

Risposte:


10

Pygame è di gran lunga il mio preferito. Dato che programmare in Python significa che programmerai velocemente e poiché le cose in 2D sono veloci da fare, pygame sarà divertente ...


Come bonus se decidi di voler spostarti nel mondo 3d, c'è un pyglet che avvolge GL in pelle di serpente;)
Wayne Werner,

9

Uso LÖVE da un po 'di tempo e mi piace molto. Dovresti imparare Lua, ma è comunque una piccola lingua divertente da imparare. Le persone del forum sono estremamente utili.


Qual è la performance? quale IDE posso usare?
Maxi

1
Io secondo questo. Abbiamo usato Lua e LOVE per il nostro gioco Global Game Jam e ha funzionato in modo fantastico. Hanno messo insieme molte librerie open source davvero eccezionali sotto un'unica API comune e ogni versione continua a migliorare. Le prestazioni sono eccezionali (Lua è incredibilmente veloce!) E molte funzionalità OpenGL avanzate come gli FBO sono esposte, il che è raro per molti motori 2D. Oltre a tutto questo, è multipiattaforma (Win / Mac / Linux). Darei sicuramente una buona occhiata.
Bob Somers

1
@Maxi: Con affetto hai solo bisogno di un editor e di una console in cui puoi scriverelove .
egarcia

2
I russi hanno fatto un gioco con quello? Dalla Russia con amore: P
Bart van Heukelom,

5

Ho deciso di andare con Flash. La nuova API 3D Molehill può essere utilizzata per disegnare sprite 2D nello spazio 3D anche molto più velocemente. Non vedo alcun motivo per cui Flash non dovrebbe essere abbastanza veloce per il gioco che ho descritto in precedenza. Dovrò costruire gli strumenti da solo, ma probabilmente avrei dovuto farlo comunque. L'utilizzo di AIR per costruire strumenti è anche abbastanza ordinato secondo me. Flash ha anche la portata più ampia con le piattaforme, il che è fantastico.


Prova Cocos2d-x . È quello che sto usando per il mio sviluppo di giochi indie.
Stephen Furlani,

1
Flash è probabilmente una buona scelta, dal momento che ci sono strumenti e librerie (maturi) molto buoni per Flash. L'API Molehill sosterrà un carico pesante dalla CPU (in precedenza tutto era gestito dalla CPU). Devi pensare alla distribuzione del tuo gioco però. Flash di solito significa un gioco basato su browser ...
bummzack

E prenditi cura dei giochi mobili, flash e cellulari sono una combinazione così scadente.
Gustavo Maciel,

" E prenditi cura dei giochi mobili, flash e cellulari sono una combinazione così scadente ". @Gtoknu, qualche motivo per cui?
NemoStein,

@NemoStein Prova a cercare su YouTube alcuni flash in esecuzione su dispositivi mobili. Inoltre, Adobe ha interrotto il suo sviluppo del flash su Android e non c'è flash per iOS.
Gustavo Maciel,

4

Prova SFML


Sebbene utile, SFML è solo un'API grafica / di rete / audio, non un motore di gioco completo (sebbene sia abbastanza vicino).
a_m0d


2

Dato che hai detto che ti piace Actionscript ma stai cercando multipiattaforma, dai un'occhiata a HaXe + NME . HaXe è un linguaggio simile ad Actionscript, ma può essere compilato in Flash, Javascript, PHP o C ++. NME è una libreria simile alla libreria grafica di Flash, ma funziona anche su altre piattaforme. Questa combinazione ti consente di compilare su molte piattaforme diverse.

Non ho ancora usato NME ma il mio primo test con HaXe + Molehill (solo pochi giorni fa) ha prodotto 60 fps durante il rendering di 10.000 sprite rotanti 16x16 sul mio laptop. Uso HaXe da alcuni giorni e non ho abbastanza esperienza per essere sicuro che sia la cosa giusta per te, ma vale la pena dare un'occhiata.


1

Personalmente sono un grande fan di Allegro 5 , ma è un'API C. Tuttavia, si tratta di una semplice API che ti toglie di mezzo e ti consente di accedere a:

  • Grafica 2D (supportata da OpenGL o D3D, a seconda della piattaforma)
  • Suono
  • Caratteri (inclusi bitmap e TTF)
  • Input (mouse e tastiera)
  • PhysicsFS (virtualizzazione del file system)
  • Caricamento immagine

5.1 aggiungerà anche il supporto shader.

Anche SDL 1.3 si sta formando abbastanza bene. Sam sembra aver finito di apportare le principali modifiche alle API e ciò che è già in è già abbastanza stabile. Eppure ... non è ancora nemmeno beta, e Allegro 5.0 viene rilasciato.

Certo, per giochi più complessi e avanzati probabilmente vorrai accoppiare Allegro 5 con una sorta di libreria di fisica ( Box2D , ad esempio). Tuttavia, puoi fare molta strada e divertirti, con nient'altro che Allegro 5, la libreria standard C o C ++ e il tuo codice.

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.