Comentários subjetivos

Sobre este trabalho

Desde o ensino médio sempre me interessei pelo processo de criação de jogos, tanto que esse foi o motivo principal de eu ter escolhido cursar ciência da computação. Já dentro da faculdade conheci o grupo de extensão USPGameDev, onde aprendi e ensinei muito sobre o assunto. Na metade do terceiro ano consegui um estágio na área, pelo qual me apaixonei e continuei estagiando até hoje (final do quarto ano). Dado minha tragetória não seria surpresa se meu TCC fosse um jogo, porém durante a faculdade outro assunto me cativou: aprendizagem de máquina.

O crescente avanço nas IAs para jogos pela OpenAI e pela DeepMind nos últimos anos me motivaram a juntar o útil ao agradável, contudo não me agradava muito o fato dessas IAs serem produzidas somente para explorar os limites das técnicas, e não para evoluir as técnicas já existentes para criação de IAs em jogos. Foi então que tive a ideia de testar por mim mesmo como é possível criar um jogo do zero levando em conta a existência de métodos de aprendizagem de máquina.

Desde quando aprendi o algoritmo Q-learning em MAC0425 eu pensava em utilizá-lo na criação de IAs para jogos, e vi em MAC0499 a oportunidade de testar essa ideia. Como desenvolvo jogos à quatro anos, tanto por lazer quanto profissionalmente, durante a matéria desenvolvi um jogo focado em explorar ao máximo a mecânica de aprendizagem por reforço e implementei métodos que ajudam a treinar essas IAs.

Como o projeto tangenciava vários outros temas (como experiência do usuário, adaptação de dificuldade, performance das IAs, máquinas de estado, etc.) foi um desafio fazer com que ele não fugisse do escopo e demandasse mais tempo do que o disponível. Para contornar esses problemas, desde o começo do projeto pensei em cada coisa que deveria ser implementada e as ordenei por prioridade, método que ajudou muito a priorizar features importantes e a estimar a duração do projeto como um todo. Várias das ideias que pensei não foram implementadas, como falado no último capítulo da monografia, portanto vou tentar continuar com o desenvolvimento desse jogo após a matéria.

Sobre o curso

No geral me surpreendi bastante com o curso, ele me deu a oportunidade de me desenvolver muito pessoalmente e profissionalmente. Um dos pontos positivos é que os professores do BCC são abertos às sugestões dos alunos, motivo pelo qual surgiram os grupos de extensão e pelo qual o currículo foi modificado em 2016. Por outro lado, seria interessante se alguma matéria mais avançada de desenvolvimento de sistemas (como MAC0332, MAC0413, MAC0467, MAC0470 ou MAC0472) fosse obrigatória, assim mais alunos teriam uma noção melhor do mercado de trabalho.

Por meio do USPGameDev pude expressar minha vontade de desenvolver jogos, aprendi com outras pessoas e adquiri contato de pessoas de fora da faculdade que trabalham na área, por isso sou muito grato à ele. Na minha opinião o curso vem fazendo um ótimo trabalho apoiando a existência dos grupos de extensão e reconhecendo que eles desempenham um papel importante na graduação.

Disciplinas que usei no projeto

Matérias que podem ser úteis se o projeto continuar no futuro

Outras matérias que poderiam ser úteis se tivessem sido cursadas