Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Young Cyberdemon

Advanced Levels (Jumpmaze)

Recommended Posts

Imagine I have a basic knowledge of DB2 and have played maps with complex features. Ple..Well, I do have a basic knowledge of DB2 and have played maps with complex features. Anyway, these features include:

Evergoing textures (Eg - Water stretching to the horizon)
Deep Water
Wind (Pushing forwards, sideways, backwards, down, up, anything!)
Moving floors (Conveyor belts etc)
Death on contact of ground (Falling down and either just dying or making a bloody mess when hits ground, not just teleporting into yourself).
Trains (Like MAP04 on Jumpmaze or ZE04 on zombie horde, a train like scenario where everything moves backwards and you stay put on the train but move backwards on the ground).
Have features only on jumpmaze (Like 1st place (Name) (Time) and things like record time and a timer).
Have powerups like high jump.
Format my level into a jumpmaze wad (So others can play).
Very complex looking things like doors that need to be opened with numerous switches in various locations or switches that lower a block, then it raises again and becomes a teleport.
Have any other extras that I haven't already mentioned?

I've wanted to make a jumpmaze level for ages, but they have features far beyond vanilla doom, maybe it's time for my triple-chocolate mint chunk doom!!
Oh, and thanks. Any links to tutorials or pre-made levels with explanations/help would also be greatly appreciated.

Share this post


Link to post

The best way to learn how to use advanced features is to open the maps in Doom Builder and study them. Refer to the ZDoom Wiki for an in-depth explanation of any unknown features.

Share this post


Link to post

None of the above. From the features you want to include I'd recommend using ZDoom (Doom in Hexen format) or Skulltag (Doom in Hexen format) if you want to include Skulltag-specific items.

Share this post


Link to post
Creaphis said:

None of the above. From the features you want to include I'd recommend using ZDoom (Doom in Hexen format) or Skulltag (Doom in Hexen format) if you want to include Skulltag-specific items.


Having asked myself the same question as Young Cyberdemon, I have to mention that a lot of the Skulltag items can be found in Realm667, and therefore can be used in a Zdoom Hexen format maps too. Only the Skulltag's runes can't be found in there, but they are designed to be used with multiplayer maps where you respawn anyway.

The Skulltag items shouldn't be the only reason to use Skulltag format.

Share this post


Link to post

How about these, I still want to know how to do.

Make text appear when I reach somewhere
Make something appear/disappear when I reach somewhere
Make the music change when I do something

Share this post


Link to post
Young Cyberdemon said:

How about these, I still want to know how to do.

Make text appear when I reach somewhere
Make something appear/disappear when I reach somewhere
Make the music change when I do something


In Zdoom Hexen format you can make these effects happen using ACS scripting. In zdoom wiki (link) there are lots of different commands to create various effects. I recommend making a testing wad, a simple room where you can practise coding freely. Learning ACS is all about practise as well as trial and error, so be patient. I have started studying scripting some time ago.

Also, very good tutorials concerning special effects in zdoom hexen format maps can be found in the Zdoom home page.

Share this post


Link to post

Ummmmm... all that is still very confusing, do I just put all that text somewhere? If so, where? And this will work for Skulltag (Doom in Hexen format) Even though all these links push me to ZDoom sites?
Please, if you can, explain it to me in long but simple chunks, the complexity of this I cannot grasp as well as you it seems and it is frustrating.

Share this post


Link to post

Hexen, and consequently ZDoom support a scripting language called ACS. This scripting language can be used in any game (Doom, Heretic, Hexen obviously, etc) as long as the wad is intended for use in a ZDoom-based source port. Note that Hexen ACS and ZDoom ACS are actually a bit different.
When you write a script, it has to be compiled into a binary lump called BEHAVIOR, which is treated as one of the map lumps similar to LINEDEFS, SECTORS, NODES, REJECT, etc, which you can see when you open your wad with a tool like XWE. Hexen-format maps will always have a BEHAVIOR lump. DB2 will automatically handle all the dirty work for you. You just open the script editor in DB2, write your scripts, and compile it. It will be saved to the WAD file for the current map.

Learning ACS is much like learning a programming language, so if you have any experience with C, it will greatly help you as the syntax is quite similar.

Basically scripts are composed in blocks like this:

Script 1 OPEN
{
  // This is a comment.
  // This script is activated when the map loads...
  
  Delay(35 * 10);  // Wait for 10 seconds.
  
  // Open a door with tag 15 at a speed of 64.
  Door_Open(15, 64, 0);
}
If I compile that script to a map, and assuming I have a door tagged with tag 15, when I start the game on that map, that door will open after 10 seconds. There are different types of scripts; the above is an OPEN type script, which is triggered when the map starts.

Note that each "command" in the script above is an Action Special or an ACS function. You can of course create variables, control structures, and perform calculations and stuff like C can.

There are many other script types like that, but the real flexibility comes when you have a switch or walkover linedef in your map trigger a script, which you can supply parameters with.
Script 2 (int Tag)
{
  // Open a door with tag "Tag".
  
  Door_Open(Tag, 64, 0);

  // Display a message to the player for the lulz.
  Print(s:"You opened door ", d:Tag, s:"!!!1");
}
To call this script, you would make a linedef in your map have the type ACS_Execute (which its number is 80). You will see that when you choose this line action, it has five linedef "argument fields", like the script to execute (2 in the above case), which map, and the three script parameters (only the first one is used in the above script).
So my line setup in the map like look:



The flexibility of the above scripts allows me to change the arguments from within the map, without having to touch the script. So I could change the script to affect not doors tagged with 15, but any other door.

Of course you don't have to use script arguments at all:
Script 2 (void)
{
  // Open door with tag 15 close door with tag 16.
  
  Door_Open(15, 64, 0);
  Door_Close(16, 64, 0);
  Print(s:"Some doors opened and closed!");
}
ACS takes time to learn. But once you understand the basics, you can do practically anything by looking up stuff on the ZDoom Wiki.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×