Creeper World 3: Arc Eternal

Creeper World 3: Arc Eternal

32 ratings
How to make maps for all to enjoy
By pawel_stopa
Here I will explain how to make a map in the editor, add some custom images an write some simple CPRL scripts to make the enemies on your map more interesting.
   
Award
Favorite
Favorited
Unfavorite
How to create a new map


First enter the Projects section. Then think of a name for your project. Then choose the size of the map. The basic size is quite good for a map. As a beginner try keeping the size of your maps between 80x80 to 120x120, as smaller can be quite hard to make balanced as all is packed very close together and larger ones often turn into a slog after a while.

When you create the project, you automatically enter the map. It seems like normal gameplay, the only difference is that there is an Edit Map button just above the Menu Button. When you press it you will be able to modify the map. There are two tabs, the terrain and the unit's tab.



Terrain tab

From here we can edit the terrain add digitals, void or walls, as well as save the map, finalize it and change the terrain textures.
Changing the terrain textures is something you should do immediately. In the bottom left part of the menu there are the following buttons:
- Map Textures
- Set Theme
- (Proc 1) <- this is the theme chosen for the map. Themes are predefined sets of textures. By clicking it you can expand and see other themes and then set the theme using the set theme button. My favorite is the Proc 2 theme, but that's just personal preference.
The Map Textures button allows you to set textures manually for each terrain level. From here you can also upload your own images for terrain. The images need to be 256x256 PNG images. You can find some textures on the wiki.[knucklecracker.com]



Next we can start painting the terrain. Here I will make an space island sort of map as that is my favorite. You can start by painting the entire map to level 4. This allows to have more freedom to change the terrain both up and down, as well as allow the player to teraform later.

You can choose one of the two brushes, generally the round one is better to draw terrain as it draws a smoother terrain.
Terrain, Enemies and Allies
When making terrain you need to think of the enemies that you will place on the map. Sometimes it can be easier to place the enemies first, sometimes you want your map to look in a certain way so you will draw the terrain first and place the enemies later.

Here I placed some enemies on the map and will draw the terrain around them next. The intention is for the player to start in the lower left corner of the map.

Next I draw some lines to separate the islands I intend to have.






And proceed to increase the void so that only islands remain. I use the round brush of size 6 which allows for fast and easy drawing of smooth surfaces.

I don't want the initial island to be connected by relays to any of the other islands so I check the distance.

Now time to add some elevation to our islands. The first island(lower-left) is supposed to be the initial landing space so let's add some elevation for the player to land.

Next it's time to add something for the player. Remember to always add some totems and ore deposits to your map, unless the map specific mechanic requires them to be absent. A map without upgrades and AC severally limits the players abilities and makes everything much slower and boring.


I also added some small fractured land since the void seemed too empty. Be careful not to allow the player to have enough space to bridge the islands you don't want them to bridge. I also hid a small landing spot for a guppy just outside the AA zone so that one can try and rush the spore tower on the lower right island.


Now time to edit the enemies. First we just placed some on the map to act as placeholders so that we know what to do with the terrain. Now time to change their behavior. When on the units tab you can double click a unit to edit it's properties.

Let's change the amount emitted by the emitter on the middle island to 40, and change the amount of spores for the spore towers to 3 and 2.


Also let's add some digitalis so that out runner nest has a purpose and so the lower right island gets some creeper on it. You can add digitalis growth area through the terrain tab by choosing the digi+ option.

The Mighty CRPL
Now it's time for some CRPL. What is CRPL? It's the scripting laungage for Creeper World 3 allowing you to make anything form it. All the scripting form story missions, as well as the Credits mission is done in CRPL and you can make the same if you want to. There are some tutorials on the wiki[knucklecracker.com], along with the crpl reference[knucklecracker.com] which is very usefull.

Here I will show how to make a very basic script that can add a lot to the gameplay. We will make the emiiters on the top-right island increase their output with the number of units player has.



Here we have the Scripts button. Click it and make a new script named Emitter.crpl


And then press edit to open it in any text editor. Regular notepad will do(notepad++ is preferable).

Here is the program we want. The lines that begin with # are comentaries.


# Emitter.crpl
#-----------------------------------
#Like this we can declare some variables that can be modified without touching the script.
$Delay:15


#this part is so that we will see the mouse over text on our custom emitter like on the normal one

"Amt: " <-Amt concat "
" concat
"Interval: " <-Delay 30.00 div 2 Round concat concat SetPopuptext

#Let's calculate the number of units the player has
#The function will take the coordinates for the center of the circle and the radius.
#We want the whole map so we set the radius larger then the map.

CurrentCoords 9999 GetUnitsInRange ->Amt

#this function gives us the number of unit's and UID's of all the units in range, but the number is first and that's all we need here.

#Hre we add the creeper to the coordinates of the tower. We use the SetCreeperNoLower function as that is the
#basic emitter behaviour, it increases the creeper above it to a certain value and doesn't lower the amount if it's above.
#The fuction takes 3 variables x , y , amount. In CRPL we need to place them on the stack and our function will pop them form the stack.


CurrentCoords <-Amt SetCreeperNoLower
CurrentCoords 1 SetDigitalis

#We also need to set Digitalis on theese coordinates as these emitters should spawn digitals.
#1 means make digitalis, 0 means no digitalis.
#Next we make the script wait for a set number of frames. There are 30 frames per second of the game.

<-Delay Delay

Now save your file. All scripts need to be in your Creeper World 3 folder, and in the sub floder for your projects in the scripts folder. Documents\creeperworld3\WorldEditor\The Guide Map\scripts

Now back to the Creeper World 3 editor. On the scrpts screen we have a big compite all button. Press it to compile your script so that you can use it. Now close the window. Destroy the two emitters on the top-right island and the PZ left behind. Replace them with the CORE unit.



Now double click on the CRPL Core unit. And Add the Emitter.crpl script to it by choosing the script and pressing Add button.




Here we can also change the Delay value if we want. To change it wite a diffrent value and press Apply Values and Recompile.



Now change the picture to an emitter picture to disguise the CRPL cores.



And all done :D

Finalize and Upload
Now finish the map adding and modifing whatever you want. I will add some terrain to other islands.


This is how my map looks like finished. Now it's time to finalize it. All playtesting is better done on a finalized map as any changes done when playing in the editor will remain. After finalizing the map you will find it in your projects screen patiently waiting for a score to be posted. The rule for CW maps is that there needs to be a score to upload the map to prove it's beatable. Beat your map and submit your score to upload the map to CS.

If you have any questions write them in the comments. I will try to improve the guide in time.
Note that the map made here is rather simple and straightforward, but it shows some possibilities.

21 Comments
Cube 31 May, 2021 @ 11:40pm 
can i give a hug to the effort
Chaosvolt 1 Oct, 2020 @ 1:43pm 
Very interesting. I was wondering how one could recreate a glider spawner, but I'm guessing that'd need a CRPL script to make a core generate them, be nullfiable, etc.
pawel_stopa  [author] 12 Feb, 2018 @ 9:10am 
Yes with CRPL commands you can add any amount of creeper/AC to any cell.
upbeat5.dd 10 Feb, 2018 @ 4:21am 
is there a way of placing creeper down directly?
Loingelf 7 Jan, 2018 @ 8:24am 
- copypasted from knucklecracker's website under the "concat" command help:

# Merges "abc" and "xyz" into a single new string "abcxyz"
"abc" "xyz" concat trace

- Can someone explain to me why this only displays the popuptext "interval: 10":

currentcoords "Amnt: 1000" setpopuptext
currentcoords "Interval: 10" setpopuptext
"Amnt: 1000" "Interval: 10" concat trace

- and why the copy-pasted string shows up as "amt 0 interval 0"

"Amt: " <-Amt concat "
" concat
"Interval: " <-Delay 30.00 div 2 Round concat concat SetPopuptext

- and when I add the numbers to the string, it always adds a tens place

"Amt: 100 " <-Amt concat "
" concat
"Interval: 10 " <-Delay 30.00 div 2 Round concat concat SetPopuptext
pawel_stopa  [author] 7 Oct, 2017 @ 8:55am 
delay is in calculation frames and the game calculates 30 frames per second :D
Marcusaralius76 7 Oct, 2017 @ 5:55am 
How many "Initial Delay" units are in one second/minute?
Kolibria 14 Mar, 2017 @ 12:50pm 
What does wind do? does it just direct creeper?
Kefka 31 Jan, 2017 @ 5:49pm 
I tried that, but couldn't find maps within the cw3 files
pawel_stopa  [author] 31 Jan, 2017 @ 8:09am 
I'm not sure if you can edit it form the game, best bet would be changing the name of the file on the disk. It should be somwhere in the Documents folder.