Pesquisa de site

Tentei codificar um jogo com ChatGPT, foi assim que aconteceu


Principais conclusões

  • Os motores de jogo entendidos pelo ChatGPT são adequados para codificar protótipos de jogos.
  • A assistência de codificação do ChatGPT requer uma compreensão decente do mecanismo de jogo que está sendo usado.
  • Espere que o ChatGPT forneça soluções próximas, mas não exatas, para problemas de codificação. Você ainda precisa revisar e revisar o código fornecido pelo ChatGPT.

IA é a nova palavra da moda sobre a qual todos parecem estar falando. Até os telefones estão recebendo aplicativos de IA totalmente implementados, mas há muito mais que você pode fazer com ferramentas como o ChatGPT, incluindo a codificação de um jogo. Venho desenvolvendo jogos há quase uma década e até lancei alguns projetos e participei de alguns game jams no Itch.

Quando descobri o ChatGPT, a primeira coisa que quis fazer foi ver se poderia usá-lo no desenvolvimento de jogos. Como sempre, ChatGPT está ansioso para ajudar e quase se sente o estagiário mais interessado no mundo.

O ChatGPT pode codificar um jogo para você?

Fica rapidamente aparente que a disposição da GPT em ensinar você a codificar um jogo é bem-intencionada, mas exige que você entenda um pouco sobre o que está fazendo. Como desenvolvedor amador de jogos há mais de uma década, sei um pouco sobre codificação de jogos. Ao usar o GPT para me ajudar, fiquei interessado em ver o quão sofisticado ele era para produzir um protótipo de jogo jogável.

Certamente entende os motores de jogo

Um mecanismo de jogo é o que um desenvolvedor usa para criar um jogo. Vários motores de jogo estão disponíveis, incluindo Unreal Engine, Godot e Unity. Como alguém que conhece bem o Unity, decidi usá-lo como meu mecanismo de desenvolvimento. Fiz algumas perguntas gerais (para as quais sei a resposta) para garantir que o ChatGPT não começaria a ter alucinações sobre meu mecanismo de jogo.

Depois de perceber que pelo menos sabia o que estava fazendo, decidi dar a estrutura para o meu projeto, que incluía:

  • Geração aleatória de um fundo de rolagem
  • Ter um personagem do jogador controlado por botões direcionais, com botões do mouse para disparar
  • Um sistema de pontos com uma tabela de classificação
  • Uma quantidade infinita de inimigos, para que os jogadores possam jogar casualmente

ChatGPT foi muito útil ao oferecer soluções de código para algumas das coisas que eu precisaria para criar este jogo. Por exemplo, eu pedi algum código para um projétil que eu dispararia da posição do jogador quando ele apertasse o botão "Disparar", e me deu isto:

using UnityEngine;
public class Projectile : MonoBehaviour
{
    public float speed = 10f; // Adjust this value to control projectile speed
    void Start()
    {
        // Move the projectile forward in its local space (assuming it's facing right)
        GetComponent<Rigidbody2D>().velocity = transform.right * speed;
    }
    void OnTriggerEnter2D(Collider2D other)
    {
        // Check if the projectile collides with an enemy or other objects
        if (other.CompareTag("Enemy"))
        {
            // Handle enemy damage or destruction
            Destroy(other.gameObject); // Destroy the enemy
            Destroy(gameObject); // Destroy the projectile
        }
        else if (other.CompareTag("Wall"))
        {
            // Destroy the projectile if it collides with a wall
            Destroy(gameObject);
        }
    }
}

Notavelmente, ele me deu um código bem comentado para que eu pudesse acompanhar como um programador iniciante. Muitos lugares sugerem que você poderia aprender a codificar usando IA, e a inclusão de código bem comentado faz parte disso. Você não terá que se preocupar se houver erros em seu código se puder rastreá-los comentário por comentário. No entanto, ao usar GPT para criar um jogo, encontrei vários problemas que derrotariam um iniciante no desenvolvimento de jogos.

ChatGPT está longe de ser perfeito

LLMs são tão bons (ou tão ruins) quanto as instruções que o usuário lhes dá. Por exemplo, um usuário poderia facilmente gerar personagens do tipo anime com MidJourney incluindo algumas palavras para esclarecer o resultado final do prompt. No entanto, ao criar um jogo com ChatGPT, descobri que havia momentos em que o mecanismo simplesmente não captava o que eu estava escrevendo.

Neste exemplo, encontrei um problema ao gerar meus projéteis, com todas as “balas” sendo desviadas quando o jogador se move. Embora isso pudesse criar alguns padrões de jogo interessantes, decidi pedir para resolver o problema e ele sugeriu uma solução. Infelizmente, a correção não funcionou.

Acabei consertando sozinho, mas isso destacou um grande problema com o uso do ChatGPT para codificar um jogo: há algumas coisas que ele não sabe.

Acabei montando o jogo usando algumas sugestões do GPT sobre a pontuação persistente, bem como o algoritmo de geração aleatória e rolagem para o plano de fundo do jogo. Você pode jogar o jogo final aqui.

Funciona com outros motores de jogo?

Eu sei que o ChatGPT foi muito bom com o Unity, uma vez que consegui resolver alguns dos problemas que encontrei acima. No entanto, me perguntei como a codificação de um jogo com ChatGPT funcionaria para um mecanismo menos popular como Godot. Não sou exatamente um especialista em Godot, já o usei muito menos do que em Unity. Decidi fazer algumas perguntas ao ChatGPT:

Para quem usa Godot regularmente, o problema é imediatamente óbvio. ChatGPT parou de aprender em 2021 ou por aí (pelo menos para a versão gratuita). O script que a GPT me deu foi baseado em seu conhecimento do Godot 2.x, que é uma versão bastante desatualizada da versão 4.x atual. O problema flagrante é o uso de KinematicBody2D, que foi substituído por CharacterBody2D em iterações posteriores da linguagem.

Quanta habilidade você precisa para codificar um jogo com ChatGPT?

Se você está pensando em fazer o próximo Legend of Zelda: Breath of the Wild usando ChatGPT, você provavelmente deve moderar suas expectativas. Você precisa ter um bom conhecimento do mecanismo em que está trabalhando para usar o ChatGPT como assistente de codificação.

Outros assistentes como o Microsoft Copilot podem ser melhores com código geral e podem ajudar ainda mais. O grande problema é que esses LLMs estão olhando para um problema abstrato e o veem sem realmente vê-lo.

Em uma linguagem mais simples, você sabe como deve ser a aparência do jogo que está fazendo e como as coisas nele devem se comportar. Você pode explicar ao ChatGPT o que deseja e isso lhe dará algo próximo (mas não exatamente) do que seu jogo precisa. Para fazê-lo se comportar da maneira que você deseja, você terá que mexer no código fornecido pelo GPT.

Você deve codificar um jogo com ChatGPT?

O desenvolvimento de jogos é um campo complexo, mas graças a motores como os mencionados acima, é muito mais acessível ao público em geral. Um desenvolvedor habilidoso poderia passar algumas horas montando um jogo que funcionasse e tivesse tudo o que ele deseja.

Este projeto em particular levou um total de 48 horas do início ao fim. Quanto mais complexo o jogo, mais tempo e esforço serão necessários. Isso sem contar a quantidade de tempo que você teria para dedicar à aquisição e desenvolvimento de ativos. Poderia se tornar um projeto bem grande.

Se você decidir codificar um jogo com assistência do ChatGPT, aqui estão algumas coisas que você deve ter em mente:

  • ChatGPT pode cometer erros no código.
  • O ChatGPT pode fornecer um código desatualizado, exigindo que você passe horas procurando uma solução no Google.
  • A IA ainda não pode criar ativos de jogos (pelo menos, não são bons ativos 2D), então você terá que adquirir os ativos separadamente.
  • Algumas das sugestões que o ChatGPT oferece não funcionarão e podem levá-lo a um beco sem saída, exigindo que você repense sua implementação.

Se alguém me perguntasse hoje se poderia aprender a codificar um jogo com ChatGPT do zero, sem nenhum conhecimento do motor, eu teria que dizer que não.

Artigos relacionados: