To make a successful game company or studio, it is important to focus on utilities for yourself, if you are the manager, and your employees. This is important to stay competitive.
In software programming, compilers and interpreters are what programmers use to write code in one language and then transform that into machine readable code. In game development or programming, we do the same thing, except at a higher level, and instead of programming language code, we need to create utilities that take inputs or code blocks of another kind and then transform them to some usable object by someone else on the team or another construct or tool. The process is the same, except for game programming, we need to do the following:
- Decide what game(s) we would like to work on or would do best in; this is being honest with yourself
- Figure out strengths and weakness of existing tools we are using
- Requirements gathering of what utilities need to be created
- Creating Parsers and Interpreters that transform input of one kind into a different format
The last point is the most critical part, though all steps are important if the utility is to be effective, or then what is the point in having it.
In school, we are taught how to do things very generally, and how to satisfy an enormous amount of requirements or situations. That is because schools have to teach all types of different students which are at different skill levels, and other things as well. You don't have to create a utility that is perfect for diverse amounts of user types, if only people on your team are going to be using it. If they are above a certain level, you can create a tool or utility that is custom designed for an moderately advanced user.
I am making this point because generally people see game engines or kits, which are designed for a very diverse audience, and skill levels, and might think they have to implement all the same features that they do. The game kit developers make a product that is designed to entice lots of different kinds of people to try to make a game, but you don't have to do things exactly like that, though they are useful in determining basic functionality and are great to learn from.
In order to become great at making utilities, you should practice the following skills until you are an expert, and challenge yourself to increase performance and speed of functions and operations, including implementing multi-threading and parallel functions, and incorporating them into the following types of functions:
- File I/O
- XML and Binary File parsing
- CODECing and Encryption/Decryption Algorithms
- Database Connectivity and Use
- User Interface Design and Programming
- Software Engineering and SDLCs
The last one is important for determining what utilities need to be created, and measuring how much of a boost or performance gain is obtained or can be obtained through the creation of a utility.
This will also give you experience in the emerging popularity of the discipline of DevOps programming within computer programming. Also, if you are a beginner in programming, feel free to use existing game utilities to see what they are all about and how they are designed.
- File I/O