Orientation in the vastness of the desert...Imagine you are facing infinity. The infinity of the desert. If you are not able to reach the end of it, is death just a representation of that infinity?
I guess this game has a somewhat personal and philosphical meaning to me. But now let's get to some technical and design related issues:
In the last days I have worked on the core design and a first prototype to test out the procedural game world.
1. Game DesignFor the conceptual design I use the methods of some well known game designers. Unfortunately I did not have the chance to study in a prestigious game design university, but I don't think that is what is going to limit me. For a basic design framework I use two main mentors (books):
The Art Of Game Design by Jesse Schell
The greatest part of this book is the "lenses". They are questions every game designer should ask about the game and they really expose flaws in the design. I will be using them along the way.
Game Design Workshop: A Playcentric Approach to Creating Innovative Games by Tracy Fullerton
This book is really great, because it focuses on core design principles and the iterative design process. I will definetly implement iterative design in the creation of this game, which will result in (hopefully) a lot of good feedback from people playing the game.
My design concept so far...Both these books center on the user experience as a start. Jesse Schell calls it the
essential expierience and Tracy Fullerton
player experience goals. If you start to design a game, it is not really about the features, it is about the experience you want to create. As soon as you define the central experience you want the player to have, you can design your features around them in order to achieve the experience goal.
What is my essential expierience goal?At the core the feeling of being isolated in a desert, which will result in a feeling of disorientation and uncertainty. This is what the players will experience. But they will also feel moments of surprise and achievement when reaching objectives and obstacles. A central aspect of the game is coorperation, and for that I want the player to think about how he can reach the goal in cooperation with the other player.
Thoughts the player will experience in cooperation:
* Where do we need to go?
* How can we face this challenge together?
* How can we go through this experience as a team?
* How can I make sure my buddy and I survive this?
These are some of the major aspects of the player experience. Now I will have to prototype and iterate over these goals, with hopefully useful feedback.
I also already have some design features to reach these experience goals, and I will go into details on these in the next couple of updates.
2. Technical StuffEvery prototype of a game should try to test an assumption. My main assumption right now is that this might be a fun experience to have with a friend of mine. That was basically the main reason to start developing this game.
Right now I am trying to figure out the best way to implement the procedural level generation.
From a programers perspective I am trying to think rather abstractly. What are the objects and their attributes/behaviors?
The player(s) travels on a 2-dimensional surface, so I was trying to think in a grid-like design. The height of the player is not important for the procedural generation.
I don't want to create all the environment at once, but load it according the the position of the player. So here is what I did: I divided the environment into sections. So I created a Class for the sections and a manager to create chunks for the environment based on the players position.
The concrete (procedural) looks of these "chunks" is unimportant for the abstract implementation, because i want to have a flexible code framework. Fortunately object oriented design can help you with this.
Both players start at the same location, and if they reveal a new section, the manager creates the appropiate environment around them. And this is what my design does at current moment. The "chunks" at the moment are just a simple cube for the desert floor, but they will be expanded in the future.
Because a central aspect of the game is orientation, I also need a way to figure out the current location of the player. The easiest is obviously their X/Z coordinates in the game world. But I also want to have a way to identify the current section the players are on. For this I decided on an integer based approach, which means that each game world segment has two integer compontents X and Y, which identify it uniquely. The players start at (0|0), and if they go to the right segment they are on (1|0), ... and so on. You can see this in the screenshot above. Here the player is on the (-1|2) segment, if you look at the text in the corner of the screenshot. This means he is -1 to the left and 2 to the top from his starting position segment.
So that is what I have so far. In the course of the next week I will have to figure out more about the concrete procedural generation of the segments(chunks) and the global game state (goals). Another aspect that I have to keep in perspektive is the network implementation of the game. I want to have a working prototype to play as fast as possible. The main assumption to prove right now is, if my features support the game design expierence goals i have. I will try go into detail about this in my next post.
Ok, that's it for today...
Would love to hear some feedback if anybody is reading this ;-)
-Ralph