Development Insight #4: Programming
Updated: Feb 9, 2019
Programming for Consumer was one of the hardest but most fun part of the development. My understanding of programming leaped to another level through the development. I was able to realize the difference between good code and bad code and learned many lessons the hard way. Here are the insights I gained from Consumer.
Coding with speed, efficiency, clarity, and maintainability in mind.
At the beginning of the development of Consumer, I had programmed for about three years. I had a clear understanding of the code, and I was able to turn any of my ideas into functioning code. All the code I wrote six months ago are bad code; they were complicated and confusing. At the time I wasn't considering this game will ever be worked on by other programmers, so I didn't care about the clarity and maintainability of the code. However, it wasn't long that I tasted the pain of my practice and learned the hard way. As the game got bigger and more complex, it was clear to me that many of the systems need to be reprogrammed completely. The fast and cheap solution end up costing much more time to fix. After that, I always kept the code as simple, clear and efficient as possible while at the same time reasonably fast to code. Having good code is essential even when developing alone, it can help with maintainability and debugging. Also learning about coding structure and good coding practices and habits helped me to get back on the right track.
Systems in object oriented programming
You want to create systems and functions for almost everything. Treating everything as an object or functions make the code much more maintainable and readable. Debugging is so much easier when all the systems are clearly presented. This coding structure breaks everything into pieces of information that you can find easily throughout the development.
Programming in GML
GML is like a simplified version of C++. Instead of having all the classes and methods in C++, Game Maker have objects and scripts. Objects are much easier to use and takes no time to create. Within each object there are events, these events are basically a library of useful common functions. The scripts are just functions that you can create and use for anything you want. It is very user-friendly and well documented. GML really helped me learned programming because of how accessible it is. Once I fully understood the logic for programming, learning other programming languages was natural.