A school year has ended, programming projects have been submitted, so it’s time for me to reflect on a common element I keep on seeing in high school quality games – loading bar animations. Some are alright, some are quite artistic, all of them are coded somewhat as follows:
for i: 0 .. 100 drawFrame(i) sleep(50) end for
Why, why, why would anyone delay users from beginning to enjoy a game, keeping them inside a sleep loop that does nothing but draw a dummy animation? There are two parts to the answer.
With limited programming experience, there are two points of reference when developing a video game for a project – existing video games, and what is taught in class. So unless the latter explicitly enforces the better practices, it is the former examples that act as models to be matched. The “problem” is that most students will never have over 4 Gigabytes of content, and as a result just about everything is loaded nearly real-time. The dummy loop builds up an illusion of something complex going on in the background, which closer matches the limited understanding and serves as somewhat of an ego-booster. “Hey look – it’s pretty!”
I can only hope that some schools are better than others, but it is my general understanding that most game projects are judged with emphasis on aesthetics, gameplay, presentation… just about everything but the science of computing. I have seen some fairly odd requirements such as “must use for-loops, functions, etc” and even odder “may not use _list of certain functions_”. The evaluation becomes almost entirely subjective.
I think that we would be conveying a very wrong message to the students, when poorly performing applications with a “pretty loading animation” receive a higher grade than similar projects that use algorithms sufficiently more advanced as to not require enough time for the loading message to remain visible.