Decidi o que realmente quero é fazer programação de jogos. Portanto, a pergunta é: como um jovem de 18 anos que deseja aprender programação autodidata, qual é a linguagem de programação mais adequada entre C # e C ++? (Devo declarar que não me importo com o Unix porque acredito que o Windows ainda será o sistema operacional mais usado)
Eu sei o básico de C ++, mas nenhum sobre C #. Eu sei que o C ++ tem mais guias de tutoriais, dlls e coisas assim, enquanto o C # não, mas é muito mais fácil aprender e usar uma única pessoa para desenvolver um programa, mas eu li mesmo se o programa estiver ofuscado é fácil obter a fonte disso.
Bem, eu meio que quero me concentrar muito no básico primeiro, devo dizer que tenho uma preferência pelo C ++ apenas porque parece mais adequado para mim, mas devo considerar que trabalho sozinho. Portanto, mesmo que eu goste, pode não ser a melhor coisa a fazer.
Eu realmente não tenho certeza de qual escolher, eu li muitos tópicos em vários sites e parece que o C # está se tornando mais popular que o C ++. Mas sim, dito isso, eu também especifiquei que quero fazer programação de jogos. Então, eu preciso conhecer alguns pontos melhores do que apenas "C # é mais fácil por causa da manipulação de memória .net enquanto C ++ não é" porque eu não consegui encontrá-lo.
fonte
Respostas:
Eu aprendo C ++ programando um jogo. Essa foi uma experiência muito agradável. É altamente recomendável que você faça o mesmo!
No entanto, agora que sou programador de C #, sei que teria sido muito mais produtivo se o C # estivesse disponível no momento.
C # é a escolha perfeita para aprender o desenvolvimento de jogos. Ele tem tudo o que você precisa para começar de frameworks a livros e a linguagem é incrível.
Eu já vi dezenas de livros escritos especificamente sobre C # Game Programming e a Microsoft está envidando muitos esforços para melhorar suas estruturas, incluindo DirectX e XNA .
ATUALIZAÇÃO : você também pode se interessar por isso . É um post recente de Miguel de Icaza .
ATUALIZAÇÃO 22/02/2013 A Microsoft está planejando interromper o suporte ao XNA .
fonte
A maioria das empresas de jogos usa C ++, talvez com scripts python ou outras linguagens em execução em segundo plano. Mais porque as ligações para OpenGL e DirectX são voltadas para C ++ (embora eu tenha certeza de que você pode fazer o mesmo material Direct3d em C #), mas sim para programação de jogos, C ++ é a linguagem PRINCIPAL.
No entanto, vou dar um aviso justo (e não deixe que isso o impeça), mas os gráficos 3D podem ficar extremamente complicados. O novo Direct3D tornou um pouco mais fácil do que costumava ser, mas ainda é um pouco de matemática (que pode ser bastante confusa) e apenas as próprias bibliotecas podem ser confusas.
Eu começaria com algo muito simples primeiro. para coisas 2D, o SDL (Simple Directmedia Layer) é muito mais fácil de usar (para algo como um jogo de cima para baixo) quando você entra no 3D. PESSOALMENTE, acho que o OpenGL é mais fácil de aprender (mas isso é tudo). O MS possui alguns tutoriais / amostras interessantes na documentação do DirectX SDK, portanto vale a pena dar uma olhada. Os tutoriais Nehe, embora um pouco desatualizados, ainda são bons.
mas, para responder à sua pergunta, eles geralmente são feitos em C ++.
fonte
Primeiro, você deve definir algumas prioridades. Você quer fazer um jogo primeiro e depois aprender sobre os aspectos mais avançados da programação posteriormente, ou vice-versa. Ambas as abordagens têm seus prós e contras, mas são legítimas na minha opinião.
Se você quiser começar a fazer jogos, eu recomendaria aprender C #. Se você já conhece os conceitos básicos de C ++, não deve ter problemas em escolher C #. Tornar o C # sua ferramenta tem vantagens. É fácil aprender a linguagem (em comparação com o C ++) e é uma "linguagem gerenciada", o que significa que ele faz automaticamente o armazenamento de memória para você (algo que muitos iniciantes em C ++ e até mesmo não iniciantes têm problemas com ) Também fornece acesso ao XNA Framework da Microsoft, que faz ainda mais parte do encanamento tedioso para você. Isso permite que você se concentre em coisas como o ciclo e o design do jogo, sem ter que se preocupar (demais) em fazê-lo funcionar. É verdade que todo esse encanamento tem sua sobrecarga, o que significa que você provavelmente não estará criando jogos 3D de nível industrial, mas apenas entrando na programação de jogos, então duvido que você fará o próximo Halo em suas primeiras tentativas. :)
Aqui está um post mortem do cara que desenvolveu um jogo XNA de sucesso (Arma de Escolha). Ele detalha como o uso de C # / XNA economizou seu tempo de desenvolvimento, em vez de precisar usar C ++. http://www.gamasutra.com/view/feature/3899/postmortem_mommys_best_games_.php
Dito isto, você deve investir algum tempo em pelo menos saber como as coisas funcionam em segundo plano. Como um programador de C ++ faria isso. Aprender a criar um jogo em C ++ pode facilitar a participação de outra equipe de desenvolvimento de jogos (como a maioria deles trabalha em C ++), se o que você deseja é ganhar posição na indústria de jogos. Mas mesmo que você nunca use C ++, saber como funcionam os internos só pode torná-lo um programador melhor, independentemente da linguagem usada.
fonte
Eu promovo altamente C ++ para desenvolvimento de jogos. Existem alguns obstáculos extras, com vários prós e contras, uma das melhores razões é a portabilidade.
Com o C #, você pode desenvolver um pouco mais hoje em dia, e existem alguns ótimos mecanismos lá fora, programados com certeza. Ambas são boas linguagens para a programação de jogos, se você estiver direcionado apenas para plataformas Windows / Xbox, terá especialmente motivos para se inclinar para C #.
O idioma que mais acho que você deveria aprender seria o OpenCL ou CUDA, um idioma da GPGPU. Pessoalmente, eu prefiro o OpenCL, já que parece durar mais que o esperado e crescer ainda mais, é basicamente apenas o estilo C. Há o OpenTK, que é um bom invólucro para C ++ ou C #.
Eu sempre me perguntei como seria a programação de jogos Ruby com a aceleração de hardware ...
fonte
A programação de jogos brutos vai deixar você com muito frio. Trabalhar com chamadas gráficas de baixo nível em C # ou C ++ é um pesadelo menor e você realmente não deseja reconstruir a roda de renderização de sprites 2D e muito menos de modelos 3D. Como você está por conta própria e quer aprender a programar, sua melhor aposta é encontrar uma estrutura que possa lhe apresentar um pouco.
Como você tem alguma familiaridade com a linguagem C, minha sugestão seria dar uma olhada no Unity 3D . Ele não apenas experimenta uma adoção séria na adoção de lojas comerciais de desenvolvedores de jogos, como também possui algumas opções interessantes de plataforma (incluindo PC, android, iPhone e tempos de execução na web), mas também possui uma versão gratuita, muito fácil de usar e muitos tutoriais para mostrar como passar do conceito para a implementação. O melhor de tudo (IMO), uma das linguagens de script suportadas, é o C #.
fonte
Eu fiz um jogo para uma aula há dois anos (eu também tinha 18 anos na época) e fizemos em C #. Embora eu observe que programas C # grandes geralmente operam mais lentamente que programas C ++ grandes, C # também requer muito menos trabalho do seu lado. O gerenciamento de memória é feito automaticamente e, para o escopo de um primeiro jogo, é rápido o suficiente. (Nosso jogo é um RTS multijogador em 2D, semelhante ao Starcraft.)
Eu torceria por C #, pois deveria ser mais fácil de gerenciar. No entanto, se você deseja se tornar um desenvolvedor de jogos profissional, lembre-se de que ele funciona apenas nas plataformas Microsoft. (Ainda assim, o C # pode ser um bom trampolim para o C ++ e, se eu tivesse que reaprender os dois idiomas, tentaria aprender o C # primeiro.)
fonte
Eu votaria em C ++ - principalmente porque ele pode ser multiplataforma (dependendo de como você escreve seu código, é claro) e também porque acho que fornece mais conhecimento sobre gerenciamento de memória - porque você precisa se preocupar com isso. Mas como você não se importa com linux / unix, se você deseja deixar de fora a complexidade da memória no momento, por que não focar em C # agora e aprender C ++ também?
fonte