an7hraxjax
03-11-2011, 12:27 PM
Age of Heroes
The First HoN RTS
What ?
This is an attempt to (semi)port the RTS genre to HoN ... It's a huge makeover, so I'll start with small steps. My first goal is Age of Empires ...
But it's not easy...
Why ?
If Warcraft 3 ==> DotA and DotA ==> HoN
Then HoN ==> Warcraft 3 ...
Just kidding. I'm trying to make a good platform other mapmakers can use as well to make their own RTS map. This platform should contain a solution to following problems :
- Howto make worker units, that can build, gather resources, ...
- Howto make buildings that produce units (multiple, queued) or technology upgrades
- Howto make a multi resource system (gathering resource, spending resource, display resources)
- Howto attack in formations
- Howto use water (sea battles yummm)
- ... whatever you want to know
This project is quite big so anyone who's interested, let me know!
I'm looking for :
- other scripters to explore the possibilities of the engine
- modellers, skinners, artists to give these maps their own look.
At the moment I only have some scripts for Worker units ... it should be sufficient to make Tree Tag once they all work.
Howto get Workers that can build multiple buildings?
WIP
Give the Workers an ability "Build" that has this :
<onimpact>
<foreachitem>
<delete target="target_entity" source=""/>
</foreachitem>
<giveitem name="Building_1" target="source_entity"/>
<giveitem name="Building_2" target="source_entity"/>
<giveitem name="Building_3" target="source_entity"/>
...
</onimpact>You can improve this by using the accumulator, and make something like this, with give_itemlist_n() in the above fragment :
if acc==1:
give_itemlist_1()
acc++
elif acc==2:
give_itemlist_2()
acc++
...
elif acc==N
give_itemlist_N
acc=1Then you have to define item.entities for each building,
where each item has <onimpact> :
<spawnunit name="Building_Construction_Site" pushentity="true"/>
<applystate name="State_Unfinished" target="stack_entity" duration="-1", proxy="Building_1"/>
<order command="build" source="source_entity" target="stack_entity"/>
<damage /> .. something to make the building have low hp
This command="build" doesn't exist yet though .. I'm trying to make it soon. The state "State_Unfinished" has an <onframe> that checks the hp
and if hp == full, it morphs the construction site into the proxy_entity="Building_1"
My problems atm :
I'm using channeling now, but that way you cannot build with multiple units at one building (starcraft aint got this neither).
Little problem : how to make an animation repeat itself a few times?
Eventually I could make the worker attack the building with an adjusted accursed buff on the building.
Or I could make an order command="build" file... WIP
Howto train units in a building (Axemen in Barracks for example)
WIP
Give an ability "Train_Unit" to your building (with inventory0="Train_Unit")
That ability has an onimpact,
that applies a state "Training" to the building.
When the state expires,
spawn your unit
(and command move to target if you have waypoints)
Eventually you can make a "Set_Waypoint" ability that stores the target location. The "Train_Unit" will use this location.
The custom resource system ...
WIP, just some ideas here.
I have a few workarounds in mind .. but I didn't test it yet
A gadget for each resource, use it's (large) manapool to operate with.
Define the gadget in entitylist and give it a name, like "resource_wood"
Even better : spawn the gadgets on player spawn, and set them as proxies (with different indici) to the main hero??
<setent0 name="resource_wood"/>
<givemana target="ent0" amount="10"/>
or
<takemana target="ent0" amount="10"/>
also useful in <checkcost>:
<pushentityproxy ent="this_owner_entity" index="1"/>
<compare a="stack_mana" b="30"/>
<invalidate/>
</compare>
if not working, maybe abilities should have this resource entity as proxy,
proxy_mana should work.
Use <checkcost> in your abilities and items and check the mana on entity0
Then when you use an ability/item, use <takemana target="ent0" amount="10"/>
BUT I think it's way easier if S2 explains how to use custom resources. All they have to do is provide some functions to access it. If the engine is decent, it shouldn't be that hard to implement, I think. Just copy the gold parameters to a few others.
The First HoN RTS
What ?
This is an attempt to (semi)port the RTS genre to HoN ... It's a huge makeover, so I'll start with small steps. My first goal is Age of Empires ...
But it's not easy...
Why ?
If Warcraft 3 ==> DotA and DotA ==> HoN
Then HoN ==> Warcraft 3 ...
Just kidding. I'm trying to make a good platform other mapmakers can use as well to make their own RTS map. This platform should contain a solution to following problems :
- Howto make worker units, that can build, gather resources, ...
- Howto make buildings that produce units (multiple, queued) or technology upgrades
- Howto make a multi resource system (gathering resource, spending resource, display resources)
- Howto attack in formations
- Howto use water (sea battles yummm)
- ... whatever you want to know
This project is quite big so anyone who's interested, let me know!
I'm looking for :
- other scripters to explore the possibilities of the engine
- modellers, skinners, artists to give these maps their own look.
At the moment I only have some scripts for Worker units ... it should be sufficient to make Tree Tag once they all work.
Howto get Workers that can build multiple buildings?
WIP
Give the Workers an ability "Build" that has this :
<onimpact>
<foreachitem>
<delete target="target_entity" source=""/>
</foreachitem>
<giveitem name="Building_1" target="source_entity"/>
<giveitem name="Building_2" target="source_entity"/>
<giveitem name="Building_3" target="source_entity"/>
...
</onimpact>You can improve this by using the accumulator, and make something like this, with give_itemlist_n() in the above fragment :
if acc==1:
give_itemlist_1()
acc++
elif acc==2:
give_itemlist_2()
acc++
...
elif acc==N
give_itemlist_N
acc=1Then you have to define item.entities for each building,
where each item has <onimpact> :
<spawnunit name="Building_Construction_Site" pushentity="true"/>
<applystate name="State_Unfinished" target="stack_entity" duration="-1", proxy="Building_1"/>
<order command="build" source="source_entity" target="stack_entity"/>
<damage /> .. something to make the building have low hp
This command="build" doesn't exist yet though .. I'm trying to make it soon. The state "State_Unfinished" has an <onframe> that checks the hp
and if hp == full, it morphs the construction site into the proxy_entity="Building_1"
My problems atm :
I'm using channeling now, but that way you cannot build with multiple units at one building (starcraft aint got this neither).
Little problem : how to make an animation repeat itself a few times?
Eventually I could make the worker attack the building with an adjusted accursed buff on the building.
Or I could make an order command="build" file... WIP
Howto train units in a building (Axemen in Barracks for example)
WIP
Give an ability "Train_Unit" to your building (with inventory0="Train_Unit")
That ability has an onimpact,
that applies a state "Training" to the building.
When the state expires,
spawn your unit
(and command move to target if you have waypoints)
Eventually you can make a "Set_Waypoint" ability that stores the target location. The "Train_Unit" will use this location.
The custom resource system ...
WIP, just some ideas here.
I have a few workarounds in mind .. but I didn't test it yet
A gadget for each resource, use it's (large) manapool to operate with.
Define the gadget in entitylist and give it a name, like "resource_wood"
Even better : spawn the gadgets on player spawn, and set them as proxies (with different indici) to the main hero??
<setent0 name="resource_wood"/>
<givemana target="ent0" amount="10"/>
or
<takemana target="ent0" amount="10"/>
also useful in <checkcost>:
<pushentityproxy ent="this_owner_entity" index="1"/>
<compare a="stack_mana" b="30"/>
<invalidate/>
</compare>
if not working, maybe abilities should have this resource entity as proxy,
proxy_mana should work.
Use <checkcost> in your abilities and items and check the mana on entity0
Then when you use an ability/item, use <takemana target="ent0" amount="10"/>
BUT I think it's way easier if S2 explains how to use custom resources. All they have to do is provide some functions to access it. If the engine is decent, it shouldn't be that hard to implement, I think. Just copy the gold parameters to a few others.