Kicking ass and taking names, making really awesome games!
Working alone on The Nightmare Chronicles, I've begun to feel overwhelmed with the size of the project so I've decided to post some tips to help me and you keep motivated and working happily on your project no matter what the size.
One: break tasks down into smaller sub tasks, Making a level or an enemy or can be a huge task and when you start thinking of all the other things you need to do it can easily seem overwhelming. You may start saying, there is no way I will ever finish this. You may sit there for hours indecisively switching between what to work on, not making any progress at all on anything. So instead, focus on getting something small done. It may be a drop in the bucket in the whole scheme of things but once you're focused on one small thing you can devote your full creative drive to completing that task.
Two: Take a break. Sometimes you just become to involved in a project and you aren't letting your brain relax or giving yourself time to just let your mind meander on its own. I recommend grabbing some of your favorite music and taking a drive or going for a run. Going without the music is not an option! Make sure you bring songs that you like to sing along with. This helps because while you drive you sing along and your brain has to focus on getting the words out of your mouth and doesn't have time to keep running into walls with design problems that you are stuck on. Get out into nature if you can, somewhere scenic and different from your normal work commute and dormitory living situation. Also, whether or not you can find a nice secluded place to go to, stop and take time to really observe your surroundings. You might just see something new in a place you've been to before which can spark an idea for what you are working on.
Three: Talk to other people. You may think you are thinking of everything, but sometimes you can only see one side of a situation and its useful to get some input from someone else. Your siblings, roommates, parents, even your dog can help even if they don't know anything about what you are doing. You could be stuck thinking to high concept and somebody around you can think of a more practical simplistic solution that you are overlooking. Another great use for "muggles" is they can help weed out bad ideas. You have many fantastic ideas, but some of them suck and you need to learn that. Other people can help you weed out ones that are completely impractical or boring, or too esoteric to make sense to the general populous. If you tried to make all of your ideas into reality it would take an eternity so cutting down the list by asking what other people like will save you time and help create a more focused and awesome final product.
Before I started work on The Nightmare Chronicles, I though i knew just about everything there was to know about hl2 level design and the limits of what Valve's Hammer editor could do. I was wrong.
Turns out there are still a bunch of entities that i have been overlooking or not using to their full potential. The first being point_clientcommand, a little know entity that is recommended to not be used in multiplayer because it can cause problems with the server and could be exploited as a way to create a mod that harasses players. But in single player it can make use of things like valves "debug visuals" to create special effects. Do you want your mod to be entirely in black and white, just send the command "mat_yuv 1" with this entity and you've got a monochrome game without having to do any code for you mod. Now if you only want a partially black and white game, you'll need to make some grayscale textures, but thats easy. You can also do all console commands like change gravity, give weapons, spawn enemies and vehicles. Anything that there is a console command for.
Another useful tool is the env_screenoverlay, this is great for creating temporary visual effects. You can do the same black and white effect from the point clientcommand entity with this by using "debug/yuv" as the overlay texture. Or you can use a number of other neat valve created shaders to warp and distort the players view. But it can also be used to create a simple gui for sections of your mod with out touching any code. I used it to create a simple healthbar for the first boss in my mod. I was able to do this because he had a standard decrease in health delt to him by each attack you do. Thus I was able to make a small set of images to overlay on the screen during the fight to represent his health.
The last Entity I'd like to mention is the game_ui. I've skipped over this entity many times when scrolling past it in the drop down menus to get to other entities i needed and never knew the power that it held. Turns out it is a way to take the players movement input and apply it via inputs to control and activate other entities. For instance I made a boat that is moved by thrusters that takes the control of the players input to allow them to drive it around. But you could use this in many ways. You could make a crazy 3d menu, using the move left and right to navigate between items and use forward and back to change values. Or use it to turn on lights and trigger sounds, the possiblities are endless.
While developing a section of The Nightmare Chronicles I stumbled upon a game design problem that has had me stumped for several hours and it all comes down to the fundamental rule of Game Design: Assume the player doesn't know anything. This at first glance seems like a terrible thing thing to do. Its terribly discriminatory to just lump a large group of people, especially the ones you are targeting as an audience and saying they are all ignorant.
So, Let me clarify what I mean. They player is absolutely clueless to the inner workings of your mind. What may seem perfectly logical to the game designer may not be the least bit intuitive to anyone else. As a level designer you know every corner of your map, every trigger, every secret, every Easter egg. But the player doesn't, this is their first adventure into the virtual realm you have created and they don't have a clue where you hid the tiny gold key to unlock all the fabulous treasures of gaming goodness that you made for them. Never assume they player knows what they are supposed to do because the Player doesn't know what you meant for them to do unless you tell them.
The simplest and most often encountered problem is a game design classic scenario. Getting the Player to look up. It is often best to avoid putting anything useful or imperative to game play on the ceiling because you have to go to such great lengths to get the player to look up. Perhaps it is human nature. I challenge you to think about the last week and try and remember a time when you were looking above you. I bet you can't really think of a time, because most of your day was spent looking ahead of you or down at your own shoes. Because of this games tend to be mostly horizontal. If you listen to the developed commentary for the game Portal. There is at least one section where they mention how difficult it is to get the player to look up. They have to place signs and create special lighting to draw the players attention skyward to solve their puzzles.
I accidentally created a similar problem in my game, by drawing the players attention to be extremely focused on one object. Getting them to focus on one thing was one challenge. However, this created a problem later because I wanted them to interact with something else that was behind them. The problem stems from the fact that they can't take their focus off of the first object because it is threatening them and will cause them substantial damage if they aren't carefully dodging attacks. So how do I get the player to figure out what they need to do, when they don't have time to even look around? Obviously I need to change the situation they are in. I can either remove the threat so they can be free to explore the area or I can move the object i want them to use in front of them so they can see and know that they need to use it. If I don't change something the player will get frustrated from dying repeatedly and not finding a way to remedy the situation.
Imagine playing chess. Now imagine playing trying to play chess against someone really good and you have no clue what the rules are. The other player just keeps saying, "No, you can't do that" "That is against the rules" You would very quickly get angry and give up on the situation. Every action you take results in a negative feedback from you opponent. As a game designer it is important to make sure your game does not have any moments that creates this feeling for the player. If something is just too hard, make it simpler. If you can't make it easier, just get rid of it. Games are mean to be fun, not nerve racking experiences. So make it clear to the player what they need to do. Its better to err on the side of too easy than impossibly difficult.
When you are designing a game you need to be able to get out of your own head and approach each situation you create from the perspective of an outsider who has never played your game. Because it is not easy to do this the best thing to do is invite other people to play test your game. They will help you find these problems and will always do something you weren't expecting. They might even come up with a solution to your problem that you couldn't think of because you are too focused on the project. So test early, and test often. And remember: The Player doesn't know anything.
For The Nightmare Chronicles I have been learning tons of new stuff. Most of all how time consuming making a game can be. So today I'd like to delve into a bit about modeling that I've been working on the past couple of days.
For part of the circus area in my mod, I have created a sad clown. Unlike the other clowns this one isn't out to get you, he is just terribly depressed and could use a friend. He was also a lot of work to get fully functional in game. Unlike, a player model, which valve provides most of the animation for, This sad clown required a lot of custom animations, especially since he interacts with objects around him and needs to deliver a performance like an actor in a movie. The process of animating him took 3 full days working from when I got up until just before I went to bed. It would have been very easy to just have him stand there and deliver lines like a robot, but that would kill the emotion of the voice acting. What helps sell the performance is the tiny details of movement, a fist clenching, slight shifting of the body weight, or a tiny pink flower on his hat that wilts a bit when he feels sad.
In the end, if you put the effort into creating a believable character it will help draw people into your game, because they will empathize with the emotion that you build into your characters.
Recently I have been working on prop models for my mod: The Nightmare Chronicles
And I decided that it might be useful to provide some insight into the process of placing prop models to make a level look and feel more interesting.
Building inviting virtual worlds can be difficult. Beginning level designers have a tendency to forget about details that help make a video game level feel more alive. Basic maps are entirely brush geometry and are not particularly attractive like fy_iceworld (no offense to the make of that map, it is still fun to play on). Something that can help make a level much more realistic or intriguing is prop models. The simplest form of these is crates and barrels. They can break up long hallways and provide cover but they are often overused. However, some well placed props can really liven the place up. Take for instance this room:
It is rather bleak and empty. This makes it feel unnatural and bland. It doesn't draw the player in, which in this case helps set the mood, by making the player want to escape from the room. But normally you want the player to want to explore an area. You don't want people running from your game because it was uninteresting. Scattering some models around can create a feeling of natural clutter, like an attic full of lost treasures that people will want to dig through and explore every corner.
In the above picture, there is a virtual smorgasbord of interesting models that make the spaced look almost lived in. Proper prop placement will make a game level look real while poor prop placement will make it look fake and dead. A good rule of thumb is to have some models at random angles or slightly unaligned from the perpendicular grid. People always move things and leave them randomly. Tables and chairs should never be perfectly straight. For example, If you are making a mall food court some tables should have 5 chairs while others have 3 or 4, some tables can even be missing all the chairs around them. This is because through normal use, people will drag chairs to other tables to accommodate larger groups. And lets face it, People are lazy, so they don't put them back. So having chairs strewn about in random bunches in a game level help to make it feel more real.
Another things that really helps sell the idea of a game world being alive is to have moving things in it. The world is not static, people and animals are always moving, cars and trucks are always on the move, and even plants are blown around in the breeze. If you have the time to add some dynamic models to your level it, is well worth it and will help create a level of polish that will make your work stand out from the static crowd of amateur level designers.
So to sum up:
1: add some models, even if its just crates.
2: knock shit over, people are messy and your level design should be too.
3: stuff moves and so should things in your levels
Dreams are rather ethereal and vague things which can't easily be represented in 3D space. So to provide something more tangible to work off, I decided to use childhood fears to help create something more visceral. The first way I've begun to do this is through enemy design for The Nightmare Chronicles. Taking the childhood (and sometimes life long) fear of Clowns gave me a clear direction to aim for when creating this enemy for Tedrich to encounter.
At a circus we have this strange disconnect from clowns, They appear human and yet at the same time freakish and devoid of human characteristics. Its like and alien trying to assimilate into the human populous but only picking 3 or 4 characteristics to imitate ignoring the fact that they are made of Jell-O from the waste down. But, I digress... At the circus we know that the clowns are not going to do anything to harm us, however in our nightmares they can be an unstoppable force in polka dot or striped clothing that will twist us into balloon animals or crush us with their giant red shoes. In Tedrich's world they are lighthearted creatures trying to perform their juggling routine, and you happen to be in their way. They cannot be harmed by you but may turn on you and chase you through the dreamscape of your nightmares.
Another thing that using a tangible and largely recognizable icon such as a clown is create a jumping off point for Level design. Clowns are immediately associated with the circus and this can provide a great theme for level assets as well as a more rigid point of reference to bounce off of as I go to create more disturbing and unique nightmare worlds. If I jumped straight into psychedelic worlds that physically made no sense after a while it wouldn't seem that strange, but starting with something as tangible and real as a circus players will be slowly introduced to oddities and obscurities to keep the sense of excitement and exploration fresh as the game progresses. It also provides real world references to help explain game mechanics before throwing players into a full on nightmare with no idea how to fend for themselves.
After much frustration and confusion, I was finally able to figure out why the dream crusher was crushing my dreams by not animating when i attacked with it. As it turns out, the base hl2 code did not actually tell the player to animate for melee attacks like it did for weapons like the SMG. Basically there is 2 or 3 places that each weapon pretends to take control of what the player is doing when in fact they are all just helper classes for 1 that really does. In this case the basebludgeonweapon.cpp files that seemd to be just a sub part of the melee weapon I was making is where the animation was supposed to be set but wasn't. So simply adding a pPlayer->SetAnimation( PLAYER_ATTACK1 ); to the primary attack funtion fixed it.
So now i feel relieved and at the same time incredible annoyed that I couldn't find this sooner. But Tedrich can now swing his hammer in paniced fear and will soon be fighting off his worst nightmares.
This weekend I made my first attempt at making a weapon. Modeling it was no problem but getting it in game was a pain in the ass.
The Aptly named Dream Crusher Left me feeling rather discouraged for most of the weekend. I found several tutorials that were either for the wrong modeling program or assumed I had more knowledge about the one I was using than I currently had. Trying to go strait to a weapon model ended up being out of the question for me so first I followed a tutorial to make my model a more generic physics prop, this allowed me to learn how to make a collision model and adjust physics weights. After getting my Model in game I went for a simple tutorial that showed me how to replace a default Half-Life 2 weapon. Since my mallet is a melee weapon I chose to replace the Crowbar. (Later i will edit the way the weapon works in the code to knock enemies around more) when I first loaded it up in game I was greeted with a comical result, the mallet decided to stick to my butt and was poking out of my head like a hat
After much befuddlement I was able to hack around the ideas in the broken tutorials to get a working version of the model attached to the right place in my hand. The tutorials said to make a bone named the same as the one in my characters hand model. but when I exported the bone didn't want to do anything for me to orient the model. So eventually i figured out to name the model the same as the hand bone and then pretend the origin was where the hand bone was. Doing it this way finally enabled me to get the hammer oriented in the right direction in my characters hand. Now came my second problem, the Collision model didn't seem to want to match up to the other brush work. For some reason it rotates itself 180 degrees in two axis. God knows why, perhaps Valve just wants to be difficult, or maybe the stupid hand bone likes to mess shit up.
Either way, I am Happy to have my hammer in game and I can't wait till I figure out how to animate my character properly to be able to smash stuff in my game with the Dream Crusher!
Creating a mod on your own is quite an undertaking. Thus, picking the right engine is a key decision that can lead to the success or failure of a mod. I choose to build The Nightmare Chronicles on the Half-life 2 engine because it is the one I am most familiar with and has a large base of knowledge provided by the developers and the community here at moddb. A very usefull site for developing for the hl2 engine is the ValveDeveloperWiki. It is a quick refence to most features of the engine and comes in handy when doing anything from level design to coding.
I began with Valves handy create a mod tool that comes with the SDK. Gave my mod a name and chose the verison of the engine I wanted. Then Clicked create mod and in a few minutes Valave informed me I was ready to go with a friendly picture of the TF2 Heavy giving me a thumbs up. So the first thing I did was make a quick test map to run around on. And make sure the mod was setup right. After I compiled and placed the map In the right folder and tried to run the game, nothing happened. Apparently Valves Create a mod only gives you the source code. Which means that even if you are only planning on making maps for your mod you will need to have visual studios installed to compile the vanilla code base. After this "crisis" was averted I moved onto the next step in my development process.
Wanting to use the most up to date version I started with a build of the orange box engine. However, this soon proved to be a bad choice. Because while the general knowledge surrounding the engine seems to exist it is mostly for the older version. So when it came time to code a third person camera I found myself double checking tutorials and questioning why the code i was looking for didn't seem to exist as it should in visual studios. So I was forced to recreate my mod with the episode 1 version of the source engine.
While at first this felt like a defeat, but it turned out to be a good move. The older code base is a bit more simple and easier to parse through. Also it will increase the audience that can play my game.
Once I was on the older code base the third person camera tutorial worked like a charm and I was able to see the ugly untextured "gordon" model running awkwardly around the test map I had built. And after a bit of tweaking i was able to adjust the camera controls and distances to suit my needs for the game.
The Nightmare Chronicles is a fantastic adventure of a poor boy trapped inside his head during a particularly nasty bad dream.
The idea came to me (like most of my good ones) just as I was drifting off to sleep. I wanted to create a single player action adventure platformer in a wacky art style that would lend it self to a great deal of creative freedom. It needed to be set somewhere that anything that could happen and what better a place than in the imagination of a child. Building a world inside of a dream sounded like an great place to start. As an imaginary world i could do things that would break the rules of physics in the real world, such as rip the floor out from under a character or make someone fight zombies of themselves. The Fantasy setting also permits me to adopt a more cartoonish art style that will save development time while adding a charming feel to the game.
The main character is a boy called Tedrich. He has chronic insomnia due to his recuring night terrors. At the age of 15 he should have outgrown his fear of the boogy man and monsters under his bed. Unfortunatly he can't seem to free himself from the horrors that befall him at night. Meanwhile Tedrich's father thinks he is just being and baby and his mother blames TV and movie. Can Tedrich overcome his fears and fight off the boogy man or will he forever be afraid to close his eyes? Find out in The Nightmare Chronicles.
In the following months I will be documenting the development progress of creating The Nightmare Chronicles as a mod for the Half-Life 2 engine in a series of blog posts. Stay tuned for more updates.