• 0

    posted a message on Subjection

    Just noticed the author had a thread for his map in the map feedback forum. Not sure if that means this counts as a duplicate thread... Let me know if this should be removed.

    Posted in: Map Review
  • 0

    posted a message on Subjection

    Hey guys, I came across a really cool Custom campaign on the arcade a few days ago. It's called Subjection, and it's separated into 8 maps/missions. The author does a fantastic job with cinematics, as well as telling a story. The game play is also fairly varied and some missions introduce unique mechanics. Found this campaign very cool as both a player and a fellow map maker. And perhaps a little bit of jealousy of the awesome skills :)

    If you enjoy single player mission maps, or just a good story, you should definitely check it out. There's multiple difficulties for those who want a challenge, and those who want to take it easy.

    Posted in: Map Review
  • 0

    posted a message on [Tutorial - Triggers] Difficulty Settings

    @ufollowme:

    Yea definitely. Difficulty levels are quite nice to have. I used to get people that would review my maps and say it's too hard, and others say it was too easy. I was like >.<

    Posted in: Tutorials
  • 0

    posted a message on [Tutorial - Triggers] Difficulty Settings

    @JacktheArcher: Go

    Oh, I didn't notice you could upload stuff directly to the forum. That's very convenient! Thanks :)

    Posted in: Tutorials
  • 0

    posted a message on [Tutorial - Triggers] Difficulty Settings

    Custom Maps – Difficulty Levels
    (example map attached to the bottom of this post)
    Hey guys, going to show you how to create difficulties in an arcade map. Specifically we are going to create a dialogue that will pop up at the beginning of the map and allow the player to choose between easy and hard. The difference between these 2 difficulties will be that the barracks will spawn more enemies, and the factory will spawn the same amount of thors, but it will do it much faster. This is also a good exercise on using records, presets, and arrays to your advantage. It took me a long time to figure out how to use them well!

    First we will create a new record (Right click in the trigger editor> new> new record). I named mine “Difficulty settings” I then created a new variable and gave it the same name. Under Type, I chose record. Since I only have one record, it defaulted to the correct one, otherwise I would have to choose my specific record. Check the box next to Arrays, and make it a size 1 (This will be the size of the number of difficulties we have. Zero counts as a size. So if we had 10 difficulties, we could make it a size 9.)

    Difficulty Settings
    Difficulty Settings <Difficulty Settings[1]>

    Next we’ll click on the actual record and start making the things we want to change depending on the difficulty. For the bunker I’m going to create a variable called #Marines, and a variable called #Marauders. Both will be integers. Next I’ll create a variable called Thor Spawn Time. This will be a real.
     
    Difficulty Settings
        Variables
            #Marines = 0 <Integer>
            #Marauders = 0 <Integer>
            Thor Spawn Time = 0.0 <Real>

    Next we will create a new preset (Right click on the trigger window> new> new preset type). I’ll name this Difficulties. Under values, you want to put all of the names of your difficulties, in this case I’ll have one named Easy, and one named Hard. Presets aren’t necessary, but they make it a lot easier to keep track of things.

    Difficulties
        Value Type: Integer
        Values
            Easy
            Hard

    Create a new variable and name it Difficulty selected. This will be used to track the difficulty that the player chose. Make its type a preset, set the preset to Difficulties. You can set the initial value to one of the difficulties under preset if you like. I think leaving it as no value will be fine as well. (I set it to easy)

    Difficulty Selected = Easy <Difficulties>

    Next I’m going to go ahead and set up my values for difficulties. Create a trigger, I named mine “Init – Set difficulty Values”. The event will be map initialization. Create an action group and name it “Easy”. Underneath that action group create a “set variable” action. For the variable choose Difficulty settings. Under index click on the preset button and search for Easy, the difficulty preset that you made earlier. For the member, choose #Marines. Set it to the number of marines you want the barracks to spawn on easy, in this case I chose 4. Copy and paste that set variable action, and change the member to #Marauders. I set it to 1. Again, Copy and paste and set the member to Thor Spawn Time. I set it to 30. Now copy and paste the entire Easy action group. Change all the indexes to Hard instead of easy. (A fast way is to change the first one, then copy/paste that index to the rest). I set the hard values to 10 marines, 3 marauders, and 10 seconds for thor spawn.

    Init - Set Difficulty Values
        Events
            Game - Map initialization
        Local Variables
        Conditions
        Actions
            General - Action Group: "Easy"
                Actions
                    Variable - Set Difficulty Settings[Easy].#Marines = 4
                    Variable - Set Difficulty Settings[Easy].#Marauders = 1
                    Variable - Set Difficulty Settings[Easy].Thor Spawn Time = 30.0
            General - Action Group: "Hard"
                Actions
                    Variable - Set Difficulty Settings[Hard].#Marines = 10
                    Variable - Set Difficulty Settings[Hard].#Marauders = 3
                    Variable - Set Difficulty Settings[Hard].Thor Spawn Time = 10.0

    Now we’ll set up the trigger that produces units from the barracks. I’ve named mine Barracks - Spawn Under events put periodic, set it for the amount of time you want, I’m going to do 10 seconds. I’ve started using real time instead of game time, so that I can judge it better. If you use game time, then they’ll spawn faster on the faster game speed and slower on slower game speeds. Under conditions make a comparison. Set the first value to unit is alive. Set the unit to your barracks (make the barracks if you haven’t already). Set value 2 to true.  Create an action “Create units with default facing”. For count choose your Difficulty Settings Variable. For the index, click on function and select convert preset to integer. For the value choose Difficulty Selected (under variables). For the member choose #Marines. For the unit, choose marine. For point, go to function and choose position of unit. Choose the barracks on your map. Copy/paste that action, and switch #Marines to #Marauders, and the marine unit to marauder. (Oh don’t forget to set the player you want the marines to be on).

    Barracks - Spawn
        Events
            Timer - Every 10.0 seconds of Real Time
        Local Variables
        Conditions
            (Barracks [29.50, 23.50] is alive) == True
        Actions
            Unit - Create Difficulty Settings[(Integer(Difficulty Selected))].#Marines Marine for player 2 at (Position of Barracks [29.50, 23.50]) using default facing (No Options)
            Unit - Create Difficulty Settings[(Integer(Difficulty Selected))].#Marauders Marauder for player 2 at (Position of Barracks [29.50, 23.50]) using default facing (No Options)

    Now we’ll create a separate trigger for the Thor spawn. Because my names are so clever, I’ll name it Thor Spawn. Don’t make an event. Create an action “Repeat Forever”. This will be a loop that will keep going as long the factory is alive. Create an if/then action underneath the loop. Under conditions choose a comparison of “Unit is Alive”. Choose your factory for the unit. Set it equal to false (Click on it, don’t check the true box, then hit ok). Under then create a “skip remaining actions” action. Under the loop, but after the if/then statement make a new create units with default facing action. Choose thor, and make it spawn at the position of the factory. Now create a wait action. Set the time to your Difficulty Settings Variable. Again set the index to a convert integer to preset, and the preset to Difficulty selected. Set the Member to Thor Spawn Time. If you want, this wait action can go above the if/then statement instead of below the unit spawn action. This just means that the first spawn will be delayed initially, instead of spawning immediately after the difficulty is chosen (Something we are going to set up in a little bit). Just be sure not to put the wait action between the if then statement and the unit spawn.

    Thor Spawn
        Events
        Local Variables
        Conditions
        Actions
            General - Repeat (Actions) forever
                Actions
                    General - If (Conditions) then do (Actions) else do (Actions)
                        If
                            (Factory [39.50, 21.50] is alive) == False
                        Then
                            General - Skip remaining actions
                        Else
                    Unit - Create 1 Thor for player 2 at (Position of Factory [39.50, 21.50]) using default facing (No Options)
                    General - Wait Difficulty Settings[(Integer(Difficulty Selected))].Thor Spawn Time Real Time seconds

    Now we’ll set up the dialogue for the player to choose a difficulty. Create a variable, and make it a dialogue. Name it difficulty dialogue window. Next create a variable and make it a dialogue item named Difficulty Button Choices. Make it an array of 1 (Or however many buttons (minus 1) you’re going to have for difficulty selection). Make a new trigger and call it Create Difficulty Selection Dialogue. Start it at map initialization. Add a create dialogue action. I find when creating a dialogues that a spacing of about 25 seems to be appropriate, so I’m going to make the dialogue a size 250 for x, and the buttons will be a size 200 for x. For y, make the dialogue 50 + 50*# of buttons. Since we only have 2, it’ll be 50 + 50*2, or 150. Set it relative to the center of the screen with no offset (you can of course change this to wherever you want it). Create an action below it called “Show/Hide dialogue”. Show it for whatever players you want to pick the difficulty. Create a set variable action below that. Set Difficulty dialogue window to last created dialogue. Next add a “Create Dialogue item (Button)” action. Set dimensiosn to 200, 50. Anchor it to the top with an offset of 0, 25. Set the button text to easy, and the tooltip to whatever you like (This is the text shown when the player hovers their cursor over the button). Add a new set variable action. Choose the Difficulty Button Choices. For the index, go under presets and choose Easy. Set it equal to last created dialogue item. Copy and paste the last 2 actions we created. Change the y offset to 75. Change the tooltip and button text. Change the variables index to Hard.

    Create Difficulty Selection Dialogue
        Events
            Game - Map initialization
        Local Variables
        Conditions
        Actions
            Dialog - Create a Modal dialog of size (250, 150) at (0, 0) relative to Center of screen
            Dialog - Show (Last created dialog) for (All players)
            Variable - Set Difficulty Dialogue window = (Last created dialog)
            Dialog - Create a button for dialog (Last created dialog) with the dimensions (200, 50) anchored to Top with an offset of (0, 25) setting the tooltip to "" with button text "Easy" and the hover image set to ""
            Variable - Set Difficulty Button Choices[Easy] = (Last created dialog item)
            Dialog - Create a button for dialog (Last created dialog) with the dimensions (200, 50) anchored to Top with an offset of (0, 75) setting the tooltip to "" with button text "Hard" and the hover image set to ""
            Variable - Set Difficulty Button Choices[Hard] = (Last created dialog item)

    Lastly we’re going to create a trigger to control what happens when the buttons are pressed. I named by trigger Difficulty Setting chosen. Set the event to Dialogue item is used. This first set of conditions I’m going to use is only necessary if you have more than one dialogue open for the player to use. Under conditions, create an Or condition. Under the Or condition create a comparison and set the first part to Used dialogue item. Set value 2 to your variable Difficulty Button Choices. Set the index to the Preset Easy. Copy and paste this condition (continue keeping it under the Or) and change the index to Hard. Do this for any additional difficulties you may have added. Create a Turn trigger on/off action. Turn current trigger off. Create an if/then action. Under the if, copy/paste the condition you made previously with the Easy index (Just the easy one, not the whole Or condition). Under then, choose a set variable action. Set your variable Difficulty selected to the Easy preset. Copy/paste the entire if/then stuff and change the conditions index to hard, and the set variable to Hard. (Alternatively you could have used an if/then/else/if action, or probably even a switch action. They basically all do the same thing). Outside of the if/then stuff you want to create a show/hide dialogue action. Hide the Difficulty dialogue window. Then create a run trigger action. Run the Thor Spawn trigger.

    Difficulty Setting Chosen
        Events
            Dialog - Any Dialog Item is used by Player Any Player with event type Clicked
        Local Variables
        Conditions
            Or
                Conditions
                    (Used dialog item) == Difficulty Button Choices[Easy]
                    (Used dialog item) == Difficulty Button Choices[Hard]
        Actions
            Trigger - Turn (Current trigger) Off
            General - If (Conditions) then do (Actions) else do (Actions)
                If
                    (Used dialog item) == Difficulty Button Choices[Easy]
                Then
                    Variable - Set Difficulty Selected = Easy
                Else
            General - If (Conditions) then do (Actions) else do (Actions)
                If
                    (Used dialog item) == Difficulty Button Choices[Hard]
                Then
                    Variable - Set Difficulty Selected = Hard
                Else
            Dialog - Hide Difficulty Dialogue window for (All players)
            Trigger - Run Thor Spawn  (Check Conditions, Don't Wait until it finishes)

    And that should be all you need to do for your difficulty settings. This method is nice, as it keeps all your difficulty info in one nice organized trigger (Init – Set Difficulty Values). This will make it easy to modify spawns, and it isn’t too hard to even create additional difficulties later.

    Posted in: Tutorials
  • To post a comment, please or register a new account.