pioneerspacesim / pioneer

A game of lonely space adventure
https://pioneerspacesim.net
1.6k stars 362 forks source link

Faction RTS state and procedurally generated detail separation proposal. Also interim RTS AI outline. #1267

Closed Ae-2222 closed 11 years ago

Ae-2222 commented 12 years ago

RTS state and procedurally generated detail separation. To keep it short:

  1. Faction RTS AI (proposed by JohnJ) will work on a simple set of state variables. All smaller details from planets/cities/laws/minor events/NPC attitudes/defences/missions can be procedurally generated depending on RTS state.
  2. Once the RTS state variables 'the interface' are determined it's possible to develop the procedural stuff before developing AI.
  3. The state variables are a superset of the things mentioned by @fluffyfreak in #1266. The things mentioned can be added to incrementally, so no hurry.
  4. It's possible to make a substitute for an RTS AI simply by causing events which change state. These events are based on current state variables of all factions (sort of a probabilistic finite state machine). They can be based on simple rules. Calculation of future events and any assembling of art assets can be left to a background process.
  5. Once an RTS AI is implemented events the focus switches to creating events to add up to the required RTS state changes.
  6. In the immediate term @fluffyfreak's faction partitioning is good, it can be expanded on eventually by deciding the RTS state variables allowing development of procedural details/events.
    • For example:
      • Major and minor events are generated at time intervals. Events alter RTS state other state variables (including past events) over a time interval, and depend on the same.
      • Rules (deterministic) would enable and provide modifiers for clusters of likely alternative events based on state. Each member of the cluster can have a weighting (probability) determined by looking at RTS state and other tracked state variables. The weighting is used to associate events to an interval in [0-1]. PRNG with faction/time seed is used to generate a random [0-1] number to select an event.
      • e.g. A series of events would increase variables related to tension between factions. These events might trigger decision event clusters involving military buildup or levies on trade etc. Eventually the military buildup/tension/socio-economicfooting might enable a decision to go to war or serious provocation cluster. Decision to goto war might be chosen with a time frame enabling war footing events etc.
laarmen commented 12 years ago

[rant ON] Am I the only one that find this rather... Unhelpful ? I see a lot of big words without any real concrete proposal, and there has been a little too much of those lately in my taste. Please stop doing that. What we need is code, or at least some precise specification of the system so that the code monkeys can start working on it. What yet another vague declaration will achieve is just to sit there and stay open until someone steps up and do the real work. [rant OFF] PS: nothing personal, you're just the last in a long series :-)

Ae-2222 commented 12 years ago

It was intended as an approach on how to proceed in the future, in a way to expand on fluffy freak's static stuff and possibly later plug in a RTS as JohnJ once outlined..while developing the manner factions actually affect the game independently..demonstrating the two development paths aren't mutually exclusive and that we need to choose between them. It's not another separate faction proposal.

The example I outlined, as proof the two aren't mutually exclusive, translates into algorithms using simple procedural gen stuff used in Pioneer already, at least in my head:) I assumed I'd be the one coding any procedural detailing in future, at least at the start.


The suggestions for faction generation/animation Brianetta and I outlined in fluffyfeak's thread ( issue 1266) are pretty concrete and implementable.

I'm not sure what the current state of things are, both @makkara and @fluffyfreak were working on concrete code until makkara posted in 1266, but not sure what has transpired as neither have said anything in IRC or on Github since then.

Luomu commented 11 years ago

This sort of thing is better suited for the mailing list.