Quais ferramentas devo considerar se meu objetivo é disponibilizar um jogo para o maior número possível de plataformas? [fechadas]

8

Estamos planejando desenvolver um jogo de quebra-cabeça 2D baseado em grade e, embora ainda seja muito cedo nos estágios de planejamento, gostaríamos de tomar nossas decisões bem desde o início.

Nossa estratégia será disponibilizar o jogo para o maior número possível de plataformas, por exemplo, PCs (Windows, Mac e / ou Linux), telefones celulares (telefones baseados em iPhone e / ou Android), consoles de jogos (XBLA e / ou PSN) O PC terá ênfase, mas acredito que essa é a plataforma mais flexível, para que não seja um problema.

Então, qual linguagem de programação, mecanismo de jogo, estruturas e ferramentas ao redor seriam mais adequadas para o nosso objetivo?

PS: Aposto que um conjunto de ferramentas não cobrirá TODAS, e que ainda haverá algum tipo de esforço de "tradução" para algumas plataformas, mas gostaríamos de saber quais são as de maior alcance.

Kenji Kina
fonte
Também relacionado: gamedev.stackexchange.com/questions/16/…
Tetrad

Respostas:

12

Temos uma estrutura C ++ espessa sobre uma fina camada de plataforma, também C ++. Portar um jogo para uma nova plataforma é uma questão de implementar uma nova camada de plataforma, que, por ser bem fina, é bastante rápida.

Além disso, todas as nossas dependências são bibliotecas de código aberto e de plataforma cruzada, como SDL, Ogg, LibPNG, etc.

Por exemplo, temos uma plataforma Win32 / DirectX, uma plataforma SDL / OpenGL para Linux e Mac, trabalhando em uma plataforma iOS para iPhone / iPad e uma porta Android também seria possível. Por algum tempo, tínhamos uma plataforma Playground, o que significa que nossa estrutura funcionava sobre o mecanismo Playground da PlayFirst. Essa abordagem em camadas permite que você aproveite qualquer interface que você tenha para o hardware / sistema operacional subjacente, desde que você possa desenhar um quad texturizado, obter alguma entrada e tocar um som, está pronto.

Eu vou ser criticado por isso, mas C ++ é provavelmente a linguagem mais multiplataforma que existe. Toda arquitetura e sistema operacional provavelmente possui um compilador C ++ ou o gcc pode ser portado para ele.

ggambett
fonte
3
Sem chama, é uma afirmação correta e parte do motivo pelo qual ainda a usamos.
Klaim
9

Basta usar o Unity

Tetrad
fonte
A impressão geral parece ser que o Unity é legal para 3D, mas não tão legal para 2D. E a pergunta é sobre um jogo 2D
bluescrn
6
Considerando que eu enviei um jogo 2D com o Unity (e o mesmo aconteceu com outras pessoas: unity3d.com/gallery/game-list ), vou ter que discordar da impressão geral. Sim, não há nenhuma construído em forma de desenhar sprites animados em lote, mas você pode facilmente estender o editor de fazê-lo sozinho. Isso, combinado com o que há de mais próximo da compatibilidade real entre plataformas e com a baixa barreira à entrada, torna a resposta mais óbvia.
Tetrad 01/01
Eu tenho que concordar. Estive lendo isso e isso e usando o 2D Toolkit e devo dizer que é muito mais fácil fazer 2D do que eu pensava.
precisa saber é o seguinte
11
O link responde apenas, o comentário redime o suficiente, suponho. : /
MichaelHouse
6

Acabei de descobrir a NME há alguns dias em outra pergunta e achei que valeria a pena espalhar a notícia. Sobre o assunto de suporte multiplataforma, a primeira página declara o seguinte:

A escolha da NME abre oportunidades quase infinitas. Crie um aplicativo e publique no Facebook, a iOS App Store, o webOS App Catalog, o Android Market, a Mac App Store, o Ubuntu Marketplace, o NOOK Apps, a Chrome App Store, o Steam e outros mercados sem escrever código específico para cada plataforma .

Eu ainda não testei pessoalmente, mas me pareceu interessante por vários motivos:

  • A API é muito semelhante ao Flash , com o qual muitas pessoas já estão familiarizadas. Eu já fiz muitos jogos pessoalmente no Flash / AS3 antes e é muito fácil aprender e trabalhar.
  • Ele usa uma linguagem chamada Haxe, que é aparentemente muito semelhante ao ActionScript 3, mas pode ser compilada em vários formatos , incluindo C ++ nativo.
  • O exposto acima, combinado com alguns pipelines inteligentes configurados para você pela NME, permite que ele seja extremamente multiplataforma . No PC, você pode segmentar o Windows, OS X e Linux e, no celular , o iOS, Android e webOS (enquanto ainda obtém desempenho nativo usando C ++ com o OpenGL ES). Por fim, também permite o desenvolvimento de jogos na Web usando telas Flash ou HTML5.
  • É totalmente grátis .

Não tenho muito tempo para experimentá-lo no momento; portanto, se alguém o fizer, seria útil se você pudesse deixar algum feedback sobre ele.

David Gouveia
fonte
1

Bem, isso depende, você pode programar em C / C ++, Obj-C e C #?

O Unity3D é o melhor tamanho 1, mas todos os jogos em 2D podem ser complicados (para um jogo em 2D).

Se você estiver direcionando o Xbox com o XNA (também conhecido como loja independente), precisará usar o C #. Mas você realmente não pode usar C # com iOS (exceto com unidade). Embora você possa usar o C / C ++ para iOS, você ainda precisará usar um pouco de Obj-C, a menos que use algum tipo de mercadoria intermediária.

Se você não usa um mecanismo, acho que a melhor coisa a fazer é escrever sua própria camada de abstração. Para que todas as chamadas para sua biblioteca precisem passar por essa camada intermediária, portanto, quando chegar a hora de portar, basta alterar a implementação da camada de abstração e o código do jogo ficar mais ou menos intacto.

PhilCK
fonte
11
Teoricamente, o xna touch permite que jogos xna escritos em c # sejam executados em ios através de mono. xnatouch.codeplex.com
Steve H
@ Steve H, boa ligação, embora isso pareça bloquear o Android.
PhilCK
O @PhilCK Mono pode ser executado no Android e iOS, e o MonoGame suporta os dois. No entanto, você terá que pagar por uma licença do Xamarin.
Cole Campbell
1

Outras respostas cobriram muito bem as ferramentas e os idiomas, mas no lado gráfico, eu recomendaria definitivamente criar seus gráficos (2D) em um formato vetorial e garantir que eles fiquem bem em tamanhos pequenos e grandes. Muitos detalhes diminuem de tamanho, poucos detalhes diminuem de tamanho.

Jarett Millard
fonte
1

O Moai SDK é uma estrutura de código aberto e atualmente pode publicar no Android, IOS e Chrome. O Moai poderia ser estendido para cobrir hosts como consoles de jogos, dependendo da sua habilidade e conhecimento nessas áreas.

Vaillancourt
fonte
0

Eu diria que sua melhor escolha de idioma seria c #. Você pode usá-lo para desenvolver no Unity para várias plataformas. c # também é o idioma usado no MonoTouch (para desenvolvimento para iOS) e no MondoDroid (ainda não lançado, mas permite segmentar as plataformas Android). E, é claro, o c # pode ser usado no XNA, o que permite segmentar o XBOX 360 e o Windows Phones.

Isso praticamente cobre tudo. Ainda haverá trabalho a ser feito no fato de que você usará ferramentas diferentes para manipular o conteúdo do jogo, mas sua lógica principal do jogo não precisará ser alterada se estiver tudo em c #.

ah, e é claro que o c # é usado no Silverlight, o que permite segmentar a web também.

Dud
fonte
2
Embora seja uma linguagem legal, o C # parece uma escolha bastante ruim para desenvolvedores de jogos de plataforma cruzada, na verdade. Além de problemas de desempenho em plataformas que não são de PC, lembre-se de que você só possui o XNA disponível em algumas plataformas e que estará perdendo um grande número de bibliotecas entre plataformas potencialmente úteis que estariam disponíveis se você usasse o C / C ++. Sim, isso significa que não suporta Windows Phone ou Xbox Indie Games, sem uma porta completo (mas é que realmente uma grande perda, a partir de uma venda ponto de vista, quando você pode suportar praticamente qualquer outra coisa?)
bluescrn
0

O primeiro passo deve ser tornar o jogo, pelo menos, um protótipo decente, usando suas ferramentas / tecnologia favoritas, para uma única plataforma (ou pequeno número de plataformas).

É muito fácil ficar atolado no desenvolvimento de ferramentas / tecnologia de plataforma cruzada. Focar muito na plataforma cruzada antes de ter um jogo é como uma otimização prematura. Certamente vale a pena pensar desde o início, mas não gaste todo o seu tempo até que você realmente tenha um jogo.

Tentar dar suporte a todas as plataformas antes de saber se o jogo será um sucesso parece uma estratégia de alto risco - especialmente se for um jogo simples e de baixo orçamento (onde o custo do desenvolvimento de sistemas multiplataformas possa compensar enormemente o custo do desenvolvimento do jogo) em si?).

Não faria sentido lançá-lo em um pequeno número de plataformas, ver o quão bem ele funciona e determinar se vale a pena apoiar as plataformas mais desafiadoras (por exemplo, sistemas menos potentes, aqueles com dispositivos de entrada desonestos ou aqueles que exigem uma instalação completa) porta para C # ou Java)

bluescrn
fonte
0

Sei que é impopular, mas o AS3 da Starling pode ser sua resposta para dispositivos móveis, computadores e web. É impressionante e funciona de maneiras surpreendentes. Eu fiz um jogo iOS e Kinect que também rodava no Windows e Android. Não havia mais nada que pudesse lidar com as necessidades computacionais e era essa plataforma cruzada. Além disso - você pode conectar qualquer projeto do Arduino sem problemas. A maioria das pessoas simplesmente não percebeu o que a Adobe fez com as ferramentas do flash / flash builder ultimamente ....

user27131
fonte
-3

Flash e Java têm suporte muito amplo; eles funcionam em todos os PCs (mais ou menos) e em muitos dispositivos móveis (mais ou menos), e tenho certeza de que eles são tão fáceis de portar para um console quanto qualquer outro projeto com influência de PC.

Gregory Avery-Weir
fonte
3
Você não terá o Java em um 360 ou PS3 ou nas plataformas iOS. Da mesma forma para o flash. No que diz respeito a uma linguagem, eu argumentaria que o C ++ é muito mais portátil no caso geral, além do especificamente XNA (mas não o XBLA).
Tétrada
Às vezes, o Flash é usado para itens como UIs e minigames com middleware como Scaleform ( scaleform.com/products/gfx ). Não consigo encontrar muita informação sobre Java para consoles, embora o suporte ao Bluray do PS3 pareça envolver uma simples JVM. Independentemente disso, você precisa trabalhar bastante para portar qualquer coisa para um console (menos para o 360, se estiver originalmente no XNA). Se você projetou seu código para portabilidade, nem mesmo a troca de idiomas em uma porta é inviável.
Gregory Avery-Weir