Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

Mapping Essentials - boost up your map development!

Discussion in 'General Mapping Tutorials' started by Kazeon, Jul 6, 2015.

?

Most popular systems & snippets by vote

  1. 1. [Snippet] NewTable

    6 vote(s)
    60.0%
  2. 2. [System] ArrowKeyEvent

    0 vote(s)
    0.0%
  3. 3. [System] Track

    1 vote(s)
    10.0%
  4. 4. Item Cleanup

    3 vote(s)
    30.0%
  5. 5. [System] Missile

    2 vote(s)
    20.0%
  6. 6. UnitIndexer

    9 vote(s)
    90.0%
  7. 7. TimerUtils

    4 vote(s)
    40.0%
Multiple votes are allowed.
  1. Kazeon

    Kazeon

    Joined:
    Oct 12, 2011
    Messages:
    3,296
    Resources:
    38
    Icons:
    2
    Tools:
    1
    Maps:
    7
    Spells:
    21
    Tutorials:
    3
    JASS:
    4
    Resources:
    38
    I. Intro
    Hi, I'm Kazeon. Welcome to the thread. Just a brief resumé, I (in the modding scene) am a big enthusiast of total-conversion maps. I'm also experienced in developing some big total-conversion map projects such as Garden's Tale, Glideon, Coconut Party, and lastly EmberCraft.

    This thread is a one-stop solution for you to significantly improve your map development environment. It is perfect for ambitious mapper who seek to work on big map projects. It contains a lot of mapping-related advice, tips and tricks, code snippet & custom system recommendations, and more. It will guide you to develop high quality and highly attractive map, back from ground up to be a fully developed map, that at very least will receive instant approval here in Hive.
    A. Mapping Advice
    Custom map preview
    Custom loading screen
    Keep track of credit list
    Make a to-do list
    Build and grow the community
    Get rid of corrupted (green) icons
    Don't be too perfectionist
    Warcraft Shell Extension
    Stop over-sharing
    Learn color tags
    Elaborate tooltips, don't use sharp color
    Map presentation and thumbnail
    Elaborate tooltips, don't use sharp color
    Learn vJass/Wurst

    Glossary

    Index
    Content
    >>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<

    1. Use hashtable easily: [Snippet] NewTable
    Recommendation level: High
    Usage difficulty: Easy
    Implementation difficulty: Easy
    Advantages:
    • Hashtable limit is removed
    NewTable (by Bribe) is by far one of our best code resource so far. It's very widely used among both spell makers and map makers. Let's say it's a must have resource in every map. Why? Almost every map needs hashtable. Where as hashtable is very limited (only 255 hashtable per map). Using NewTable the limit does no longer exist. Other than that, NewTable provides nice interface:
    call SaveInteger(ht, parent, child, 123)

    =>
    set parent.integer[child] = 123

    It's very easy to use even for who don't know anything about vJass. It also let you do some 2D variable stuffs (you can read the further details in the link provided above).​



    >>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<

    2. Handle keyboard events easily: [System] ArrowKeyEvent
    Recommendation level: Low
    Usage difficulty: Medium
    Implementation difficulty: Easy
    Advantages:
    • Arrow state checking (IsArrowKeyPressed)​
    If only your map needs arrow key events for something (control, camera adjustments, or anything else), this system will ease your life as well as providing useful extra feature like what's mentioned above.​



    >>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<

    3. Handle trackable easily: [System] Track
    Recommendation level: Low
    Usage difficulty: Hard
    Implementation difficulty: Easy
    Advantages:
    • Getting the trackable clicker​
    What's trackable? It's not going to be discussed here but to get basic idea what it is, trackables are widely used in Full Screen Inventory systems (like what TKoK has) cz it provides quite instant click event and useful hover event.

    The recommendation level is low simply because I rarely see maps use trackables. Usage difficulty is hard because you need basic knowledge about trackable, and since I rarely saw people are actually experienced about trackable. But once you understand what trackable is and how to use it, this system will be absolutely helpful. It also provides a great feature to get the triggering player of the click/hover event, which normal events do not provide.​



    >>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<

    4. Keep your map clean from tome items: Item Cleanup
    Recommendation level: Medium
    Usage difficulty: Easy
    Implementation difficulty: Easy
    Advantages:
    • -​
    It's very rarely known by map makers that tome items never get removed from the map after being used (acquired) and eventually may causes lags. Thus this system was made by Bribe to settle this issue. If your map has tomes, this system is absolutely must have.​



    >>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<

    5. Create multiple missile-based abilities easily and effectively: [System] Missile
    Recommendation level: High
    Usage difficulty: Hard
    Implementation difficulty: Easy
    Advantages:
    • Tons of missile customization​
    Sometimes we want to create missile-based spells with different but similar effects, thus we simply copy paste the other ability and modify it, which is not very practice and easy to do. Now there comes this system that allows you to toggle on/off which event do you actually need (on hit/on periodic/ etc.) to ease you in customizing your spell effects.

    It's hard to tell exactly how hard is it to use this, because basically it's very easy to use for anyone who understand vJass. But yeah, it requires vJass knowledge.​



    >>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<

    6. Assign unique id to any unit: (vJass) UnitIndexer | (GUI) GUI UnitIndexer
    Recommendation level: High
    Usage difficulty: Easy
    Implementation difficulty: Easy
    Advantages:
    • Provides on index/deindex events (brief explanation below)​
    Almost every map use this. UnitIndexer is used to assign unique id to every unit in your map automatically. Sometimes we want to have variables that contain specific information about a unit, as example I want to store a unit's damage into a variable named "UnitDamage":
    (vJass)
    Code (vJASS):
    set UnitDamage[GetUnitUserData(TheUnit)] = 100

    (GUI)
    • Set UnitDamage[(Custom value of (TheUnit))] = 100[/FONT]
    • [FONT=Tahoma]
    You simply need to call "GetUnitUserData" (for jass) or "Custom value of unit" (for GUI, this is available under Unit function group). That's just one example usage of UnitIndexer, you may discover other usages as you experience more about spell making.

    Another great deal is UnitIndexer provides events called on index event and on deindex event. Index event is fired when a unit is created (added to the world) and deindex event is fired when a unit is removed from the world.

    However, you may need to be careful to pick which UnitIndexer for your map. Having multiple indexer systems would likely mess things up. If you use Nestharus' UnitIndexer, you mostly will not be able to use any other systems that requires Bribe's GUI UnitIndexer. And vice versa.​



    >>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<

    7. Assign certain data into a timer: TimerUtils
    Recommendation level: High
    Usage difficulty: Easy
    Implementation difficulty: Easy
    Advantages:
    • Preserves & recycles timers​
    This is also one of the best code resource in wc3 so far, widely used among spell makers. It has simple yet very useful feature to allow us to assign any integer data into a timer. And as been mentioned above, TimeUtils (in certain condition) does not destroy timer once you release it but TimeUtils will recycle (store) the timer for later use.​



    >>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<

     
    Last edited by a moderator: Oct 2, 2020
  2. Flux

    Flux

    Joined:
    Feb 6, 2014
    Messages:
    2,333
    Resources:
    28
    Maps:
    1
    Spells:
    19
    Tutorials:
    2
    JASS:
    6
    Resources:
    28
    Wow, very useful.. +rep
     
  3. Zwiebelchen

    Zwiebelchen

    Joined:
    Sep 17, 2009
    Messages:
    7,014
    Resources:
    12
    Models:
    5
    Maps:
    1
    Spells:
    1
    Tutorials:
    1
    JASS:
    4
    Resources:
    12
    If you extend this a little bit further, this could become a nice go-to for mappers on what is a great coding framework to start a new project with.

    Here's no honorable mentions that imho you should include:


    Knockback3D from Cokemonkey.
    -> Simple yet effective knockback system; doesn't come with a lot of extra features like custom callbacks, but it's exactly the simplicity that I like about it.

    AIDS or UnitIndexer.
    -> Nowadays, the unit indexing feature is actually the least significant reason to use an indexer - it's the onIndex and onDeindex events that are so god damn useful. You never need to worry about all the ways a unit can be added or removed from the battlefield anymore ... the onIndex and onDeindex events catch them all.

    SimError.
    -> Custom error messages are always nice.

    DDS:
    -> Everyone needs a damage detection system.
     
  4. PurgeandFire

    PurgeandFire

    Code Moderator

    Joined:
    Nov 11, 2006
    Messages:
    7,429
    Resources:
    18
    Icons:
    1
    Spells:
    4
    Tutorials:
    9
    JASS:
    4
    Resources:
    18
    Nice idea. ;)

    Perhaps a section on timer systems? Usually it'll be TimerUtils for general purpose and CTL for periodic.

    If expanded, I wonder if this could be a sticky in the JASS section? Or maybe a sticky in the JASS tutorials section? I'm not sure which.
     
  5. Kazeon

    Kazeon

    Joined:
    Oct 12, 2011
    Messages:
    3,296
    Resources:
    38
    Icons:
    2
    Tools:
    1
    Maps:
    7
    Spells:
    21
    Tutorials:
    3
    JASS:
    4
    Resources:
    38
    Update. Some suggestions have been added.

    Sure I will expand this but rather slowly.
     
  6. Chaosy

    Chaosy

    Tutorial Reviewer

    Joined:
    Jun 9, 2011
    Messages:
    11,065
    Resources:
    18
    Icons:
    1
    Maps:
    1
    Spells:
    10
    Tutorials:
    6
    Resources:
    18
    Feels kinda lacking.

    Out of those 7 mentioned I have never felt a need for 6 of them.
    I am surprised that you haven't included a DDS in the list btw.
     
  7. BPower

    BPower

    Joined:
    Mar 18, 2012
    Messages:
    1,709
    Resources:
    21
    Spells:
    15
    Tutorials:
    1
    JASS:
    5
    Resources:
    21
    Great idea. I like the structure and rating system.

    --> SpellEffectEvent?
     
  8. Maker

    Maker

    Joined:
    Mar 6, 2006
    Messages:
    9,174
    Resources:
    17
    Maps:
    2
    Spells:
    14
    Tutorials:
    1
    Resources:
    17
    ^That is a must and the player event by Mag. Why not throw Alloc in the mix also.
     
  9. What about the CSS by Doomlord or a collision system ?
     
  10. btdonald

    btdonald

    Joined:
    Dec 3, 2011
    Messages:
    346
    Resources:
    8
    Maps:
    1
    Spells:
    7
    Resources:
    8
    I'm thinking about (Bonus Nestharus or Bonus Mod Earth Fury) instead of CSS ^^!
     
  11. Well, I suggested it as it is GUI-user friendly which is especially good for map creators being new to Jass and vJass.
     
  12. Bribe

    Bribe

    Joined:
    Sep 26, 2009
    Messages:
    8,379
    Resources:
    25
    Maps:
    3
    Spells:
    10
    Tutorials:
    3
    JASS:
    9
    Resources:
    25
    I'm actually planning a GUI SpellEffectEvent but I have to test a few things first.
     
  13. BPower

    BPower

    Joined:
    Mar 18, 2012
    Messages:
    1,709
    Resources:
    21
    Spells:
    15
    Tutorials:
    1
    JASS:
    5
    Resources:
    21
    Keep on working on this. I really like it.
     
  14. Kazeon

    Kazeon

    Joined:
    Oct 12, 2011
    Messages:
    3,296
    Resources:
    38
    Icons:
    2
    Tools:
    1
    Maps:
    7
    Spells:
    21
    Tutorials:
    3
    JASS:
    4
    Resources:
    38
    I will work on this later..

    - Going to remove TimerUtils from the list. Because, mostly it's rather for minor improvements, definedly not a must have in a map.
    - Adding DDS and CSS to the list.

    The list is supposed for systems that seem useful for common map makers, not just for coders, or I will ended up adding every system and snippets in the jass section.

    Bcs this thread is not made specifically for you. And yes, it needs times to improve.
     
  15. Chaosy

    Chaosy

    Tutorial Reviewer

    Joined:
    Jun 9, 2011
    Messages:
    11,065
    Resources:
    18
    Icons:
    1
    Maps:
    1
    Spells:
    10
    Tutorials:
    6
    Resources:
    18
    Indeed it is not. But if someone who knows a bit of vjass does not find the systems needed.. I doubt the average GUI user will. Effectively ignoring most of hive. In your intro you state that it is for everything though.

    I might be wrong, wouldn't be the first time. Just my thoughts though, take it as you will.
     
  16. IcemanBo

    IcemanBo

    Joined:
    Sep 6, 2013
    Messages:
    6,537
    Resources:
    23
    Maps:
    3
    Spells:
    11
    Template:
    1
    Tutorials:
    5
    JASS:
    3
    Resources:
    23
    - A generic list/vector/stack, something of this category can be also useful often.

    - WorldBounds maybe

    - Missle maybe

    - TileDefinion maybe

    .. it's nice. Will you update it?
     
  17. IcemanBo

    IcemanBo

    Joined:
    Sep 6, 2013
    Messages:
    6,537
    Resources:
    23
    Maps:
    3
    Spells:
    11
    Template:
    1
    Tutorials:
    5
    JASS:
    3
    Resources:
    23
    It's approveable, but you would need to keep it up to date, will you?

    Like we can discuss about mentioned DDS, CSS, a generic data structure, [vJASS] - [System] Polygon, [System] SoundTools.

    Is ItemCleanup important enough for you?

    It only makes sense if we keep it up to date from time to time I believe.

    Could you put the library name there instead the index numbers?
     
  18. IcemanBo

    IcemanBo

    Joined:
    Sep 6, 2013
    Messages:
    6,537
    Resources:
    23
    Maps:
    3
    Spells:
    11
    Template:
    1
    Tutorials:
    5
    JASS:
    3
    Resources:
    23
  19. Kazeon

    Kazeon

    Joined:
    Oct 12, 2011
    Messages:
    3,296
    Resources:
    38
    Icons:
    2
    Tools:
    1
    Maps:
    7
    Spells:
    21
    Tutorials:
    3
    JASS:
    4
    Resources:
    38
    Updated with improved formatting, nothing new's added yet tho.
    I will add suggested resources later.

    Sorry, @IcemanBo. This one was completely out of my radar.
     
  20. PurgeandFire

    PurgeandFire

    Code Moderator

    Joined:
    Nov 11, 2006
    Messages:
    7,429
    Resources:
    18
    Icons:
    1
    Spells:
    4
    Tutorials:
    9
    JASS:
    4
    Resources:
    18
    i still like this and would like to approve it, @Quilnez , but some of the BB tags are messed up.