If you are a game developer or a game producer, you might have heard of Github Copilot, a new AI-powered tool that can generate code suggestions based on natural language queries. Github Copilot claims to help developers write faster and better code, by learning from billions of lines of public code and adapting to the context and style of the project.
But is Github Copilot a risk for game developers? Could it replace human creativity and skill? Could it lead to plagiarism and legal issues? Is it really helpful?
In this blog post, I will try to answer these questions and share my opinion on the pros and cons of using Github Copilot for game development.
What is Github Copilot?
GitHub Copilot s a tool that helps you write code faster and better. It is powered by an AI (Artificial Intelligence) system called OpenAI Codex, which can generate code suggestions based on natural language prompts or existing code.
GitHub Copilot works as an extension for some popular code editors, such as Visual Studio Code and Visual Studio. This large neural network has been trained on billions of lines of code from public repositories.
You can use GitHub Copilot to get suggestions for whole lines or entire functions, or even write tests for your code. GitHub Copilot can also learn from your code and style, and adapt to your preferences and needs.
How to define a developer?
Before digging into the Copilot itself, let’s try to describe what should be a (good?) developer (whatever I can resume a job in a few words).
What is a good developer? That’s a question that many people ask themselves, whether they are aspiring programmers, hiring managers, or curious users. There is no definitive answer to this question, as different developers may have different skills, preferences, and goals.
Depending if you work in a AAA or an indie studio, a game developer needs to have a variety of skills and abilities. However, the 2 fundamentals skills of a good developer are:
- Programming: know how to write code in different languages and platforms, such as C++, Java, Unity, Unreal Engine, etc. Programming is the core of video game development, as it allows to create logic, mechanics, and features of games.
- Testing: have a good eye for detail and quality, as well as the ability to find and fix bugs, errors, glitches, etc. Testing is what ensures that game is functional and enjoyable, and it can also help improve game based on feedback and data.
On top of these skills, we can also circle some proven characteristics:
- They are passionate about coding and learning new technologies (#geek).
- They enjoy solving problems and are always looking for ways to improve their code quality and performance. (They waste much time on this)
- They can learn from their mistakes and failures, and use them as opportunities to grow (while refactoring the code).
- They are not afraid to try new things and innovate.
What are the main benefits?
Github Copilot is a powerful tool that can help you write better code faster and easier.
After a week of working on my own game with this Copilot, these are some of the main benefits I’ve found:
- It can save you time and effort by generating code that matches your intent and style. You can use it to quickly prototype new ideas, explore new frameworks, or learn new languages. You can also use it to automate repetitive tasks, such as writing tests, documentation, or boilerplate code. In that way, this is a mind-blowing application that increases your time allocation to high-value activities!
- It can improve your productivity and creativity by helping you overcome coding challenges and discover new possibilities. You can use it to find solutions to complex problems, implement best practices, or refactor your code. You can also use it to experiment with different approaches and generate alternatives in few seconds. I should accept that this can also be a drawback sometimes …
- It can enhance your learning and collaboration by providing you with feedback and guidance. You can use it to learn from its suggestions and improve your skills. You should revert to a good training source as the code offer is always far from the Hello World example.
What are the main risks?
So GitHub Copilot sounds like a dream come true for many developers, but it also raises some questions and concerns.
- Legal and ethical issues. GitHub Copilot is not a human, but it learns from human-written code. This means that it might generate code that infringes on the intellectual property rights of other developers or organizations. It might also generate code that violates the terms of service or licenses of the sources it draws from. For example, it might suggest code that is GPL-licensed for a project that is MIT-licensed, or vice versa. It might also generate code that is malicious, buggy, or insecure, without any warning or disclaimer. You are responsible for the code you write and use. You should always review and test the code generated by GitHub Copilot before using it in your projects.
- Quality and reliability issues. GitHub Copilot is not a magic wand that can solve any coding problem for you. It is a tool that can help you with some tasks, but it is not perfect or infallible. It might generate code that is irrelevant, incorrect, or incomplete for your needs. It might also generate code that is inconsistent with your coding style, standards, or conventions. It might also fail to generate any code at all for some queries or scenarios. You should not blindly trust or rely on GitHub Copilot for your coding tasks. You should always use your judgment and expertise to evaluate and modify the code generated by GitHub Copilot.
- Dependency and complacency issues. GitHub Copilot is not a substitute for learning and improving your coding skills. It is a tool that can assist you with some aspects of coding, but it cannot replace your logic, or intuition. It might also make you lazy or overconfident in your coding abilities. You might start to rely too much on GitHub Copilot for your coding tasks, and lose the motivation or opportunity to learn new things or challenge yourself. You might also miss out on some of the fun and satisfaction of coding by yourself. You should not let GitHub Copilot take over your coding process or goals. You should always use GitHub Copilot as a supplement, not a replacement, for your coding skills.
Can AI replace developers?
This is a question that many people are asking, especially as AI becomes more advanced and capable of performing tasks that used to require human intelligence and creativity. However, the answer is not so simple, and there are many factors to consider before jumping to conclusions.
First of all, AI is not a monolithic entity that can do everything. There are different types of AI, such as narrow AI, which is focused on a specific domain or task, and general AI, which can learn and perform across multiple domains and tasks. While narrow AI has made impressive progress in areas such as natural language processing, computer vision, and game playing, general AI is still a distant goal that may or may not be achievable.
Today (as this may not be true in few years), AI is not a substitute for human creativity and innovation. AI can generate code based on existing data and rules, but it cannot create something new or original from scratch. AI can assist developers in finding solutions to problems, but it cannot define the problems or the goals in the first place. AI can follow instructions and guidelines, but it cannot understand the context and the purpose of the project.
As we saw, what defines a developer is not only code oriented. We can clearly say that the answer to the question is no, at least not in the foreseeable future. But one insight is raising: complexity is coming. To face the AI offer, we need to be more skilled in various aspects: technical, ethical, social, and personal.
Technical skills are essential to understand how AI works, how to use it effectively, and how to avoid potential pitfalls. You can (or at least should) not validate something you don’t understand. This means that using an AI Tool that produces code implies that you have the knowledge that is needed to perform the job by yourself. If you don’t know what is an Interface, what’s implied protected or a static variable, you are just creating a Mr. Hyde you cannot manage, and that will destroy your reputation.
Conclusion
Github Copilot is a powerful and innovative tool that can assist game developers in various ways, but it is not a threat or a replacement for them. It is still up to the developers to use it wisely and responsibly and to make their own decisions and judgments.
Github Copilot can be a helpful partner, but not a master or a competitor.
Copilot can
- help developers focus on the more creative and challenging aspects of game design.
- help developers expand their knowledge and improve their code quality.
- can inspire developers to try new ideas and approaches, by suggesting alternative or novel ways of solving problems.
but Copilot
- is not a magic solution that can write flawless code for any game. It is still a tool that requires human supervision and validation.
- not a guarantee of originality or creativity. It is based on existing code that is publicly available, which means that it might generate code that is similar or identical to other projects.
- not a substitute for human talent and passion. It is based on algorithms that can mimic patterns and structures, but not emotions and intentions.
You should always use GitHub Copilot responsibly and ethically, and never forget that you are the one who writes and owns the code.