Welcome to the study room for Multiplayer RPG making!
Welcome to the study room for Multiplayer RPG making!
Welcome to the study room for Multiplayer RPG making!
____________________________________________________________
Part 0: Things that we are working
Feel free to provide idea and help. Thanks!
[D1] Summon Wolfs - Compatible with Revive System
(Solved - See Skill Room)
Description
- Summon 1/2/3 wolfs next to the hero.
[S1] Rage
Description:
- Losing 100/200/500 hp per sec, increase atk (50%/100%/150%) and atk speed (20%/50%/100%) for 15s. Cannot control. Cannot stop. Cannot heal by HP Portion.
Current idea:
- Creates a unit with interaction mode == 2 (can select, unable to attack and move) in AGE.
- Uses UP-effect in triiger to upgrade the unit for 15s
Tech Difficulty:
- No tech difficulty, seems achievable. Need someone to finish and put into the post.
[P1] Life Steal
Tech Difficulty:
- It seems only possible if we are not using the original attack system, but instead detect the attacking unit and the attacked unit, and do all the math. Trigger is as fast as 0.1 second. This caps our attack speed too. Plus, there is no guarantee for the interval between the event of one trigger. Need to research on other possibilities and research on the scheduler of triggers.
Part 1: Introduction
This post includes my study on some fundamental systems for RPG - the pros and cons of specific system designs.
My main goal is to help new map makers to join the RPG making world, the post will be verywordy. You may find it boring and may be better off by just looking at the demo map.
Disclaim: I am new to AOE2 map making. Things in the post can be misleading or wrong. The only thing I try to achieve is that the features are tested and cited. When in doubt, test it or go to the cited site to learn more.
____________________________________________________________
Part 2: Using "RPG Study 03.src"
You can find the corresponding triggers for the features in Part 3 to Part 7 in"RPG Study 01.src".
Each test is notated by its area. C1R2 means first column second row.
____________________________________________________________
Part 3: Basic Features: HP Heal, Teleport, Revive
[Area C1R1] Your camel has lost some HP, moves the sheep to related relic, will trigger the heal.
[Area C1R4] Using Teleport to simulate "Entering Store". Red flag in the store is the exit.
[Area C1R6] Simulate revive. There are towers in the left, you can use it to test the revive. The teleport trigger should also work for your new eagle warrior. Your new eagle warrior should have the same movement speed and hp bonus the dead one has.
Part 4: Loot System
[Area C1R2 C1R3] Killing p2 units will give you food. Killing p6 units == killing mini boss, you have 50% chance to get 1 gold, and 25% chance to get 1 stone. You can test the probability in Area C1R3 (40 6p units).
Part 5: Item System
[Area C2R3] It simulate the situation that your hero can buy items from store, and you need to put the items into your backpack (ram) before buying more. After your hero leaves the store, unloading the item from backpack == using it, and will trigger HP heal.
Part 6: Class System
[Area C2R2] There are two triggers. One unblocks the next class level. Another one reveals the hidden class. Your militia can enter the Transform Room from the flag. And choose the class to transform the hero.
Part 7: Skill System
[Area C2R1] The forge in blacksmith is designed as a skill of hero, which will temporarily (15s) make your hero to the new form and with the new state.
When the skill is in effect, the skill icon changes from forge to iron casting, and using it will tell you the skill is in cool down.
We set the HP for militia to 100, and samurai to 300. Test to see if the HP change to 300 when using the skill and change back to 100 when the skill is in cool down.
Part 8: Skill Design
____________________________________________________________
The following explains each section in detail.
I assume my audience is a new map maker, so the following will be superwordy.
____________________________________________________________
[1] You are warned twice now.
[2] Skip to the Part 8 if you want to contribute to specific skill effect for hero and boss.
____________________________________________________________
Features marked red are only available with 004 extension which is not popular in voobly. It is included to give you a sense of "future", but not recommended to use.
Reference websites that are Chinese are marked as Blue. Just skip it if you cannot understand Chinese. I may translate some of the contents from time to time.
Green means the things I am not sure and I am also researching.
____________________________________________________________
Part 3: Basic Features for RPG
Basic Feature - Heal (Map: Test 1)
Background:
In the old time, changing unit HP will go over the HP max if the HP is already full. For that reason, while it is critical feature for RPG, a lot of old RPG map does not have heal system. Nowadays, the feature of healing until HP max is available in UserPatch 1.5
Explanation:
The trigger effect has different functionality based on the number.
"""
[Citation(CustomScenario in UP1.5)]
Change Object HP:
- Number:0 Change HP
- Number:1 Set HP
- Number:2 Add HP until maximum HP (healing)
"""
You can achieve "Heal over Time" by activating two triggers in the same time. One trigger (loop on) will loop over and do the heal every 2 seconds. The second one will count 30 seconds and close the first one. It works because child trigger context is not serial to its parent trigger - e.g. the parent trigger will execute next line right after activating the child trigger.
How to provide heal feature in item or skill, will be explored in item system and skill system.
Basic Feature - Teleport (Map: Test 3)
Background:
Another important feature for RPG. With it, you can create a much RPG-like environment. You can move the hero to stores to buy items and equipment. Teleport the hero to his own house, to manage his pets, armor, weapon, items, etc. Having the "Teleport Home" Skill for hero is so lovely in every RPG.
Explanation:
"""
[Citation(CustomScenario in UP1.5)]
Task Object:
- Number:0 Task object
- Number:1 Teleport object **
"""
At this point, you should realize how important to study the note of UserPatch. Some trigger effects have variations that provide powerful functionality.
Basic Feature - Revive (Map: Test 4)
Background:
Probably the most, most, most important feature for multiplayer game. Cannot tell you how many times my friends and I need to reopen the game, because one of us is dead in the game. With the revive feature, you can create much challenging RPG that still give players chance of making mistakes.
Design for Revive - Using Up-Effect:
One approach is just to create a new hero when the old one is dead (this is also the approach in the demo map).
The key idea is to use up-effect to increase hero attitudes. Up-effect is similar to tech (In fact, tech actually is a wrapper for effect.) It applies to the unit type, instead of specific unit. For example, let says, your hero is a eagle warrior. When he dies, the new eagle warrior will have same attack, hp, etc, just as the original one.
Based on the same idea, all your trigger conditions can be designed to check unit type instead of unit ID.
Now, your new hero has same state as your old hero and can trigger the same event as your old hero, and that is what call "revive".
But bear in mind that using up-effect on hero, means you should not use attitude change on hero (e.g. the "change attack" and "change hp" in trigger effect). Attitude change will make the hero becomes a special unit from its original unit type. And any tech change in its original unit type won't apply to him anymore.
Design for Revive with same ID:
Citation(Using Garrison to Support Same ID revive (Chinese) )
When your unit is 0 HP, he does not die immediately, i.e. the ID has not cleared yet. Teleport and garrison the dying unit into another unit, then you can avoid the old hero ID to be removed. With 004 trigger extension, you can do "Instant Garrison" and "Change Object ID" in trigger. Actual implementation can be found in the website cited.
Some trigger effects need to set the object. Those trigger definitely won't work if your revived hero has diff object ID. Having the revived hero with the same object ID is the most ideal case but it can be difficult to achieve in current version.
____________________________________________________________
Part 4: Loot System (Map: Test 2)
Background:
Do you realize a lot of game is so addicting because of its gamble element?
This section guides you through how to create a loot system that provides different rewards for small unit, mini boss and boss. Killing boss will give different rewards each time. The small probability of getting OP weapons will make the players longing for boss fight!
Explanation:
[1] resource number 70 is p2 kill, which records the killing of p2 enemy you make. (I forget where I find it, but 70 is p2, all the way to 76 is p8.) Using player kill number, allows you to make system like "p5 is small unit, p6 is mini-boss, p8 is big boss" and assign different rewards to different player kill.
[2] You can do "Own fewer object" check to figure out what boss your hero kills and provide different rewards to different boss kills. (But there is slight chance that it overlap other player's boss kills in the same time, so you may add area check of your hero location too).
I am researching about the resource "amount-player1-kill-value" (each unit should have different score based on their resource.) It may be more accurate to determine what unit is killed and to trigger the corresponding rewards.
[3] Using accumulate attribute on the resource to activate the trigger, and tribute to Gala to reset it. (Refers to the demo map for detailed implementation.)
[4] For random reward, the basic idea is to activate two triggers in series. The first one will try to close the second one, and the second one will give the reward. If the first one succeed, then you won't get the reward. So ,for example, if you want 25% chance of getting reward, then the first trigger should has 75% chance to pass through and deactivate the second trigger.
I am not familiar with the trigger system in concurrency situation. I am not sure if the content of first child trigger is guaranteed to run to the end before the second child trigger runs. But I think it is more likely that when one trigger finishes, it moves to the end of scheduler. So if the first trigger is to deactivate the second trigger, when it fails, the second trigger will run before the first trigger runs the second time.
____________________________________________________________
Part 5: Item System (Map: Test 7)
Basic Design for Item System - Using HP Portion:
(Stable but Bad User Experience)
Citation(map "DIABLO 2 RPG DimX1 DgenerationX" in voobly RPG pack)
The player will use the horse to buy the HP Portion from the store, which will create a sheep in his "item" area
When he moves the sheep to the middle, the HP heal will be triggered.
Problem:
While this design for HP Portion works, it takes a lot of user operations to just use the HP Portion. And the time is critical in RPG when your hero is in the fight and needs that HP recover!
Second Design for Item System - Using HP Portion (in Map: Test 7):
When buying an item, a new unit will spawn in the backpack area. The new unit will be garrisoned into the backpack.
After the user leaves the store, unloading the item will trigger the item effect, e.g. HP portion heal.
The player can set the hotkey for the backpack, and use the item quickly.
[Using 004 mod and custom mod pack]
You can have more realistic item system for item and backpack by customizing your mod.
Third Design for Item System - Using HP Portion:
Citation(Hawkaoe post for same ID Application (Chinese))
It looks super cool, but I haven't studied it.
Here is the translation: """Both two same-ID units have to be in Garrison mode. When clicking on one of them, the another will teleport to the another. ... Each button relates to one invisible unit and is garrisoning in some units in the corner of the map. When clicking the unit will cause the teleport. Then we can use condition check "Object Visible" to check whether the user click the button. Once the event is finished, we can "instant garrison" (004 trigger extension) the invisible unit back to the map corner and use it next time."""
____________________________________________________________
Part 6: Class System (Map: Test 6)
To be continued (04/17/2020 - 21:13)
To be continued (04/17/2020 - 21:13)
To be continued (04/17/2020 - 21:13)
To be continued (04/17/2020 - 21:13)
To be continued (04/17/2020 - 21:13)
For example, a class system with 004 extension mod.
Three different classes with two ultimate hero to choose when reach the end.
Four different hidden classes that require specific state, taunt event and difficulty level.
____________________________________________________________
Part 7: Skill System (Map: Test 5)
____________________________________________________________
Part 8: Skill Design Room
[D1] Summon Wolfs - Compatible with Revive System
Description
- Summon 1/2/3 wolfs next to the hero.
Background
- I want to be able to support the new revive system, where after the hero dies, we will spawn a new hero. But this provides the new limit that our trigger cannot depend on the object ID of the hero, since it will be different when hero revives.
Details
Citation(Hawkaoe post for AI-Script for RPG Tutorial II (Chinese))
- using AGE to create a fly-mode, fast speed unit (teleport box) for P7.
- P7 is ally for all players with teleport box created.
- when using skill, trigger AI script signal
- In AI script, search-remote for P1 hero by unit type.
- In AI script, use result location to send flare.
- In AI script, use up-retreat-to to send the teleport box to the flare location.
- In world editor, use the teleport box to teleport the wolf. (The teleport box never die, so we can use its object ID.)
AI script for Learning:
(defrule
(event-detected trigger 100) ;signal received from trigger.
=>
(up-reset-filters)
(up-reset-search 1 1 1 1)
(set-strategic-number sn-focus-player-number 1) ;to choose player 1.
(up-find-remote c: monk c: 1) ;monk is the unit type of hero.
(up-set-target-object search-remote c: 0)
(up-get-point position-object gl-point-x)
(up-set-target-point gl-point-x)
(up-send-flare gl-point-x) ;send the flare the location searched
(up-reset-search 1 1 1 1)
(set-goal 1 1)
(acknowledge-event trigger 100)
)
(defrule
(up-compare-goal 1 == 1)
(unit-type-count 274 > 0)
(unit-type-count 274 < 2) ; in case multiple player trigger flare, then we choose the last one
=>
(up-retreat-to 274 c: spearman) ; send the modded spearman, aka. the teleport box to the flare (274)
(set-goal 1 0)
)
____________________________________________________________
____________________________________________________________
Welcome to the study room for Multiplayer RPG making!
Welcome to the study room for Multiplayer RPG making!
____________________________________________________________
Feel free to provide idea and help. Thanks!
(Solved - See Skill Room)
Description
- Summon 1/2/3 wolfs next to the hero.
Description:
- Losing 100/200/500 hp per sec, increase atk (50%/100%/150%) and atk speed (20%/50%/100%) for 15s. Cannot control. Cannot stop. Cannot heal by HP Portion.
Current idea:
- Creates a unit with interaction mode == 2 (can select, unable to attack and move) in AGE.
- Uses UP-effect in triiger to upgrade the unit for 15s
Tech Difficulty:
- No tech difficulty, seems achievable. Need someone to finish and put into the post.
Tech Difficulty:
- It seems only possible if we are not using the original attack system, but instead detect the attacking unit and the attacked unit, and do all the math. Trigger is as fast as 0.1 second. This caps our attack speed too. Plus, there is no guarantee for the interval between the event of one trigger. Need to research on other possibilities and research on the scheduler of triggers.
This post includes my study on some fundamental systems for RPG - the pros and cons of specific system designs.
My main goal is to help new map makers to join the RPG making world, the post will be very
Disclaim: I am new to AOE2 map making. Things in the post can be misleading or wrong. The only thing I try to achieve is that the features are tested and cited. When in doubt, test it or go to the cited site to learn more.
____________________________________________________________
You can find the corresponding triggers for the features in Part 3 to Part 7 in
Each test is notated by its area. C1R2 means first column second row.
____________________________________________________________
Part 3: Basic Features: HP Heal, Teleport, Revive
Part 4: Loot System
Part 5: Item System
Part 6: Class System
Part 7: Skill System
When the skill is in effect, the skill icon changes from forge to iron casting, and using it will tell you the skill is in cool down.
We set the HP for militia to 100, and samurai to 300. Test to see if the HP change to 300 when using the skill and change back to 100 when the skill is in cool down.
Part 8: Skill Design
____________________________________________________________
The following explains each section in detail.
I assume my audience is a new map maker, so the following will be super
____________________________________________________________
____________________________________________________________
____________________________________________________________
In the old time, changing unit HP will go over the HP max if the HP is already full. For that reason, while it is critical feature for RPG, a lot of old RPG map does not have heal system. Nowadays, the feature of healing until HP max is available in UserPatch 1.5
The trigger effect
"""
Change Object HP:
- Number:0 Change HP
- Number:1 Set HP
- Number:2 Add HP until maximum HP (healing)
"""
You can achieve "Heal over Time" by activating two triggers in the same time. One trigger (loop on) will loop over and do the heal every 2 seconds. The second one will count 30 seconds and close the first one. It works because child trigger context is not serial to its parent trigger - e.g. the parent trigger will execute next line right after activating the child trigger.
How to provide heal feature in item or skill, will be explored in item system and skill system.
Another important feature for RPG. With it, you can create a much RPG-like environment. You can move the hero to stores to buy items and equipment. Teleport the hero to his own house, to manage his pets, armor, weapon, items, etc. Having the "Teleport Home" Skill for hero is so lovely in every RPG.
"""
Task Object:
- Number:0 Task object
- Number:1 Teleport object **
"""
At this point, you should realize how important to study the note of UserPatch. Some trigger effects have variations that provide powerful functionality.
Probably the most, most, most important feature for multiplayer game. Cannot tell you how many times my friends and I need to reopen the game, because one of us is dead in the game. With the revive feature, you can create much challenging RPG that still give players chance of making mistakes.
One approach is just to create a new hero when the old one is dead (this is also the approach in the demo map).
The key idea is to use up-effect to increase hero attitudes. Up-effect is similar to tech (In fact, tech actually is a wrapper for effect.) It applies to the unit type, instead of specific unit. For example, let says, your hero is a eagle warrior. When he dies, the new eagle warrior will have same attack, hp, etc, just as the original one.
Based on the same idea, all your trigger conditions can be designed to check unit type instead of unit ID.
Now, your new hero has same state as your old hero and can trigger the same event as your old hero, and that is what call "revive".
But bear in mind that using up-effect on hero, means you should not use attitude change on hero (e.g. the "change attack" and "change hp" in trigger effect). Attitude change will make the hero becomes a special unit from its original unit type. And any tech change in its original unit type won't apply to him anymore.
When your unit is 0 HP, he does not die immediately, i.e. the ID has not cleared yet. Teleport and garrison the dying unit into another unit, then you can avoid the old hero ID to be removed. With 004 trigger extension, you can do "Instant Garrison" and "Change Object ID" in trigger. Actual implementation can be found in the website cited.
Some trigger effects need to set the object. Those trigger definitely won't work if your revived hero has diff object ID. Having the revived hero with the same object ID is the most ideal case but it can be difficult to achieve in current version.
____________________________________________________________
Do you realize a lot of game is so addicting because of its gamble element?
This section guides you through how to create a loot system that provides different rewards for small unit, mini boss and boss. Killing boss will give different rewards each time. The small probability of getting OP weapons will make the players longing for boss fight!
I am not familiar with the trigger system in concurrency situation. I am not sure if the content of first child trigger is guaranteed to run to the end before the second child trigger runs. But I think it is more likely that when one trigger finishes, it moves to the end of scheduler. So if the first trigger is to deactivate the second trigger, when it fails, the second trigger will run before the first trigger runs the second time.
____________________________________________________________
(Stable but Bad User Experience)
The player will use the horse to buy the HP Portion from the store, which will create a sheep in his "item" area
When he moves the sheep to the middle, the HP heal will be triggered.
While this design for HP Portion works, it takes a lot of user operations to just use the HP Portion. And the time is critical in RPG when your hero is in the fight and needs that HP recover!
When buying an item, a new unit will spawn in the backpack area. The new unit will be garrisoned into the backpack.
After the user leaves the store, unloading the item will trigger the item effect, e.g. HP portion heal.
The player can set the hotkey for the backpack, and use the item quickly.
You can have more realistic item system for item and backpack by customizing your mod.
It looks super cool, but I haven't studied it.
Here is the translation: """Both two same-ID units have to be in Garrison mode. When clicking on one of them, the another will teleport to the another. ... Each button relates to one invisible unit and is garrisoning in some units in the corner of the map. When clicking the unit will cause the teleport. Then we can use condition check "Object Visible" to check whether the user click the button. Once the event is finished, we can "instant garrison" (004 trigger extension) the invisible unit back to the map corner and use it next time."""
____________________________________________________________
To be continued (04/17/2020 - 21:13)
To be continued (04/17/2020 - 21:13)
To be continued (04/17/2020 - 21:13)
To be continued (04/17/2020 - 21:13)
To be continued (04/17/2020 - 21:13)
For example, a class system with 004 extension mod.
Three different classes with two ultimate hero to choose when reach the end.
Four different hidden classes that require specific state, taunt event and difficulty level.
____________________________________________________________
____________________________________________________________
Description
- Summon 1/2/3 wolfs next to the hero.
Background
- I want to be able to support the new revive system, where after the hero dies, we will spawn a new hero. But this provides the new limit that our trigger cannot depend on the object ID of the hero, since it will be different when hero revives.
Details
- using AGE to create a fly-mode, fast speed unit (teleport box) for P7.
- P7 is ally for all players with teleport box created.
- when using skill, trigger AI script signal
- In AI script, search-remote for P1 hero by unit type.
- In AI script, use result location to send flare.
- In AI script, use up-retreat-to to send the teleport box to the flare location.
- In world editor, use the teleport box to teleport the wolf. (The teleport box never die, so we can use its object ID.)
AI script for Learning:
(defrule
(event-detected trigger 100) ;signal received from trigger.
=>
(up-reset-filters)
(up-reset-search 1 1 1 1)
(set-strategic-number sn-focus-player-number 1) ;to choose player 1.
(up-find-remote c: monk c: 1) ;monk is the unit type of hero.
(up-set-target-object search-remote c: 0)
(up-get-point position-object gl-point-x)
(up-set-target-point gl-point-x)
(up-send-flare gl-point-x) ;send the flare the location searched
(up-reset-search 1 1 1 1)
(set-goal 1 1)
(acknowledge-event trigger 100)
)
(defrule
(up-compare-goal 1 == 1)
(unit-type-count 274 >
(unit-type-count 274 <
=>
(up-retreat-to 274 c: spearman) ; send the modded spearman, aka. the teleport box to the flare (274)
(set-goal 1 0)
)
____________________________________________________________
____________________________________________________________
[This message has been edited by nathanielng (edited 04-19-2020 @ 05:16 PM).]