O C# é bom para o desenvolvimento de jogos?
Pode ser necessário trabalhar pelo menos um pouco em uma língua nativa, para fazer algumas chamadas ao sistema. As chamadas de sistema que você precisa fazer se encaixam em 3 categorias:
- Principais API da plataforma (dispositivos de armazenamento, janelas, etc). A maioria delas, a Microsoft fornece interfaces C# para e chamá-las é natural.
- External/extension API. Estas podem ser bibliotecas de terceiros que você mesmo integra, ou SDKs de terceiros usados para acessar extensões de sistemas operacionais. Exemplos disso seriam coisas como OpenGL, Vulkan, SDL, OpenCL, PhysX, etc. Algumas delas podem fornecer uma boa interface C#, mas geralmente a interface do denominador comum é C. C# pode chamar C (mas não C++) através do sistema P/Invoke, então isto ainda não é muito ruim.>li>Bibliotecas COM da Microsoft. COM em si é projetado para se ligar facilmente a muitas linguagens, de modo que grandes partes das APIs COM da Microsoft estão disponíveis diretamente em C#. No entanto, este NÃO é o caso do DirectX. A Microsoft tentou fornecer uma interface nativa em C# para DirectX, chamada Managed DirectX, como parte do DirectX 9, mas há muito tempo foi depreciada. Existem algumas bibliotecas de wrapper que você poderia usar, ou você teria que escrever a sua própria. Estas teriam que ser escritas em C/C++, com uma interface C que pode ser chamada por P/Invoke. A alternativa é C++/CLI, mas isso está caindo em desuso mesmo dentro da Microsoft. Uma nota adicional sobre Direct3D e Direct2D - A Microsoft está no processo de abandonar o WPF, por isso eles nunca se preocuparam em fazer a ponte entre o suporte para renderização do Direct3D nas janelas WPF para versões Direct3D acima de 9. Isso significa que se você quiser usar o Direct3D 11 ou 12 (você definitivamente deve hoje em dia), então você deve evitar completamente a janela WPF e usar as janelas GDI. Você pode fazer isso a partir de C#, novamente usando P/Invoke. Se você estava construindo uma aplicação GUI, isso causa uma grande dor de cabeça, mas se você está construindo um mecanismo de jogo onde tudo será renderizado no mecanismo, isso é menos problemático. Há alternativas, mas há advertências que talvez queiras evitar. Há uma nova solução que vem da Microsoft para unificar toda esta confusão, mas só agora está no estado de RC Preview, por isso nem sequer é aprovada pela Microsoft para enviar aplicações de produção. Isso deve acontecer este ano, mas cabe ao desenvolvedor fazer uma chamada sobre querer evitar problemas no início dos dentes em vez de ser à prova de futuro. Se eu estivesse iniciando uma engine de jogos hoje, eu estaria inclinado a ser à prova de futuro porque quando eu estiver quase pronto com uma grande engine de jogos, o novo material já deve ter tido muito tempo para amadurecer.
Artigos semelhantes
- Qual é a diferença entre o desenvolvimento de aplicativos Android e o desenvolvimento de jogos Android?
- Que carreira é melhor, desenvolvimento de jogos andróides ou desenvolvimento de aplicativos?
- Como é que os principais estúdios de jogos preparam o seu pipeline para desenvolvimento? - Triplo A vs jogos indie vs jogos para celular.
- Que curso devo aprender para conseguir um emprego rapidamente: Desenvolvimento da pilha MEAN ou desenvolvimento do Android?
- O Linux (Ubuntu) é tão bom quanto o Windows para o desenvolvimento de jogos (Unity 2D e 3D)?