PDA

View Full Version : [Map] Age of Heroes - The First HoN RTS



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.

an7hraxjax
03-11-2011, 12:28 PM
reserved

FlameStick
03-11-2011, 12:49 PM
i <3 u :)

But im worried you wont find alot of people to help you since this Maps section seems pretty deserted :/

GL with this if you need any help around something (simple since im noobish) just let me know :)

Nolifer
03-11-2011, 01:11 PM
Interesting, good luck on this project!

IamKongor
03-11-2011, 01:32 PM
Would be so damn epic :)
i already thought of this but couldnt really imagine anyone doing this..
i guess this will be tons of work...

HoroChan
03-11-2011, 05:49 PM
Oh do work hard.

IamKongor
03-15-2011, 02:21 PM
how is it going?

an7hraxjax
03-16-2011, 06:56 PM
I'm making a framework in python so you can generate entity files very easely, and more important : without typo's or invalid operations. But I'm quite busy for school atm so the results are a bit delayed :)
I parsed the actions A and B from the big guide and now i have functions like " spawnunit(target="target_entity", source="") "

The handy part is when you have to write an entity many times, it's easyier to use a script than to edit them one by one.

An example:
You make a TD with 60 waves of different creeps. In a test you notice the creeps block eachother, you want to give them the attribute unitwalking="true".
Now you add one line in the script instead of editing 60 creep_XX.entities.

Other example.
You have a building that can train units. This requires some abilities, states, units ... a lot of entities. When you make a new building, most of it's entities will be similar. The script generates the new entities easely.

But, I'd love to get some more info on custom orders, did anybody make an order.entity file before ? I need an order_build.entity ... but I'm hoping S2 can provide this ...

When building a structure with your worker unit, the announcer shouts "your building is under attack" messages ... I want to remove this false alarm.

Oloko
03-17-2011, 10:25 AM
The parser might be a good idea depending of the result. :p
I usually generate my XML using Java, but I think that what you want to do would remove the need to recreate a new generator each time.
Anyway, can't wait to see the results.


As for orders, you can look at custom orders made by S2 (rampage charge has one). What kind of "build order" do you want S2 to give you? I mean, there might be a way to do it yourself.

Rather than damaging the building, maybe you can create some kind of gadget that has a progress bar (like moraxus shield) and when its full, it will be replaced by the building.

an7hraxjax
03-17-2011, 11:08 AM
Well python or java, it's a bit similar, the basics will both be the same.
In the attachment you can see what I got so far.
The library actionsb.py is most interesting, if you don't have a python environment.. I suggest the academic enthought (http://www.enthought.com/products/epd.php) python distribution.
Now I only have the list with actions, with a check if the attributes are valid. But no value check yet.
I'd like to make one for units, buildings, items, ... where you can see the available attributes quite easely.
The main goal is to automate the repetitive work. In my slither map, there is a large amount of location points, each with their own state, commanding to move to the nearby location point up/down/left/right. Script is handy here.

About the orders :
The moraxes shield is a great idea ! tnx ! Do you know a model/prop that looks like a construction site ?

TPXL
04-01-2011, 12:11 PM
About building, you can (can't you?) make a skill for the builders with which you can target buildings (like keepers armor) and it heals them, when they get to full HP they simply transform, just like you said.

Reminator
04-07-2011, 12:57 PM
Dunno if you know, I personally think it's pointless unless S2 will make professional pathing, because atm when you would want to micor some army they would block each other.

Some time ago I was interested by this but lack of information about all this function and params put me off.
I had working spawning buildings and soldiers, but for building you would need to work out some animations.
All you do basically is to look at what you need and whats similar is already implemented to port it.

Rotuyoh
12-20-2011, 08:38 AM
Was thinking about the same idea and i would probably come up with something if i had a clue about programming and the likes. Why? Because i love the new creeps. I just want an army of small soldiers and archers marching into Hellbourne territory ^^ Epicness

Thysios
12-20-2011, 08:42 AM
HoN RTS?
Savage? From the commanders point of view :D

Interesting to see how this turns out, if you end up finishing it.
Wish we had proper custom map support..

Good luck!