OK, so, you read Icepicks the Ultimate Darwinia Modding Guide.

You may have read Nihils guide to the file structures and how to change the actual shapes, sprites, and all the crazy stuff you probably won't do for a while

And now, you may be at a loss. You can create a chunk of land, put a bunch of units on it, and play around, but, it doesn't really feel like a level, it feels like a chunk of land with a bunch of units on...

So, the 'How to' list was born...

How to:

Make a simple level, from start to finish!

So, you created your new mod. Now you need to create a level...

1) Don't try to think of an awesome level name from the getgo, you can change this as you like later. What you DO need is a general idea for a level. To sum it up, the basic objective types you can have in Darwinia at the moment is, turn a building on, or move a unit to a place. I'm going to call my level ubermcsuxland, because that's just the sort of thing I call stuff... in this level, my objectives are going to be bring a trunk port online, capture some research and clear out an infestation of Virii. Don't start simple, do I?

Right, so, now I know I need 4 areas in my level, a place to start, a place to capture a trunk port, a place to get the research and a place to whomp some Virii... so, to the level editor!

2) Move the camera over the axis, there's nothing more annoying than realising the size increases in the other direction and that the whole of your level needs to be moved to add a little bit on the end...

3) Don't try to make your whole level out of one Land Tile, my method is to make a fairly big (eg half the level size) and click random until I get something that resembles something useful... Unless you find an AWESOME land tile that has everything you want...

Right, I think this tile could be useful, if it were a) bigger, taller, and less lumpy... hence!

I increased the size to 1500, the height to 300, and increased the noise period (if you don't know anything about waves, a longer period basically means less variation)

But, that's not enough, this tile looks like it'd be a good link between the 4 areas, or if I wanted a smaller level, links to 3 of them and includes one. For once in this how to, let's keep things simple, let's make this area the area between the two peaks a virus nest that the player must assault with squadies or Darwinians or similar, so we need 3 tiles around the outside. Let's make the world size a bit bigger, 3000x3000 should easily accomidate everything we'll need...

Tada! a bunch of discreet areas! However, we're not quite finished yet... You may've noticed it looks like it's trying to emulate the Darwinia Case, so, it's time to manually edit the map text file

4) SAVE!

Once you've saved, press escape to go back to the world map, and find a way of opening explorer/whatever you use, funny other platform people! (I always forget to do this first). Anyway, navigate to the Darwinia folder, open up mods, yourmodname (in my case, this is BestModEver), levels, then open the file map_ubermcsuxland.txt, or uh, whatever you called yours...

At the moment it looks a bit sparse, but don't worry about that, what you want to change are the landscape_[name].bmp, water_[name].bmp and waves_[name].bmp, or at LEAST the landscape! I'm going to put a pack together of landscape, water, and waves images that anyone can use, though you'll probably find you'll one day want to make your own ;-;. Remember though, water colours and effects are more important than landscape colours, you'll see why in a minute...

Anyway, I'm going to use Landscape_mine.bmp, because you will have that, and keep the default water. Save and close the text file, and return to darwinia, and re-enter your level with the editor.

OK so maybe it still looks a bit funny coloured, but that's because we haven't done this yet!

5) Add lights. 2 of them, a high dim one, and a low bright one. That's what looks best!

Whee, before and after!

Why are we doing this now? I find that knowing what the level could really look like influences my placing of units, and gives a level a style that otherwise it wouldn't have. Obviously, when you're doing your own thing, you don't have to do this now if you don't want to

Right, that's all that tomfoolery out of the way... now we need our start point, trunk port, research and virii hoard...

6) Buildings first, entities later! Also, understand what Dynamic means, dynamic means that the buliding information is in the mission file, and you only need that if you want your building to DISAPPEAR at some stage, or have a magical status about it that you can change saved (ie, other than team). Nothing else requires this.

Anyway, buidlings!

7) Rotate everything! Including control towers. Nothing is more telling or lazyness than having all your control towers facing the same way!

8) Objectives need to be global! We're using a safe area building as an objective, right? Set it up how it needs to be, I set Size = 300, Capacity = 2, and that it detects Virii. Why 2? They come online when they detect their capacity, not more than or less than (a safe area was used to monitor the number of ants in Yard), and I don't want the player to have to chase around a stray virii up a mountain if that happens, and then set it to global.

Right, what else will we need to make this level work? How about an incubator, and an all important Script Trigger for the introduction. Both these buildings will want to be dynamic, because the incubator has a number of souls variable, which obviously we change, and we don't want the introduction to fire off every time someone enters the level (well, maybe we do, but this tuitorial says we don't!)

For the script trigger, set dynamic, the condition to be always, but ignore the rest.

You may notice this:

this is the effect from the research, and is in a stupid place because the editor sucks.

Right, that's all our buildings done! Time for entities, we won't be adding any programs or friendly units to this map, so every thing will be on team 1

9) Lots of units with a huge spread is no substitute for well placed smaller blocks of units.

Right, we need some Virii for our Virii patch, or it's going to be a very easy objective

Eh voila, some virus. This might not be how the level is going to end up exactly, but it'll let us play it and think 'hmm this needs changing'

Right, last thing to do for now, cameras! I almost exclusively use camcuts and cammoves in cutscenes, very rarely building or location focus style ones. Anyway, since we have 4 'areas' I guess that means we need at least 4 cameras for the introduction. Now, we could name these intelligent and useful things like virii patch, trunk port, and research. I'm going to name mine view1, view2 and view3. Don't worry about lining these up perfectly, just make them jist style, so nearby and pointing in the right direction, eg;

start, view1, view2, view3:

Right, save, and quit Darwinia entirely. You CAN test your level now if you like, but I wouldn't bother. You'll only have to do it again in a minute. Hopefully you didn't close your explorer/whatever program with your mod folder in (I invariably do). We're now going to do a number of things that are going to transform our structured waste of time into a level;

- Open up your map and mission file. We're going to add objectives! At the bottom of the mission file is the PrimaryObjectives_StartDefinition section, with NeverTrue in. Which isn't very good. Now, we can be cunning about this - Do we want the player to HAVE to capture the research? If we don't, it'll be auto added by the game as a secondary objective for us, so we can just uh, forget that one for now... anyway, I want the player to activate that red trunk port and the safe area to win, so, I use these lines:

	BuildingOnline:ubermcsuxland,1	ubersux_objective	ubersux_objective.txt
	BuildingOnline:ubermcsuxland,3	ubersux_objective2	ubersux_objective2.txt

Here I've referenced strings and files which don't even exist! But, I've used a standard format which I'm going to remember and won't have to come back here to look up. How did I know which building IDs were the right ones (the bit after the comma)? I had the map file open to look at them, and I set the team of the friendly trunk port to 2, so I could tell it apart from the unfriendly one.

That done, look back at your mission file in the buildings section, you should see your script trigger! If you don't, you didn't make it dynamic, and it'll be in the map file. Wherever it is, go to the end of the line, to where it says NewScript. I'm going to replace this with, you guessed it, ubersux_intro.txt (you NEED the txt, if your script has a .txt extention which it probably will...) Anyway, we're done here, save but dont close the mission file.

- Now we arrange for an outro, in game.txt. Open this beasty up (it's in your root mod folder) and find the Events_StartDefinition section. This bit works just like your objectives bit, so, new line in the section, 'Event ' copy the condition part of the objectives in after each other, so it looks like this:

	Event BuildingOnline:ubermcsuxland,1 BuildingOnline:ubermcsuxland,3

Then create another new line, and put something like "Action RunScript ubersux_complete.txt" and then another new line with End (this is pretty important, so don't forget)

You can save and close game.txt now, and unless you don't want to be lazy, the mission.txt file too. But let's be slightly less than lazy and keep the mission file open!

- Right, we need some scripts, since we just said they'd exist. Create a scripts folder in your mod folder, and create the 4 scripts we've just talked about, so, ubersux_intro, _objective, _objective2 and _complete

The Intro: I'm going to guess wildly that this is what I'm going to want:

cammove	view1	8
say	ubersux_intro_1
say	ubersux_intro_2
say	ubersux_intro_3
say	ubersux_intro_4
say	ubersux_intro_5
waitcam
cammove	view2	8
waitcam
cammove	view3	8
waitcam
cammove	start	3
waitcam
camreset

(note the empty line at the end - ALL files must have an empty line at the end, except maybe your readme...)

The objectives: These could be a single line, or a complicated slideshow of camera pannings and such. Most people are never going to click these ever unless they forget, so you don't need a whole story about what to do, that's what the intro was for. Now, let's be SLIGHTLY LESS THAN LAZY, and put highlights in. Hence they're basically going to be:

highlight	1
say	ubersux_objective_help
waitsay
clearhighlights

The outro/complete: For this, I'm going to give our avatar speaker a one liner about how awesome you are.

say	ubersux_complete

Right, that's the scripts done for now, and you can FINALLY close the mission file.

- Create the strings! New file, strings_default.txt in your mod's root folder. We can make it look pretty with comments later, but we need our string lines, so, let's create some text!


ubersux_intro_1			Good, you made it!
ubersux_intro_2			I need you to clear up this nest of Virii, they came out of nowhere I'm telling you!
ubersux_intro_3			Once you've done that, I need you to chase down the source, I think they came though this trunk port...
ubersux_intro_4			I think there's also some research in the area that may be helpful
ubersux_intro_5			Good luck, and don't underestimate those pescy spiders...

ubersux_objective		Open trunk port to next area
ubersux_objective2		Whomp the Virii

ubersux_objective_help		I need you to get an engineer to take over this trunk port, so you can chase that virus!
ubersux_objective2_help		Use squads, or anything really, to destroy the virus in this area

ubersux_complete		Woo, you're awesome, if only this mod had more than one level and you could do something useful like chase the virus!

THATS IT, WE'RE DONE, we have a skeleton of a useful level! I have ACTUALLY been doing this as I've been writing it, so, if it doesn't work, expect this paragraph to be removed so I can maintain my ego...

10) Check you have *actually* saved everything...

11) Test it, and test it again, and again!

Right, so, load the game up, and enter your level. The intro script should fire off and you should see your camera float around and text get said at you! Amazing stuff, eh? Expect it to be a bit off and be too fast/slow etc. When that's done, check everything's on the right teams briefly. You may note that there's no research cube, why? Because I forgot to tell you to set it something the player won't already have, since if they do have it, it won't appear, so we'll need to fix that (unless you were clever and already did), and that there's an enable trunk port secondary objective... where did that come from? It is of course, the friendly trunk port at the start of the level. Most of the time these get activated by the previous level, but because we don't have one, we'll have to fix that... so, to the editor and set the research to be anything v3+ (I did grenade), and then save and quit again. Open up Game.txt and create a new line in the Buildings_StartDefinition section for our trunk port. This line is gonna look like;

	  0	2	0	11	-1	1

And that'll turn the trunk port on. Note that the teamID setting here trumps whatever's set in the editor, so if you set it to 2 here and 1 in the editor, it'd be on team 2 in the game.

Now it's time to fiddle with that intro script... Basically I know I can just put Wait 1-3 after each of the waitcams, and mine'll look good, but you don't, so unlike game.txt, you can edit the script while darwinia is open and just exit and return to the level over and over. You may find that the camera movements overshoot your intended destination, so, you may need to go to the editor and move the cameras towards the direction you move in from to negate this effect (I had to move view3 since it overshot the research slightly!)

Right, that's it, you're done, test your level and see if it all works and is actually any good!

Well, I found that my research wasn't put in as a secondary objective, so, that sucks, but I'm too lazy to fix it. If I *was* going to, I'd just put it in as a primary objective, or let the user decide it's secondary nature (players will invariably capture research, so it doesn't matter much)

The finished level!