Rinse and Repeat

30 Apr 2020

Level Up

Suppose you’re playing a complicated action, roleplaying, strategy, adventure, nonsensical game that requires you to complete the puzzle or finish the level. You’re aware that there’s a way to beat the level, otherwise, you’re playing a trash game. Now, suppose that the developers implemented a tutorial or hints in the game that explains the mechanics or the basic controls. This is an example of a design feature. You have a problem, whether the princess is in another castle or whatnot, and you’re given the general idea of how to accomplish the task and are thrust into the game with the minimum amount of information required to finish it. Along the way, you come face to face with failure on several accounts but overtime, you start getting more and more progress. You start understanding how to finish earlier parts easier and quicker and you eventually clear the level (not quite at the end yet). In a way, this relates to what a design pattern is, which is a general solution to an occuring problem that is provided by some experienced person before you, to give you a little push. This template isn’t meant to be a full solution guide to clearing every section, but is intended to give you the required experience to make you go along and level yourself up. Eventually, maybe you will do the same again.

A Personal Perspective

Now, how did we implement this sort of feature into our project? While it’s easy to look at what our project is setting out to do and the code that we wrote to do so, I like to look at the more obscure pattern from our initial strategy of tackling the issue. When we proposed our project, we had plans on how we were to finish the project as efficiently as possible. After discussing it through, we thought that splitting up the work and assigning people to accomplish certain aspects of the project was likely the best method at the time, since we could speed up the time it took to develop the various features that we wanted. This way, we could solve the problem by splitting up the problem into subproblems and then solve the subproblems to figure out the whole issue (I think I’ve heard of this somewhere before). Also, we used our previous project and the experience that we gained from it as a template to also solve the problems for our current project so I think that is another way that we were able to implement design patterns.

A Universal Copy+Paste+Edit

As we can see, something like a design feature is almost imperative for not only solving problems but also teaching valuable skills to those that are taking on such challenges. Rather than leaving an inexperienced programmer to face a seemingly impossible task, by giving them a template on what it takes to finish the problem, the programmer can start to pick up things after they try and go through their own trial-and-error testing. This can be a sure way to quickly gain experience and most likely, the programmer can use the skills that they learn here to implement in other projects in the future. Even then, most design patterns that exist today can always be adapted to many situations and even be improved on to be more efficient or better adapted to more situations.