Qual é a limitação mais séria da Unity? [fechadas]

30

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?

ashes999
fonte
1
DV, mas sem comentários, e sobre uma pergunta de 2,5 anos? Por que é que?
precisa saber é o seguinte
Provavelmente apenas tropeçando nele aleatoriamente. Esta questão é claramente baseada em opiniões desde o início. Dizer "Para manter esta questão não subjetiva" não a torna subjetiva, porque o principal agressor repetido que você considera mais irritante não será o mesmo que o principal agressor do próximo usuário. Essas listas têm pouco ou nenhum valor e apenas ajudam a impor mitos, por exemplo, e se todo mundo dissesse "X é a coisa", mas X fosse corrigido em uma atualização do Unity uma semana depois, ainda que as respostas do topo do ranking provavelmente ainda não tenham sido editadas com "X é um enorme problema "no topo de suas listas, mesmo anos depois.
LearnCocos2D
Além disso, qual resposta é aceitável como a correta ? Se você pensar sobre isso, nenhuma das respostas deve ser aceita como a resposta, porque não há nenhuma maneira correta de responder a esta pergunta. Esse é provavelmente o indicador número 1 de uma pergunta subjetiva.
LearnCocos2D

Respostas:

33

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.

Tetrad
fonte
1
@iamcreasy, Adapte-se, GAJO. "Enquanto o Dropbox funciona como um serviço de armazenamento, seu foco está na sincronização e no compartilhamento. Ele suporta o histórico de revisões, para que os arquivos excluídos da pasta Dropbox possam ser recuperados em qualquer um dos computadores sincronizados. [33] [34] O controle de versão do Dropbox também ajuda os usuários conhecem o histórico de um arquivo no qual podem estar trabalhando, permitindo que mais de uma pessoa edite e repita os arquivos sem complicações de perder sua forma anterior. [35] O histórico da versão é limitado a 30 dias. está disponível um histórico de versões ilimitado chamado "Pack-Rat". " -Wikipedia
Engineer
6
Talvez eu esteja sendo injusto, mas acho que NullReferenceExceptions é uma falha do programador; você deve verificar seus parâmetros recebidos. Claro, isso seria mais fácil de aplicar, se tivéssemos algum tipo de análise de código add-on para o MonoDevelop como chegar em VisualStudio ...
ChrisH
1
@ ashes999 Há sempre alguma terminologia que você precisa aprender, com uma nova tecnologia. As palavras são nossas alças nos conceitos. O mesmo vale para o Flash básico. O hype em torno da usabilidade do Unity não é à toa. Reduz as barreiras de entrada para desenvolvedores não profissionais e permite que os profissionais façam muito, muito mais com muito menos. Não se preocupe muito com as supostas limitações. Provavelmente, a maioria delas pode nem ser uma barreira para você. A única coisa que me preocuparia são as exceções de ponteiro nulo, e essas são depuráveis.
Engenheiro
3
Como a resposta de Tedrad se mantém agora no Unity 4.1.x? Alguém sabe?
Sil
1
Quando você diz 'Agora você pode aninhar pré-fabricados' A que você está se referindo? Talvez essa funcionalidade tenha sido removida desde a última edição da pergunta? Ou você está se referindo a este complemento ?
NauticalMile
6

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 ...

Cpt. Vermelho
fonte
Há quanto tempo foi isso? Parece que em quase todas as versões há algo nas notas de versão sobre o desempenho aprimorado da aparência. Em face do iOS, eles deixaram de usar GPU para usar a FPU, já que era muito mais rápido.
Tetrad 12/10
Foi há um mês ...
CPT.
6

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 ...

Enquanto o Dropbox funciona como um serviço de armazenamento, seu foco está na sincronização e no compartilhamento. Ele suporta o histórico de revisões, para que os arquivos excluídos da pasta Dropbox possam ser recuperados em qualquer um dos computadores sincronizados. [33] [34] O controle de versão do Dropbox também ajuda os usuários a conhecer o histórico de um arquivo no qual eles podem estar trabalhando no momento, permitindo que mais de uma pessoa edite e publique novamente arquivos sem complicações de perder a forma anterior. [35] O histórico da versão é limitado a 30 dias. Está disponível uma opção paga para o histórico de versões ilimitado chamado "Pack-Rat".

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.

Engenheiro
fonte
1
Dropbox, yech. Mas +1 - isso é essencialmente o que eu procurava.
ashes999
Hehe, acho que qualquer desenvolvedor sentiria o mesmo. Mas ei, se ele fizer o trabalho ...
Engineer
2
Usamos o Git com Unity. Demora um pouco de trabalho para configurar os arquivos .gitignore, mas funciona e fornece o conjunto completo de recursos do VCS.
Kylotan
2
Usamos o Mercurial (com BitBucket) com Unity e funciona muito bem quando você configura os arquivos .hgignore corretamente.
JD
@JD (& Kylotan) - Como você contornou o problema com arquivos de cena não sendo mescláveis?
UpTheCreek
6

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).

Kylotan
fonte
1
Para o que vale a pena, você pode usar qualquer IDE que desejar com o Unity (eu uso o Visual Studio Pro). Mas se você quiser usar o depurador, estará limitado ao MonoDevelop.
Tetrad 12/10
1
Sim, o depurador é muito importante (mesmo que o MonoDevelop não seja tão bom). Além disso, infelizmente, ele diz que não funciona com o Visual Studio Express. Não conheço outros IDEs C # que as pessoas usem. Mas, na verdade, aquele que acompanha o Unity deve estar em melhor forma.
Kylotan
Você também pode usar outros editores de texto como Sublime Texthttp: //wiki.unity3d.com/index.php/Using_Sublime_Text_as_a_script_editor
Terrance
Eu não tentei, mas li que agora existe uma maneira de usar o Visual Studio para depuração (via plugin, eu acho). Pode ser que isso seja apenas para a versão Pro, não tenho certeza.
Cristão
FWIW, o UnityVS torna a integração do Visual Studio muito mais suave. Você pode depurar, passar por cima etc.
Básico
5

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.

John Little
fonte
4
Qualquer ferramenta ou software de terceiros pode adicionar (ou remover) cláusulas do EULA em novas versões. Realmente não vejo como isso é específico da Unity. Além disso, sem evidências de apoio, parece estranho afirmar que a cláusula de não jogar é séria o suficiente para ser a limitação mais prejudicial do software em geral, que é a que a pergunta original (reconhecidamente agora fora de tópico) estava tentando alcançar. A menos que a maioria dos jogos do Unity tenha sido feita com o jogo como recurso principal, essa resposta parece mais um discurso retórico.
Josh
4

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.

Kylotan
fonte
Você pode consultar o sistema da GUI para ver se um clique foi consumido por ele e depois ignorá-lo no código de seleção de objetos do mundo. Pesado, mas funciona.
precisa
Como você faria isso?
Kylotan
Há uma propriedade no objeto do sistema de entrada para obter o ID do elemento "quente", que será zero se não houver nenhum elemento da GUI sob o cursor. Esqueça o nome exato da propriedade, embora esteja na referência de script da unidade.
Sean Middleditch