New Map- Canyon3


(shadrach) #1

Greetings everyone,
After receiving some helpful feedback(thanks Phats, and thanks to members of the Chicken Bucket for their suggestions), I’ve made progress on Canyon2…actually, so much has changed that I had to go to Canyon3. That’s right y’all, it’s Canyon3 in full effect.

Get it at: http://home.austin.rr.com/shadrach/

As before, it’s probably better suited for larger servers, but I’ve playtested it 4v4 and it was good times. I’ve improved the routes, added objectives, added tug-of-war type spawning, improved the atmosphere ie added fog, etc. The fog helps cull polygons, gives a better sense of distance, and helps keep the action localized to a degree. Snipers will have a harder time of it.

screenshots:


There are 5 spawns total, 2 Allied, 2 Axis, with a central Forward Spawn. Players autospawn at their teams “Spawn 2”, forward from their base. All spawnpoints except for the bases themselves are capturable. This makes for much less distance-to-action when spawning, which killed gameplay on Canyon2. I was a scripting noob when I released it, but I’m starting to understand. Objective/spawn cameras are working now. All spawns including the central spawnflag show up on the command map. You can spawn at your base or at any spawn that your team owns from the command map if need be, or automatically respawn at the farthest-forward available spawnpoint. The ultimate objective for each team is to dynamite the other team’s vault in their base, steal the docs, and deliver them to the control room.

Most of the upper canyon is traversable now with new routes added and connectivity improved. I’m experimenting with teamdoors for the old “long” routes. The lower canyon has 2 new constructibles, dynamitable objectives in the form of a Dam on the Allied side and an Axis Gate. Destroying these opens a lower route to the enemy’s base.


The elevator in the central tower now moves three times as fast, for quick travel up/down from the central spawn/flag. The constructible bridges all offer cover now, railings have been added on most upper routes, travel times are better, and gameplay is faster and improved overall. This was my first released map and has been a labor of love now for almost 2 years, and I want to make sure that it’s as fun to play as it was to make. See what you think and let me know.
:drink:


(Northerner) #2

i got your map mirrored at RTCWFILES.COM
http://returntocastlewolfenstein.filefront.com/file/Canyon_3;65605

please include a complete README file with your map when you release it
thanks!


(get.lefty) #3

I just retested Canyon2 last night because I couldn’t remember why we didn’t put it on our server then as soon as it loaded I remembered - ungodly HUGE.

I’m very glad to hear that you’ve altered the routes to make it easier to get around.


(DC9) #4

Great map shadrach. I’ve run through it a couple of times. :drink:

One issue though, there isn’t a default winner. If the time runs out before one of the teams completes the objective, the map extends the time until someone finishes the objective. Market Garden was like this and we had to pull the map from our campain cycle. :bored: Is there any chance you could make changes to the script so that one of the teams was a default winner when the time limit is reached? :cool:


(nUllSkillZ) #5

Dual objective should have to be a draw if none of the teams win.
Very easy to achieve.

You MUST set a defaultwinner in the “game_manager/spawn-scriptblock” as usual.
Then add a the following scriptblock to your “game_manager”-scriptblock:


	trigger timelimit_hit
	{
		wm_setwinner -1
		wm_endround
	}


#6

Impressive map… One of the few I download from web, other maps I usually download when connecting a server :smiley:

BTW, if the map is a draw, what icon will be displayed on the big map between maps? Not very important, but I’m a bit curious.


(nUllSkillZ) #7

I think the grey button of not played maps.


(shadrach) #8

Thanks for the constructive comments. Agreed that there should be a draw if obj not completed when the timelimit is hit.
NUllSkillZ, here is my game_manager section:


game_manager
{
	spawn 
   	{
		remapshaderflush
		
		// Game rules
		wm_axis_respawntime	20
		wm_allied_respawntime	20
		wm_number_of_objectives	8
		wm_set_round_timelimit	30

		//new objectives	
		//1 Blow up Allied Vault	
		//2 CAP Allied Docs
		//3 Capture Allied Spawn 2
		//4 Hold Forward Spawn
		//5 Capture Axis Spawn 2
		//6 Blow up Axis Vault
		//7 CAP Axis Docs		
		//8 Build Command Post
		

		// Current main objectives for each team (0=Axis, 1=Allies)
		//wm_objective_status <objective> <team (0=Axis, 1=Allies)> <status (0=neutral 1=complete 2=failed)>
		wm_objective_status 1 0 0
		wm_objective_status 1 1 0
		wm_objective_status 2 0 0
		wm_objective_status 2 1 0
		wm_objective_status 3 0 0
		wm_objective_status 3 1 0
		wm_objective_status 4 0 0
		wm_objective_status 4 1 0
		wm_objective_status 5 0 0
		wm_objective_status 5 1 0
		wm_objective_status 6 0 0
		wm_objective_status 6 1 0
		wm_objective_status 7 0 0
		wm_objective_status 7 1 0
		wm_objective_status 8 0 0
		wm_objective_status 8 1 0


		//Accum values
		accum 0 set 2 //status of forward flag
		accum 1 set 0 //Overall Allied status
		accum 2 set 0 //Overall Axis status

		// Stopwatch mode defending team (0=Axis, 1=Allies)
		wm_set_defending_team	0

		// Winner on expiration of round timer (0=Axis, 1=Allies, -1=no winner at expiration)
		wm_setwinner	-1 //No winner when time runs out

		wait 2000

		//setautospawn	"Forward Spawn"	1 //Uses name from description field of team_WOLF_objective
		//setautospawn	"Forward Spawn"	0
		setautospawn	"Allied Spawn 2"	1
		setautospawn	"Axis Spawn 2"	0
		
		// start triggered loops on/off as required (eg: command post radio sounds)
		disablespeaker allies_compost_sound
		disablespeaker axis_compost_sound
		
   	}

//Objective Flags

	trigger alliedobjectivecounter  //Destruction of Allied objectives
           	 	{
                 		//Set accum to increase by 1 so we know that the objective has been completed
                 		accum 1 inc 1

                       	//Call function called checkgame in game_manager to check if the round has been won
                       	trigger game_manager alliedcheckgame
           		}

	trigger axisobjectivecounter  //Destruction of Axis objectives
           	 	{
                  	//Set accum to increase by 1 so we know that the objective has been completed
                       	accum 2 inc 1

                       	//Call function called checkgame in game_manager to check if the round has been won
                       	trigger game_manager axischeckgame
           		}

	trigger alliedcheckgame // checks to see if Allied win requirements have been met
            	{
                       	accum 1 abort_if_not_equal 2
                       	wm_setwinner 1
				wait 1500
                       	wm_endround
           		}

	trigger axischeckgame // checks to see if Axis win requirements have been met
            	{
                       	accum 2 abort_if_not_equal 2
                       	wm_setwinner 0
				wait 1500
                       	wm_endround
           		}

	trigger forwardflagblue
	{
		// Change the objective state internally, so UI can update, etc.
		// Allied takes control of forward flag

		wm_objective_status	4 1 1
		wm_objective_status	4 0 2

	}

	trigger forwardflagred
	{
		// Change the objective state internally, so UI can update, etc.
		// Axis takes control of forward flag

		wm_objective_status	4 1 2
		wm_objective_status	4 0 1

	}

	trigger axisspawnblue
	{
		// Change the objective state internally, so UI can update, etc.
		// Allied takes control of axis second spawn

		// Some kind of UI pop-up to alert players
		wm_announce	"Allies capture the Axis second spawn!"

		wm_objective_status	5 1 1
		wm_objective_status	5 0 2


	}

	trigger axisspawnred
	{
		// Change the objective state internally, so UI can update, etc.
		// Axis takes control of axis second spawn

		// Some kind of UI pop-up to alert players
		wm_announce	"Axis recapture the Axis second spawn!"

		wm_objective_status	5 0 1
		wm_objective_status	5 1 2


	}

	trigger alliedspawnblue
	{
		// Change the objective state internally, so UI can update, etc.
		// Allied takes control of allied second spawn

		// Some kind of UI pop-up to alert players
		wm_announce	"Allies recapture the Allied second spawn!"

		wm_objective_status	3 1 1
		wm_objective_status	3 0 2


	}

	trigger alliedspawnred
	{
		// Change the objective state internally, so UI can update, etc.
		// Axis takes control of allied second spawn

		// Some kind of UI pop-up to alert players
		wm_announce	"Axis capture the Allied second spawn!"

		wm_objective_status	3 0 1
		wm_objective_status	3 1 2


	}

} 

//End of Game_manager section

I have wm_setwinner set to -1, how do I set default winner? In axis/allied checkgame function?


(nUllSkillZ) #9

No, you MUST set a winner (0 or 1 doesn’t matter) at the start.
And add the scriptblock I posted to the game_manager-scriptblock.
Take a look:


game_manager
{
   spawn
      {
      remapshaderflush
      
      // Game rules
      wm_axis_respawntime   20
      wm_allied_respawntime   20
      wm_number_of_objectives   8
      wm_set_round_timelimit   30

      //new objectives   
      //1 Blow up Allied Vault   
      //2 CAP Allied Docs
      //3 Capture Allied Spawn 2
      //4 Hold Forward Spawn
      //5 Capture Axis Spawn 2
      //6 Blow up Axis Vault
      //7 CAP Axis Docs      
      //8 Build Command Post
      

      // Current main objectives for each team (0=Axis, 1=Allies)
      //wm_objective_status <objective> <team (0=Axis, 1=Allies)> <status (0=neutral 1=complete 2=failed)>
      wm_objective_status 1 0 0
      wm_objective_status 1 1 0
      wm_objective_status 2 0 0
      wm_objective_status 2 1 0
      wm_objective_status 3 0 0
      wm_objective_status 3 1 0
      wm_objective_status 4 0 0
      wm_objective_status 4 1 0
      wm_objective_status 5 0 0
      wm_objective_status 5 1 0
      wm_objective_status 6 0 0
      wm_objective_status 6 1 0
      wm_objective_status 7 0 0
      wm_objective_status 7 1 0
      wm_objective_status 8 0 0
      wm_objective_status 8 1 0


      //Accum values
      accum 0 set 2 //status of forward flag
      accum 1 set 0 //Overall Allied status
      accum 2 set 0 //Overall Axis status

      // Stopwatch mode defending team (0=Axis, 1=Allies)
      wm_set_defending_team   0

      // Winner on expiration of round timer (0=Axis, 1=Allies, -1=no winner at expiration)
      wm_setwinner   0 //HAS TO BE SET / DOESN'T MATTER IF 1 OR 0

      wait 2000

      //setautospawn   "Forward Spawn"   1 //Uses name from description field of team_WOLF_objective
      //setautospawn   "Forward Spawn"   0
      setautospawn   "Allied Spawn 2"   1
      setautospawn   "Axis Spawn 2"   0
      
      // start triggered loops on/off as required (eg: command post radio sounds)
      disablespeaker allies_compost_sound
      disablespeaker axis_compost_sound
      
      }

//Objective Flags

   trigger alliedobjectivecounter  //Destruction of Allied objectives
                  {
                       //Set accum to increase by 1 so we know that the objective has been completed
                       accum 1 inc 1

                          //Call function called checkgame in game_manager to check if the round has been won
                          trigger game_manager alliedcheckgame
                 }

   trigger axisobjectivecounter  //Destruction of Axis objectives
                  {
                     //Set accum to increase by 1 so we know that the objective has been completed
                          accum 2 inc 1

                          //Call function called checkgame in game_manager to check if the round has been won
                          trigger game_manager axischeckgame
                 }

   trigger alliedcheckgame // checks to see if Allied win requirements have been met
               {
                          accum 1 abort_if_not_equal 2
                          wm_setwinner 1
            wait 1500
                          wm_endround
                 }

   trigger axischeckgame // checks to see if Axis win requirements have been met
               {
                          accum 2 abort_if_not_equal 2
                          wm_setwinner 0
            wait 1500
                          wm_endround
                 }

   trigger forwardflagblue
   {
      // Change the objective state internally, so UI can update, etc.
      // Allied takes control of forward flag

      wm_objective_status   4 1 1
      wm_objective_status   4 0 2

   }

   trigger forwardflagred
   {
      // Change the objective state internally, so UI can update, etc.
      // Axis takes control of forward flag

      wm_objective_status   4 1 2
      wm_objective_status   4 0 1

   }

   trigger axisspawnblue
   {
      // Change the objective state internally, so UI can update, etc.
      // Allied takes control of axis second spawn

      // Some kind of UI pop-up to alert players
      wm_announce   "Allies capture the Axis second spawn!"

      wm_objective_status   5 1 1
      wm_objective_status   5 0 2


   }

   trigger axisspawnred
   {
      // Change the objective state internally, so UI can update, etc.
      // Axis takes control of axis second spawn

      // Some kind of UI pop-up to alert players
      wm_announce   "Axis recapture the Axis second spawn!"

      wm_objective_status   5 0 1
      wm_objective_status   5 1 2


   }

   trigger alliedspawnblue
   {
      // Change the objective state internally, so UI can update, etc.
      // Allied takes control of allied second spawn

      // Some kind of UI pop-up to alert players
      wm_announce   "Allies recapture the Allied second spawn!"

      wm_objective_status   3 1 1
      wm_objective_status   3 0 2


   }

   trigger alliedspawnred
   {
      // Change the objective state internally, so UI can update, etc.
      // Axis takes control of allied second spawn

      // Some kind of UI pop-up to alert players
      wm_announce   "Axis capture the Allied second spawn!"

      wm_objective_status   3 0 1
      wm_objective_status   3 1 2


   }

   // SETS THE GAME TO NO-WINNER = DRAW IF TIMELIMIT IS HIT
   trigger timelimit_hit
   {
      wm_setwinner -1
      wm_endround
   } 

}

//End of Game_manager section 

The trigger timelimit_hit is called by the game.


(shadrach) #10

Thanks for the prompt response :clap:
I’ll make the changes to the script and have an updated version on the site ASAP.


(shadrach) #11

Ok, I updated my website with the new version. When I tested it and the timelimit was hit, the map ends as it should. It’s important to remove the old version before placing this one into ET/main. Sorry for any confusion this may have caused, but all should be copasetic now.

Here’s the new version:http://home.austin.rr.com/shadrach/canyon3.pk3
Happy 4th!
:beer:


(DC9) #12

Thanks for the quick turn around. I have tested the change and it works like a charm. I passed the link on to the my server admins for testing.


(Juno_Who) #13

We would like a version that is a true dual objective. We would rather play for 5 hours on one map than tie. Ties are for ETPro/campaign/wussies who care more about k/r than fun :stuck_out_tongue:

All maps need a winner and a loser, it is what makes us compete in anything but especially in on-line gaming. We have had maps last up to 6 hours long with 50+ players and they are some of my fondest ET memories. Big maps like Canyon3 and Market Garden need large servers and players willing to go the distance not wussies who would rather move to the next map because they get bored …(ADD?).

So would you please make a non-pussy version for servers like Whosgaming. As it stands now you have 2 versions out with the same name.

Great map btw, we get a lot of compliments on it.


(=PoW= Kernel 2.6.5) #14

Juno has some good points there.

Perhaps set a default winner and then have a script file for ETPro that adjusts for a draw.
Or maybe a start-up variable like that Dam map uses.
Just a suggestion.

BTW - We are playing Canyon 3 at =PoW= Extreme also (69.31.6.151).


(shadrach) #15

Ok. I have some 'splainin to do…
Personally I like maps that don’t end until one side wins. Juno, I play on your server all the time and I also have had great times on maps that have lasted over 2 hrs(hydro dam, anyone?) :stuck_out_tongue:
The thing is, I spent way too much time on this thing to let it fall by the wayside just cause some peeps don’t like to go the distance as you say. And I can’t assume that just coz I think it’s good, everyone else will as well. I have to go with what the players want and the only real feedback I get is thru this thread.
I have to say though, I envisioned this thing on Whosgaming from the get-go as it’s mad hectic :smiley:
So…I’m thinking I’ll keep Canyon3 as the timed version, since I’ve made that change already, and re-release the original under a different name. The Classic Coke example…
Unless someone can point me in the right direction as far as a start-up variable like =PoW= Kernel suggests.


(nUllSkillZ) #16

There could be two versions:
The one that ends when timelimit is hit.
And another one that runs as long until one side finishes it’s objective.
You could probably publish only the script of the second version (in pk3).
And the server admins could install in addition only the script of the second version.
So you won’t have a big additional download.


(DC9) #17

Rather than having multiple versions or additional files specific to certain mods, maybe add a .txt file in the pk3 with a hint to the script change to switch the map from a default draw on timelimit to a no-draw ending. Your script is already well commented so switching from one style to the other is relatively easy.


#18

I don’t like your idea. Why? 'cause players would have to download the map every time they connected a server with a different version of the script. And what’s the best way to prevent that from happening? That’s right, to put the script file in its own pk3. Or possibly I misunderstood your idea :nag:


(kamikazee) #19

nUllSkillZ has given the right solution: put 1 version of the script in the pk3 which you consider default gamepley.
The other script is then packaged as a plain script together with the pk3 and a readme.txt.

When you then need to use the alternative script, place it in the ETPro mapscripts directory. Clients will download the regular pk3, but the server will use the alternative script.


(Dirt Dobber) #20

Great board! Thanks to Whosgaming.com for hosting it. Look forward to your next one…