Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Needed engine gamelogic features #816

Open
TheJJ opened this issue May 1, 2017 · 4 comments
Open

Needed engine gamelogic features #816

TheJJ opened this issue May 1, 2017 · 4 comments
Labels
documentation Involves the project documentation just do it You can start working on this, there should be nothing left to discuss nice new thing ☺ A new feature that was not there before

Comments

@TheJJ
Copy link
Member

TheJJ commented May 1, 2017

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.

@TheJJ TheJJ added documentation Involves the project documentation just do it You can start working on this, there should be nothing left to discuss nice new thing ☺ A new feature that was not there before labels May 1, 2017
@TheJJ
Copy link
Member Author

TheJJ commented May 1, 2017

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.

  • Animation display

  • UI integration (tech buttons, displayed unit stats, ...)

  • Resources

  • Units

    • Unit creation
    • Creation cost (resources)
    • Health points
    • Defence and boni
  • 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 movement
      • fixed target
      • in range to another unit
      • Underground movement cost and restrictions
      • Movement behaviors (wildlife fleeing, target following, waypoint following, ...)
      • Formations
        • Line
        • Staggered
        • Box
        • Flank
      • Flying
    • GarrisonAction (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)
      • Melee attacks (with target restrictions)
      • Ranged attacks -> ProjectileAction
      • Bonus against some targets
      • Attack stances (suicide, defensive, stand_ground, do_nothing)
    • HealAction (heal a unit)
    • ConvertAction (convert a unit's team)
    • ProjectileAction (move in a parabolic shape)
    • Unit transport (e.g. transport ship)
  • Unit types

    • Buildings (they are handled differently in the obstruction)
    • Moving units
    • Type conversion
      • villagers, trebuchets, ...
      • death
      • wildlife -> ResourceSpot
  • Unit owners, i.e. teams

    • Owner conversions (monks)
  • Tech Research

    • Age advancements
    • Unit upgrades (e.g. blacksmith stuff)
    • Team research (e.g. marketplace)
  • Limits

    • Only n units of some type
    • Maximum resources depending on storage buildings
  • Unit type tags (same for all units of this type):

    • AttackTypes: What kind of Attack can this Unit perform RangedAttack, CloseAttack, ContinuousAttack, PoisonAttack,
    • Weaknesses What are the Weaknesses? WeaknessRanged, WeaknessPike, ...
    • Targetability: Is this targetable by the player? TargetPlayer, TargetWorld
    • Ressources: Is this a ressource? IronRessource, GoldRessource, ...
    • Core Engine Abilities: Core features the above can be reduced to Damage, MovementCommand, Patrol, Follow, Construct, ...
  • Unit individual properties:

    • [converted, buffed, immortal] etc

Related: #640

You'll surely come up with many more!

@elnabo
Copy link
Contributor

elnabo commented May 1, 2017

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.

@heinezen
Copy link
Member

heinezen commented Sep 6, 2017

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 it
  • DropRelicAbility 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.

heinezen added a commit to heinezen/openage that referenced this issue Jul 22, 2018
heinezen added a commit to heinezen/openage that referenced this issue Jul 23, 2018
heinezen added a commit to heinezen/openage that referenced this issue May 21, 2019
@heinezen
Copy link
Member

heinezen commented Jan 1, 2021

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Involves the project documentation just do it You can start working on this, there should be nothing left to discuss nice new thing ☺ A new feature that was not there before
Projects
None yet
Development

No branches or pull requests

3 participants