1. Are you planning to upload your awesome map to Hive? Please review the rules here.
    Dismiss Notice
  2. Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.
    Dismiss Notice
  3. DID YOU KNOW - That you can unlock new rank icons by posting on the forums or winning contests? Click here to customize your rank or read our User Rank Policy to see a list of ranks that you can unlock. Have you won a contest and still haven't received your rank award? Then please contact the administration.
    Dismiss Notice
  4. Rubbed the right way, the genie is out of its lamp! The 12th Concept Art Contest Results have been announced.
    Dismiss Notice
  5. The Lich King has a new champion. The results for the 19th Icon Contest are here!
    Dismiss Notice
  6. Race against the odds and Reforge, Don't Refund. The 14th Techtree Contest has begun!
    Dismiss Notice
  7. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

Ice Escape Template v2.5

Submitted by IcemanBo
This bundle is marked as approved. It works and satisfies the submission rules.
Ice Escape Template
( Discord )

Introduction

Ice Escape is a minigame, based on sliding. You're playing with your team together and try to pass all stages. There can be plenty of obstackles that you
have to avoid, while staying on your path without touching the snow. It's a very team-based game, because for example once you die, only your mates can revive you.

While the difficutly in other sliding maps usually lies on mass of patroling units, ice escape tries to base its difficulty in the ways of tricky terraining.
It's often required to click very accurately or even to abuse the car's turnrate to pass certain parts.

The key point for creating Ice Escape Template was to have a map with some standard behaviour, like on all the different terrain types, for example.
Also interactions with the environment, like behaviour on snow, should be familar, or the car's turn rate. It's good if such things don't always depend on the map you're currently playing.

Features
  • 9 terrain types with different behaviour (see later)
  • Several commands, like -share, -next, -flags, -names on/off, ...
  • Dynamic car changes possible via the CarSettings ability

  • Anti block/click system
  • Hiding nearby mates with transparency for better sliding
  • Ready to use features like: Catas, splashes, boosts, checkpoints
  • A core system in background, cleaning units, providing possibility to customize specific levels via events for start/end

  • Showing metadata on each unit's UI like: deaths, saves, click amount, average click distance, finished levels
  • Automatically save/load for player score, last used car, ...
  • Player score can unlock special trophies like new car models
  • Support for Ice Ranks
Guide

Here's a little guide to get into the template.


  • [​IMG]

    In the map exists a "Map Settings" folder. It contains all configurable triggers you need.
    You can define there the welcome message, different speeds, might add new cars, activate/deactivate certain features and some more.

    The most important settings trigger is "Levels Defintion" where you register your levels to the system. Let's have a look at this:
    Levels Defintion
    • Levels Definition
      • Events
        • Map initialization
      • Conditions
      • Actions
        • -------- ------ --------
        • -------- Level 1 --------
        • -------- ------ --------
        • Set Finish[Level_Amount] = Finish (medium) 0000 <gen>
        • Set Spawn_Int[Level_Amount] = (Center of 1 Spawn <gen>)
        • Set Level[Level_Amount] = 1 Level <gen>
        • Set Level_Amount = (Level_Amount + 1)
        • -------- ------ --------
        • -------- Level 2 --------
        • -------- ------ --------
        • Set Finish[Level_Amount] = Finish (medium) 0013 <gen>
        • Set Spawn_Int[Level_Amount] = (Center of 2 Spawn <gen>)
        • Set Level[Level_Amount] = 2 Level <gen>
        • Set Level_Amount = (Level_Amount + 1)

    The code above registers 2 levels. So you always need 3 lines of code to register a level:

    1. Define the Finish (unit)
    2. Define the Spawn (location)
    3. Define the Level region (region)

  • [​IMG]

    The terrain type define your sliding behaviour. So the speed and the turn:

    [​IMG]

    1. Normal Ice
      • Sliding Speed: normal
      • Turning: normal

    2. Mirror Ice
      • Sliding Speed: normal
      • Turning: opposite

    3. Dark Ice
      • Sliding Speed: normal
      • Turning: no-turning

    4. Close-Click Normal
      • Sliding Speed: normal
      • Turning: normal
      • Special: clicks needs to be done near the car to be accepted

    5. Mimic Ice
      • Sliding Speed: mimic
      • Turning: mimic
      • Special: mimic
      Mimic means it uses all behaviour from the last ice terrain you were before. It has no own sliding behaviour.

    6. Close-Click Mirror
      • Sliding Speed: normal
      • Turning: opposite
      • Special: clicks needs to be done near the car to be accepted

    7. Speed Ice Normal
      • Sliding Speed: fast
      • Turning: normal

    8. Speed Ice Mirror
      • Sliding Speed: fast
      • Turning: opposite

    9. Snow
      Snow kills you, but not instantly. You have a tolerance of 3 ticks to slide on snow before dying. So max time is 0.03*3 seconds.
      During the time on snow the car behaves like on Mimic Ice, so it uses same sliding behaviour as before.
      The snow check kills not instantly to allow passing snow cuts, like in the example below:

      [​IMG]

    Terrain types that are not listed above are no sliding terrain. It means it's normally walkable and no special behaviour is there defined.

  • [​IMG]

    You may want to catch the point when one certain level starts to create patrols or other features.
    You may also want to catch the point when one level ends to make some extra cleaning up of data.

    To get this work, have a look at following events:

    • Events
      • Game - Start_Level_Event becomes Equal to 1.00

    • Events
      • Game - Finish_Level_Event becomes Equal to 1.00

    The first event runs when Level 1 starts, and the second event runs when Level 1 was finished.
    The events are of course also useable for all other levels. If you change an event value for example to "2.00" or "3.00", it would apply for level 2, or level 3 respectively.

    Note:

    The template system automatically cleans the level from enemy units after it's finished, but you can clean up other custom data, or turn off triggers etc at the end of one level.

    Warning:

    If you don't create units in the Start_Level_Event, but at some later time during a level already runs, then you need to run the "Registrate Level Unit" trigger for each newly created unit.
    The system will make the new enemy unit unclickable, register its kill range and will also clean it up automatically when the level ended. So simply register a new unit like this:

    • Set Unit = (Last Created Unit)
    • Trigger - Run "Registrate Level Unit" Without Checking Conditions


  • [​IMG]

    There are some features ready to use in the levels.
    • Catapults
    • Killing Units
    • Teleport
    • Checkpoint
    • Spiders
    • Splashes
    • Boosts
    • Ice Priests
    • Key & Gate

    To get to know how to use any of these have a look at the folder "Feature Examples".

    The "Unit kills in range" is a bit special, but actually easy. When you add enemy units on map, or create them via triggers, just always ensure you create them for Player 24.
    The template system registers all units by player 24 as enemy. In the object editor you easily can define the killing range for a unit by defining its HP.
    For example if a troll has 85 HP, it means that a slider will die when he comes in range of 85 of that troll.

  • [​IMG]

    New Hero:
    1. Go to "Units -> Custom Units -> Human -> Melee -> Heroes". Copy and paste an existing hero and change its model, name etc.
    2. Go to "Abilities -> Custom Abilities -> Night Elf -> Units". Copy and paste an existing transformation, and change its alternate form to your newly created hero.
    3. Go to Trigger Editor "Map Settings -> Car Abilities". Add your new ability to the list, following the given pattern.

    New Enemy
    :
    1. Go to "Units -> Custom Units -> Undead -> Melee -> Units". Copy and paste an existing unit, changing the things you need and the HP. With defining a unit's HP you automatically also define its killing range.

  • [​IMG]

    Finishing 1 level counts as 1 score. The game will automatically write the score for each player on his computer and will also load this score automatically in the next game session.
    Score system can be used to make certain rank achievements, like the for example the benefit of using hidden cars.

    With each score point the player's hero will gain +1 Mana, so you can use for example an ability's mana costs to easily limit it for certain ranks.
    You also could use the score for any other of your customizations if you want, with simply reading the "PlayerScore_Current" variable. "PlayerScore_Current[1]" for example is the score for Player 1.

  • [​IMG]

    Admins are meant to be users with an advanced permission. You can define admins in the "Admins" trigger.
    Later if you add new commands you want to be accesable only be the admins you can check if a player is in the PlayerGroup "AdminGroup".

    The template uses this for commands to better test the levels.


Notes
Credits:
Thank you for your work.

Major credits firstly goes to swpmoele for the original Ice Escape series and to many of the players from iCCup who had some big influence on the road of modern ice escape.

Models:
  • AnimateDeadTarget by JetFangInferno
  • Frozen Orb by Daelin
  • GoblinCar, PandaCar, Key by Mc !
  • Orb of Ice by Frankster
  • SnowPine by Gottfrei
  • Gnome Teleporter by LordRazor
  • AcolyteCar, DeathKnightCar, FarseerCar, TaurenCar by Clan KMNOK
Icon:
  • BTNChronoHD by KelThuzad
Skins:
  • Ice UI by CRAZYRUSSIAN (widescreen support by Phoenix)
  • Natural Winter Ice by Tamplier777
Code:
  • FileIO, PlayerUtils, PreventSave by TriggerHappy
  • SaveCode by PipeDream
  • Multiboard by Nestharus
  • Custom Stats by Tasyen
  • Table by Bribe
  • CheckWalkability by PurgeandFire

Changelog
v2.5
  • New default features
    • Ice Priest
    • Key & Gate
  • Improved default feature
    • Checkpoint
    • Boost
  • Ice Ranks are natively supported to be loaded and are displayed on multiboard
  • Fixed bug at map start which could lead to false CarIndex load
  • Fixed bug with hero selection
  • Several changes or improvements in object editor.
v2.4
  • Fixedt revive bug at trigger "Systems -> Death/Save -> Revive".
v2.3
  • New command to enable/disable autorevive
  • Coin hotkey fixed for non-english locales
  • "Stop" added to unit's command card
v2.2
  • Save & Load for last played car
  • Fixed some credits
Until v2.1 The changelos is inside the map.


Try out a demo map here.
Contents

Ice Escape Template v2.5 (Map)

Reviews
Moderator
[img][c]Orcnet[c]21:31, 19th Nov 2013700 [img] Ice Escape Template (Tested Version 1.0) Rate[c]Score[c]Percent[c]Letter [r][img][img][img][img][img][c]5/5[c]91-100[c]A Rate[c]Score[c]Percent[c]Letter...
  1. IcemanBo

    IcemanBo

    Joined:
    Sep 6, 2013
    Messages:
    6,258
    Resources:
    22
    Maps:
    3
    Spells:
    11
    Template:
    1
    Tutorials:
    4
    JASS:
    3
    Resources:
    22
    I have a bit laptop problems with reforged, and currently not really active in developing, but thanks!

    Snow from this map? Escape Dream World v1.3 It looks nice, will definitely try it out and share it to slide community, thanks for info.

    For save/load, yes sure, use what you want. :D Though I never built up some good interface or so, so it currently more just works, than is nicely written. Don't hate me if it's bad. ^^

    For mimic ice, Spider Traps is for me the most known ice map which uses it. There are some more, but just in development. You can find Spider Traps in the map database here: https://iceescape.synology.me/maps
    Personally I also don't see too much use in mimic ice, but some players enjoy it, so it's just there. : )

    Sorry for the algorithm I'm not very sure I correctly understand. The "correct" behaviour with when one should die in ice escape is very werid to describe imo, and not very clear. Maybe it's good if I say expectations for death from my side.
    • passing diagonals should work /and not luck based), even you shortly touch snow
    • passing even 1 normal snow line/wall should not work with normal speed
    • passing 1 normal snow line/wall could work with very fast speed ( a bit luck needed )
    it's somehow not very clear if to allow passing snow is sometimes good or a not. Some maps rely on it very much by design, like Ice4 ava. (boost + ava bug in case you know it) Some players say it's just a hack and don't like it. I don't know myself honestly, what is best behaviour, or if there is one best. But I also have thought already couple of times to change death condition, ... but it would be something more people would decide, but thanks for bringing it up. :)

    Could you elaborate:
    I'm not very sure about the critique, or the solution with different layers.

    Haha! :D I will definitely write here again if something changed in this regard. :) But I'm also very happy with the 4, I think it's totally good for this. ... I blame myself now a bit to stick so much with GUI honestly, it became a mess at parts ( sliding algorithm e.g.) ... but some mappers are less scared of touching or looking at some GUI things when they need to modify something, and then there came this compromise. :D

    Thanks!
     
  2. Serenity09

    Serenity09

    Joined:
    Mar 7, 2011
    Messages:
    99
    Resources:
    1
    Maps:
    1
    Resources:
    1
    this is so cool, i never knew this database existed. ive just been enjoying trying out maps the last hour

    yeah, though youd attach the effect to a different tile if you were interested. id love to know what you think!

    and sweet, thanks

    your algorithm for death detection does everything you say it does. let me try to explain what i dont like from a different angle. by checking terrain kill in 3 consecutive timesteps you are adding some temporary cushion to the death check. this cushion is extremely effective in allowing quick diagonals, such as when youre cutting a 90 degree turn or passing over the 32x32 triangle of ghost terrain thats visually there but not actually what GetTerrainType returns, but the temporary buffer struggles with sustained diagonals, or even creating a margin of safety that the player can rely on. its also extremely hard to anticipate, because of the 32x32 ghost terrain triangle. it also struggles when the number of timesteps, set at 3, is no longer appropriate with the speed the unit is travelling, fast or slow

    one option i didn't consider till now is if it would be an improvement to change the number of death terrain ticks depending on the units current speed

    my recommendation is to change your death detection strategy is to better compensate for a sustained buffer, and to better fit the player's expectations when it comes to the perceived ghost terrain triangle. its hard to explain why the difference might be worth it, but you can see what i mean in my map and decide what you think

    yeah definitely. because the terrain effect is transitioned based on the terrain youre currently on, the ice escape maker needs to utilize it in be blocky shapes. things like
    [​IMG]
    dont work ideally, because theres a good chance youll switch between terrain effects multiple times while moving over it, because of the ghost terrain triangle, but the player wont necessarily be expecting this (they also shouldnt need to expect this). the approach i took to improving this is by ranking each terrain tile with a priority and then scanning the area around the player for the terrain with the highest priority. the ice escape maker can utilize overlapping tiles with much greater flexibility and the player will have a smoother experience thats more in line with what they're perceiving visually

    this approach is what lets me do things like this in my map
    [​IMG]

    i thought it was brilliant to write the main pieces in GUI. 90% of maze makers want to make mazes, not triggers