"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > C++: obsessão por velocidade na indústria de jogos

C++: obsessão por velocidade na indústria de jogos

Publicado em 01/08/2024
Navegar:292

C   : speed obsession in the game industry

Quando realmente precisamos de velocidade

C se tornou uma linguagem padrão para jogos e software gráfico há muito tempo. E havia um motivo real: trabalhar com gráficos em tempo real e física requer alto desempenho. Processar geometria, gerenciar buffers, cálculos matriciais - tudo isso leva tempo.
Mas e quanto à lógica de alto nível? Mecânica do jogo, interface do usuário, gerenciamento de armazenamento, solicitações de rede? Estabilidade e segurança são muito mais exigidas lá do que velocidade.

Distribuição de responsabilidades

Podemos implementar funções que exigem desempenho em uma linguagem compilada, como C , e chamá-las de um programa escrito em uma linguagem dinâmica, como Python.
Mas, hoje já temos bibliotecas bem documentadas e fáceis de usar para Python (pygame, pyopengl, pyassimp, pybullet, numpy), que são implementadas principalmente em C/C e fornecem funções para cálculos pesados, ou física/gráficos em particular. Talvez nunca enfrentemos a necessidade de implementar essas bibliotecas por conta própria.

C é a única escolha?

É geralmente aceito que linguagens coletadas como lixo, como Java ou C#, são mais lentas que C e realmente não atendem aos requisitos para cálculos pesados. Isto naturalmente não é verdade.
C pode superar Java ou C# em desempenho em 20-30% em alguns casos especiais, mas quando se trata de abstrações de tempo de execução, como envio de função dinâmica, interação de linguagens, tarefas assíncronas, gerenciamento de texto ou coleções abstratas, Java e C# apresentam eficiência muito maior que C .
Além disso, podemos executar nossos programas Python no mesmo tempo de execução com Java ou C#, usando Jython ou IronPython. Ele traz muitos benefícios, como memória compartilhada com coleta de lixo, sistema de tipos e acesso fácil a bibliotecas C# ou Java imediatamente. Em Java são implementadas linguagens dinâmicas interessantes como Clojure e Groovy, que têm acesso completo à Java Class Library e compartilham os benefícios mencionados anteriormente.

O que realmente influencia o desempenho?

Hoje os computadores pessoais são muito mais rápidos do que há 15-20 anos. Porém, a maioria dos programas ou jogos de desktop não funcionam tão rápido quanto o esperado (apesar de ainda serem implementados principalmente em C/C). Hoje precisamos de bons algoritmos e abordagens eficazes muito mais do que apenas velocidade de linguagem. Função com complexidade constante em Python é mais preferível do que função com complexidade linear em C. Pintar 100 árvores por 15 linhas de código Python é mais preferível do que pintar 500 árvores por 300 linhas do código C.

Preocupe-se com o jogo, não com o idioma

Não importa muito qual linguagem você usa, quando você não tem nenhum jogo feito, certo?
Fazer jogos em C é muito mais exigente e exaustivo, do que fazer o mesmo em Python ou Ruby. Quando você faria 1 jogo com C , você faria 10 jogos com Python. Quando você faria 5 jogos com Python, seriam 0 jogos com C .
Vamos nos preocupar com jogos e diversão, caso contrário, qual é o sentido?

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/taqmuraz/speed-obsession-in-the-game-industry-1p4i?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3