Depois de ler esta pergunta acalorada sobre Unity x UDK x ID, estou curioso para saber: qual é a limitação (s) mais atingida e repetidamente atingida (s) do Unity?
Para manter essa questão não subjetiva, novamente, eu estou falando sobre os principais infratores repetidos da Unidade. Isso é algo que, como usuário do Unity, você realmente gostaria que alguém tivesse lhe falado antes de começar a usá-lo.
Ouvi de alguém que o Unity não lida bem com o controle de versão, pois gera muitos arquivos binários (que não podem ser alterados). Para mim, isso não é realmente prejudicial, pois trabalho sozinho.
Pensamentos?
Respostas:
Permitam-me que prefácio que os caras da Unity têm sido muito bons em ouvir as principais dúvidas que sua comunidade enfrenta e acabam prometendo melhorar as coisas. Também existem muitos problemas que surgem em determinadas plataformas ou são uma questão de preferência pessoal ou problemas específicos do jogo em que você está trabalhando.
Dito isto:
1) Má integração do controle de origem e ferramentas de equipe grande. Como você mencionou, muitos arquivos binários não diferíveis. O editor ignora o sinalizador somente leitura para arquivos de cena. Os arquivos reais que você precisa fazer o check-in não são imediatamente óbvios. Parte disso está sendo corrigida no 3.5 com integração SVN e P4. Também há promessas de formatos de cena baseados em texto. ATUALIZAÇÃO: O formato da cena baseada em texto agora está disponível na versão Pro do Unity. Veja aqui .
2) Ferramentas de interface do usuário lentas e centradas no programador. Cada widget é sua própria chamada de empate, que possui muita sobrecarga nas plataformas móveis. Não existe o conceito de painéis com animações e todas as outras coisas sofisticadas que fazem uma interface do usuário se sentir bem sem fazer você mesmo. Há uma promessa de um novo sistema de interface do usuário no roteiro (3.6?). Existem algumas ferramentas de terceiros, mas elas não são ótimas.
3) Edição de partículas realmente rudimentar. Eles estão prometendo um novo sistema baseado em curvas na versão 3.5, no entanto. ATUALIZAÇÃO: Este sistema baseado em curvas, chamado Shuriken, já está disponível. Veja aqui .
4) Você não pode aninhar prefabs. Um pequeno problema, mas quando você está acostumado a trabalhar com o sistema pré-fabricado e com toda a energia que ele fornece, pode ser frustrante. Isso foi prometido, mas nenhuma data específica. ATUALIZAÇÃO: Agora você pode aninhar prefabs.
5) Quase impossível obter um jogo iOS abaixo do limite acima do ar. O binário sozinho é como 8 megas no melhor cenário. Isso não é algo facilmente corrigível.
6) Plataformas de falha de exceções de referência nulas que não permitem código compilado JIT. Nas versões autônoma ou da Web, os NREs são capturados. Ainda é uma exceção não capturada, mas pelo menos o aplicativo tentará continuar em execução. No iOS, ele trava o dispositivo. Você pode colocá-lo no modo de depuração e capturar alguns tipos de exceções, mas o desempenho é prejudicado.
7) Ao trabalhar em um jogo multiplataforma, sempre que você alterna entre alvos de construção, é necessário reimportar tudo e isso leva muito tempo. Eu trabalhei em torno disso, na verdade, apenas tendo várias cópias do projeto em disco. Aparentemente, existe um servidor de ativos importados na versão 3.5.
fonte
Quando eu e um amigo avaliamos o Unity para um projeto maior, descobrimos que um dos maiores problemas era o desempenho da aparência do software. Se eu me lembro corretamente, tínhamos algo como 10 objetos animados com cerca de 1000 verts cada e eu consegui 20fps enquanto usava um computador intermediário ... Não é muito bom ...
fonte
Meu problema número um era o controle de versão. A solução? Basta usar os projetos do DropBox for Unity. Desde que você o configure corretamente (ou seja, pague pelo serviço "PackRat")), ele mantém o histórico de revisões. Também é muito mais fácil colaborar com designers, dessa forma, que não querem saber sobre o controle de versão tradicional, o DropBox oferece uma solução transparente. A desvantagem é que as ramificações / mesclagens não são realmente suportadas da maneira como são, por exemplo. git, SVN.
Para quem duvida ...
Veja aqui uma referência sólida nos fóruns do Unity.
Fora isso, a única coisa que achei irritante no Unity é que ele não tem um ponto de entrada de aplicativo da maneira que C possui (main ()) ou AS3 (classe de documento). Mas você acabou de colocar o aplicativo init em um GameObject vazio, não é grande coisa. O fluxo de código também é um pouco diferente em torno dessa estrutura inerente, mas, novamente, nada muito difícil de entender.
Quanto à licença, a maioria das pessoas não percebe (e estou me referindo particularmente a pequenas operações independentes e entusiastas que talvez não tenham dinheiro para pagar por uma licença profissional e pelo complemento de gerente de ativos) que você pode fazer tudo o que puder sempre quer com a edição básica / gratuita. Realmente, não é uma barreira enorme, a equipe da Unity tem sido muito generosa.
fonte
Pensei em outra grande limitação que me incomoda diariamente, por isso vou publicá-la separadamente.
O Unity3D deseja que você edite seus scripts no MonoDevelop, especificamente uma versão antiga do MonoDevelop que eles distribuem. A funcionalidade "Localizar nos arquivos" desta versão está quebrada, pois seu uso geralmente faz com que o IDE seja interrompido, tornando-o inútil.
Isso seria uma grande irritação para qualquer mecanismo, mas é uma enorme irritação com o Unity, porque incentiva um sistema muito descentralizado de componentes separados, atuando nos vários objetos do jogo. Mas como você pode descobrir quais componentes acessam quais propriedades se você não pode sequer pesquisar os vários componentes?
EDIT: Esta resposta foi publicada em 2011: o bug Find In Files foi corrigido há algum tempo, felizmente. E, como dizem os comentaristas, você pode editar seu código em outros editores (embora sua escolha seja limitada se você quiser executar no depurador).
fonte
Para mim, a limitação mais séria está no EULA:
"Restrições de jogos de azar Você não pode distribuir ou publicar qualquer Conteúdo do Licenciado em conexão com quaisquer Atividades de jogos de azar sem uma licença separada da Unity."
Isso significa que, desde a v4.0, você não pode usar o Unity para jogos que envolvam dinheiro / chance, a menos que você ou seus clientes estejam dispostos a pagar uma taxa de licença adicional negociada caso a caso. Ou seja, eles veem quanto você vale e tributam de acordo, com 6 números sendo citados.
Mais perturbador é quem sabe o que eles adicionarão ao EULA v5. Talvez todos os jogos sociais? Talvez todos os jogos multi-jogador?
Qualquer desenvolvedor que utilize o Unity corre o risco de ser resgatado em uma versão futura.
fonte
Boa pergunta. Para mim, o maior problema é a GUI. Não me importo de ser centrada no programador, mas me importo com a maneira terrível como os objetos da GUI são funções, e não um objeto, e que o tratamento da GUI é todo empacotado em uma chamada de função usada para renderização e manipulação de eventos, e que não há integração com o sistema de entrada (ou seja, cliques nos elementos da GUI podem ser interpretados como cliques no mundo) etc.
Um problema secundário é a falta de suporte adequado ao controle de versão (principalmente porque o sistema usa o layout do diretório como o layout do projeto, o que confunde o VCS quando você move ou renomeia coisas), mas isso pode ser contornado e não é um problema para todo mundo.
fonte