Temos um projeto de grande jogo usando o Unity na escola. Há 12 de nós trabalhando nisso. Meu professor parece estar convencido de que é uma ferramenta importante para ensinar aos alunos, pois faz com que eles pareçam do nível superior ao nível inferior.
Eu posso entender o ponto de vista dele e me pergunto: a unidade é um mecanismo tão importante nas empresas de desenvolvimento de jogos? Existem muitas empresas usando-o porque não podem se dar ao luxo de usar outra coisa? Ele está falando como se a Unity fosse um grande participante na criação de jogos, mas eu só vejo isso para pequenas empresas independentes de jogos que querem fazer o jogo o mais rápido possível.
Você acha que a Unity tem tanta importância na indústria? Põe em perigo o valor das habilidades em C ++?
Não que eu não goste do Unity, apenas que não aprendo nada com ele, prefiro dar pequenos passos com o Ogre ou o SFML.
Além disso, também temos exercícios práticos em C ++, mas esses são apenas exercícios com teoria, nada demais.
Respostas:
A unidade é uma solução perfeitamente válida nesse contexto. Imagine por um segundo ter 12 pessoas, a maioria das quais ainda está no processo de aprender C ++, escrevendo um aplicativo de jogo grande e complexo usando-o. Na quantidade de tempo gasto na depuração sozinho, você provavelmente poderá escrever outro jogo no Unity.
Não estou dizendo que saber como usar C ++ não é importante - é importante, especialmente se você planeja ingressar na indústria de jogos 'mainstream'. Mas talvez o seu instrutor esteja correto neste caso - use este projeto como uma experiência de aprendizado em como pensar em arquitetar um jogo e divirta-se fazendo isso. Nesse processo, tente aprimorar suas habilidades em C ++ usando exercícios ou até mesmo fazer pequenos jogos enquanto isso usando SFML ou alguma outra estrutura básica.
Quando tudo estiver pronto, você aprenderá muito, provavelmente se tornará um programador melhor, e seu próximo projeto poderá ser abordado em C ++ com muito mais confiança.
fonte
A unidade está crescendo em popularidade no setor, principalmente em empresas menores. No entanto, é um excelente ambiente de ensino. É uma ferramenta de ensino importante, mas não particularmente comum entre as empresas tradicionais. Não há problema em você não preferir.
Deixe-me notar uma coisa aqui, porém, pois muitas vezes vejo uma confusão entre os estudantes de programação. As "habilidades em C ++" não são muito úteis a longo prazo. O que você deve procurar são "habilidades de programação" e "habilidades de design". Se você entende os conceitos da linguagem de programação e como um sistema de software é montado, a linguagem realmente não importa. Não me considero um desenvolvedor incrível, mas posso pegar um novo idioma e produzir código útil em um dia ou dois, porque entendo os fundamentos.
O Learning Unity o tornará melhor em C ++.
fonte
Sim, mas "pagar" é muito mais do que apenas valores em dólares.
Sim, o conjunto de recursos que o Unity Pro oferece a você pelo custo que eles cobram é ridículo, especialmente considerando o fato de serem licenças de assento em vez de licenças por título.
Mas, além disso, é uma ferramenta muito fácil de usar. Você não está gastando tanto tempo treinando artistas e designers como usar o pipeline de arte. É fácil dizer "basta arrastar suas texturas e modelos e eles estão prontos.
Além disso, é uma das poucas ferramentas que permitem fazer 3D em um navegador com qualquer tipo de regularidade. Eles suportam praticamente todas as plataformas de sombreadores, desde funções fixas até DX9 +, além de Mac e Windows. Somente essa tecnologia é inestimável se você deseja atingir o crescente mercado de "jogos baseados em navegador".
Do lado da programação, o que você obtém do Unity é uma compreensão firme do design de componentes (em comparação com o lançamento de seu próprio mecanismo C ++, que geralmente é muito pesado no lado da herança), bem como um ambiente visual e muito rápido para tentar código do jogo. Esperamos que você aprenda boas práticas de design usando o Unity, que você pode adotar para futuros mecanismos C ++.
Claro, é bom ter uma preferência de um idioma em detrimento de outro. Pessoalmente, prefiro C # sobre C ++. Mas qual idioma você usa é realmente orientado pelos requisitos do projeto mais do que qualquer outra coisa. Os desenvolvedores não podem se dar ao luxo de ser fanboys, já que você não quer ficar fora do mercado porque, por um motivo ou outro, não gosta das ferramentas ou do idioma.
Além disso, uma vez que você realmente aprende um segundo idioma, pode ver que, na maioria das vezes, está apenas aprendendo novas sintaxes e paradigmas, e não é tão difícil, geralmente, adicionar novas ferramentas ao seu cinto de ferramentas. Sim, você deve aprender e entender C ++, mas em um nível alto, você precisa entender primeiro o bom design.
fonte
O principal problema, pelo que posso ver, não é C ++ ou Unity3D, mas você precisa de uma solução de alto nível ou de baixo nível .
Uma solução de baixo nível é aquela que você suja nos processos de entrega de entrada, gerenciamento de memória ou carregamento dos modelos. Uma solução de alto nível é a qual você obtém um pacote interessante, como o Unity3D.
Para mim, o uso do Unity3D (ou qualquer outro mecanismo de jogo) ou C ++ depende dos objetivos do seu jogo e projeto.
Use o Unity3D, se o tempo de desenvolvimento tiver que ser rápido e / ou seu jogo não exigir muito desempenho ou não estiver no topo da performance gráfica / computacional. Se você deseja se concentrar no jogo, e as ferramentas padrão fornecidas pelo Unity3D estão corretas, considere usar o Unity3D
C ++ com outras bibliotecas, se você tiver mais tempo de desenvolvimento, o jogo requer mais poder computacional / gráfico ou emprega alguma tecnologia que o Unity3D não pode incorporar.
O bom do Unity3D é que ele ainda emprega linguagens de script que espelham o desenvolvimento do mundo real (C # ou JavaScript). Os conceitos de OOP e engenharia de software que você aprende (Singletons, fachada, máquinas de estado, decoradores, composição) podem ser aplicados no Unity3D. Ajuda a cuidar dos processos de corte de cookies, como gerenciamento de recursos, gráfico de cena, carregamento de modelo, renderização, salvamento de cenas e etc. Ainda melhor, se houver uma funcionalidade necessária que o Unity3D não forneça, você poderá Codificação DLL.
Onde isso deixa C ++? O C ++ é uma linguagem, e existem muitos conceitos de programação que você faz no C ++ no Unity3D, sem gerenciamento de memória ou talvez modelos (com o Unity 3.2, as especificações da linguagem foram aprimoradas para cobrir fechamentos, por exemplo).
Então, como afirmei, não é realmente C ++ vs. Unity3D. É mais "C ++ plus libraries / SDK ou role seu próprio mecanismo" vs. Unity3D. Depende de suas metas e objetivos. Para jogos de ponta ou jogos nos quais você precisa ter controle sobre o pipeline ou a entrada de renderização, convém usar o C ++ mais um mecanismo que permita que você mexa por baixo do capô. Caso contrário, eu uso o Unity3D como minha opção padrão para jogos em 3D.
No entanto, o conhecimento com o Unity3d não está sob o capô, mas é um bom ponto de partida para aprender o processo geral de desenvolvimento de jogos. Por exemplo, você provavelmente precisará de um semestre para estudar para escrever um renderizador e carregar um modelo no OpenGL, além de um gráfico e uma entrada básicos de cenário. Você faz isso no Unity3D em menos de um dia.
fonte
Não, o Unity3D de maneira alguma põe em risco as habilidades de C ++. De fato, conhecer C ++ é muito mais importante para um programador de jogos.
O Unity3D é uma ferramenta realmente ótima para o desenvolvimento de jogos. Eu realmente gosto, e o recomendaria para praticamente qualquer jogo, especialmente para equipes pequenas. Mas o próprio Unity3D é escrito em C ++; e você precisa conhecer C ++ (e também várias outras coisas de baixo nível) para realmente entender como funciona.
Mesmo se você usar o Unity3D, apenas as habilidades em C ++ e a compreensão de baixo nível dos princípios e algoritmos envolvidos permitirão usá-lo em todo o seu potencial. Isso também se aplica a outros mecanismos de jogos.
E para fazer um trabalho realmente bom, para extrair todo o último desempenho da sua plataforma de escolha e compor o maior número possível de efeitos e algoritmos de ponta, você não pode usar nada além de C / C ++. Com pedaços de montador, provavelmente.
fonte
Até onde eu sei, isso depende da sua plataforma de destino, os jogos AAA e os console (XBOX, Wii, etc) normalmente estarão em C ++ para obter o máximo desempenho, no entanto, se você estiver escrevendo um jogo baseado em navegador, o Unity também é frequentemente usava.
No entanto, quanto à sua pergunta, acho que tem a ver simplesmente com ferramentas como o Unity, que oferecem uma grande estrutura padronizada para trabalhar, que em um projeto de meio ano pode fazer a diferença entre um protótipo meio cozido e um jogo bem elaborado.
fonte
Fui ao programa de mestrado em computação gráfica e tecnologia de jogos da Universidade da Pensilvânia, onde realizamos todos os nossos projetos nos níveis mais baixos, com projetos em C ++, OpenGL, CUDA, etc. Nossos projetos incluíam animação baseada em física, arquitetura de animação de personagens e IK, representando várias formas de curvas de Bezier ... você sabe, coisas realmente básicas que aproveitam a experiência em programação, álgebra linear e cálculo.
Em seguida, baixei o Unity e descobri que tudo o que trabalhei para criar estava empacotado neste pacote gratuito que qualquer pessoa pode usar.
Eu estava irritado com isso? Um pouco, é certo, mas descobri que ter esse entendimento da escola me torna muito mais perigoso quando utilizo ferramentas como o Unity. Atualmente, trabalho em jogos, onde trazemos jogos do conceito para o mercado em menos de um ano, e ainda sou o cara certo quando se trata de "essas coisas de matemática". Meu conselho para você é seguir os movimentos; você será absolutamente inestimável quando entrar no setor.
fonte
Talvez eu esteja atrasado em responder, mas isso ajudará algumas pessoas a ter essa confusão.
Inicialmente, sou um programador de c ++, que costumava odiar usar mecanismos de terceiros (por exemplo, unidade), pois não sinto que haja muito processo de aprendizado envolvido em termos de programação de baixo nível.
Depois de tentar a unidade, deparei-me com as seguintes coisas que são necessárias para um desenvolvedor de jogos. Aqui não estou listando especificamente a unidade, mas listando as vantagens de ir na Perspectiva de ALTO NÍVEL.
Acima estão algumas das razões para escolher um mecanismo de alto nível. Mas, ao mesmo tempo, você não deve parar de aprender C ++ como o idioma mais necessário e útil para um desenvolvedor de jogos perfeito.
Primeiro, entenda a visualização de alto nível e faça alguns protótipos rápidos com o Unity e use essa experiência ao criar um bom jogo em c ++.
Em breve voltarei ao c ++, pois havia adquirido uma boa experiência em nível superior com a unidade :)
Boa sorte!
fonte
O C4 Engine é uma boa alternativa para aprender a programação de jogos com C ++
Também há licença acadêmica http://www.terathon.com/c4engine/licensing.php
fonte