Staredit Network > Forums > SC1 UMS Theory and Ideas > Topic: RPG Location saving tips
RPG Location saving tips
Dec 29 2007, 1:12 pm
By: fm47  

Dec 29 2007, 1:12 pm fm47 Post #1



Son of a ASKLFALSF, I typed for like 45 minutes and accidentally pressed on a link, pressed back and everything was gone T_T... I'll do my best to repeat what I just typed =(((( I'll type, post, edit, post.... I hope that's not against forum rules ><

First off, wow, I can't believe this site is back up again. I like it so much better than the one offered by those who advertised here when it was down. What happened anyway?

Secondly, I haven't seen much tutorials/threads on map making, I've NEVER finished a map, and I'm not claiming these ideas to be great, but they have helped me (and the realizations of these techniques have caused me to restart maps again and again...)

1) Personal Hero-following Location
A Personal Hero-following Location, which I call "Player_PL" is a location that constantly follows a player's hero. The hero followed must be unique (meaning there only being one of it for a player), though the hero may still have pets, friends, minions, etc.

There are many uses to this, the possibilities are many. Here's one of which I use:

In many RPG's, there are "Treasure Boxes", often which are represented by Vaspene Orbs, the cubic-looking things probes carry out of Assimilators, mine is not much different. Though... I consider my game to be a fairly large one and would like to place locations conservatively... so I use a "Player_PL"! This location will follow my hero constantly, and when my hero realizes a box over-there yonder, it can walk up to it, bringing the location to it, and a trigger would react appropriately to the box being in my hero's location.

Realizing how many locations this may save me (as many as there are treasure boxes), I go ahead and place all my treasure boxes on the map.

Crap.

How the heck do I determine which box to give what? That is a problem isn't it? But just as there are many possibilities to the functions of a Player_PL, there are also many possible remedies to the problems it causes. One of which is:

Delete all the treasure boxes you have created. Use a unit you would otherwise have no use for (preferably a flying unit). We'll call this unit "Box Decoy". Replace the deleted boxes with said unit. Grab any unit and place it adjacent (or under if you can) to the Box Decoy, we'll call it the Box Decoy's partner. At the beginning of the game, make a location center to wherever any Box Decoys may be. Remove the Box Decoy and its partner (so the location must be big enough to fit both when the location is centered onto the Box Decoy) and replace it with any number of a buried allied/neutral unit, then end the create list with a treasure box as the cherry on top.

Now when your hero walks up to the treasure box, his/her location would scream to the trigger commands "TREASURE TREASURE TREASURE!!!!" and the buried units under the box would determine which trigger to run. i.e. 1 buried zergling beneath the box means the player will be rewared 100 minerals. 2 zerglings buried beneath the box would mean 200 minerals.

Again, having a location follow your hero isn't a complicated idea, but the possibilities of what you can do with them may be.

2) Global Hero-positioning Location
A Global Hero-positioning Location is a location that constantly jump from one player's essential/unique hero to the other. I call it the Global_PL. RPG's often offer more than player, thus generating more than one hero. This technique is like grabbing all the Player_PL's and putting it into one, so that instead of making a trigger for each player that brings his/her hero's location to a triggering unit (the unit that causes a trigger to occur), one could simply make it so that when the Global_PL encounters the triggering unit, the appropriate trigger occurs.

For example, there are 3 key items in my game, the Uraj Crystal, the Khalis Crystal, and the Data Disc. There are to be "picked up" by any heroes that reach them. Instead of having 3 locations placed at each of the three key items, I could simply have one Global_PL jump from one hero to the next. When the Global_PL jumps to a hero that happens to be at the location of the key item, then the "pick up" trigger would occur. Specifying which player gets the item is also in your control.

There are many ways one could do this. I did the following:
There are 3 players to my map, each of which have a specific unit I have the Global_PL jump to. I chose to use death counters of a Starport of an allied Computer Player. For Player 1, placed above all other triggers except just before Player_PL (so that the Global_PL could position on the hero before any of the other triggers are checked), the Global_PL location centers onto a Medic under the conditions that Player 1 controls a Medic, and Player 8, my allied Computer Player, has suffered 0 deaths of Starports. Player two is under the same conditions, but the Computer Player is required to have suffered 1 death of a Starport for the Global_PL to jump onto Player 2's Medic. Player 3 is the same, but with the respective changes. Then on Player 3, after the Global_PL trigger, a trigger detects if Player 8 has suffered at most 1 Starport, then add 1 death in Starport for Player 8. Immediately after that trigger, another follows, detecting that if Player 8 has suffered exactly 2 deaths of Starports, then it sets deaths of Starports for Player 8 to be 0. Both of the later triggers have a Wait 0. at the end to make sure it wont go crazy -_-

To make it more clear:
Trigger
Players

  • 1
  • Conditions

  • Player 8 has suffers exactly 0 deaths of Terran Starport.
  • Player 1 commands exactly 1 Terran Medic.
  • Actions

  • Preserve trigger.
  • Center location labled 'Global_PL' on Terran Medic owned by Player 1 at 'Anywhere'.
  • Wait 0 milliseconds.


  • Repeat that trigger for players 2 and 3, making the changes of adding 1 more death to player 2's trigger condition and 2 deaths to player 3's.

    after that, just after player 3's Global_PL trigger, this:
    Trigger
    Players

  • 3
  • Conditions

  • Player 8 has suffered exactly 2 deaths of Terran Starport.
  • Actions

  • Preserve Trigger.
  • Modify death counts for Player 8: Set to 0 for Terran Starport.
  • Wait 0 Milliseconds.


  • Followed by:
    [TRIGGER]
    [DESCRIPTION]Add deaths of Starports if it has not reached 2[/DESCRIPTION]
    [CONDITIONS]
    [*]Player 8 has suffered at most 1 death of Terran Starport.
    [/CONDITIONS]
    [ACTIONS]
    [*]Preserve Trigger.
    [*]Modify death counters for Player 8: Add 1 for Terran Starport.
    [*]Wait 0 milliseconds.
    [/ACTIONS]
    [/TRIGGER]

    I only saved 2 locations with this method, but the amount of items, NPC's, and buildings added up may end up saving me a couple or few dozens of spaces.

    This idea works better with Hyper Triggering

    3) Speech-Lock & Random NPC Dialogue
    This is not a location-saver, but it's one of my favorites nonetheless. So in my RPG, I've a town, and in that town, there are citizens. There are 4 types of occupents in my city. The most common are the Civillians as the common citizens, followed by Zealots and Marines as Soldiers and Guards, and a High Templar as the oh-so-common elder of the city. I'd REALLY like to NOT have any of them display a dialogue repeatedly (whether timed or not), and as a personal preference, not the same constant speech. I'd like varietion of their dialgoues...

    This requires a counter function, you choose what you will, I chose a death counter of drones. This will also need a randomized switch called "talkSwitch" under a preserved triggers line.

    First, I create a function that will cause the NPC to talk only once, and repeat only if I were to walk out of the location and then back in. I need a switch called talkCheck_P1, and a Location called 'Civillian Guy' with an Civillian in it.

    For that, I have:

    CONDITIONS:
    talkCheck_P1 is Set.
    Current Player brings exactly 0 of any men to 'Civillian Guy'.
    ACTIONS:
    Preserve Triggers.
    Clear talkSwitch.

    The above function will be used later.

    Next, I have a function that'll... "ghetto" randomize a deathcounter from 0-4.

    CONDITIONS:
    Always
    ACTIONS:
    Preserve Triggers.
    Randomize talkSwitch.
    Wait 500.

    then

    CONDITIONS:
    Switch talkSwitch is Cleared.
    ACTIONS:
    Preserve Triggers.
    Set death counters for Player 8: Subtract 1 to Drones.
    Randomize talkSwitch.

    and

    CONDITIONS:
    Switch talkSwitch is Set.
    Player 8 has suffered at most 3 deaths of Zerg Drone.
    ACTIONS:
    Set death counters for Player 8: Add 1 to Zerg Drone.
    Randomize talkSwitch.

    You could do whatever math you want (add 1, subtract 2, for example), this is just the simplist.

    With those pieces of triggers set, I need now to have NPC dialogues applied to each of the death counters, so I have:

    CONDITIONS:
    Player 8 has suffered at exactly 0 Zerg Drone.
    Current Player brings at least 1 of any unit to 'Civillian Guy'.
    (add a condition of area here if you'd like. Areas like cities, dungeosn, so that your civs in your dungeo don't say the same things as your city civs).
    talkCheck_P1 is Cleared.
    ACTIONS:
    Preserve Triggers.
    Display Text 'Hi, how are you today?'
    Set talkCheck.

    And repeat for death counts: 1, 2, and 3.

    What this entire thing essentially does is that everytime you walk into the location, the NPC displays a dialogue corresponding to each of the 4 death counts (0-4). When you walk into the location, the switch 'talkCheck' becomes set, disabling the trigger to repeat itself via Preserve Triggers. Then, when you walk away from the location, another trigger clears the switch. Now you have a speech system that only occurs once when you walk into a location, and it has 4 possible dialogues.

    If you want many of your NPCs to talk, this technique really goes hand-in-hand with the Player_PL and Global_PL techniques. In my current map, I have a location constantly following my character, and when the computer happens to have a unit that provides speech in that location, it gives a dialogue respective to the randomized death counts. And in this way, all the civillians I walk up to has a set of common citizen dialogue, all the marines have their own, as well as the zealots. Of course, this would totally suck if you have all the civillians say the same set of dialogue for all the cities you have... so add a condition that requires a player to be in a particular city.

    So.. I've typed a lot (AGAIN -_-)... and I do realize that these are simple techniques, if not with a giant "DUH" on them, but I found them to help me a lot, and after so many years of starcraft's release, not much is seemed to be said about the "DUH" stuff... maybe somebody else is noob like me would like this ^^ If you guys found this helpful, or would like me to post some more up here, let me know, if not, I'll stop wasting the forum space xD

    I still have ideas like:
    Area Identification - figuring out where your hero is without setting giant locations around the entire area.
    More location-saving techniques
    Tips on location recylcing.

    Post has been edited 5 time(s), last time on Dec 29 2007, 2:22 pm by fm47.



    None.

    Dec 29 2007, 3:07 pm Ahli Post #2

    I do stuff and thingies... Try widening and reducing the number of small nooks and crannies to correct the problem.

    I did not read the whole massive amount of text.

    But I think you can make everything with 1 location because starcrafts fires every trigger from p1, then p2, then p3, p4, p5, ..., p8.

    So you need just 1 location, if you center the location for every player first (trigger of player's force and use current player).

    then check for the items/persons.... (everything works with current player; all players bring at least 1 'item' to 'herolocation'....)

    you need a second location, if you want to do actions between the players heroes...
    (e.g. teleport to p1's hero, bad example, i know, works with 1 location, too)

    but you really need multiple locations, if you need different location ranges... (3x3 for standing next to sth...; 8x8 for e.g. spell range)

    so you can save MANY locations with knowing starcraft's trigger checking behaviour... (thx nuderaider 4 teaching me the second time :} )
    so, you only need 1 location for the item aspect and propably (:S misspelled, right?) for spells, random NPC dialogs, healing stations (special unit in hero location).

    ~Ahli




    Dec 29 2007, 3:22 pm fm47 Post #3



    Yeah, I just realized the whole "global" location couple nights ago, but only now after you stated the "1 location" in green did I realize I could have it for just about everything...

    On my map, I have 1 personal following location for each player, a global one (I still need to get some sleep and think about if having both has any benefits...), and a temporary one that jumps to the hero only when I need it (i.e. just before a hero enters a building, the temp location moves to the hero, that way the hero can get back out, this is then reused for each building.)

    But yeah, thanks for making me realize the potentials even more ^ ^

    Now I'm gonna get some sleep, then see if there are any conflicts using 1 location for human player heroes.... I work in 1 and a half hour.... till 12-13 hours later and I haven't slept....

    I hate starcraft.



    None.

    Dec 29 2007, 6:29 pm who Post #4



    It's never a good idea to have a preserve-wait, because that can cause wait blocks.

    Quote
    CONDITIONS:
    Always
    ACTIONS:
    Preserve Triggers.
    Randomize talkSwitch.
    Wait 500.

    Instead, just use a DC Wait.

    Quote
    CONDITIONS:
    Currentplayer has suffered at most 5 deaths of Hive
    ACTIONS:
    PreserveTrigger
    Add 1 death of Hive.

    Quote
    CONDITIONS:
    Currentplayer has suffered exactly 6 deaths of Hive
    ACTIONS:
    PreserveTrigger
    Randomize talkSwitch.
    Set deaths of Hive to 0.

    That will produce exactly the same result, and avoids possible wait blocks (assuming you have hyper triggers; they run at 12 actions per second, so 6 is half a second, which equals a wait(500)).



    None.

    Dec 29 2007, 7:50 pm Ahli Post #5

    I do stuff and thingies... Try widening and reducing the number of small nooks and crannies to correct the problem.

    Quote from fm47
    On my map, I have 1 personal following location for each player, a global one (I still need to get some sleep and think about if having both has any benefits...), and a temporary one that jumps to the hero only when I need it (i.e. just before a hero enters a building, the temp location moves to the hero, that way the hero can get back out, this is then reused for each building.)
    I used that method in an unfinished RPG... (o0 I only started with the system and it is somehow complex...)

    just have a counter running if you are next to a special building like a shop or a tavern. move an exit location to the hero and let him enter the building which is represented in another part of the map. if he leaves it, move him back to the exit location.




    Dec 29 2007, 8:44 pm Falkoner Post #6



    These are all really basic methods that can be found at the Maplantis Wiki..



    None.

    Dec 30 2007, 7:07 am fm47 Post #7



    I never claimed these to be complex... I was hoping people would post more tips for those who aren't as hard-core mappers as some of the people around here.

    And on the wait, it's entirely optional and flexible, but yeah, a dc wait does sound right. Thanks for your input.



    None.

    Dec 30 2007, 8:39 am LemonFang Post #8



    I just read this all, thanks for typing it all out thisll save me some locations yeay



    None.

    Options
      Back to forum
    Please log in to reply to this topic or to report it.
    Members in this topic: None.
    [2024-4-27. : 9:38 pm]
    NudeRaider -- Ultraviolet
    Ultraviolet shouted: NudeRaider sing it brother
    trust me, you don't wanna hear that. I defer that to the pros.
    [2024-4-27. : 7:56 pm]
    Ultraviolet -- NudeRaider
    NudeRaider shouted: "War nie wirklich weg" 🎵
    sing it brother
    [2024-4-27. : 6:24 pm]
    NudeRaider -- "War nie wirklich weg" 🎵
    [2024-4-27. : 3:33 pm]
    O)FaRTy1billion[MM] -- o sen is back
    [2024-4-27. : 1:53 am]
    Ultraviolet -- :lol:
    [2024-4-26. : 6:51 pm]
    Vrael -- It is, and I could definitely use a company with a commitment to flexibility, quality, and customer satisfaction to provide effective solutions to dampness and humidity in my urban environment.
    [2024-4-26. : 6:50 pm]
    NudeRaider -- Vrael
    Vrael shouted: Idk, I was looking more for a dehumidifer company which maybe stands out as a beacon of relief amidst damp and unpredictable climates of bustling metropolises. Not sure Amazon qualifies
    sounds like moisture control is often a pressing concern in your city
    [2024-4-26. : 6:50 pm]
    Vrael -- Maybe here on the StarEdit Network I could look through the Forums for some Introductions to people who care about the Topics of Dehumidifiers and Carpet Cleaning?
    [2024-4-26. : 6:49 pm]
    Vrael -- Perhaps even here I on the StarEdit Network I could look for some Introductions.
    [2024-4-26. : 6:48 pm]
    Vrael -- On this Topic, I could definitely use some Introductions.
    Please log in to shout.


    Members Online: jjf28, Roy