Developer postOriginal post (opens in a new tab)

Little Black Book

Have you ever gotten a really great idea at the worst time possible? Such as while stuck in traffic, or on the train where you cannot take the proper time to make a note digitally or otherwise. In moments like this you try and remember the idea long until in full until you get someplace you can write it down. Some of the best ideas for game development and new projects have come from the most unrelated of locations or objects.

It would be rash to say this is not an efficient way to get new ideas down, but it is agreeable that something is better than nothing. What matters is that the idea was written down and archived for later use, without this it would be lost in the sea of day to day activity.

For each of the game projects I have completed there is typically a notebook like shown below where all of the ideas will go during the early stages of development. Referring to stages of the game so early on that it doesn't matter to create tests, whiteboarding, or even artwork.

The first couple of sketches here are the process of trying to figure out the best way to represent the machines on the player's ship and on levels within a 3D space. This work ended up being used in part of the grid network which allows the machines to communicate. Early in the brainstorming process it is important to remember that actual implementation details are not as important as getting the ideas themselves into some sort of medium other than our thoughts. Notice the date of 6/28/2015.

The next batch sketches show problems that arose as the grid network became more mature over the next several months and work shifted from how would it work and the hypothetical into implementation details which is a very nice sign indeed. At this point the problem was how to pass messages around the grid network without consuming too many CPU resources per tick in the game engine.

Based on those requirements the design pattern chain of responsibility eventually became a possible solution to this problem, it was drawn out based on what the pattern is capable of doing since forcefully breaking it would defeat the purpose of even saying it's name. The entire point of patterns in programming, especially an object-oriented language like C# is to give other developers the ability to easily understand your intentions and to solve common problems we all face as developers (such as cache invalidation, and naming things).

One of the other problems these pages address is that of too many requests being made to the grid network using the chain of responsibility pattern. Eventually it was determined that a mixture of queues and circuit breaker style throttling would allow the engine to function at fastest speed possible while also maintaining enough control over the machines for it to actually be of any use.

Finally, the last couple of pages are about a different subject entirely. These pages are related to an inventory system which is used to keep track of items like weapons, ammo, key cards, and any special quest items that might be required to complete a given objective.

There is a further distinction between GUI elements that work with the inventory system also. An example of this is a slot in a GUI that requires a particular item to operate, a keycard panel would be something that uses this to provide a functionality to the player. Another distinction is using the array index for inventory items as slots which are also used in the binding system and mapped to numbers on the player's keyboard by default from one to zero.

Do any of you have a little black book like this? Do you store your ideas in it? Do you find it better to put your ideas into paper form rather than digital? These are some of the questions I would like to ask the community in return since you don't even need to be a developer to use a notebook like this to to keep those creative juices flowing.

Next post we are going to talk about entity creation and how new machines gets placed into the game. This will require several pieces of tech Space Trucker built, editing tools, some creativity, and in-game 3D GUI's!