¿Qué herramientas debo considerar si mi objetivo es hacer que un juego esté disponible para la mayor cantidad de plataformas posible? [cerrado]

8

Estamos planeando desarrollar un juego de rompecabezas en 2D basado en la cuadrícula, y aunque todavía es muy temprano en las etapas de planificación, nos gustaría tomar nuestras decisiones bien desde el principio.

Nuestra estrategia será hacer que el juego esté disponible para la mayor cantidad de plataformas posible, por ejemplo, PC (Windows, Mac y / o Linux), teléfonos móviles (iPhone y / o teléfonos basados ​​en Android), consolas de juegos (XBLA y / o PSN) La PC tendrá un énfasis, pero creo que esa es la plataforma más flexible, por lo que no debería ser un problema.

Entonces, ¿qué lenguaje de programación, motor de juego, marcos y herramientas generales serían los más adecuados para nuestro objetivo?

PD: Apuesto a que un conjunto de herramientas no cubrirá TODAS ellas, y que todavía habrá algún tipo de esfuerzo de "traducción" para algunas plataformas, pero nos gustaría saber cuáles son las de mayor alcance.

Kenji Kina
fuente
también relacionado: gamedev.stackexchange.com/questions/16/…
Tetrad

Respuestas:

12

Tenemos un marco grueso de C ++ encima de una capa de plataforma delgada, también C ++. Portar un juego a una nueva plataforma es una cuestión de implementar una nueva capa de plataforma, que debido a que es bastante delgada, es bastante rápida.

Además, todas nuestras dependencias son bibliotecas de código abierto y multiplataforma, como SDL, Ogg, LibPNG, etc.

Por ejemplo, tenemos una plataforma Win32 / DirectX, una plataforma SDL / OpenGL para Linux y Mac, trabajando en una plataforma iOS para iPhone / iPad, y también sería posible un puerto Android. Durante un tiempo tuvimos una plataforma Playground, lo que significa que nuestro framework se ejecutó sobre el motor Playground de PlayFirst. Este enfoque en capas le permite aprovechar cualquier interfaz que tenga con el hardware / SO subyacente, siempre que pueda dibujar un quad con textura, obtener algo de entrada y reproducir un sonido, ya está listo.

Seré criticado por esto, pero C ++ es probablemente el lenguaje más multiplataforma que existe. Es probable que cada arquitectura y sistema operativo tenga un compilador de C ++ o que se pueda portar gcc.

ggambett
fuente
3
Sin llama, es una declaración correcta y parte de por qué todavía la usamos.
Klaim
9

Solo usa Unity

Tétrada
fuente
La impresión general parece ser que Unity es genial para 3D, pero no tan genial para 2D. Y la pregunta es sobre un juego en 2D
bluescrn el
66
Teniendo en cuenta que he enviado un juego 2D con Unity (y también lo han hecho otras personas: unity3d.com/gallery/game-list ), tendré que estar en desacuerdo con la impresión general. Sí, no hay una forma integrada de dibujar sprites animados por lotes, pero puede extender fácilmente el editor para hacerlo usted mismo. Eso, combinado con lo más parecido a la compatibilidad multiplataforma con un solo botón y la baja barrera de entrada, lo convierte en la respuesta más obvia.
Tetrad
Tengo que estar de acuerdo. He estado leyendo esto y esto y usando el Kit de herramientas 2D y debo decir que es mucho más fácil hacer 2D de lo que hubiera pensado.
NoobsArePeople2
1
Enlace solo respuesta, comentario redime eso suficiente, supongo. : /
MichaelHouse
6

Me acabo de enterar de NME hace unos días en otra pregunta y pensé que valdría la pena correr la voz. Sobre el tema del soporte multiplataforma, la página principal establece lo siguiente:

Elegir NME abre oportunidades casi infinitas. Cree una aplicación y publíquela en Facebook, iOS App Store, webOS App Catalog, Android Market, Mac App Store, Ubuntu Marketplace, NOOK Apps, Chrome App Store, Steam y otros mercados sin escribir código específico para cada plataforma. .

Todavía no lo he probado personalmente, pero me pareció interesante por muchas razones:

  • La API es muy similar a Flash , con la que muchas personas ya están familiarizadas. Personalmente he hecho muchos juegos en Flash / AS3 antes y es bastante fácil de aprender y trabajar.
  • Utiliza un lenguaje llamado Haxe que aparentemente es muy similar a ActionScript 3, pero puede compilarse en una multitud de formatos , incluido C ++ nativo.
  • Lo anterior, combinado con algunas tuberías inteligentes configuradas para usted por NME, le permite ser extremadamente multiplataforma . En la PC puede apuntar a Windows, OS X y Linux, y en dispositivos móviles puede apuntar a iOS, Android y webOS (mientras sigue obteniendo un rendimiento nativo al usar C ++ con OpenGL ES bajo el capó). Finalmente, también permite el desarrollo de juegos web utilizando Flash o HTML5 Canvas.
  • Es completamente gratis .

No tengo mucho tiempo para probarlo en este momento, por lo que si alguien lo hace, sería útil si pudiera dejar algún comentario al respecto.

David Gouveia
fuente
1

Bueno, eso depende, ¿puedes programar en C / C ++, Obj-C y C #?

Unity3D es el mejor tamaño 1 para todos, pero los juegos en 2D pueden ser un poco difíciles (para un juego en 2D de todos modos).

Si está apuntando a Xbox con XNA (también conocida como la tienda independiente), entonces debe usar C #. Pero realmente no puedes usar C # con iOS (excepto con la unidad). Si bien puede usar C / C ++ para iOS, aún necesita usar un poco de Obj-C a menos que use algún tipo de middleware.

Si no usa un motor, creo que lo mejor es escribir su propia capa de abstracción. Para que cualquier llamada a su biblioteca tenga que pasar por esta capa intermedia, por lo que cuando llegue el momento del puerto, solo necesita cambiar la implementación de la capa de abstracción y su código de juego estará más o menos intacto.

PhilCK
fuente
1
Teóricamente, xna touch permite que los juegos xna escritos en c # se ejecuten en ios a través de mono. xnatouch.codeplex.com
Steve H
@ Steve H, buena decisión, aunque parece que bloquearía Android.
PhilCK
@PhilCK Mono puede ejecutarse tanto en Android como en iOS, y MonoGame los admite a ambos. Sin embargo, tendrá que pagar una licencia de Xamarin.
Cole Campbell
1

Otras respuestas han cubierto bastante bien las herramientas y los lenguajes, pero desde el punto de vista gráfico, definitivamente recomendaría hacer sus gráficos (2D) en formato vectorial y asegurar que se vean bien en tamaños pequeños y grandes. Demasiados detalles escalan mal, muy pocos detalles escalan mal.

Jarett Millard
fuente
1

Moai SDK es un marco de código abierto y actualmente es capaz de publicar en Android, iOS y Chrome. Moai podría extenderse para cubrir hosts como consolas de juegos, dependiendo de su habilidad y conocimiento en esas áreas.

Vaillancourt
fuente
0

Yo diría que su mejor opción de idioma sería c #. Puede usarlo para desarrollar en Unity para varias plataformas. c # también es el lenguaje utilizado en MonoTouch (para desarrollar para iOS) y MondoDroid (aún no está disponible, pero le permitirá apuntar a plataformas Android). Y, por supuesto, c # se puede usar en XNA, que le permite apuntar a XBOX 360 y Windows Phones.

Eso prácticamente cubre todo. Todavía habrá trabajo por hacer en el hecho de que usará diferentes herramientas para manipular el contenido del juego, pero su lógica principal del juego no debería necesitar cambiar si todo está en c #.

ah y, por supuesto, c # se usa en Silverlight, lo que también le permitiría apuntar a la web.

Falso
fuente
2
Si bien es un lenguaje agradable, C # parece una elección bastante pobre para los desarrolladores de juegos multiplataforma, realmente. Además de los problemas de rendimiento en plataformas que no son de PC, recuerde que solo tiene XNA disponible en un par de plataformas, y que se perderá una gran cantidad de bibliotecas multiplataforma potencialmente útiles que estarían disponibles si usara C / C ++. Sí, esto significa que no lo soporte de Windows Phone o Xbox Indie Games y sin un puerto completa (pero es que realmente una gran pérdida, desde un punto de vista de las ventas, cuando se puede soportar casi cualquier otra cosa?)
bluescrn
0

El primer paso probablemente debería ser hacer el juego, al menos un prototipo decente, utilizando sus herramientas / tecnología favoritas, para una sola plataforma (o un pequeño número de plataformas).

Es muy fácil empantanarse en herramientas multiplataforma / desarrollo tecnológico. Centrarse demasiado en la multiplataforma antes de tener un juego es como una optimización prematura. Ciertamente vale la pena pensar desde el principio, pero no gastes todo tu tiempo en eso hasta que realmente tengas un juego.

Intentar admitir todas las plataformas antes de saber si el juego será un éxito suena como una estrategia de alto riesgo, especialmente si es un juego simple de bajo presupuesto (donde el costo de desarrollar sistemas multiplataforma podría superar enormemente el costo de desarrollar el juego ¿sí mismo?).

¿No tendría sentido lanzarlo en un pequeño número de plataformas, ver qué tan bien funciona y determinar si vale la pena admitir las plataformas más desafiantes (por ejemplo, sistemas menos potentes, aquellos con dispositivos de entrada arkward o aquellos que requieren una completa puerto a C # o Java)

bluescrn
fuente
0

Sé que es impopular, pero AS3 con Starling podría ser su respuesta para dispositivos móviles, computadoras de escritorio y web. Es IMPRESIONANTE y funciona de manera sorprendente. Hice un juego kinect para iOS que también se ejecutaba en Windows y Android. No había nada más que pudiera manejar las necesidades computacionales y era esa plataforma cruzada. Además, puede conectar cualquier proyecto Arduino sin problemas. La mayoría de las personas simplemente no se han dado cuenta de lo que Adobe ha hecho a las herramientas flash / flash builder últimamente ...

usuario27131
fuente
-3

Flash y Java tienen un soporte muy extendido; funcionan en todas las PC (más o menos) y en muchos dispositivos móviles (más o menos), y estoy seguro de que son tan fáciles de portar a una consola como cualquier otro proyecto con influencia de PC.

Gregory Avery-Weir
fuente
3
No vas a obtener Java en una 360 o PS3, o las plataformas iOS. Del mismo modo para flash. En lo que respecta a un lenguaje, diría que C ++ es mucho más portátil en el caso general, aparte de específicamente XNA (pero no XBLA).
Tetrad
Flash a veces se usa para cosas como UI y minijuegos con middleware como Scaleform ( scaleform.com/products/gfx ). No puedo encontrar mucha información sobre Java para consolas, aunque el soporte Bluray de la PS3 parece involucrar una simple JVM. De todos modos, debe hacer un montón de trabajo para transferir cualquier cosa a una consola (menos para el 360 si está originalmente en XNA). Si diseña su código para la portabilidad, incluso cambiar idiomas en un puerto no es inviable.
Gregory Avery-Weir