Open TheJJ opened 7 years ago
I'll start with a few:
The ones with a checkmark are more or less implemented for the old engine architecture. All need a proper reimplementation for the integration into #740.
[x] Animation display
[ ] UI integration (tech buttons, displayed unit stats, ...)
[ ] Resources
Units
Abilities ("a unit can do this (with conditions, ...)")
MoveAbility
(if an unit can move)SetPointAbility
(if an unit can set a gather point)GarrisonAbility
(can this unit garrison somewhere?)UngarrisonAbility
(can this unit leave a garrison place?)TrainAbility
(can this unit train/create others?)BuildAbility
(can this unit build buildings?)GatherAbility
(can this unit gather resources?)AttackAbility
(can this unit attack others?)RepairAbility
(can this unit repair others?)HealAbility
(can it heal others?)ResearchAbility
(can this unit perform research?)PatrolAbility
(can this unit go on patrol?)ConvertAbility
(can it convert other units?)Actions ("a unit does this")
TargetAction
(actions that target another unit, i.e. gather, attack, heal, ...)DecayAction
(rotting of units)DeadAction
(dying animation)FoundationAction
(idle action until building is complete)IdleAction
(standing there doing nothing)MoveAction
: Unit movementGarrisonAction
(garrison inside another unit)UngarrisonAction
(leave the other unit)TrainAction
("generate" a new unit)BuildAction
(construct a building)RepairAction
(repair a building)GatherAction
(get resources from a gatherable unit)AttackAction
(capt'n obvious)ProjectileAction
HealAction
(heal a unit)ConvertAction
(convert a unit's team)ProjectileAction
(move in a parabolic shape)Unit types
ResourceSpot
Unit owners, i.e. teams
Tech Research
Limits
n
units of some typeUnit type tags (same for all units of this type):
RangedAttack, CloseAttack, ContinuousAttack, PoisonAttack,
WeaknessRanged, WeaknessPike
, ...TargetPlayer, TargetWorld
IronRessource, GoldRessource, ...
Damage, MovementCommand, Patrol, Follow, Construct, ...
Unit individual properties:
[converted, buffed, immortal]
etcRelated: #640
You'll surely come up with many more!
If I remember properly in Age Of Mythology, some units (heroes) can be created only once or cannot exist more than once in your army.
So maybe a property is needed to decide how many unit of each type can be created/owned by a single player.
I've got more abilities:
StopAbility
(if a unit can stop)StanceAbility
(can this unit have a stance? [villagers, trade carts, fishing ships can't])GuardAbility
(can this unit guard others?)FollowAbility
(can this unit follow others?)FormationAbility
(can this unit be part of a formation?)ProvideGarrisonAbility
(can this unit be a garrison for units?)DeleteAbilty
(can this unit be deleted? [Idk if this could be useful in custom scenarios])AttackGroundAbility
(can this unit fire at a place on the ground? [onagers, trebuchets])ProvideBoardingAbility
[for sea units, could inherit from ProvideGarrisonAbility
with extra condition only_at_coast
]UnloadAbility
[for sea units with extra condition to ungarrison only at the coast]OpenGateAbility
(can this unit open a gate?)CloseGateAbility
(can this unit close a gate?)SetWaypointAbility
(can this unit set waypoints?)SellAbility
(can this unit sell resources?)BuyAbility
(can this unit buy resources?)TradePostAbility
(can this unit be traded with?)TradeAbility
(can this unit trade with a trade post?)PickupRelicAbility
(can this unit pick up a relic/item?)
or PickupItemAbility
and let PickupRelicAbility
inherit from itDropRelicAbility
or DropItwmAbility
(can this unit drop a relic/item?)TownbellAbility
(can this unit ring a townbell?)SendBackToWorkAbility
(can this unit send garrisoned villagers back to work?)and I would rename SetPointAbility
to SetRallyPointAbility
to avoid confusion with waypoints.
We should come up with a list of things the engine has to be capable of to properly simulate the games we want to support. This includes every detail that the engine has to calculate differently.
Basically this is what we need to implement and what the
nyan
API will provide then for the games.This collection should go into
doc/features.md
.