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
Design Proposal - Planetary Statuses #676
Comments
This is good idea. I think it would be beneficial to multiple status on planets. There could for example how much water is on planet, what is the gravity on planet: low, normal and high. Then for example Alterians live only on Orbital they would prefere zero-g planets(which would not exists), but low might be slightly more tolerable and high just honorific. Future random events also sound good. Ascension victory also requires new trait, it would need to know with planet has the ascension vein coming. But one thing which has been for me as guide line that there should be traits, status or techs which gave for example 5% more farming, mining or production. These traits should be some how that actually give something significant. I feel that give few pre cents there and there is a bit boring way to design 4X game. Currently ORoS only has planet habitability with 25% steps which tell maximum population for planet which it can sustain. Also these traits could be interesting if we could skip using fixed tiles and planet images and use that rotating planet view which was in one version. We could do procedural planet textures which would be based on planet traits and maybe even modify it depending how many populations/buildings there are. |
TLDR:
In my design, planetary statuses work as "very fancy enumerations" with ability define how planet's attributes (production, happiness, etc) should change. I think statuses should mark "unusual" things (unusual depending on defined context of normality), while generally-applicable attributes should be implemented as data attributes. In examples you said, I can imagine such enumerations as:
Gravitation:
To be honest, I cannot clearly understand this statement because of English used is somewhat broken. Are you against or for " Because I am for, but with decency. With this in mind, planetary statuses mark "reasonable" things and have adequate impact. For example, there is no need to have status "there is a lot of grass on planet => +2% to food production" 😄 . But status like "fertile soil => +15% to food production" is IMHO reasonable. Just like in everything, lets use common sense 😄 . Anyway, scale of bonuses a trait/status provides is more of a game-balancing thing. |
What I tried to say was that there always should be significant effect. For example currently planet's can have this status which gives food bonus. (Normally all planets give +2 food) Then that gravity is bit more difficult. Since strength of gravity depends on size of the planet. So it would cause that space race with low gravity would only be able to live in small planets. So we could have something table like this:
Show first column is what kind of gravity space race is used to. Then production and mining would depend on what kind of |
Now that I think fertile soil is quite good. So maybe drop the paradise, change lush vegetation +2 and fertile soil +1. |
👍 Agreed, statuses should have significant effects.
Will incorporate this in my changes 👍 .
That was just an example. Don't take everything I write as a specific proposal 😄 .
Nice idea 👍 . But it sounds like a different new mechanic altogether, which may or may not fuse with planetary statuses concept, and deserves it's own issue/proposal. I suggest we stop discussing exact numbers and bonuses here, lest that's not scope of this proposal. |
I know that 15% was just an example, but when I started this project, I also considered something like that but then I found out that small % bonus do not give significant bonus. There are quite many 4X games which give small bonuses and then player can decided if they want to increase 5% maximum fleet size or 5% more food or 5% production and when selecting first of these it does not make any difference. Player needs to stack same bonuses in order to have them some effect. I also started to think if temperature could be used also bit like gravity:
That percentage would be to maximum population based on planet temperature. Temperature and vegetation could be something that would allow terra-forming. So there could be technology to heat or cool down the planet. Also technology that would cause planet have more vegetation. Yes, these should be on separate issue. If these would be implement I would drop planet types and just use these statuses. |
It's ALL about game balancing. Well, except this issue. 😄
Very cool idea and a hot topic 👍 (puns intentional 😄 )! When already out of scope, I will just add that such design changes would probably made sense as planetary attributes rather than statuses, since every Planet has temperature and gravitation. And with varying strengths. Statuses could cater such system, but I believe they should not. Radiation is also an attribute, not a status (and like 9-10 statuses would be needed to describe current system). Planetary status should represent unusual condition. If there should be a system for planetary gravitation/temperature, it will then no longer be "unusual". What could be described by status in such design would be i.e. something like "changing gravity/temperature/radiation" (like for climatically unstable planets, etc.). |
Sounds good those unusual condition like unstable climate, which could very climate certain change per star year or something like that. But funny thing about this temperature and gravity redesign, is that one of my inspiration was 1995 Stars! 4X game where all planets had temperature, gravity and radiation as attributes. |
So If I understand correctly AppliedStatus class should have attributes how long PlanetaryStatus is going to be in effect or how many star years it takes before it activates and or some other conditions. Since with these it could be possible to do some cool starting scenarions, for example after planet has been colonized for 40 star years, ancient relic is found and it boost science +1, after 80 star years ancient building is discover and again it boost +1 science and finally after 120 star years ancient city ruins are discovered +1 science is gained. Current class does not have any of this yet? Did you have some plans how to do it? It could have maybe some activity type and then star year counter, when those hit zero type could be changed something like active and set timer for -1 which would indicate infinity. If timer would be something else then it would change to deactive and set timer for some other value. This could be used to create for example pulsating effects. |
Based on this text, you understand. Just to clarify,
No, it does not. I left
I had 4 different plans:
I don't know what you plan with If I should decide, I would go with (1). It is just the most flexible.
I designed the Thus, a "status changing on expiring" is translated to "when status expires, new status is applied". I also designed it this way to potentially allow implementation of "hooks"/"reactions", which could run code on add/remove automatically, the code being tied to the This is sometimes done, for example, in advanced buff-systems in RPGs. And it is useful for modding.
See text above 😄 But, this is just a proposal. Things may change. And as there are currently no planetary statuses defined at all, the code can be changed without breaking something rather easily 😄 |
Choices 1 and 3 both can join up at choice 4.
I kind of like just the idea it was added. Sounds simple but then again some certain level of automation would be nice. For example automatically do timer calculations and so on. At the moment I would try to create following planet status:
|
Creates base.json for planetary status and method to get all.
Adds pictures for fertile soil, metal rich surface and molten lava.
#692 MusicTest no longer enables music after testing it silently.
Closing. |
Planetary conditions could be described by zero or more statuses, like planet having easily accessible minerals, etc. Such change would allow combining conditions on planets, promoting composition and code reuse. Definition of statuses could be easily moved to data files (as per GH-666).
PlanetaryStatus
would work like a definition of a status, like how it affects planet's attributes. ThisPlanetaryStatus
then could be applied to 0..N planets withAppliedStatus
, where additional information would be added, such as at what turn the status should end (if time-bound). Statuses could be also used as flags, marking planets for some other code (in sense that planet "has" condition).Statuses could be stackable (having the same status on 1 planet multiple times) or not.
For now I recommend the non-stackable status design - there are sometimes game-breaking issues due to stackability of statuses/flags in other games I know of. Non-stackability constraint can be easily removed later, if status stackability will appear as valuable concept.
Planetary statuses system has following benefits over current design:
PlanetaryStatus
represents that planet has a condition, whilePlanetaryEvent
describes "what happens if...". DiscoveringPlanetaryEvent
could apply status(es) to a planet, promoting encapsulation / responsibilities delegation.Programmer Point of View
As a programmer, I want to be able to model my ideas more efficiently. Planetary statuses allow me to mark and describe planets using composition. This allows me to reuse and organize code, while having new modelling tools at my disposal.
Player Point of View
As a player of 4X strategy games, I want to have better idea on what is happening in game, and PlanetaryStatuses describe conditions of planets clearly.
As the statuses could combine, it also possibly introduces new interesting situations to the game and could increase game depth. Especially if other mechanics will be made around planetary statuses.
Notes
I built a prototype of this and it seems to work, but such change will break existing save files.
Nonetheless, I think that planetary statuses are something that should be done in one way or another, because currently, planetary status is implemented using planetary events, which is confusing and very inflexible.
I think it that the statuses being optionally time-bound is a plus and very useful, but the design can be simplified by omitting the
AppliedStatus
class altogether and just directly usingPlanetaryStatus
on planets. However, I believe it makes sense to have distinction between status "template" and its "application", as apart from the time tracking, this could be used for i.e. tracking "source" of status, etc.I consider ability to mark planets with optionally hidden statuses and then use such markers in other mechanics a slightly hacky, but still very manageable and clear. Many games use similar systems like this, for example in Cataclysm: Dark Days Ahead, NPCs use statuses as flags for things like "We just chatted".
And such "flags" are just another tool that can be used for creating new immersive mechanics.
Some mechanics, that could be implemented with or benefit from "status flags", that I have on top of my mind are:
like planet becoming source of a disease or being struck by an earthquake
for unlocking a tech in research
like marking planet as source of planned galactic threat,
somehow connected to realm's background (original homeplanet, mythological meaning, etc.)
or somehow related to ascension victory... 😏
Summary
Having system for planetary statuses allows describing planetary conditions in a clear, data-driven way. It can also work as marking system, allowing the system to be used by other game mechanics to increase game depth.
Such system also makes distinction between "planetary event/anomaly" and "planetary condition", which is not necessarily the same thing. Statuses can also be clearly and distinctively visualized in GUI.
Overall, planetary status system could bring a lot of value to the player in the future.
The text was updated successfully, but these errors were encountered: