Comments
Good article. Level designing is really difficult , and that's actually something most beginner developers know because of all the in-game level editors and mod kits.
However, I think what you describe can be made more sensible by adding some general coding (specially AI) which takes care of things without the need to script everything.
For instance:
What about a situation in which the player shoots them during the maneuver? What should they do? Shoot him back, take cover, ignore?
There should be a simple state AI system that can take care of decisions like that so the level designers can concentrate on level designing.
I have no words to describe how much I appreciate this.
I have myself attempted at doing some deathmatch maps back in time. Even with reduced scripting and complexity one must have a very clear vision of what's going to happen. Layout, flow, item placements. I think the most difficult thing for me was that I had to consider both the low-level (can I render this?) and high-level (what about a BFG there?) problems at the same time.
It makes up for a lot of potential iterations.
Just to clarify - when you say "scripting", do you mean in a programming sense? This is news to me, I didn't realise that Level Designers had duties that involved writing code. or perhaps you mean something else?
I'm not a level designer (I have only played with some mod tools). However, when you create a level you also have to define how the entities in the level should respond to player actions and more general events. This is called scripting. You do not have to use real world scripting languages, they can be visual or very specific, but I guess it can be considered "programming".
Just to clarify - when you say "scripting", do you mean in a programming sense? This is news to me, I didn't realise that Level Designers had duties that involved writing code. or perhaps you mean something else?
By the posted screenshot he is working with Unreal Engine, level designers would not likely write code, but they do script, the complex graph full of lines and boxes you see at the end of the article is a script created through assisted programming, the editor provides pre programmed functional blocks that you connect between each other and pass on level variables such as entities and such.
The philosofy here is that whatever behavior is specific to the level and its environments, should be coded this way, and by the level designer, if the level designer needs a functional object that does not exist yet, like say trigger a sound (of course this exists, just an example), he must ask the programmers to do it and then he can use it in the level script.
A bloody good article describing the real deal with level design. Perhaps telling people that their necks and shoulders will suffer is the only thing missing :)
I'm not a level designer (I have only played with some mod tools). However, when you create a level you also have to define how the entities in the level should respond to player actions and more general events. This is called scripting. You do not have to use real world scripting languages, they can be visual or very specific, but I guess it can be considered "programming".
Yes it is programming. Let us say you need to make a bot chase you character. Then you need to player.getPosition() and set this as the bots destination. Also you might think about letting the bot stop a few units before hitting the position and do some ray casting to find a target to chop/shoot at etc. Scripting feels a lot like simple programming(I use Torque).
If you need to spawn some bots and make them disappear again when leaving a trigger area then triggers with a lot of if the else clauses are set up etc. Of course this is all just talk so here is a simple code for detecting a players action(moving into the trigger and if set to 1 or it return else it spawn) and spawning some nasty bots:
function DefaultTrigger::onEnterTrigger(%this,%trigger,%obj)
{
if(trig1.triggerOff == 1)
{
return;
}
if(!isObject(bot1))
{
aiplayer::InGameSpawn(bot1, botspawn1, 0);
}
if(!isObject(bot2))
{
aiplayer::InGameSpawn(bot2, botspawn2, 0);
bot2.goal=bot2goal;
trig1.triggerOff = 1;
}
if(trig2.triggerOff == 1)
{
if(!isObject(bot3))
{
aiplayer::InGameSpawn(bot3, botspawn3, 0);
}
if(!isObject(bot4))
{
aiplayer::InGameSpawn(bot4, botspawn31, 0);
}
if(!isObject(bot5))
{
aiplayer::InGameSpawn(bot5, botspawn32, 0);
}
if(!isObject(bot6))
{
aiplayer::InGameSpawn(bot6, botspawn33, 0);
}
}
}
Good article. Level designing is really difficult , and that's actually something most beginner developers know because of all the in-game level editors and mod kits.
However, I think what you describe can be made more sensible by adding some general coding (specially AI) which takes care of things without the need to script everything.
Yeah, I thought of that as well. It's actually explained in the comments section of the original blog post this was reposted from. The AI of the enemies allows them to respond in a general manner to things like attacking, taking cover, but when you want them to behave exactly the way you want, then the surest (but also cumbersome) is to script every possibility.
In the game projects I've completed (granted, most of them have been on the Commodore 64 :) ) I've been content with just placing enemies, setting their health, weapon and perhaps initial AI state at most, so this article was kind of eye-opening, and also depressing in a way.
Take a look at what it really means to be a level designer, from a Bulletstorm developer
Really interesting and straightforward!